Module: wine Branch: master Commit: afb09525b5b1e60cab22c3af648baef7ebeb1dec URL: https://source.winehq.org/git/wine.git/?a=commit;h=afb09525b5b1e60cab22c3af6... Author: Jeff Smith <whydoubt(a)gmail.com> Date: Tue Jan 28 16:35:42 2020 +0330 d3drm: Return D3DRMERR_BADOBJECT from d3drm_viewport2_SetProjection() for uninitialised viewports. Signed-off-by: Jeff Smith <whydoubt(a)gmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3drm/tests/d3drm.c | 4 ++-- dlls/d3drm/viewport.c | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dlls/d3drm/tests/d3drm.c b/dlls/d3drm/tests/d3drm.c index 40237fc7a2..62194977d4 100644 --- a/dlls/d3drm/tests/d3drm.c +++ b/dlls/d3drm/tests/d3drm.c @@ -2165,7 +2165,7 @@ static void test_Viewport(void) hr = IDirect3DRMViewport_SetBack(viewport, 100.0f); ok(hr == D3DRMERR_BADOBJECT, "Got unexpected hr %#x.\n", hr); hr = IDirect3DRMViewport_SetProjection(viewport, D3DRMPROJECT_PERSPECTIVE); - todo_wine ok(hr == D3DRMERR_BADOBJECT, "Got unexpected hr %#x.\n", hr); + ok(hr == D3DRMERR_BADOBJECT, "Got unexpected hr %#x.\n", hr); /* Test all failures together */ hr = IDirect3DRMViewport_Init(viewport, NULL, frame, rc.left, rc.top, rc.right, rc.bottom); @@ -2358,7 +2358,7 @@ static void test_Viewport(void) hr = IDirect3DRMViewport2_SetBack(viewport2, 100.0f); ok(hr == D3DRMERR_BADOBJECT, "Got unexpected hr %#x.\n", hr); hr = IDirect3DRMViewport2_SetProjection(viewport2, D3DRMPROJECT_PERSPECTIVE); - todo_wine ok(hr == D3DRMERR_BADOBJECT, "Got unexpected hr %#x.\n", hr); + ok(hr == D3DRMERR_BADOBJECT, "Got unexpected hr %#x.\n", hr); hr = IDirect3DRMViewport2_Init(viewport2, NULL, frame3, rc.left, rc.top, rc.right, rc.bottom); ok(hr == D3DRMERR_BADOBJECT, "Expected hr == D3DRMERR_BADOBJECT, got %#x.\n", hr); diff --git a/dlls/d3drm/viewport.c b/dlls/d3drm/viewport.c index 8e959d5f37..17b6f1df53 100644 --- a/dlls/d3drm/viewport.c +++ b/dlls/d3drm/viewport.c @@ -613,6 +613,9 @@ static HRESULT WINAPI d3drm_viewport2_SetProjection(IDirect3DRMViewport2 *iface, TRACE("iface %p, type %#x.\n", iface, type); + if (!viewport->d3d_viewport) + return D3DRMERR_BADOBJECT; + viewport->projection = type; return D3DRM_OK;