Ver código fonte

ctkVTK*View freeze after call forceRender() on invisible widget

The flag RenderPending couldn't be reset if forceRender() was called with
RenderEnabled being false or the widget is invisible (scheduleRender()
 always exit because of the flag).
Julien Finet 14 anos atrás
pai
commit
41041a4989

+ 1 - 1
Libs/Visualization/VTK/Widgets/ctkVTKRenderView.cpp

@@ -267,6 +267,7 @@ void ctkVTKRenderView::forceRender()
 {
 {
   Q_D(ctkVTKRenderView);
   Q_D(ctkVTKRenderView);
 
 
+  d->RenderPending = false;
   logger.trace(QString("forceRender - RenderEnabled: %1")
   logger.trace(QString("forceRender - RenderEnabled: %1")
                .arg(d->RenderEnabled ? "true" : "false"));
                .arg(d->RenderEnabled ? "true" : "false"));
 
 
@@ -275,7 +276,6 @@ void ctkVTKRenderView::forceRender()
     return;
     return;
     }
     }
   d->RenderWindow->Render();
   d->RenderWindow->Render();
-  d->RenderPending = false;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------

+ 1 - 1
Libs/Visualization/VTK/Widgets/ctkVTKSliceView.cpp

@@ -137,13 +137,13 @@ void ctkVTKSliceView::scheduleRender()
 void ctkVTKSliceView::forceRender()
 void ctkVTKSliceView::forceRender()
 {
 {
   Q_D(ctkVTKSliceView);
   Q_D(ctkVTKSliceView);
+  d->RenderPending = false;
   if (!d->RenderEnabled  || !this->isVisible())
   if (!d->RenderEnabled  || !this->isVisible())
     {
     {
     return;
     return;
     }
     }
   logger.trace("forceRender");
   logger.trace("forceRender");
   d->RenderWindow->Render();
   d->RenderWindow->Render();
-  d->RenderPending = false;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------