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>
bb10
Bernd Weimer 2013-07-25 09:36:10 +02:00 committed by The Qt Project
parent 23964bc338
commit d8ba940b94
3 changed files with 20 additions and 1 deletions

View File

@ -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);
}

View File

@ -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

View File

@ -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;