wgl: Swap buffers via pointer instead of HDC
authorJesse Natalie <jenatali@microsoft.com>
Sat, 4 Sep 2021 15:02:57 +0000 (08:02 -0700)
committerMarge Bot <eric+marge@anholt.net>
Wed, 15 Sep 2021 20:17:31 +0000 (20:17 +0000)
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
Reviewed By: Bill Kristiansen <billkris@microsoft.com>

Acked-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12727>

src/gallium/frontends/wgl/stw_framebuffer.c
src/gallium/frontends/wgl/stw_framebuffer.h

index 58488ef..882f734 100644 (file)
@@ -670,20 +670,10 @@ wait_swap_interval(struct stw_framebuffer *fb)
    fb->prev_swap_time = cur_time;
 }
 
-
-BOOL APIENTRY
-DrvSwapBuffers(HDC hdc)
+BOOL
+stw_framebuffer_swap_locked(HDC hdc, struct stw_framebuffer *fb)
 {
    struct stw_context *ctx;
-   struct stw_framebuffer *fb;
-
-   if (!stw_dev)
-      return FALSE;
-
-   fb = stw_framebuffer_from_hdc( hdc );
-   if (fb == NULL)
-      return FALSE;
-
    if (!(fb->pfi->pfd.dwFlags & PFD_DOUBLEBUFFER)) {
       stw_framebuffer_unlock(fb);
       return TRUE;
@@ -713,6 +703,21 @@ DrvSwapBuffers(HDC hdc)
    return stw_st_swap_framebuffer_locked(hdc, ctx->st, fb->stfb);
 }
 
+BOOL APIENTRY
+DrvSwapBuffers(HDC hdc)
+{
+   struct stw_framebuffer *fb;
+
+   if (!stw_dev)
+      return FALSE;
+
+   fb = stw_framebuffer_from_hdc( hdc );
+   if (fb == NULL)
+      return FALSE;
+
+   return stw_framebuffer_swap_locked(hdc, fb);
+}
+
 
 BOOL APIENTRY
 DrvSwapLayerBuffers(HDC hdc, UINT fuPlanes)
index ee9faf5..932c8e0 100644 (file)
@@ -194,6 +194,9 @@ stw_framebuffer_present_locked(HDC hdc,
 void
 stw_framebuffer_update(struct stw_framebuffer *fb);
 
+BOOL
+stw_framebuffer_swap_locked(HDC hdc, struct stw_framebuffer *fb);
+
 
 static inline void
 stw_framebuffer_lock(struct stw_framebuffer *fb)