[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