Ignore:
Timestamp:
Dec 19, 2025, 10:33:07 PM (13 days ago)
Author:
Frederik Heber <frederik.heber@…>
Branches:
Candidate_v1.7.1, stable
Children:
37d1c3
Parents:
4e124d
git-author:
Frederik Heber <frederik.heber@…> (11/06/25 21:05:00)
git-committer:
Frederik Heber <frederik.heber@…> (12/19/25 22:33:07)
Message:

Attempt to simplify redraw event in Qt View.

File:
1 edited

Legend:

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

    r4e124d r57608e  
    7171  Observer("GLWorldView"),
    7272  worldscene(NULL),
    73   changesPresent(false),
    74   needsRedraw(false)
     73  changesPresent(false)
    7574{
    7675  worldscene = new GLWorldScene(_board, this);
     
    9190  connect(this, SIGNAL(ShapeAdded(const std::string &)), worldscene, SLOT(addShape(const std::string &)));
    9291  connect(this, SIGNAL(ShapeRemoved(const std::string &)), worldscene, SLOT(removeShape(const std::string &)));
    93 //  connect(this, SIGNAL(TimeChanged()), worldscene, SIGNAL(updated()));
    94   connect(worldscene, SIGNAL(changeOccured()), this, SLOT(changeSignalled()));
    95   connect(this, SIGNAL(changed()), this, SLOT(changeSignalled()));
    9692  connect(worldscene, SIGNAL(hoverChanged(const atomId_t)), this, SLOT(sceneHoverSignalled(const atomId_t)));
    9793  connect(worldscene, SIGNAL(hoverChanged(const moleculeId_t, int)), this, SLOT(sceneHoverSignalled(const moleculeId_t, int)));
    98   connect(worldscene, SIGNAL(hoverEnd()), this, SLOT(sceneHoverEndSignalled()));
    99   //connect(this, SIGNAL(changed()), this, SLOT(updateGL()));
    100   connect(worldscene, SIGNAL(changed()), this, SLOT(sceneChangeSignalled()));
     94  connect(worldscene, SIGNAL(hoverEnd()), this, SLOT(triggerUpdateGL()));
     95  connect(worldscene, SIGNAL(updated()), this, SLOT(triggerUpdateGL()));
     96  connect(this, SIGNAL(updated()), this, SLOT(triggerUpdateGL()));
     97  connect(worldscene, SIGNAL(sceneChanged()), this, SLOT(sceneChangeSignalled()));
    10198  connect(this, SIGNAL(moleculesVisibilityChanged(ObservedValue_Index_t,bool)),
    10299      worldscene, SLOT(moleculesVisibilityChanged(ObservedValue_Index_t,bool)));
     
    325322void GLWorldView::update(Observable *publisher)
    326323{
    327 //  emit changed();
     324//  emit updated();
    328325}
    329326
     
    351348#endif
    352349        needsRedraw = false;
    353         emit changed();
     350        emit updated();
    354351        emit TimeChanged();
    355352        break;
     
    386383}
    387384
    388 void GLWorldView::checkChanges()
    389 {
    390   needsRedraw = false;
    391   updateGL();
    392 }
    393 
    394385void GLWorldView::changeDreiBein()
    395386{
     
    399390  // realize
    400391  needsRedraw = true;
    401   emit changed();
     392  emit updated();
    402393}
    403394
     
    417408  // realize
    418409  needsRedraw = true;
    419   emit changed();
     410  emit updated();
    420411}
    421412
     
    428419}
    429420
    430 void GLWorldView::sceneChangeSignalled()
    431 {
    432   if (needsRedraw){
    433     redrawTimer->singleShot(0, this, SLOT(checkChanges()));
    434     needsRedraw = true;
    435     redrawTimer->start();
    436   }
     421void GLWorldView::triggerUpdateGL()
     422{
     423  redrawTimer->singleShot(0, this, SLOT(updateGL()));
     424  redrawTimer->start();
    437425}
    438426
     
    461449  // Domain box has to be last because of its transparency.
    462450  drawDomainBox(painter);
     451}
     452
     453void GLWorldView::sceneChangeSignalled()
     454{
     455  boost::recursive_mutex::scoped_lock lock(changed_mutex);
     456        changesPresent = true;
    463457}
    464458
     
    504498}
    505499
    506 void GLWorldView::changeSignalled()
    507 {
    508   boost::recursive_mutex::scoped_lock lock(changed_mutex);
    509   changesPresent = true;
    510   updateGL();
    511 }
    512 
    513 
    514500/**
    515501 * Set the current camera control mode.
     
    565551  setStereoType(QGLView::Hardware);
    566552  camera()->setEyeSeparation(0.0);
    567   emit changed();
     553  emit updated();
    568554}
    569555
     
    572558  setStereoType(QGLView::Hardware);
    573559  camera()->setEyeSeparation(defaultEyeSeparation);
    574   emit changed();
     560  emit updated();
    575561}
    576562
     
    579565  setStereoType(QGLView::LeftRight);
    580566  camera()->setEyeSeparation(defaultEyeSeparation);
    581   emit changed();
     567  emit updated();
    582568}
    583569
     
    586572  setStereoType(QGLView::RightLeft);
    587573  camera()->setEyeSeparation(defaultEyeSeparation);
    588   emit changed();
     574  emit updated();
    589575}
    590576
     
    593579  setStereoType(QGLView::TopBottom);
    594580  camera()->setEyeSeparation(defaultEyeSeparation);
    595   emit changed();
     581  emit updated();
    596582}
    597583
     
    600586  setStereoType(QGLView::BottomTop);
    601587  camera()->setEyeSeparation(defaultEyeSeparation);
    602   emit changed();
     588  emit updated();
    603589}
    604590
     
    607593  setStereoType(QGLView::RedCyanAnaglyph);
    608594  camera()->setEyeSeparation(defaultEyeSeparation);
    609   emit changed();
     595  emit updated();
    610596}
    611597
     
    739725void GLWorldView::sceneHoverSignalled(const atomId_t _id)
    740726{
    741   needsRedraw = true;
    742727  emit hoverChanged(_id);
    743   emit changed();
     728  emit updated();
    744729}
    745730
    746731void GLWorldView::sceneHoverSignalled(const moleculeId_t _id, int _i)
    747732{
    748   needsRedraw = true;
    749733  emit hoverChanged(_id, _i);
    750   emit changed();
    751 }
    752 
    753 void GLWorldView::sceneHoverEndSignalled()
    754 {
    755   LOG(1, "GLWorldView::sceneHoverEndSignalled()");
    756   needsRedraw = true;
    757   emit changed();
    758 }
     734  emit updated();
     735}
Note: See TracChangeset for help on using the changeset viewer.