aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-qt/qte/qte-2.3.10/suspend-resume-hooks.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-qt/qte/qte-2.3.10/suspend-resume-hooks.patch')
-rw-r--r--recipes-qt/qte/qte-2.3.10/suspend-resume-hooks.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/recipes-qt/qte/qte-2.3.10/suspend-resume-hooks.patch b/recipes-qt/qte/qte-2.3.10/suspend-resume-hooks.patch
new file mode 100644
index 0000000..c6e9f16
--- /dev/null
+++ b/recipes-qt/qte/qte-2.3.10/suspend-resume-hooks.patch
@@ -0,0 +1,78 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- qt-2.3.10.foo/src/kernel/qgfx_qws.h~suspend-resume-hooks
++++ qt-2.3.10.foo/src/kernel/qgfx_qws.h
+@@ -192,6 +192,8 @@
+ virtual int pixmapLinestepAlignment() { return 64; }
+
+ virtual void sync() {}
++ virtual void prepareToSuspend() {}
++ virtual void prepareToResume() {}
+ virtual bool onCard(unsigned char *) const;
+ virtual bool onCard(unsigned char *, ulong& out_offset) const;
+
+--- qt-2.3.10.foo/src/kernel/qapplication_qws.cpp~suspend-resume-hooks
++++ qt-2.3.10.foo/src/kernel/qapplication_qws.cpp
+@@ -480,6 +480,7 @@
+ int region_offset_window;
+ #ifndef QT_NO_COP
+ QWSQCopMessageEvent *qcop_response;
++ bool manageAPMMessage( QWSQCopMessageEvent *e );
+ #endif
+ QWSEvent* current_event;
+ QValueList<int> unused_identifiers;
+@@ -840,7 +841,7 @@
+ QWSQCopMessageEvent *pe = (QWSQCopMessageEvent*)e;
+ if ( pe->simpleData.is_response ) {
+ qcop_response = pe;
+- } else {
++ } else if ( !manageAPMMessage( pe ) ) {
+ queue.append(e);
+ }
+ #endif
+@@ -851,6 +852,42 @@
+ }
+ }
+
++#ifndef QT_NO_COP
++bool QWSDisplayData::manageAPMMessage( QWSQCopMessageEvent *e )
++{
++ if ( e->channel.data() != QCString( "QPE/System" ) ) {
++ return FALSE;
++ }
++ if ( e->message.data() == QCString( "aboutToSuspend()" ) ) {
++ if ( qt_screen ) qt_screen->prepareToSuspend();
++ delete e;
++ return TRUE;
++ }
++ if ( e->message.data() == QCString( "returnFromSuspend()" ) ) {
++ if ( qt_screen ) qt_screen->prepareToResume();
++ delete e;
++ QWidgetList *list = QApplication::topLevelWidgets();
++ if ( list ) {
++ QWidgetListIt it( *list );
++ QWidget * w;
++ while ( (w=it.current()) != 0 ) {
++ ++it;
++ if ( !w->testWFlags(Qt::WType_Desktop) ) {
++ QETWidget *etw = (QETWidget*)w;
++ if ( etw->isVisible() ) {
++ etw->repaintHierarchy( etw->geometry(), TRUE );
++ etw->repaintDecoration( qApp->desktop()->rect(), TRUE );
++ }
++ }
++ }
++ delete list;
++ }
++ return TRUE;
++ }
++ return FALSE;
++}
++#endif
++
+ void QWSDisplayData::offsetPendingExpose( int window, const QPoint &offset )
+ {
+ if ( offset.isNull() )