Jacek Caban : winex11: Directly use NtUserGetIconInfo.
Alexandre Julliard
julliard at winehq.org
Thu May 5 15:56:01 CDT 2022
Module: wine
Branch: master
Commit: 7769c8e9dfe238194d4ae7aab80ad83dc55d2e18
URL: https://source.winehq.org/git/wine.git/?a=commit;h=7769c8e9dfe238194d4ae7aab80ad83dc55d2e18
Author: Jacek Caban <jacek at codeweavers.com>
Date: Sun May 1 22:18:43 2022 +0200
winex11: Directly use NtUserGetIconInfo.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/winex11.drv/mouse.c | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
index 7133f2e2694..46951103bc1 100644
--- a/dlls/winex11.drv/mouse.c
+++ b/dlls/winex11.drv/mouse.c
@@ -1228,6 +1228,27 @@ done:
return cursor;
}
+static BOOL get_icon_info( HICON handle, ICONINFOEXW *ret )
+{
+ UNICODE_STRING module, res_name;
+ ICONINFO info;
+
+ module.Buffer = ret->szModName;
+ module.MaximumLength = sizeof(ret->szModName) - sizeof(WCHAR);
+ res_name.Buffer = ret->szResName;
+ res_name.MaximumLength = sizeof(ret->szResName) - sizeof(WCHAR);
+ if (!NtUserGetIconInfo( handle, &info, &module, &res_name, NULL, 0 )) return FALSE;
+ ret->fIcon = info.fIcon;
+ ret->xHotspot = info.xHotspot;
+ ret->yHotspot = info.yHotspot;
+ ret->hbmColor = info.hbmColor;
+ ret->hbmMask = info.hbmMask;
+ ret->wResID = res_name.Length ? 0 : LOWORD( res_name.Buffer );
+ ret->szModName[module.Length] = 0;
+ ret->szResName[res_name.Length] = 0;
+ return TRUE;
+}
+
/***********************************************************************
* create_xlib_load_mono_cursor
*
@@ -1243,8 +1264,7 @@ static Cursor create_xlib_load_mono_cursor( HDC hdc, HANDLE handle, int width, i
if (!(mono = CopyImage( handle, IMAGE_CURSOR, width, height, LR_MONOCHROME | LR_COPYFROMRESOURCE )))
return None;
- info.cbSize = sizeof(info);
- if (GetIconInfoExW( mono, &info ))
+ if (get_icon_info( mono, &info ))
{
if (!info.hbmColor)
{
@@ -1413,8 +1433,7 @@ static Cursor create_cursor( HANDLE handle )
if (!handle) return get_empty_cursor();
- info.cbSize = sizeof(info);
- if (!GetIconInfoExW( handle, &info )) return 0;
+ if (!get_icon_info( handle, &info )) return 0;
if (use_system_cursors && (cursor = create_xcursor_system_cursor( &info )))
{
More information about the wine-cvs
mailing list