From 3ba2c69457d01030e611b03469448761b8673fe0 Mon Sep 17 00:00:00 2001 From: Akihiro Sagawa Date: Thu, 18 Aug 2022 19:17:05 +0900 Subject: [PATCH] mciqtz32: Fix MCI_DGV_WINDOW_HWND error handling. --- dlls/mciqtz32/mciqtz.c | 9 +++++++-- dlls/winmm/tests/mci.c | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/dlls/mciqtz32/mciqtz.c b/dlls/mciqtz32/mciqtz.c index 092b445fb02..6fb9c2f43b4 100644 --- a/dlls/mciqtz32/mciqtz.c +++ b/dlls/mciqtz32/mciqtz.c @@ -1000,8 +1000,13 @@ static DWORD MCIQTZ_mciWindow(UINT wDevID, DWORD dwFlags, LPMCI_DGV_WINDOW_PARMS if (dwFlags & MCI_TEST) return 0; - if (dwFlags & MCI_DGV_WINDOW_HWND && (IsWindow(lpParms->hWnd) || !lpParms->hWnd)) { - HWND hwnd = lpParms->hWnd ? lpParms->hWnd : wma->window; + if (dwFlags & MCI_DGV_WINDOW_HWND) { + HWND hwnd; + if (lpParms->hWnd && !IsWindow(lpParms->hWnd)) + return MCIERR_NO_WINDOW; + if (!wma->parent) + return MCIERR_INTERNAL; + hwnd = lpParms->hWnd ? lpParms->hWnd : wma->window; TRACE("Setting parent window to %p.\n", hwnd); if (wma->parent != hwnd) { diff --git a/dlls/winmm/tests/mci.c b/dlls/winmm/tests/mci.c index d2ab6731300..f6654912515 100644 --- a/dlls/winmm/tests/mci.c +++ b/dlls/winmm/tests/mci.c @@ -1432,11 +1432,11 @@ static void test_asyncWaveTypeMpegvideo(HWND hwnd) sprintf(buf, "window mysound handle %lu", PtrToUlong(GetDesktopWindow())); err = mciSendStringA(buf, NULL, 0, NULL); - todo_wine ok(err == MCIERR_INTERNAL, "mci window handle (desktop) returned %s\n", dbg_mcierr(err)); + ok(err == MCIERR_INTERNAL, "mci window handle (desktop) returned %s\n", dbg_mcierr(err)); sprintf(buf, "window mysound handle %lu", (unsigned long)0xdeadbeef); err = mciSendStringA(buf, NULL, 0, NULL); - todo_wine ok(err == MCIERR_NO_WINDOW, "mci window handle (deadbeef) returned %s\n", dbg_mcierr(err)); + ok(err == MCIERR_NO_WINDOW, "mci window handle (deadbeef) returned %s\n", dbg_mcierr(err)); err = mciSendStringA("close mysound wait", NULL, 0, NULL); ok(!err,"mci close wait returned %s\n", dbg_mcierr(err)); @@ -1659,7 +1659,7 @@ static void test_video_window(void) /* Test MCI_DGV_WINDOW_HWND. */ parm.win.hWnd = (HWND)0xdeadbeef; err = mciSendCommandW(id, MCI_WINDOW, MCI_DGV_WINDOW_HWND, (DWORD_PTR)&parm); - todo_wine ok(err == MCIERR_NO_WINDOW, "Got %s.\n", dbg_mcierr(err)); + ok(err == MCIERR_NO_WINDOW, "Got %s.\n", dbg_mcierr(err)); parm.win.hWnd = main_window; err = mciSendCommandW(id, MCI_WINDOW, MCI_DGV_WINDOW_HWND, (DWORD_PTR)&parm); -- 2.11.4.GIT