On Fri, Mar 30, 2018 at 07:32:31PM +0800, Zhiyi Zhang wrote:
Signed-off-by: Zhiyi Zhang zzhang@codeweavers.com
dlls/user32/cursoricon.c | 80 +++++++++++---------- dlls/user32/tests/cursoricon.c | 160 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 187 insertions(+), 53 deletions(-)
There's a lot going on in this patch and the vague commit message doesn't help. I'd suggest a patch that fixes CreateIconIndirect() first and a second patch to fix CreateIcon(), then write more description commit messages.
diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c index 8e272f09ce..69c7a937ff 100644 --- a/dlls/user32/cursoricon.c +++ b/dlls/user32/cursoricon.c @@ -92,6 +92,9 @@ struct animated_cursoricon_object HICON frames[1]; /* list of animated cursor frames */ };
+static void stretch_blt_icon(HDC hdc_dst, int dst_x, int dst_y, int dst_width, int dst_height,
HBITMAP src, int width, int height);
static HBITMAP create_color_bitmap( int width, int height ) { HDC hdc = get_display_dc(); @@ -1561,20 +1564,38 @@ HICON WINAPI CreateIcon( { ICONINFO iinfo; HICON hIcon;
HBITMAP hbmMask_upperhalf;
HBITMAP hbmMask_lowerhalf;
HDC hdc;
TRACE_(icon)("%dx%d, planes %d, bpp %d, xor %p, and %p\n", nWidth, nHeight, bPlanes, bBitsPixel, lpXORbits, lpANDbits);
iinfo.fIcon = TRUE;
- iinfo.xHotspot = nWidth / 2;
- iinfo.yHotspot = nHeight / 2;
So this leaves x/yHotspot uninitialized...
diff --git a/dlls/user32/tests/cursoricon.c b/dlls/user32/tests/cursoricon.c index 5099c08d70..e5faa0050e 100644 --- a/dlls/user32/tests/cursoricon.c +++ b/dlls/user32/tests/cursoricon.c @@ -803,23 +803,27 @@ static void test_CreateIcon(void) void *bits; UINT display_bpp; int i;
BOOL is_color;
hdc = GetDC(0); display_bpp = GetDeviceCaps(hdc, BITSPIXEL);
is_color = display_bpp > 1;
Did you really try this on a 1 bpp display?
Huw.