[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.6/kdeedu/marble
From:       Dennis Nienhüser <earthwings () gentoo ! org>
Date:       2010-12-28 10:45:44
Message-ID: 20101228104544.5E64DAC8AD () svn ! kde ! org
[Download RAW message or body]

SVN commit 1209861 by nienhueser:

QtMobility's approach to inhibit the screensaver on Maemo wakes up the screen every \
thirty seconds. This makes it impossible to activate the screen saver by the user. \
Work around it by just asking not to do automatic screen blanking periodically. \
Previously the plugin was only compiled when QtMobility was found. Now that \
dependency is gone, but you need to enable its compilation explicitly using the \
                BUILD_INHIBIT_SCREENSAVER_PLUGIN cmake option.
REVIEW: 6186
Backport of commit 1209858.

 M  +0 -10     FindQtsysteminfo.cmake  
 M  +0 -3      src/plugins/render/CMakeLists.txt  
 M  +4 -2      src/plugins/render/inhibit-screensaver/CMakeLists.txt  
 M  +36 -17    src/plugins/render/inhibit-screensaver/InhibitScreensaverPlugin.cpp  
 M  +2 -0      src/plugins/render/inhibit-screensaver/InhibitScreensaverPlugin.h  


--- branches/KDE/4.6/kdeedu/marble/FindQtsysteminfo.cmake #1209860:1209861
@@ -1,10 +0,0 @@
-# - Find Qt Mobility libs
-#
-# This module determines whether Qt Mobility is installed.
-#
-# Copyright (c) 2010, Dennis Nienhüser, <earthwings@gentoo.org>
-#
-
-include(FindPkgConfig)
-
-pkg_check_modules(QtSystemInfo QtSystemInfo>=1.0.1)
--- branches/KDE/4.6/kdeedu/marble/src/plugins/render/CMakeLists.txt #1209860:1209861
@@ -22,12 +22,9 @@
 
 add_subdirectory( routing )
 
-find_package(Qtsysteminfo)
-if(QtSystemInfo_FOUND)
   # FIXME: The inhibit-screensaver plugin stresses the term render plugin a bit far.
   # It should be moved to a new plugin type later.
   add_subdirectory( inhibit-screensaver )
-endif(QtSystemInfo_FOUND)
 
 if (NOT WIN32)
   add_subdirectory( aprs )
--- branches/KDE/4.6/kdeedu/marble/src/plugins/render/inhibit-screensaver/CMakeLists.txt \
#1209860:1209861 @@ -1,3 +1,6 @@
+OPTION(BUILD_INHIBIT_SCREENSAVER_PLUGIN "Build the Maemo specific \
inhibit-screensaver plugin") +
+IF( BUILD_INHIBIT_SCREENSAVER_PLUGIN )
 PROJECT(InhibitScreensaverPlugin)
 
 INCLUDE_DIRECTORIES(
@@ -5,11 +8,10 @@
  ${CMAKE_BINARY_DIR}/src/plugins/render/inhibit-screensaver
  ${QT_INCLUDE_DIR}
  ${QT_QTNETWORK_INCLUDE_DIR}
- ${QtSystemInfo_INCLUDE_DIRS}
 )
 INCLUDE(${QT_USE_FILE})
 
 set( inhibit-screensaver_SRCS InhibitScreensaverPlugin.cpp )		 
-set( InhibitScreensaverPlugin_LIBS ${QtSystemInfo_LIBRARIES} )
 
 marble_add_plugin( InhibitScreensaverPlugin ${inhibit-screensaver_SRCS} )
+ENDIF()
--- branches/KDE/4.6/kdeedu/marble/src/plugins/render/inhibit-screensaver/InhibitScreensaverPlugin.cpp \
#1209860:1209861 @@ -12,34 +12,50 @@
 
 #include "MarbleDataFacade.h"
 #include "PositionTracking.h"
+#include "MarbleDebug.h"
 
-#include <QtSystemInfo/QSystemScreenSaver>
+#include <QtCore/QTimer>
+#include <QtDBus/QDBusConnection>
+#include <QtDBus/QDBusInterface>
 
 namespace Marble {
 
 class InhibitScreensaverPluginPrivate
 {
 public:
-    bool m_initialized;
+    QDBusInterface *m_interface;
 
-    QtMobility::QSystemScreenSaver* m_screensaver;
+    QTimer m_timer;
 
     InhibitScreensaverPluginPrivate();
+
+    ~InhibitScreensaverPluginPrivate();
 };
 
 InhibitScreensaverPluginPrivate::InhibitScreensaverPluginPrivate() :
-        m_initialized( false ),
-        m_screensaver( 0 )
+        m_interface( 0 )
 {
-    // nothing to do
+    m_timer.setInterval( 10 * 1000 ); // timeout of 10 seconds
 }
 
+InhibitScreensaverPluginPrivate::~InhibitScreensaverPluginPrivate()
+{
+    delete m_interface;
+}
 
 InhibitScreensaverPlugin::InhibitScreensaverPlugin() :
         d ( new InhibitScreensaverPluginPrivate() )
 {
+    connect( &d->m_timer, SIGNAL( timeout() ), this, SLOT( inhibitScreenSaver() ) );
+
+#ifdef Q_WS_MAEMO_5
     setEnabled( true );
     setVisible( true );
+#else
+    qDebug() << "The inhibit screensaver plugin is only useful on Maemo.";
+    setEnabled( false );
+    setVisible( false );
+#endif
 }
 
 InhibitScreensaverPlugin::~InhibitScreensaverPlugin()
@@ -86,16 +102,19 @@
 void InhibitScreensaverPlugin::initialize()
 {
     Q_ASSERT( dataFacade() && dataFacade()->positionTracking() );
+
+    d->m_interface= new QDBusInterface( "com.nokia.mce", "/com/nokia/mce/request",
+       "com.nokia.mce.request", QDBusConnection::systemBus() );
+
     PositionTracking *tracking = dataFacade()->positionTracking();
     connect( tracking, SIGNAL( positionProviderPluginChanged( \
                PositionProviderPlugin* ) ),
              this, SLOT( updateScreenSaverState( PositionProviderPlugin* ) ) );
     updateScreenSaverState( tracking->positionProviderPlugin() );
-    d->m_initialized = true;
 }
 
 bool InhibitScreensaverPlugin::isInitialized() const
 {
-    return d->m_initialized;
+    return d->m_interface;
 }
 
 void InhibitScreensaverPlugin::updateScreenSaverState( PositionProviderPlugin \
*activePlugin ) @@ -105,18 +124,18 @@
     }
 
     if ( activePlugin ) {
-        // Inhibit screensaver
-        if ( !d->m_screensaver ) {
-            d->m_screensaver = new QtMobility::QSystemScreenSaver( this );
-            d->m_screensaver->setScreenSaverInhibit();
+        d->m_timer.start(); // Inhibit screensaver
+    } else {
+      d->m_timer.stop();
         }
-    } else if ( d->m_screensaver ) {
-        // Do not inhibit the screensaver. The API here is cumbersome:
-        // You can only revert a previous inhibition by deleting the screensaver \
                object. Wtf?
-        delete d->m_screensaver;
-        d->m_screensaver = 0;
     }
+
+void InhibitScreensaverPlugin::inhibitScreenSaver()
+{
+    if ( d->m_interface && d->m_interface->isValid() ) {
+        d->m_interface->call( "req_display_blanking_pause" );
 }
+}
 
 bool InhibitScreensaverPlugin::render( GeoPainter *, ViewportParams *, const \
QString&, GeoSceneLayer *)  {
--- branches/KDE/4.6/kdeedu/marble/src/plugins/render/inhibit-screensaver/InhibitScreensaverPlugin.h \
#1209860:1209861 @@ -61,6 +61,8 @@
 private Q_SLOTS:
      void updateScreenSaverState( PositionProviderPlugin *activePlugin );
 
+     void inhibitScreenSaver();
+
 private:
      InhibitScreensaverPluginPrivate* const d;
 };


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic