[PATCH v2 11/12] winex11: Directly use win32u and ntdll in a few more places.
Huw Davies
huw at codeweavers.com
Tue Apr 26 10:06:10 CDT 2022
From: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
dlls/winex11.drv/clipboard.c | 27 ++++++++++++++++++---------
1 file changed, 18 insertions(+), 9 deletions(-)
diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c
index eb357ed4643..a0ccc3ebc96 100644
--- a/dlls/winex11.drv/clipboard.c
+++ b/dlls/winex11.drv/clipboard.c
@@ -203,7 +203,7 @@ static const char *debugstr_format( UINT id )
{
WCHAR buffer[256];
- if (GetClipboardFormatNameW( id, buffer, 256 ))
+ if (NtUserGetClipboardFormatName( id, buffer, ARRAYSIZE(buffer) ))
return wine_dbg_sprintf( "%04x %s", id, debugstr_w(buffer) );
switch (id)
@@ -349,7 +349,8 @@ static void register_win32_formats( const UINT *ids, UINT size )
for (count = 0; count < 256 && size; ids++, size--)
{
if (find_win32_format( *ids )) continue; /* it already exists */
- if (!GetClipboardFormatNameW( *ids, buffer, 256 )) continue; /* not a named format */
+ if (!NtUserGetClipboardFormatName( *ids, buffer, ARRAYSIZE(buffer) ))
+ continue; /* not a named format */
if (!(len = WideCharToMultiByte( CP_UNIXCP, 0, buffer, -1, NULL, 0, NULL, NULL ))) continue;
if (!(names[count] = malloc( len ))) continue;
WideCharToMultiByte( CP_UNIXCP, 0, buffer, -1, names[count], len, NULL, NULL );
@@ -434,6 +435,14 @@ static void put_property( Display *display, Window win, Atom prop, Atom type, in
}
+static void selection_sleep(void)
+{
+ LARGE_INTEGER timeout;
+ timeout.QuadPart = (ULONGLONG)SELECTION_WAIT * -10000;
+ NtDelayExecution( FALSE, &timeout );
+}
+
+
/**************************************************************************
* convert_selection
*/
@@ -455,7 +464,7 @@ static BOOL convert_selection( Display *display, Window win, Atom selection,
Bool res = XCheckTypedWindowEvent( display, win, SelectionNotify, &event );
if (res && event.xselection.selection == selection && event.xselection.target == format->atom)
return read_property( display, win, event.xselection.property, type, data, size );
- Sleep( SELECTION_WAIT );
+ selection_sleep();
}
ERR( "Timed out waiting for SelectionNotify event\n" );
return FALSE;
@@ -1414,7 +1423,7 @@ static UINT *get_clipboard_formats( UINT *size )
for (;;)
{
if (!(ids = malloc( *size * sizeof(*ids) ))) return NULL;
- if (GetUpdatedClipboardFormats( ids, *size, size )) break;
+ if (NtUserGetUpdatedClipboardFormats( ids, *size, size )) break;
free( ids );
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) return NULL;
}
@@ -1706,7 +1715,7 @@ static BOOL read_property( Display *display, Window w, Atom prop,
if (res && xe.xproperty.atom == prop &&
xe.xproperty.state == PropertyNewValue)
break;
- Sleep(SELECTION_WAIT);
+ selection_sleep();
}
if (i >= SELECTION_RETRIES ||
@@ -1863,14 +1872,14 @@ static BOOL request_selection_contents( Display *display, BOOL changed )
last_size != size ||
memcmp( last_data, data, size ));
- if (!changed || !OpenClipboard( clipboard_hwnd ))
+ if (!changed || !NtUserOpenClipboard( clipboard_hwnd, 0 ))
{
free( data );
return FALSE;
}
TRACE( "selection changed, importing\n" );
- EmptyClipboard();
+ NtUserEmptyClipboard();
is_clipboard_owner = TRUE;
rendered_formats = 0;
@@ -1884,9 +1893,9 @@ static BOOL request_selection_contents( Display *display, BOOL changed )
last_data = data;
last_size = size;
last_clipboard_update = GetTickCount64();
- CloseClipboard();
+ NtUserCloseClipboard();
if (!use_xfixes)
- SetTimer( clipboard_hwnd, 1, SELECTION_UPDATE_DELAY, NULL );
+ NtUserSetTimer( clipboard_hwnd, 1, SELECTION_UPDATE_DELAY, NULL, TIMERV_DEFAULT_COALESCING );
return TRUE;
}
--
2.25.1
More information about the wine-devel
mailing list