diff options
author | Bernd Weimer <bweimer@blackberry.com> | 2013-07-25 09:36:10 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-12 10:36:23 +0200 |
commit | d8ba940b949d60f43fe3b2a4e2973b7a2fdc4b2a (patch) | |
tree | f9c3390422730ebd9c7f402c8d5572f93a5e8137 /src/plugins | |
parent | 23964bc338b9b00e204d45a917a0bb330cb795c4 (diff) |
QNX: Prevent rendering when app is minimized
Windows will only be exposed and hence rendered when they are not
minimized. This will save useless computations and hence battery.
Change-Id: I83166cc6c3d89e878106c998a35890dd7788ed8a
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/qnx/qqnxscreen.cpp | 6 | ||||
-rw-r--r-- | src/plugins/platforms/qnx/qqnxwindow.cpp | 13 | ||||
-rw-r--r-- | src/plugins/platforms/qnx/qqnxwindow.h | 2 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/plugins/platforms/qnx/qqnxscreen.cpp b/src/plugins/platforms/qnx/qqnxscreen.cpp index 7959617443..d940b35861 100644 --- a/src/plugins/platforms/qnx/qqnxscreen.cpp +++ b/src/plugins/platforms/qnx/qqnxscreen.cpp @@ -646,6 +646,9 @@ void QQnxScreen::activateWindowGroup(const QByteArray &id) if (!window) return; + Q_FOREACH (QQnxWindow *childWindow, m_childWindows) + childWindow->setExposed(true); + QWindowSystemInterface::handleWindowActivated(window); } @@ -656,6 +659,9 @@ void QQnxScreen::deactivateWindowGroup(const QByteArray &id) if (!rootWindow() || id != rootWindow()->groupName()) return; + Q_FOREACH (QQnxWindow *childWindow, m_childWindows) + childWindow->setExposed(false); + QWindowSystemInterface::handleWindowActivated(0); } diff --git a/src/plugins/platforms/qnx/qqnxwindow.cpp b/src/plugins/platforms/qnx/qqnxwindow.cpp index 9b9576c88b..61b13099fd 100644 --- a/src/plugins/platforms/qnx/qqnxwindow.cpp +++ b/src/plugins/platforms/qnx/qqnxwindow.cpp @@ -75,6 +75,7 @@ QQnxWindow::QQnxWindow(QWindow *window, screen_context_t context) m_screen(0), m_parentWindow(0), m_visible(false), + m_exposed(true), m_windowState(Qt::WindowNoState), #if !defined(QT_NO_OPENGL) m_platformOpenGLContext(0), @@ -334,9 +335,19 @@ void QQnxWindow::setOpacity(qreal level) // the transparency will look wrong... } +void QQnxWindow::setExposed(bool exposed) +{ + qWindowDebug() << Q_FUNC_INFO << "window =" << window() << "expose =" << exposed; + + if (m_exposed != exposed) { + m_exposed = exposed; + QWindowSystemInterface::handleExposeEvent(window(), window()->geometry()); + } +} + bool QQnxWindow::isExposed() const { - return m_visible; + return m_visible && m_exposed; } QSize QQnxWindow::requestedBufferSize() const diff --git a/src/plugins/platforms/qnx/qqnxwindow.h b/src/plugins/platforms/qnx/qqnxwindow.h index 4fabccf4cb..cd1980d994 100644 --- a/src/plugins/platforms/qnx/qqnxwindow.h +++ b/src/plugins/platforms/qnx/qqnxwindow.h @@ -102,6 +102,7 @@ public: void lower(); void requestActivateWindow(); void setWindowState(Qt::WindowState state); + void setExposed(bool exposed); void propagateSizeHints(); @@ -158,6 +159,7 @@ private: QList<QQnxWindow*> m_childWindows; QQnxWindow *m_parentWindow; bool m_visible; + bool m_exposed; QRect m_unmaximizedGeometry; Qt::WindowState m_windowState; |