Henri Verbeet : wined3d: Just return the declaration from wined3d_device_get_vertex_declaration().

Alexandre Julliard julliard at winehq.org
Fri Sep 21 14:22:39 CDT 2012


Module: wine
Branch: master
Commit: 2f03ad1a40e48884d1d4ddeb6edfa3991f785faa
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2f03ad1a40e48884d1d4ddeb6edfa3991f785faa

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Sep 20 22:59:21 2012 +0200

wined3d: Just return the declaration from wined3d_device_get_vertex_declaration().

---

 dlls/d3d8/device.c        |   19 +++++--------------
 dlls/d3d9/device.c        |   23 +++++------------------
 dlls/wined3d/device.c     |   11 +++--------
 dlls/wined3d/wined3d.spec |    2 +-
 include/wine/wined3d.h    |    3 +--
 5 files changed, 15 insertions(+), 43 deletions(-)

diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index 244e4c0..baa8b63 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -2153,33 +2153,24 @@ static HRESULT WINAPI d3d8_device_GetVertexShader(IDirect3DDevice8 *iface, DWORD
     struct d3d8_device *device = impl_from_IDirect3DDevice8(iface);
     struct wined3d_vertex_declaration *wined3d_declaration;
     struct d3d8_vertex_declaration *d3d8_declaration;
-    HRESULT hr;
 
     TRACE("iface %p, shader %p.\n", iface, shader);
 
     wined3d_mutex_lock();
-    if (FAILED(hr = wined3d_device_get_vertex_declaration(device->wined3d_device, &wined3d_declaration)))
+    if ((wined3d_declaration = wined3d_device_get_vertex_declaration(device->wined3d_device)))
     {
-        wined3d_mutex_unlock();
-        WARN("Failed to get wined3d vertex declaration, hr %#x.\n", hr);
-        return hr;
+        d3d8_declaration = wined3d_vertex_declaration_get_parent(wined3d_declaration);
+        *shader = d3d8_declaration->shader_handle;
     }
-
-    if (!wined3d_declaration)
+    else
     {
-        wined3d_mutex_unlock();
         *shader = 0;
-        return D3D_OK;
     }
-
-    d3d8_declaration = wined3d_vertex_declaration_get_parent(wined3d_declaration);
-    wined3d_vertex_declaration_decref(wined3d_declaration);
     wined3d_mutex_unlock();
-    *shader = d3d8_declaration->shader_handle;
 
     TRACE("Returning %#x.\n", *shader);
 
-    return hr;
+    return D3D_OK;
 }
 
 static HRESULT WINAPI d3d8_device_DeleteVertexShader(IDirect3DDevice8 *iface, DWORD shader)
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
index ea2fd1f..b1b7b80 100644
--- a/dlls/d3d9/device.c
+++ b/dlls/d3d9/device.c
@@ -2088,22 +2088,19 @@ static HRESULT WINAPI d3d9_device_GetVertexDeclaration(IDirect3DDevice9Ex *iface
         IDirect3DVertexDeclaration9 **declaration)
 {
     struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface);
-    struct wined3d_vertex_declaration *wined3d_declaration = NULL;
+    struct wined3d_vertex_declaration *wined3d_declaration;
     struct d3d9_vertex_declaration *declaration_impl;
-    HRESULT hr;
 
     TRACE("iface %p, declaration %p.\n", iface, declaration);
 
     if (!declaration) return D3DERR_INVALIDCALL;
 
     wined3d_mutex_lock();
-    hr = wined3d_device_get_vertex_declaration(device->wined3d_device, &wined3d_declaration);
-    if (SUCCEEDED(hr) && wined3d_declaration)
+    if ((wined3d_declaration = wined3d_device_get_vertex_declaration(device->wined3d_device)))
     {
         declaration_impl = wined3d_vertex_declaration_get_parent(wined3d_declaration);
         *declaration = &declaration_impl->IDirect3DVertexDeclaration9_iface;
         IDirect3DVertexDeclaration9_AddRef(*declaration);
-        wined3d_vertex_declaration_decref(wined3d_declaration);
     }
     else
     {
@@ -2112,7 +2109,7 @@ static HRESULT WINAPI d3d9_device_GetVertexDeclaration(IDirect3DDevice9Ex *iface
     wined3d_mutex_unlock();
 
     TRACE("Returning %p.\n", *declaration);
-    return hr;
+    return D3D_OK;
 }
 
 static struct wined3d_vertex_declaration *device_get_fvf_declaration(struct d3d9_device *device, DWORD fvf)
@@ -2215,24 +2212,14 @@ static HRESULT WINAPI d3d9_device_GetFVF(IDirect3DDevice9Ex *iface, DWORD *fvf)
     struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface);
     struct wined3d_vertex_declaration *wined3d_declaration;
     struct d3d9_vertex_declaration *d3d9_declaration;
-    HRESULT hr;
 
     TRACE("iface %p, fvf %p.\n", iface, fvf);
 
     wined3d_mutex_lock();
-    if (FAILED(hr = wined3d_device_get_vertex_declaration(device->wined3d_device, &wined3d_declaration)))
-    {
-        wined3d_mutex_unlock();
-        WARN("Failed to get vertex declaration, hr %#x.\n", hr);
-        *fvf = 0;
-        return hr;
-    }
-
-    if (wined3d_declaration)
+    if ((wined3d_declaration = wined3d_device_get_vertex_declaration(device->wined3d_device)))
     {
         d3d9_declaration = wined3d_vertex_declaration_get_parent(wined3d_declaration);
         *fvf = d3d9_declaration->fvf;
-        wined3d_vertex_declaration_decref(wined3d_declaration);
     }
     else
     {
@@ -2242,7 +2229,7 @@ static HRESULT WINAPI d3d9_device_GetFVF(IDirect3DDevice9Ex *iface, DWORD *fvf)
 
     TRACE("Returning FVF %#x.\n", *fvf);
 
-    return hr;
+    return D3D_OK;
 }
 
 static HRESULT WINAPI d3d9_device_CreateVertexShader(IDirect3DDevice9Ex *iface,
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 4d6d03c..1b63104 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -2442,16 +2442,11 @@ void CDECL wined3d_device_set_vertex_declaration(struct wined3d_device *device,
     device_invalidate_state(device, STATE_VDECL);
 }
 
-HRESULT CDECL wined3d_device_get_vertex_declaration(const struct wined3d_device *device,
-        struct wined3d_vertex_declaration **declaration)
+struct wined3d_vertex_declaration * CDECL wined3d_device_get_vertex_declaration(const struct wined3d_device *device)
 {
-    TRACE("device %p, declaration %p.\n", device, declaration);
-
-    *declaration = device->stateBlock->state.vertex_declaration;
-    if (*declaration)
-        wined3d_vertex_declaration_incref(*declaration);
+    TRACE("device %p.\n", device);
 
-    return WINED3D_OK;
+    return device->stateBlock->state.vertex_declaration;
 }
 
 HRESULT CDECL wined3d_device_set_vertex_shader(struct wined3d_device *device, struct wined3d_shader *shader)
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index c50dd29..091f6d5 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -88,7 +88,7 @@
 @ cdecl wined3d_device_get_texture(ptr long ptr)
 @ cdecl wined3d_device_get_texture_stage_state(ptr long long ptr)
 @ cdecl wined3d_device_get_transform(ptr long ptr)
-@ cdecl wined3d_device_get_vertex_declaration(ptr ptr)
+@ cdecl wined3d_device_get_vertex_declaration(ptr)
 @ cdecl wined3d_device_get_vertex_shader(ptr)
 @ cdecl wined3d_device_get_viewport(ptr ptr)
 @ cdecl wined3d_device_get_vs_consts_b(ptr long ptr long)
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 90e71c0..bf16b55 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2164,8 +2164,7 @@ HRESULT __cdecl wined3d_device_get_texture_stage_state(const struct wined3d_devi
         UINT stage, enum wined3d_texture_stage_state state, DWORD *value);
 void __cdecl wined3d_device_get_transform(const struct wined3d_device *device,
         enum wined3d_transform_state state, struct wined3d_matrix *matrix);
-HRESULT __cdecl wined3d_device_get_vertex_declaration(const struct wined3d_device *device,
-        struct wined3d_vertex_declaration **declaration);
+struct wined3d_vertex_declaration * __cdecl wined3d_device_get_vertex_declaration(const struct wined3d_device *device);
 struct wined3d_shader * __cdecl wined3d_device_get_vertex_shader(const struct wined3d_device *device);
 void __cdecl wined3d_device_get_viewport(const struct wined3d_device *device, struct wined3d_viewport *viewport);
 HRESULT __cdecl wined3d_device_get_vs_consts_b(const struct wined3d_device *device,




More information about the wine-cvs mailing list