From 05742652567968765f611f89d3a53895181b99cd Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Sat, 4 Sep 2021 08:02:57 -0700 Subject: [PATCH] wgl: Swap buffers via pointer instead of HDC Reviewed-by: Charmaine Lee Reviewed By: Bill Kristiansen Acked-by: Roland Scheidegger Part-of: --- src/gallium/frontends/wgl/stw_framebuffer.c | 29 ++++++++++++--------- src/gallium/frontends/wgl/stw_framebuffer.h | 3 +++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/gallium/frontends/wgl/stw_framebuffer.c b/src/gallium/frontends/wgl/stw_framebuffer.c index 58488efcd6f..882f734cd8c 100644 --- a/src/gallium/frontends/wgl/stw_framebuffer.c +++ b/src/gallium/frontends/wgl/stw_framebuffer.c @@ -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) diff --git a/src/gallium/frontends/wgl/stw_framebuffer.h b/src/gallium/frontends/wgl/stw_framebuffer.h index ee9faf5ef46..932c8e0925f 100644 --- a/src/gallium/frontends/wgl/stw_framebuffer.h +++ b/src/gallium/frontends/wgl/stw_framebuffer.h @@ -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)