Skip to content

Commit 2c7d13c

Browse files
committed
Emit exit event when exiting
1 parent 6d67334 commit 2c7d13c

9 files changed

+36
-15
lines changed

Rendering/Core/vtkRenderWindow.cxx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,18 @@ void vtkRenderWindow::DoAARender()
620620
}
621621
}
622622

623+
//----------------------------------------------------------------------------
624+
bool vtkRenderWindow::TriggerExitEvent()
625+
{
626+
if (this->HasObserver(vtkCommand::ExitEvent))
627+
{
628+
this->InvokeEvent(vtkCommand::ExitEvent, NULL);
629+
return true;
630+
}
631+
632+
return false;
633+
}
634+
623635
//----------------------------------------------------------------------------
624636
// Handle rendering any focal depth frames.
625637
void vtkRenderWindow::DoFDRender()

Rendering/Core/vtkRenderWindow.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,12 @@ class VTKRENDERINGCORE_EXPORT vtkRenderWindow : public vtkWindow
591591
virtual void DoFDRender();
592592
virtual void DoAARender();
593593

594+
// Description:
595+
// Trigger exit event if an observer is attached for such an
596+
// event. And if triggered an exit event, return true,
597+
// false otherwise.
598+
bool TriggerExitEvent();
599+
594600
vtkPainterDeviceAdapter* PainterDeviceAdapter;
595601
vtkRendererCollection *Renderers;
596602
int Borders;

Rendering/OpenGL/vtkCarbonRenderWindow.cxx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,6 +831,8 @@ void vtkCarbonRenderWindow::Initialize ()
831831
//-----------------------------------------------------------------------------
832832
void vtkCarbonRenderWindow::Finalize(void)
833833
{
834+
this->TriggerExitEvent();
835+
834836
if (this->CursorHidden)
835837
{
836838
this->ShowCursor();

Rendering/OpenGL/vtkCocoaRenderWindow.mm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,8 @@ - (void)viewFrameDidChange:(NSNotification *)aNotification
253253
//----------------------------------------------------------------------------
254254
void vtkCocoaRenderWindow::Finalize()
255255
{
256+
this->TriggerExitEvent();
257+
256258
if(this->OffScreenInitialized)
257259
{
258260
this->OffScreenInitialized = 0;

Rendering/OpenGL/vtkWin32OpenGLRenderWindow.cxx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,6 +1125,8 @@ void vtkWin32OpenGLRenderWindow::Initialize (void)
11251125

11261126
void vtkWin32OpenGLRenderWindow::Finalize(void)
11271127
{
1128+
this->TriggerExitEvent();
1129+
11281130
if (this->CursorHidden)
11291131
{
11301132
this->ShowCursor();

Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -599,9 +599,8 @@ void vtkXOpenGLRenderWindow::CreateAWindow()
599599
if(!glXQueryExtension(this->DisplayId, NULL, NULL))
600600
{
601601
vtkErrorMacro("GLX not found. Aborting.");
602-
if (this->HasObserver(vtkCommand::ExitEvent))
602+
if (this->TriggerExitEvent())
603603
{
604-
this->InvokeEvent(vtkCommand::ExitEvent, NULL);
605604
return;
606605
}
607606
else
@@ -619,9 +618,8 @@ void vtkXOpenGLRenderWindow::CreateAWindow()
619618
if(!this->Internal->ContextId)
620619
{
621620
vtkErrorMacro("Cannot create GLX context. Aborting.");
622-
if (this->HasObserver(vtkCommand::ExitEvent))
621+
if (this->TriggerExitEvent())
623622
{
624-
this->InvokeEvent(vtkCommand::ExitEvent, NULL);
625623
return;
626624
}
627625
else
@@ -1070,13 +1068,13 @@ void vtkXOpenGLRenderWindow::Initialize (void)
10701068

10711069
void vtkXOpenGLRenderWindow::Finalize (void)
10721070
{
1071+
this->TriggerExitEvent();
10731072

10741073
// clean up offscreen stuff
10751074
this->SetOffScreenRendering(0);
10761075

10771076
// clean and destroy window
10781077
this->DestroyWindow();
1079-
10801078
}
10811079

10821080
// Change the window to fill the entire screen.

Rendering/OpenGL2/vtkCocoaRenderWindow.mm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,8 @@ - (void)viewFrameDidChange:(NSNotification *)aNotification
254254
//----------------------------------------------------------------------------
255255
void vtkCocoaRenderWindow::Finalize()
256256
{
257+
this->TriggerExitEvent();
258+
257259
if(this->OffScreenInitialized)
258260
{
259261
this->OffScreenInitialized = 0;

Rendering/OpenGL2/vtkWin32OpenGLRenderWindow.cxx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -726,9 +726,8 @@ void vtkWin32OpenGLRenderWindow::SetupPixelFormatPaletteAndContext(
726726
"Error",
727727
MB_ICONERROR | MB_OK);
728728
#endif
729-
if (this->HasObserver(vtkCommand::ExitEvent))
729+
if (this->TriggerExitEvent())
730730
{
731-
this->InvokeEvent(vtkCommand::ExitEvent, NULL);
732731
return;
733732
}
734733
else
@@ -750,9 +749,8 @@ void vtkWin32OpenGLRenderWindow::SetupPixelFormatPaletteAndContext(
750749
MessageBox(WindowFromDC(hDC), "ChoosePixelFormat failed.", "Error",
751750
MB_ICONERROR | MB_OK);
752751
#endif
753-
if (this->HasObserver(vtkCommand::ExitEvent))
752+
if (this->TriggerExitEvent())
754753
{
755-
this->InvokeEvent(vtkCommand::ExitEvent, NULL);
756754
return;
757755
}
758756
else
@@ -771,9 +769,8 @@ void vtkWin32OpenGLRenderWindow::SetupPixelFormatPaletteAndContext(
771769
MessageBox(WindowFromDC(hDC), "SetPixelFormat failed.", "Error",
772770
MB_ICONERROR | MB_OK);
773771
#endif
774-
if (this->HasObserver(vtkCommand::ExitEvent))
772+
if (this->TriggerExitEvent())
775773
{
776-
this->InvokeEvent(vtkCommand::ExitEvent, NULL);
777774
return;
778775
}
779776
else
@@ -1148,6 +1145,8 @@ void vtkWin32OpenGLRenderWindow::Initialize (void)
11481145

11491146
void vtkWin32OpenGLRenderWindow::Finalize (void)
11501147
{
1148+
this->TriggerExitEvent();
1149+
11511150
if (this->CursorHidden)
11521151
{
11531152
this->ShowCursor();

Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -590,9 +590,8 @@ void vtkXOpenGLRenderWindow::CreateAWindow()
590590
if(!glXQueryExtension(this->DisplayId, NULL, NULL))
591591
{
592592
vtkErrorMacro("GLX not found. Aborting.");
593-
if (this->HasObserver(vtkCommand::ExitEvent))
593+
if (this->TriggerExitEvent())
594594
{
595-
this->InvokeEvent(vtkCommand::ExitEvent, NULL);
596595
return;
597596
}
598597
else
@@ -610,9 +609,8 @@ void vtkXOpenGLRenderWindow::CreateAWindow()
610609
if(!this->Internal->ContextId)
611610
{
612611
vtkErrorMacro("Cannot create GLX context. Aborting.");
613-
if (this->HasObserver(vtkCommand::ExitEvent))
612+
if (this->TriggerExitEvent())
614613
{
615-
this->InvokeEvent(vtkCommand::ExitEvent, NULL);
616614
return;
617615
}
618616
else

0 commit comments

Comments
 (0)