summaryrefslogtreecommitdiffstats
path: root/opensuse/core/qt3/0080-net-wm-sync-request.patch
diff options
context:
space:
mode:
Diffstat (limited to 'opensuse/core/qt3/0080-net-wm-sync-request.patch')
-rw-r--r--opensuse/core/qt3/0080-net-wm-sync-request.patch301
1 files changed, 0 insertions, 301 deletions
diff --git a/opensuse/core/qt3/0080-net-wm-sync-request.patch b/opensuse/core/qt3/0080-net-wm-sync-request.patch
deleted file mode 100644
index b3e23cd13..000000000
--- a/opensuse/core/qt3/0080-net-wm-sync-request.patch
+++ /dev/null
@@ -1,301 +0,0 @@
-This qt-copy patch has been slightly modified to apply to the SUSE package
-(does not apply directly because of the immodule patch).
-
---- src/kernel/qwidget_x11.cpp.sav 2007-08-29 15:04:42.000000000 +0200
-+++ src/kernel/qwidget_x11.cpp 2007-08-29 15:06:17.000000000 +0200
-@@ -85,6 +85,12 @@ static QWidget *keyboardGrb = 0;
- extern Time qt_x_time;
- extern Time qt_x_user_time;
-
-+#ifndef QT_NO_XSYNC
-+extern Atom qt_net_wm_sync_request_counter;
-+extern Atom qt_net_wm_sync_request;
-+extern bool qt_use_xsync;
-+#endif
-+
- // defined in qfont_x11.cpp
- extern bool qt_has_xft;
-
-@@ -593,11 +599,14 @@ void QWidget::create( WId window, bool i
-
- XResizeWindow( dpy, id, crect.width(), crect.height() );
- XStoreName( dpy, id, qAppName() );
-- Atom protocols[4];
-+ Atom protocols[5];
- int n = 0;
- protocols[n++] = qt_wm_delete_window; // support del window protocol
- protocols[n++] = qt_wm_take_focus; // support take focus window protocol
- protocols[n++] = qt_net_wm_ping; // support _NET_WM_PING protocol
-+#ifndef QT_NO_XSYNC
-+ protocols[n++] = qt_net_wm_sync_request;// support the _NET_WM_SYNC_REQUEST protocol
-+#endif
- if ( testWFlags( WStyle_ContextHelp ) )
- protocols[n++] = qt_net_wm_context_help;
- XSetWMProtocols( dpy, id, protocols, n );
-@@ -623,6 +632,14 @@ void QWidget::create( WId window, bool i
- XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace,
- (unsigned char *) &curr_pid, 1);
-
-+#ifndef QT_NO_XSYNC
-+ // set _NET_WM_SYNC_COUNTER
-+ createSyncCounter();
-+ long counterVal = topData()->syncCounter;
-+ XChangeProperty( dpy, id, qt_net_wm_sync_request_counter, XA_CARDINAL, 32, PropModeReplace,
-+ (unsigned char*) &counterVal, 1);
-+#endif
-+
- // when we create a toplevel widget, the frame strut should be dirty
- fstrut_dirty = 1;
-
-@@ -722,6 +739,9 @@ void QWidget::destroy( bool destroyWindo
- if ( destroyWindow )
- qt_XDestroyWindow( this, x11Display(), winid );
- }
-+#ifndef QT_NO_XSYNC
-+ destroySyncCounter();
-+#endif
- setWinId( 0 );
-
- extern void qPRCleanup( QWidget *widget ); // from qapplication_x11.cpp
-@@ -781,6 +801,10 @@ void QWidget::reparentSys( QWidget *pare
- destroyInputContext();
- }
-
-+#ifndef QT_NO_XSYNC
-+ destroySyncCounter();
-+#endif
-+
- if ( isTopLevel() || !parent ) // we are toplevel, or reparenting to toplevel
- topData()->parentWinId = 0;
-
-@@ -2464,6 +2488,11 @@ void QWidget::createTLSysExtra()
- // created lazily
- extra->topextra->xic = 0;
- #endif
-+#ifndef QT_NO_XSYNC
-+ extra->topextra->syncCounter = 0;
-+ extra->topextra->syncRequestValue[0] = 0;
-+ extra->topextra->syncRequestValue[1] = 0;
-+#endif
- }
-
- void QWidget::deleteTLSysExtra()
-@@ -2510,6 +2539,51 @@ void QWidget::checkChildrenDnd()
- }
- }
-
-+
-+#ifndef QT_NO_XSYNC
-+// create a window's XSyncCounter
-+void QWidget::createSyncCounter()
-+{
-+ if( !qt_use_xsync || !isTopLevel() || topData()->syncCounter )
-+ return;
-+ XSyncValue zero;
-+ XSyncIntToValue( &zero, 0 );
-+ topData()->syncCounter = XSyncCreateCounter( x11Display(), zero );
-+}
-+
-+// destroy a window's XSyncCounter
-+void QWidget::destroySyncCounter()
-+{
-+ if( !qt_use_xsync || !extra || !extra->topextra
-+ || !extra->topextra->syncCounter )
-+ return;
-+ XSyncDestroyCounter( x11Display(), extra->topextra->syncCounter );
-+ extra->topextra->syncCounter = 0;
-+}
-+
-+// increment a window's XSyncCounter
-+void QWidget::incrementSyncCounter()
-+{
-+ if( qt_use_xsync && topData()->syncCounter &&
-+ !(topData()->syncRequestValue[0] == 0 &&
-+ topData()->syncRequestValue[1] == 0) ) {
-+ XSyncValue val;
-+ XSyncIntsToValue( &val, topData()->syncRequestValue[ 0 ], topData()->syncRequestValue[ 1 ] );
-+ XSyncSetCounter( x11Display(), topData()->syncCounter, val );
-+ topData()->syncRequestValue[0] = topData()->syncRequestValue[1] = 0;
-+ }
-+}
-+
-+// handle _NET_WM_SYNC_REQUEST
-+void QWidget::handleSyncRequest( void* ev )
-+{
-+ XEvent* xev = (XEvent*)ev;
-+ topData()->syncRequestValue[ 0 ] = xev->xclient.data.l[ 2 ];
-+ topData()->syncRequestValue[ 1 ] = xev->xclient.data.l[ 3 ];
-+}
-+#endif // QT_NO_XSYNC
-+
-+
- /*!
- \property QWidget::acceptDrops
- \brief whether drop events are enabled for this widget
---- src/kernel/qt_x11_p.h.sav 2007-08-29 15:04:42.000000000 +0200
-+++ src/kernel/qt_x11_p.h 2007-08-29 15:05:27.000000000 +0200
-@@ -174,6 +174,11 @@ extern "C" {
- #endif // QT_NO_XRENDER
-
-
-+#ifndef QT_NO_XSYNC
-+# include <X11/extensions/sync.h>
-+#endif // QT_NO_XSYNC
-+
-+
- #ifndef QT_NO_XKB
- # include <X11/XKBlib.h>
- #endif // QT_NO_XKB
---- src/kernel/qwidget.h.sav 2007-08-29 15:04:42.000000000 +0200
-+++ src/kernel/qwidget.h 2007-08-29 15:05:52.000000000 +0200
-@@ -605,6 +605,14 @@ private:
- void focusInputContext();
- void unfocusInputContext();
- void checkChildrenDnd();
-+
-+#ifndef QT_NO_XSYNC
-+ void createSyncCounter();
-+ void destroySyncCounter();
-+ void incrementSyncCounter();
-+ void handleSyncRequest( void* ev );
-+#endif
-+
- #elif defined(Q_WS_MAC)
- uint own_id : 1, macDropEnabled : 1;
- EventHandlerRef window_event;
-@@ -986,6 +994,10 @@ struct Q_EXPORT QTLWExtra {
- #if defined(QT_NO_IM_EXTENSIONS)
- void *xic; // Input Context
- #endif
-+#ifndef QT_NO_XSYNC
-+ ulong syncCounter;
-+ uint syncRequestValue[2];
-+#endif
- #endif
- #if defined(Q_WS_MAC)
- WindowGroupRef group;
---- src/kernel/qapplication_x11.cpp.sav 2007-08-29 15:04:42.000000000 +0200
-+++ src/kernel/qapplication_x11.cpp 2007-08-29 15:05:27.000000000 +0200
-@@ -288,6 +288,11 @@ Atom *qt_net_supported_list = 0;
- Window *qt_net_virtual_root_list = 0;
-
-
-+// X11 SYNC support
-+#ifndef QT_NO_XSYNC
-+Atom qt_net_wm_sync_request_counter = 0;
-+Atom qt_net_wm_sync_request = 0;
-+#endif
-
- // client leader window
- Window qt_x11_wm_client_leader = 0;
-@@ -312,6 +317,13 @@ static int xrandr_eventbase;
- // Display
- Q_EXPORT bool qt_use_xrender = FALSE;
-
-+#ifndef QT_NO_XSYNC
-+// True if SYNC extension exists on the connected display
-+bool qt_use_xsync = FALSE;
-+static int xsync_eventbase;
-+static int xsync_errorbase;
-+#endif
-+
- // modifier masks for alt/meta - detected when the application starts
- static long qt_alt_mask = 0;
- static long qt_meta_mask = 0;
-@@ -2007,6 +2019,11 @@ void qt_init_internal( int *argcptr, cha
- qt_x11_intern_atom( "UTF8_STRING", &qt_utf8_string );
- qt_x11_intern_atom( "_SGI_DESKS_MANAGER", &qt_sgi_desks_manager );
-
-+#ifndef QT_NO_XSYNC
-+ qt_x11_intern_atom( "_NET_WM_SYNC_REQUEST_COUNTER", &qt_net_wm_sync_request_counter );
-+ qt_x11_intern_atom( "_NET_WM_SYNC_REQUEST", &qt_net_wm_sync_request );
-+#endif
-+
- qt_xdnd_setup();
- qt_x11_motifdnd_init();
-
-@@ -2043,6 +2060,15 @@ void qt_init_internal( int *argcptr, cha
- }
- #endif // QT_NO_XRENDER
-
-+#ifndef QT_NO_XSYNC
-+ // Try to initialize SYNC extension on the connected display
-+ int xsync_major, xsync_minor;
-+ if ( XSyncQueryExtension( appDpy, &xsync_eventbase, &xsync_errorbase ) &&
-+ XSyncInitialize( appDpy, &xsync_major, &xsync_minor ) ) {
-+ qt_use_xsync = TRUE;
-+ }
-+#endif
-+
- #ifndef QT_NO_XKB
- // If XKB is detected, set the GrabsUseXKBState option so input method
- // compositions continue to work (ie. deadkeys)
-@@ -3196,6 +3222,10 @@ int QApplication::x11ClientMessage(QWidg
- XSendEvent( event->xclient.display, event->xclient.window,
- False, SubstructureNotifyMask|SubstructureRedirectMask, event );
- }
-+#ifndef QT_NO_XSYNC
-+ } else if (a == qt_net_wm_sync_request ) {
-+ widget->handleSyncRequest( event );
-+#endif
- }
- } else if ( event->xclient.message_type == qt_qt_scrolldone ) {
- widget->translateScrollDoneEvent(event);
-@@ -5818,6 +5848,21 @@ bool QETWidget::translateScrollDoneEvent
- return FALSE;
- }
-
-+#if defined(Q_C_CALLBACKS)
-+extern "C" {
-+#endif
-+#ifndef QT_NO_XSYNC
-+static Bool qt_net_wm_sync_request_scanner(Display*, XEvent* event, XPointer arg)
-+{
-+ return (event->type == ClientMessage && event->xclient.window == *(Window*)arg
-+ && event->xclient.message_type == qt_wm_protocols
-+ && event->xclient.data.l[ 0 ] == qt_net_wm_sync_request );
-+}
-+#endif
-+
-+#if defined(Q_C_CALLBACKS)
-+}
-+#endif
-
- //
- // ConfigureNotify (window move and resize) event translation
-@@ -5849,6 +5894,7 @@ bool QETWidget::translateConfigEvent( co
- if (! extra || extra->compress_events) {
- // ConfigureNotify compression for faster opaque resizing
- XEvent otherEvent;
-+ int compressed_configs = 0;
- while ( XCheckTypedWindowEvent( x11Display(), winId(), ConfigureNotify,
- &otherEvent ) ) {
- if ( qt_x11EventFilter( &otherEvent ) )
-@@ -5869,7 +5915,18 @@ bool QETWidget::translateConfigEvent( co
- newCPos.ry() = otherEvent.xconfigure.y +
- otherEvent.xconfigure.border_width;
- }
-+ ++compressed_configs;
-+ }
-+#ifndef QT_NO_XSYNC
-+ // _NET_WM_SYNC_REQUEST compression
-+ Window wid = winId();
-+ while ( compressed_configs &&
-+ XCheckIfEvent( x11Display(), &otherEvent,
-+ qt_net_wm_sync_request_scanner, (XPointer)&wid ) ) {
-+ handleSyncRequest( (void*)&otherEvent );
-+ --compressed_configs;
- }
-+#endif
- }
-
- QRect cr ( geometry() );
-@@ -5923,6 +5980,8 @@ bool QETWidget::translateConfigEvent( co
- repaint( !testWFlags(WResizeNoErase) || transbg );
- }
-
-+ incrementSyncCounter();
-+
- return TRUE;
- }
-