From e3712182bdabfbb0d693ed55ceeec8bb4216b8ca Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Tue, 1 May 2018 17:47:12 -0400 Subject: [PATCH] Qt: only init new UI the first time it is about to be shown --- ui/drivers/qt/ui_qt_application.cpp | 4 +++- ui/ui_companion_driver.c | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ui/drivers/qt/ui_qt_application.cpp b/ui/drivers/qt/ui_qt_application.cpp index aac3b237c5..e8a73a6e9f 100644 --- a/ui/drivers/qt/ui_qt_application.cpp +++ b/ui/drivers/qt/ui_qt_application.cpp @@ -95,7 +95,9 @@ AppHandler::~AppHandler() void AppHandler::exit() { app_exiting = true; - qApp->closeAllWindows(); + + if (qApp) + qApp->closeAllWindows(); } bool AppHandler::isExiting() const diff --git a/ui/ui_companion_driver.c b/ui/ui_companion_driver.c index 79974c6610..802fa06ffe 100644 --- a/ui/ui_companion_driver.c +++ b/ui/ui_companion_driver.c @@ -131,7 +131,7 @@ void ui_companion_driver_init_first(void) ui_companion = (ui_companion_driver_t*)ui_companion_init_first(); #ifdef HAVE_QT - if (settings->bools.desktop_menu_enable) + if (settings->bools.desktop_menu_enable && settings->bools.ui_companion_toggle) { ui_companion_qt_data = ui_companion_qt.init(); qt_is_inited = true; @@ -159,8 +159,16 @@ void ui_companion_driver_toggle(bool force) #ifdef HAVE_QT if (settings->bools.desktop_menu_enable) - if (ui_companion_qt.toggle) + { + if ((settings->bools.ui_companion_toggle || force) && !qt_is_inited) + { + ui_companion_qt_data = ui_companion_qt.init(); + qt_is_inited = true; + } + + if (qt_is_inited && ui_companion_qt.toggle) ui_companion_qt.toggle(ui_companion_qt_data, force); + } #endif }