gerbview/gerbview_frame.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/gerbview/gerbview_frame.cpp b/gerbview/gerbview_frame.cpp index f23222b..bcbde2c 100644 --- a/gerbview/gerbview_frame.cpp +++ b/gerbview/gerbview_frame.cpp @@ -280,21 +280,25 @@ GERBVIEW_FRAME::GERBVIEW_FRAME( KIWAY* aKiway, wxWindow* aParent ): GERBVIEW_FRAME::~GERBVIEW_FRAME() { + GetGerberLayout()->GetImagesList()->DeleteAllImages(); + delete m_gerberLayout; +} + + +void GERBVIEW_FRAME::OnCloseWindow( wxCloseEvent& Event ) +{ if( m_toolManager ) m_toolManager->DeactivateTool(); - if( auto canvas = GetGalCanvas() ) + if( IsGalCanvasActive() ) { canvas->GetView()->Clear(); + // Be sure any OpenGL event cannot be fired after frame deletion: + GetGalCanvas()->SetEvtHandlerEnabled( false ); } - GetGerberLayout()->GetImagesList()->DeleteAllImages(); - delete m_gerberLayout; -} + GetGalCanvas()->StopDrawing(); - -void GERBVIEW_FRAME::OnCloseWindow( wxCloseEvent& Event ) -{ Destroy(); }