From a6108368f48069aa0702a434583d56aba06885e7 Mon Sep 17 00:00:00 2001 From: Christian Pulvermacher Date: Wed, 28 Dec 2011 19:44:49 +0100 Subject: [PATCH] maemo: disable updates when screen is off --- src/mainwindow.cpp | 15 +++++++++++++++ src/mainwindow.h | 1 + src/vncview.cpp | 14 ++++++++------ src/vncview.h | 6 ++++-- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 13bdd90..8caa037 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -27,6 +27,10 @@ #ifdef Q_WS_MAEMO_5 #include #include +#include + +#include +#include #include #include @@ -118,6 +122,10 @@ MainWindow::MainWindow(QString url, int quality, int listen_port, bool view_only toolbar, SLOT(setVisible(bool))); connect(show_toolbar, SIGNAL(toggled(bool)), this, SLOT(updateScreenSpaceDelayed())); +#ifdef Q_WS_MAEMO_5 + QDBusConnection::systemBus().connect("", MCE_SIGNAL_PATH, MCE_SIGNAL_IF, MCE_DISPLAY_SIG, + this, SLOT(displayStateChanged(QString))); +#endif setCentralWidget(scroll_area); @@ -399,6 +407,13 @@ void MainWindow::zoomSliderReleased() vnc_view->useFastTransformations(false); } +void MainWindow::displayStateChanged(QString state) +{ + const bool display_on = (state != "off"); + if(vnc_view) + vnc_view->setDisplayOff(!display_on); +} + void MainWindow::sendTab() { vnc_view->sendKey(Qt::Key_Tab); } void MainWindow::sendEsc() { vnc_view->sendKey(Qt::Key_Escape); } void MainWindow::sendPgUp() { vnc_view->sendKey(Qt::Key_PageUp); } diff --git a/src/mainwindow.h b/src/mainwindow.h index c56364d..441062b 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -50,6 +50,7 @@ public slots: void statusChanged(RemoteView::RemoteStatus status); void toggleFullscreen(); void zoomSliderReleased(); + void displayStateChanged(QString state); protected: void closeEvent(QCloseEvent*); void resizeEvent(QResizeEvent *event); diff --git a/src/vncview.cpp b/src/vncview.cpp index 4070679..a581563 100644 --- a/src/vncview.cpp +++ b/src/vncview.cpp @@ -48,17 +48,18 @@ VncView::VncView(QWidget *parent, const KUrl &url, RemoteView::Quality quality, : RemoteView(parent), m_initDone(false), m_buttonMask(0), - cursor_x(0), - cursor_y(0), + cursor_x(0), + cursor_y(0), m_quitFlag(false), m_firstPasswordTry(true), m_dontSendClipboard(false), m_horizontalFactor(1.0), m_verticalFactor(1.0), m_forceLocalCursor(false), - quality(quality), - listen_port(listen_port), - transformation_mode(Qt::FastTransformation) + quality(quality), + listen_port(listen_port), + transformation_mode(Qt::FastTransformation), + display_off(false) { m_url = url; m_host = url.host(); @@ -260,7 +261,8 @@ void VncView::outputErrorMessage(const QString &message) void VncView::updateImage(int x, int y, int w, int h) { - if(!QApplication::focusWidget()) { //no focus, we're probably minimized + //don't update if window is out of focus / display is off + if(!QApplication::focusWidget() || display_off) { return; } diff --git a/src/vncview.h b/src/vncview.h index d5697f3..41303a5 100644 --- a/src/vncview.h +++ b/src/vncview.h @@ -59,6 +59,7 @@ public: void showDotCursor(DotCursorState state); void useFastTransformations(bool enabled); QPoint cursorPosition() { return QPoint(cursor_x, cursor_y); } + void setDisplayOff(bool off) { display_off = off; } public slots: void setZoomLevel(int level = -1); //'level' doesn't correspond to actual magnification, though mapping is done here @@ -91,8 +92,9 @@ private: int left_zoom, right_zoom; bool disable_tapping; RemoteView::Quality quality; - int listen_port; - Qt::TransformationMode transformation_mode; + int listen_port; + Qt::TransformationMode transformation_mode; + bool display_off; void keyEventHandler(QKeyEvent *e); void unpressModifiers(); -- 1.7.9.5