From c13612b1fa3b236b0d1561e419539198554d94ad Mon Sep 17 00:00:00 2001 From: Thomas Geymayer Date: Mon, 16 Jun 2014 23:47:05 +0200 Subject: [PATCH] GUIMgr: prevent double init/shutdown --- src/Canvas/gui_mgr.cxx | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/Canvas/gui_mgr.cxx b/src/Canvas/gui_mgr.cxx index d63359487..1750f5a5b 100644 --- a/src/Canvas/gui_mgr.cxx +++ b/src/Canvas/gui_mgr.cxx @@ -501,6 +501,12 @@ sc::WindowPtr GUIMgr::createWindow(const std::string& name) //------------------------------------------------------------------------------ void GUIMgr::init() { + if( _desktop && _event_handler ) + { + SG_LOG(SG_GUI, SG_WARN, "GUIMgr::init() already initialized."); + return; + } + DesktopPtr desktop( new DesktopGroup ); desktop->handleResize ( @@ -530,14 +536,27 @@ void GUIMgr::init() //------------------------------------------------------------------------------ void GUIMgr::shutdown() { - _desktop->destroy(); - _desktop.reset(); + if( !_desktop && !_event_handler ) + { + SG_LOG(SG_GUI, SG_WARN, "GUIMgr::shutdown() not running."); + return; + } + sc::Canvas::removePlacementFactory("window"); - globals->get_renderer() - ->getViewer() - ->removeEventHandler( _event_handler ); - _event_handler = 0; + if( _desktop ) + { + _desktop->destroy(); + _desktop.reset(); + } + + if( _event_handler ) + { + globals->get_renderer() + ->getViewer() + ->removeEventHandler( _event_handler ); + _event_handler = 0; + } } //------------------------------------------------------------------------------ -- 2.39.5