Henri Verbeet : wined3d: Get rid of wined3d_device_init_gdi().

Alexandre Julliard julliard at winehq.org
Fri Apr 12 13:11:49 CDT 2019


Module: wine
Branch: master
Commit: b599e8e3a04cc80bd09647fd784eac70dc2e411d
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b599e8e3a04cc80bd09647fd784eac70dc2e411d

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Fri Apr 12 17:38:44 2019 +0430

wined3d: Get rid of wined3d_device_init_gdi().

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ddraw/ddraw.c        | 13 +++----
 dlls/wined3d/device.c     | 87 ++++++++++++++++-------------------------------
 dlls/wined3d/wined3d.spec |  1 -
 include/wine/wined3d.h    |  1 -
 4 files changed, 34 insertions(+), 68 deletions(-)

diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 8467fbf..f4aabf4 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -569,6 +569,9 @@ static HRESULT ddraw_attach_d3d_device(struct ddraw *ddraw,
 
     TRACE("ddraw %p.\n", ddraw);
 
+    if (ddraw->flags & DDRAW_NO3D)
+        return wined3d_device_init_3d(ddraw->wined3d_device, swapchain_desc);
+
     if (!window || window == GetDesktopWindow())
     {
         window = CreateWindowExA(0, DDRAW_WINDOW_CLASS_NAME, "Hidden D3D Window",
@@ -594,8 +597,7 @@ static HRESULT ddraw_attach_d3d_device(struct ddraw *ddraw,
     /* Set this NOW, otherwise creating the depth stencil surface will cause a
      * recursive loop until ram or emulated video memory is full. */
     ddraw->flags |= DDRAW_D3D_INITIALIZED;
-    hr = wined3d_device_init_3d(ddraw->wined3d_device, swapchain_desc);
-    if (FAILED(hr))
+    if (FAILED(hr = wined3d_device_init_3d(ddraw->wined3d_device, swapchain_desc)))
     {
         ddraw->flags &= ~DDRAW_D3D_INITIALIZED;
         return hr;
@@ -638,12 +640,7 @@ static HRESULT ddraw_create_swapchain(struct ddraw *ddraw, HWND window, BOOL win
     swapchain_desc.windowed = windowed;
     swapchain_desc.flags = WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH;
 
-    if (!(ddraw->flags & DDRAW_NO3D))
-        hr = ddraw_attach_d3d_device(ddraw, &swapchain_desc);
-    else
-        hr = wined3d_device_init_gdi(ddraw->wined3d_device, &swapchain_desc);
-
-    if (FAILED(hr))
+    if (FAILED(hr = ddraw_attach_d3d_device(ddraw, &swapchain_desc)))
     {
         ERR("Failed to create swapchain, hr %#x.\n", hr);
         return hr;
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 1d870c0..1424ed4 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1079,8 +1079,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
 
     if (device->d3d_initialized)
         return WINED3DERR_INVALIDCALL;
-    if (device->wined3d->flags & WINED3D_NO3D)
-        return WINED3DERR_INVALIDCALL;
 
     memset(device->fb.render_targets, 0, sizeof(device->fb.render_targets));
 
@@ -1120,26 +1118,40 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
     }
     device->swapchains[0] = swapchain;
 
-    if (FAILED(hr = wined3d_device_create_primary_opengl_context(device)))
-        goto err_out;
-    device_init_swapchain_state(device, swapchain);
+    if (device->wined3d->flags & WINED3D_NO3D)
+    {
+        if (!(device->blitter = wined3d_cpu_blitter_create()))
+        {
+            ERR("Failed to create CPU blitter.\n");
+            heap_free(device->swapchains);
+            device->swapchain_count = 0;
+            goto err_out;
+        }
+    }
+    else
+    {
+        if (FAILED(hr = wined3d_device_create_primary_opengl_context(device)))
+            goto err_out;
+        device_init_swapchain_state(device, swapchain);
 
-    device->contexts[0]->last_was_rhw = 0;
+        device->contexts[0]->last_was_rhw = 0;
 
-    TRACE("All defaults now set up.\n");
+        TRACE("All defaults now set up.\n");
 
-    /* Clear the screen */
-    if (device->back_buffer_view)
-        clear_flags |= WINED3DCLEAR_TARGET;
-    if (swapchain_desc->enable_auto_depth_stencil)
-        clear_flags |= WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL;
-    if (clear_flags)
-        wined3d_device_clear(device, 0, NULL, clear_flags, &black, 1.0f, 0);
+        /* Clear the screen */
+        if (device->back_buffer_view)
+            clear_flags |= WINED3DCLEAR_TARGET;
+        if (swapchain_desc->enable_auto_depth_stencil)
+            clear_flags |= WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL;
+        if (clear_flags)
+            wined3d_device_clear(device, 0, NULL, clear_flags, &black, 1.0f, 0);
 
-    device->d3d_initialized = TRUE;
+        device->d3d_initialized = TRUE;
+
+        if (wined3d_settings.logo)
+            device_load_logo(device, wined3d_settings.logo);
+    }
 
-    if (wined3d_settings.logo)
-        device_load_logo(device, wined3d_settings.logo);
     return WINED3D_OK;
 
 err_out:
@@ -1153,47 +1165,6 @@ err_out:
     return hr;
 }
 
-HRESULT CDECL wined3d_device_init_gdi(struct wined3d_device *device,
-        struct wined3d_swapchain_desc *swapchain_desc)
-{
-    struct wined3d_swapchain *swapchain = NULL;
-    HRESULT hr;
-
-    TRACE("device %p, swapchain_desc %p.\n", device, swapchain_desc);
-
-    /* Setup the implicit swapchain */
-    TRACE("Creating implicit swapchain\n");
-    hr = device->device_parent->ops->create_swapchain(device->device_parent,
-            swapchain_desc, &swapchain);
-    if (FAILED(hr))
-    {
-        WARN("Failed to create implicit swapchain\n");
-        goto err_out;
-    }
-
-    device->swapchain_count = 1;
-    if (!(device->swapchains = heap_calloc(device->swapchain_count, sizeof(*device->swapchains))))
-    {
-        ERR("Out of memory!\n");
-        goto err_out;
-    }
-    device->swapchains[0] = swapchain;
-
-    if (!(device->blitter = wined3d_cpu_blitter_create()))
-    {
-        ERR("Failed to create CPU blitter.\n");
-        heap_free(device->swapchains);
-        device->swapchain_count = 0;
-        goto err_out;
-    }
-
-    return WINED3D_OK;
-
-err_out:
-    wined3d_swapchain_decref(swapchain);
-    return hr;
-}
-
 static void device_free_sampler(struct wine_rb_entry *entry, void *context)
 {
     struct wined3d_sampler *sampler = WINE_RB_ENTRY_VALUE(entry, struct wined3d_sampler, entry);
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index 75b9fe1..1422c65 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -121,7 +121,6 @@
 @ cdecl wined3d_device_get_wined3d(ptr)
 @ cdecl wined3d_device_incref(ptr)
 @ cdecl wined3d_device_init_3d(ptr ptr)
-@ cdecl wined3d_device_init_gdi(ptr ptr)
 @ cdecl wined3d_device_multiply_transform(ptr long ptr)
 @ cdecl wined3d_device_process_vertices(ptr long long long ptr ptr long long)
 @ cdecl wined3d_device_release_focus_window(ptr)
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 51fb7e6..e943e0d 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2364,7 +2364,6 @@ struct wined3d_sampler * __cdecl wined3d_device_get_vs_sampler(const struct wine
 struct wined3d * __cdecl wined3d_device_get_wined3d(const struct wined3d_device *device);
 ULONG __cdecl wined3d_device_incref(struct wined3d_device *device);
 HRESULT __cdecl wined3d_device_init_3d(struct wined3d_device *device, struct wined3d_swapchain_desc *swapchain_desc);
-HRESULT __cdecl wined3d_device_init_gdi(struct wined3d_device *device, struct wined3d_swapchain_desc *swapchain_desc);
 void __cdecl wined3d_device_multiply_transform(struct wined3d_device *device,
         enum wined3d_transform_state state, const struct wined3d_matrix *matrix);
 HRESULT __cdecl wined3d_device_process_vertices(struct wined3d_device *device,




More information about the wine-cvs mailing list