diff options
Diffstat (limited to 'x11-libs/qt/files/qt-3.3.1-qclipboard-fix.patch')
-rw-r--r-- | x11-libs/qt/files/qt-3.3.1-qclipboard-fix.patch | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/x11-libs/qt/files/qt-3.3.1-qclipboard-fix.patch b/x11-libs/qt/files/qt-3.3.1-qclipboard-fix.patch deleted file mode 100644 index fdfa086ff13f..000000000000 --- a/x11-libs/qt/files/qt-3.3.1-qclipboard-fix.patch +++ /dev/null @@ -1,94 +0,0 @@ ---- src/kernel/qclipboard_x11.cpp.sav 2004-01-06 19:24:40.000000000 +0100 -+++ src/kernel/qclipboard_x11.cpp 2004-01-22 19:48:32.000000000 +0100 -@@ -112,10 +112,6 @@ static bool pending_selection_changed = - - // event capture mechanism for qt_xclb_wait_for_event - static bool waiting_for_data = FALSE; --static bool has_captured_event = FALSE; --static Window capture_event_win = None; --static int capture_event_type = -1; --static XEvent captured_event; - - class QClipboardWatcher; // forward decl - static QClipboardWatcher *selection_watcher = 0; -@@ -432,69 +428,36 @@ bool QClipboard::selectionModeEnabled() - { return inSelectionMode_obsolete; } - - --// event filter function... captures interesting events while --// qt_xclb_wait_for_event is running the event loop --static int qt_xclb_event_filter(XEvent *event) --{ -- if (event->xany.type == capture_event_type && -- event->xany.window == capture_event_win) { -- VDEBUG( "QClipboard: event_filter(): caught event type %d", event->type ); -- has_captured_event = TRUE; -- captured_event = *event; -- return 1; -- } -- -- return 0; --} -- - bool qt_xclb_wait_for_event( Display *dpy, Window win, int type, XEvent *event, - int timeout ) - { -- if ( waiting_for_data ) -- qFatal( "QClipboard: internal error, qt_xclb_wait_for_event recursed" ); -- -- waiting_for_data = TRUE; -- - QTime started = QTime::currentTime(); - QTime now = started; -- -- has_captured_event = FALSE; -- capture_event_win = win; -- capture_event_type = type; -- -- QX11EventFilter old_event_filter = qt_set_x11_event_filter(qt_xclb_event_filter); -+ bool flushed = FALSE; - - do { -- if ( XCheckTypedWindowEvent(dpy,win,type,event) ) { -- waiting_for_data = FALSE; -- qt_set_x11_event_filter(old_event_filter); -+ if ( XCheckTypedWindowEvent(dpy,win,type,event) ) - return TRUE; -- } - - now = QTime::currentTime(); - if ( started > now ) // crossed midnight - started = now; - -- // 0x08 == ExcludeTimers for X11 only -- qApp->eventLoop()->processEvents( QEventLoop::ExcludeUserInput | -- QEventLoop::ExcludeSocketNotifiers | -- QEventLoop::WaitForMore | 0x08 ); -- -- if ( has_captured_event ) { -- waiting_for_data = FALSE; -- *event = captured_event; -- qt_set_x11_event_filter(old_event_filter); -- return TRUE; -+ if(!flushed) { -+ XFlush( dpy ); -+ flushed = TRUE; - } -- } while ( started.msecsTo(now) < timeout ); - -- waiting_for_data = FALSE; -- qt_set_x11_event_filter(old_event_filter); -+ // sleep 50ms, so we don't use up CPU cycles all the time. -+ struct timeval usleep_tv; -+ usleep_tv.tv_sec = 0; -+ usleep_tv.tv_usec = 50000; -+ select(0, 0, 0, 0, &usleep_tv); -+ } while ( started.msecsTo(now) < timeout ); - - return FALSE; - } - -- - static inline int maxSelectionIncr( Display *dpy ) - { return XMaxRequestSize(dpy) > 65536 ? 65536*4 : XMaxRequestSize(dpy)*4 - 100; } - |