xserver-multidpi/hw/xwin
Jon TURNEY b4a08e642b hw/xwin: Improve reliability of clipboard X->Windows pastes
Sometimes, particularly with large clipboard pastes to Windows, we could end up
waiting for the timeout to expire, rather than pasting the data.

Various changes to improve reliability:

1. Use XFlush() not XSync() in winProcessXEventsTimeout().

It makes no sense to ensure we have received replies to outstanding requests if
we are going to wait for them using select()

2. Add XFlush() to winClipboardProc()

Make sure we have sent any requests before we wait using select()

3. Don't use FD_ISSET() to check which fd is ready

This looks like a Cygwin select() bug in that it sometimes returns 0 with an
empty fd set before the timeout expires, but a fd appears to be ready.

Add select() return value to debug output when we are warning that this has
happened.

4. Drain event queues before entering select()

Unconditionally drain event queues before entering select().  This seems to be
the recommended way of writing select() and X event processing loops.

winClipboardFlushXEvents() checks using XPending(), and
winClipboardFlushWindowsMessageQueue() checks using PeekMessage() so this is
safe against blocking, but means that may not need to enter select() at all
sometimes.

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Colin Harrison <colin.harrison@virgin.net>
2014-11-09 14:22:48 +00:00
..
glx hw/xwin: Fix warnings in glx/glshim.c 2014-10-09 16:31:25 +01:00
man hw/xwin: Add controls for enabling/disabling monitoring of PRIMARY selection 2014-11-09 14:22:35 +00:00
winclipboard hw/xwin: Improve reliability of clipboard X->Windows pastes 2014-11-09 14:22:48 +00:00
.gitignore XWin: build XWin man pages using XORG_MANPAGE_SECTIONS 2011-01-18 15:10:21 -08:00
ddraw.h hw/xwin: Fix for MinGW-w64 DirectDraw headers 2012-11-28 14:44:14 +00:00
InitInput.c hw/xwin: Remove SetSelectionOwner wrapper, use XFixesSetSelectionOwnerNotify event instead 2014-09-13 14:06:13 +01:00
InitOutput.c hw/xwin: Add controls for enabling/disabling monitoring of PRIMARY selection 2014-11-09 14:22:35 +00:00
Makefile.am xwin: Remove primary DirectDraw engine 2014-10-09 09:28:04 +02:00
propertystore.h hw/xwin: Add correct taskbar grouping of X windows on Windows 7 2012-11-27 16:08:22 +00:00
system.XWinrc Cygwin/X: Tidy up system.Xwinrc 2010-02-05 19:15:04 +00:00
win.h xwin: Remove primary DirectDraw engine 2014-10-09 09:28:04 +02:00
winallpriv.c hw/xwin: Remove unnecessary casts from malloc/realloc/calloc calls 2014-03-03 14:32:57 +00:00
winauth.c hw/xwin: Fix const discarded warning in winGenerateAuthorization() 2014-03-22 17:16:38 +00:00
winblock.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
winclipboardinit.c hw/xwin: Add fUseUnicode as parameter to winClipboardProc() 2014-09-13 14:18:30 +01:00
winclipboardwrappers.c hw/xwin: Remove some redundant clipboard externs, now defined in winglobals.h 2014-11-06 12:07:34 +00:00
wincmap.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
winconfig.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
winconfig.h xfree86: Remove Option "TextClockFreq" 2014-09-26 15:27:18 -04:00
wincreatewnd.c xwin: Remove native GDI engine (v2) 2014-10-09 09:27:21 +02:00
wincursor.c hw/xwin: Remove unnecessary casts from malloc/realloc/calloc calls 2014-03-03 14:32:57 +00:00
windialogs.c hw/xwin: Fix format warnings with debug printing of pointers on 64-bit 2014-10-09 16:31:58 +01:00
windisplay.c hw/xwin: Improve choice of display name used by internal clients 2014-08-29 13:28:00 +01:00
windisplay.h hw/xwin: Improve choice of display name used by internal clients 2014-08-29 13:28:00 +01:00
winengine.c xwin: Remove primary DirectDraw engine 2014-10-09 09:28:04 +02:00
winerror.c hw/xwin: Show any fatal error message 2012-11-27 13:48:44 +00:00
winglobals.c hw/xwin: Make g_hwndClipboard static 2014-09-13 14:06:25 +01:00
winglobals.h hw/xwin: Add remaining clipboard globals to winglobals.h 2014-09-13 14:06:23 +01:00
winkeybd.c hw/xwin: Silence bell when volume is zero 2014-03-03 14:32:30 +00:00
winkeybd.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
winkeyhook.c hw/xwin: Remove a pointless OS version check in winInstallKeyboardHookLL() 2012-07-16 13:56:54 +01:00
winkeynames.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
winlayouts.h hw/xwin: Fix warning about discarding const in initializing winKBLayouts 2012-10-16 22:29:49 +01:00
winmessages.h hw/xwin: Handle WM_MOUSEHWHEEL 2013-07-23 23:59:27 +01:00
winmisc.c xwin: Remove native GDI engine (v2) 2014-10-09 09:27:21 +02:00
winmonitors.c hw/xwin: Fix using index as a formal parameter in winmonitors.c shadows index() 2012-10-16 21:22:40 +01:00
winmonitors.h hw/xwin: Align parameter names in prototypes with definition 2014-03-03 14:31:17 +00:00
winmouse.c hw/xwin: Handle WM_MOUSEHWHEEL 2013-07-23 23:59:27 +01:00
winms.h hw/xwin: Fix for MinGW-w64 DirectDraw headers 2012-11-28 14:44:14 +00:00
winmsg.c Fix formatting of address operators 2012-12-05 18:09:48 -06:00
winmsg.h hw/xwin: Improve choice of display name used by internal clients 2014-08-29 13:28:00 +01:00
winmsgwindow.c hw/xwin: Fix unused variable warning in winCreateMsgWindow() 2014-10-09 16:35:54 +01:00
winmultiwindowclass.c hw/xwin: Fix possible crash in winMultiWindowGetClassHint 2013-07-23 23:59:41 +01:00
winmultiwindowclass.h hw/xwin: winMultiWindowGetTransientFor() returns an XID not a WindowPtr 2013-06-10 15:48:08 +01:00
winmultiwindowicons.c hw/xwin: Fix warning in winXIconToHICON() 2014-10-09 16:32:31 +01:00
winmultiwindowicons.h hw/xwin: Make winOverrideIcon() thread-safe for icon data access 2012-08-03 22:47:42 +01:00
winmultiwindowshape.c hw/xwin: Fix format warnings with debug printing of pointers on 64-bit 2014-10-09 16:31:58 +01:00
winmultiwindowwindow.c hw/xwin: Fix format warnings with debug printing of pointers on 64-bit 2014-10-09 16:31:58 +01:00
winmultiwindowwm.c hw/xwin: Improve choice of display name used by internal clients 2014-08-29 13:28:00 +01:00
winmultiwindowwndproc.c hw/xwin: Minimize redraw events after resizing/moving windows in multiwindow mode 2014-03-22 18:56:38 +00:00
winprefs.c hw/xwin: Fix const warning in winPrefsLoadPreferences() 2014-10-09 16:34:12 +01:00
winprefs.h hw/xwin: Correct winprefs.c function signatures for x64. 2013-08-30 12:56:35 +01:00
winprefslex.l hw/xwin: Fix redundant declaration warning in winprefslex.l 2014-10-09 16:35:20 +01:00
winprefsyacc.y hw/xwin: Fix warning in yyerror() 2014-10-09 16:34:48 +01:00
winprocarg.c hw/xwin: Add controls for enabling/disabling monitoring of PRIMARY selection 2014-11-09 14:22:35 +00:00
winrandr.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
winresource.h hw/xwin: Add controls for enabling/disabling monitoring of PRIMARY selection 2014-11-09 14:22:35 +00:00
winscrinit.c xwin: Remove native GDI engine (v2) 2014-10-09 09:27:21 +02:00
winSetAppUserModelID.c hw/xwin: Fix format warnings with debug printing of pointers on 64-bit 2014-10-09 16:31:58 +01:00
winshaddd.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
winshadddnl.c hw/xwin: Fix compilation with -Werror=return-type 2014-10-09 16:29:55 +01:00
winshadgdi.c hw/xwin: Remove unnecessary casts from malloc/realloc/calloc calls 2014-03-03 14:32:57 +00:00
wintaskbar.c hw/xwin: Add a simple interface to the ITaskbarList COM interface 2012-11-27 16:09:12 +00:00
wintrayicon.c hw/xwin: Add controls for enabling/disabling monitoring of PRIMARY selection 2014-11-09 14:22:35 +00:00
winvalargs.c hw/xwin: Remove unused variables in winvalargs.c 2012-10-17 13:18:17 +01:00
winvideo.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
winwakeup.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
winwin32rootless.c hw/xwin: Remove an unneeded include 2014-03-22 17:16:48 +00:00
winwin32rootlesswindow.c hw/xwin: Fix numerous 64-bit format/type cast issues with debug printing of pointers 2013-07-23 23:59:44 +01:00
winwin32rootlesswndproc.c hw/xwin: Fix numerous 64-bit format/type cast issues with debug printing of pointers 2013-07-23 23:59:44 +01:00
winwindow.c xwin: Remove native GDI engine (v2) 2014-10-09 09:27:21 +02:00
winwindow.h hw/xwin: Improve WM_ENDSESSION handling using separate messaging window thread 2013-07-23 23:58:50 +01:00
winwindowswm.c hw/xwin: Remove unnecessary casts from malloc/realloc/calloc calls 2014-03-03 14:32:57 +00:00
winwndproc.c hw/xwin: Add controls for enabling/disabling monitoring of PRIMARY selection 2014-11-09 14:22:35 +00:00
X.ico Cygwin/X: Update the native icon to one based on the X.Org logo 2008-12-15 12:42:10 +00:00
XWin.exe.manifest hw/xwin: Update manifest to target all architectures, not just x86 2013-06-10 15:48:34 +01:00
XWin.rc hw/xwin: Add controls for enabling/disabling monitoring of PRIMARY selection 2014-11-09 14:22:35 +00:00