ddraw: Properly clear the clip list if ddraw_clipper_SetClipList() is called with NULL region data.
This commit is contained in:
parent
e2765579bc
commit
1ef86ad596
|
@ -238,10 +238,12 @@ static HRESULT WINAPI ddraw_clipper_SetClipList(IDirectDrawClipper *iface, RGNDA
|
||||||
|
|
||||||
if (clipper->region)
|
if (clipper->region)
|
||||||
DeleteObject(clipper->region);
|
DeleteObject(clipper->region);
|
||||||
if (!(clipper->region = ExtCreateRegion(NULL, 0, region)))
|
if (!region)
|
||||||
|
clipper->region = NULL;
|
||||||
|
else if (!(clipper->region = ExtCreateRegion(NULL, 0, region)))
|
||||||
{
|
{
|
||||||
wined3d_mutex_unlock();
|
wined3d_mutex_unlock();
|
||||||
ERR("Failed to create creation.\n");
|
ERR("Failed to create region.\n");
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -339,6 +339,12 @@ static void test_clipper_blt(void)
|
||||||
ok(SUCCEEDED(hr), "Failed to set clipper window, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to set clipper window, hr %#x.\n", hr);
|
||||||
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
||||||
ok(SUCCEEDED(hr), "Failed to get clip list size, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to get clip list size, hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawClipper_SetClipList(clipper, NULL, 0);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to set clip list, hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
||||||
|
ok(hr == DDERR_NOCLIPLIST, "Got unexpected hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawSurface_Blt(dst_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
|
||||||
|
ok(hr == DDERR_NOCLIPLIST, "Got unexpected hr %#x.\n", hr);
|
||||||
|
|
||||||
IDirectDrawSurface_Release(dst_surface);
|
IDirectDrawSurface_Release(dst_surface);
|
||||||
IDirectDrawSurface_Release(src_surface);
|
IDirectDrawSurface_Release(src_surface);
|
||||||
|
|
|
@ -346,6 +346,12 @@ static void test_clipper_blt(void)
|
||||||
ok(SUCCEEDED(hr), "Failed to set clipper window, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to set clipper window, hr %#x.\n", hr);
|
||||||
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
||||||
ok(SUCCEEDED(hr), "Failed to get clip list size, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to get clip list size, hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawClipper_SetClipList(clipper, NULL, 0);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to set clip list, hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
||||||
|
ok(hr == DDERR_NOCLIPLIST, "Got unexpected hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawSurface_Blt(dst_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
|
||||||
|
ok(hr == DDERR_NOCLIPLIST, "Got unexpected hr %#x.\n", hr);
|
||||||
|
|
||||||
IDirectDrawSurface_Release(dst_surface);
|
IDirectDrawSurface_Release(dst_surface);
|
||||||
IDirectDrawSurface_Release(src_surface);
|
IDirectDrawSurface_Release(src_surface);
|
||||||
|
|
|
@ -641,6 +641,12 @@ static void test_clipper_blt(void)
|
||||||
ok(SUCCEEDED(hr), "Failed to set clipper window, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to set clipper window, hr %#x.\n", hr);
|
||||||
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
||||||
ok(SUCCEEDED(hr), "Failed to get clip list size, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to get clip list size, hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawClipper_SetClipList(clipper, NULL, 0);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to set clip list, hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
||||||
|
ok(hr == DDERR_NOCLIPLIST, "Got unexpected hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawSurface4_Blt(dst_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
|
||||||
|
ok(hr == DDERR_NOCLIPLIST, "Got unexpected hr %#x.\n", hr);
|
||||||
|
|
||||||
IDirectDrawSurface4_Release(dst_surface);
|
IDirectDrawSurface4_Release(dst_surface);
|
||||||
IDirectDrawSurface4_Release(src_surface);
|
IDirectDrawSurface4_Release(src_surface);
|
||||||
|
|
|
@ -634,6 +634,12 @@ static void test_clipper_blt(void)
|
||||||
ok(SUCCEEDED(hr), "Failed to set clipper window, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to set clipper window, hr %#x.\n", hr);
|
||||||
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
||||||
ok(SUCCEEDED(hr), "Failed to get clip list size, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to get clip list size, hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawClipper_SetClipList(clipper, NULL, 0);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to set clip list, hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawClipper_GetClipList(clipper, NULL, NULL, &ret);
|
||||||
|
ok(hr == DDERR_NOCLIPLIST, "Got unexpected hr %#x.\n", hr);
|
||||||
|
hr = IDirectDrawSurface7_Blt(dst_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
|
||||||
|
ok(hr == DDERR_NOCLIPLIST, "Got unexpected hr %#x.\n", hr);
|
||||||
|
|
||||||
IDirectDrawSurface7_Release(dst_surface);
|
IDirectDrawSurface7_Release(dst_surface);
|
||||||
IDirectDrawSurface7_Release(src_surface);
|
IDirectDrawSurface7_Release(src_surface);
|
||||||
|
|
Loading…
Reference in New Issue