maemo: disable updates when screen is off
authorChristian Pulvermacher <pulvermacher@gmx.de>
Wed, 28 Dec 2011 18:44:49 +0000 (19:44 +0100)
committerChristian Pulvermacher <pulvermacher@gmx.de>
Wed, 28 Dec 2011 18:44:49 +0000 (19:44 +0100)
src/mainwindow.cpp
src/mainwindow.h
src/vncview.cpp
src/vncview.h

index 13bdd90..8caa037 100644 (file)
 #ifdef Q_WS_MAEMO_5
 #include <QtMaemo5>
 #include <QX11Info>
+#include <QDBusConnection>
+
+#include <mce/mode-names.h>
+#include <mce/dbus-names.h>
 
 #include <X11/Xlib.h>
 #include <X11/Xatom.h>
@@ -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); }
index c56364d..441062b 100644 (file)
@@ -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);
index 4070679..a581563 100644 (file)
@@ -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;
        }
 
index d5697f3..41303a5 100644 (file)
@@ -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();