Changeset c48ac12 for src


Ignore:
Timestamp:
Sep 29, 2013, 11:40:48 AM (11 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
426c84
Parents:
33b898
git-author:
Frederik Heber <heber@…> (08/29/13 08:19:44)
git-committer:
Frederik Heber <heber@…> (09/29/13 11:40:48)
Message:

FIX: GLWorldScene and GLWorldView have atomRemoved with id not atom ptr.

  • this is safer as we only need the id for looking up the internal "visual" instance of the atom. As Qt uses multiple threads, we cannot safely assume the atom to be still intact.
Location:
src/UIElements/Views/Qt4/Qt3D
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp

    r33b898 rc48ac12  
    167167/** Removes an atom from the scene.
    168168 *
    169  * @param _atom atom to remove
    170  */
    171 void GLWorldScene::atomRemoved(const atom *_atom)
    172 {
    173   LOG(3, "INFO: GLWorldScene: Received signal atomRemoved for atom "+toString(_atom->getId())+".");
     169 * We just the id as the atom might have already been destroyed.
     170 *
     171 * @param _id id of atom to remove
     172 */
     173void GLWorldScene::atomRemoved(const atomicNumber_t _id)
     174{
     175  LOG(3, "INFO: GLWorldScene: Received signal atomRemoved for atom "+toString(_id)+".");
    174176  // bonds are removed by signal coming from ~bond
    175177  // remove atoms
    176   AtomNodeMap::iterator iter = AtomsinSceneMap.find(_atom->getId());
     178  AtomNodeMap::iterator iter = AtomsinSceneMap.find(_id);
    177179  ASSERT(iter != AtomsinSceneMap.end(),
    178       "GLWorldScene::atomRemoved() - atom "+_atom->getName()+" not on display.");
     180      "GLWorldScene::atomRemoved() - atom "+toString(_id)+" not on display.");
    179181  GLMoleculeObject_atom *atomObject = iter->second;
    180182  atomObject->disconnect();
  • src/UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp

    r33b898 rc48ac12  
    7979  void atomClicked(atomId_t no);
    8080  void atomInserted(const atom *_atom);
    81   void atomRemoved(const atom *_atom);
     81  void atomRemoved(const atomicNumber_t _id);
    8282  void moleculeRemoved(const molecule *_molecule);
    8383  void worldSelectionChanged();
  • src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp

    r33b898 rc48ac12  
    7878  //changeMaterials(false);
    7979
     80  qRegisterMetaType<atomicNumber_t>("atomicNumber_t");
     81
    8082  connect(worldscene, SIGNAL(changeOccured()), this, SLOT(changeSignalled()));
    8183  connect(worldscene, SIGNAL(changed()), this, SIGNAL(changed()));
    8284  connect(worldscene, SIGNAL(hoverChanged(const atom *)), this, SLOT(sceneHoverSignalled(const atom *)));
    8385  connect(this, SIGNAL(atomInserted(const atom *)), worldscene, SLOT(atomInserted(const atom *)));
    84   connect(this, SIGNAL(atomRemoved(const atom *)), worldscene, SLOT(atomRemoved(const atom *)));
     86  connect(this, SIGNAL(atomRemoved(const atomicNumber_t)), worldscene, SLOT(atomRemoved(const atomicNumber_t)));
    8587  connect(this, SIGNAL(worldSelectionChanged()), worldscene, SLOT(worldSelectionChanged()));
    8688  connect(this, SIGNAL(moleculeRemoved(const molecule *)), worldscene, SLOT(moleculeRemoved(const molecule *)));
     
    323325      case World::AtomRemoved:
    324326      {
    325         const atom *_atom = World::getInstance().lastChanged<atom>();
     327        const atomicNumber_t _id = World::getInstance().lastChanged<atom>()->getId();
    326328  #ifdef LOG_OBSERVER
    327329        observerLog().addMessage() << "++ Observer " << observerLog().getName(static_cast<Observer *>(this)) << " received notification that atom "+toString(_atom->getId())+" has been removed.";
    328330  #endif
    329         emit atomRemoved(_atom);
     331        emit atomRemoved(_id);
    330332        break;
    331333      }
  • src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp

    r33b898 rc48ac12  
    5656  void changed();
    5757  void atomInserted(const atom *_atom);
    58   void atomRemoved(const atom *_atom);
     58  void atomRemoved(const atomicNumber_t _id);
    5959  void moleculeInserted(const molecule *_molecule);
    6060  void moleculeRemoved(const molecule *_molecule);
Note: See TracChangeset for help on using the changeset viewer.