Commit b17b77c7 authored by Rémi Bernon's avatar Rémi Bernon Committed by Alexandre Julliard

wineandroid: Set the window cursor immediately in SetCursor.

parent 4b968267
......@@ -1448,42 +1448,33 @@ static BOOL get_icon_info( HICON handle, ICONINFOEXW *ret )
*/
void ANDROID_SetCursor( HWND hwnd, HCURSOR handle )
{
static HCURSOR last_cursor;
static DWORD last_cursor_change;
if (InterlockedExchangePointer( (void **)&last_cursor, handle ) != handle ||
NtGetTickCount() - last_cursor_change > 100)
if (handle)
{
last_cursor_change = NtGetTickCount();
unsigned int width = 0, height = 0, *bits = NULL;
ICONINFOEXW info;
int id;
if (handle)
{
unsigned int width = 0, height = 0, *bits = NULL;
ICONINFOEXW info;
int id;
if (!get_icon_info( handle, &info )) return;
if (!get_icon_info( handle, &info )) return;
if (!(id = get_cursor_system_id( &info )))
{
HDC hdc = NtGdiCreateCompatibleDC( 0 );
bits = get_bitmap_argb( hdc, info.hbmColor, info.hbmMask, &width, &height );
NtGdiDeleteObjectApp( hdc );
if (!(id = get_cursor_system_id( &info )))
/* make sure hotspot is valid */
if (info.xHotspot >= width || info.yHotspot >= height)
{
HDC hdc = NtGdiCreateCompatibleDC( 0 );
bits = get_bitmap_argb( hdc, info.hbmColor, info.hbmMask, &width, &height );
NtGdiDeleteObjectApp( hdc );
/* make sure hotspot is valid */
if (info.xHotspot >= width || info.yHotspot >= height)
{
info.xHotspot = width / 2;
info.yHotspot = height / 2;
}
info.xHotspot = width / 2;
info.yHotspot = height / 2;
}
ioctl_set_cursor( id, width, height, info.xHotspot, info.yHotspot, bits );
free( bits );
NtGdiDeleteObjectApp( info.hbmColor );
NtGdiDeleteObjectApp( info.hbmMask );
}
else ioctl_set_cursor( 0, 0, 0, 0, 0, NULL );
ioctl_set_cursor( id, width, height, info.xHotspot, info.yHotspot, bits );
free( bits );
NtGdiDeleteObjectApp( info.hbmColor );
NtGdiDeleteObjectApp( info.hbmMask );
}
else ioctl_set_cursor( 0, 0, 0, 0, 0, NULL );
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment