summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBernd Weimer <bweimer@blackberry.com>2013-07-25 09:36:10 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-12 10:36:23 +0200
commitd8ba940b949d60f43fe3b2a4e2973b7a2fdc4b2a (patch)
treef9c3390422730ebd9c7f402c8d5572f93a5e8137 /src
parent23964bc338b9b00e204d45a917a0bb330cb795c4 (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')
-rw-r--r--src/plugins/platforms/qnx/qqnxscreen.cpp6
-rw-r--r--src/plugins/platforms/qnx/qqnxwindow.cpp13
-rw-r--r--src/plugins/platforms/qnx/qqnxwindow.h2
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;