From 057fe1752477bdaafd2c9ec15f88b750083aff38 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 20 Dec 2015 18:04:33 +0100 Subject: gui: don't update main window if we're minimized Shaves off 12% runtime in minimized case. --- gui/ui.cpp | 26 ++++++++++++++++++++++---- gui/ui.h | 3 +++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/gui/ui.cpp b/gui/ui.cpp index c19e4840..31bce40b 100644 --- a/gui/ui.cpp +++ b/gui/ui.cpp @@ -122,6 +122,8 @@ MainWindow::MainWindow() : register_shortcuts(); + connect(this, &MainWindow::emit_minimized, this, &MainWindow::mark_minimized, Qt::QueuedConnection); + ui.btnStartTracker->setFocus(); } @@ -419,6 +421,9 @@ void MainWindow::set_title(const QString& game_title_) void MainWindow::showHeadPose() { + if (!ui.video_frame->isEnabled()) + return; + double mapped[6], raw[6]; work->tracker->get_raw_and_mapped_poses(mapped, raw); @@ -548,15 +553,28 @@ void MainWindow::restore_from_tray(QSystemTrayIcon::ActivationReason) void MainWindow::changeEvent(QEvent* e) { - if (s.tray_enabled && e->type() == QEvent::WindowStateChange && (windowState() & Qt::WindowMinimized)) + if (e->type() == QEvent::WindowStateChange) { - if (!tray) - ensure_tray(); - hide(); + const bool is_minimized = windowState() & Qt::WindowMinimized; + + if (s.tray_enabled && is_minimized) + { + if (!tray) + ensure_tray(); + hide(); + } + + emit_minimized(is_minimized); } + QMainWindow::changeEvent(e); } +void MainWindow::mark_minimized(bool is_minimized) +{ + ui.video_frame->setEnabled(!is_minimized); +} + void MainWindow::maybe_start_profile_from_executable() { if (!work) diff --git a/gui/ui.h b/gui/ui.h index deeb116d..6dbcf962 100644 --- a/gui/ui.h +++ b/gui/ui.h @@ -106,10 +106,13 @@ private slots: void startTracker(); void stopTracker(); void reload_options(); + void mark_minimized(bool is_minimized); signals: void emit_start_tracker(); void emit_stop_tracker(); void emit_toggle_tracker(); + + void emit_minimized(bool); public: MainWindow(); ~MainWindow(); -- cgit v1.2.3