X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fstate_trackers%2Fwgl%2Fstw_st.c;h=28c93f4fb57f90952e8fbcb2952ec06817f44c43;hb=4683529048ee133481b2d8f1cae1685aa1736f9a;hp=b58d91673b7867dfe483e961cd2a1508122c8494;hpb=0f68236a2487dbeb0396b996debcda595b0b54a1;p=mesa.git diff --git a/src/gallium/state_trackers/wgl/stw_st.c b/src/gallium/state_trackers/wgl/stw_st.c index b58d91673b7..28c93f4fb57 100644 --- a/src/gallium/state_trackers/wgl/stw_st.c +++ b/src/gallium/state_trackers/wgl/stw_st.c @@ -27,6 +27,7 @@ #include "util/u_memory.h" #include "util/u_inlines.h" +#include "util/u_atomic.h" #include "state_tracker/st_gl_api.h" /* for st_gl_api_create */ #include "stw_st.h" @@ -154,7 +155,8 @@ stw_st_framebuffer_validate(struct st_framebuffer_iface *stfb, * Present an attachment of the framebuffer. */ static boolean -stw_st_framebuffer_present_locked(struct st_framebuffer_iface *stfb, +stw_st_framebuffer_present_locked(HDC hdc, + struct st_framebuffer_iface *stfb, enum st_attachment_type statt) { struct stw_st_framebuffer *stwfb = stw_st_framebuffer(stfb); @@ -162,7 +164,7 @@ stw_st_framebuffer_present_locked(struct st_framebuffer_iface *stfb, resource = stwfb->textures[statt]; if (resource) { - stw_framebuffer_present_locked(stwfb->fb->hDC, stwfb->fb, resource); + stw_framebuffer_present_locked(hdc, stwfb->fb, resource); } return TRUE; @@ -176,7 +178,7 @@ stw_st_framebuffer_flush_front(struct st_framebuffer_iface *stfb, pipe_mutex_lock(stwfb->fb->mutex); - return stw_st_framebuffer_present_locked(&stwfb->base, statt); + return stw_st_framebuffer_present_locked(stwfb->fb->hDC, &stwfb->base, statt); } /** @@ -195,6 +197,7 @@ stw_st_create_framebuffer(struct stw_framebuffer *fb) stwfb->stvis = fb->pfi->stvis; stwfb->base.visual = &stwfb->stvis; + p_atomic_set(&stwfb->base.stamp, 1); stwfb->base.flush_front = stw_st_framebuffer_flush_front; stwfb->base.validate = stw_st_framebuffer_validate; @@ -220,7 +223,7 @@ stw_st_destroy_framebuffer_locked(struct st_framebuffer_iface *stfb) * Swap the buffers of the given framebuffer. */ boolean -stw_st_swap_framebuffer_locked(struct st_framebuffer_iface *stfb) +stw_st_swap_framebuffer_locked(HDC hdc, struct st_framebuffer_iface *stfb) { struct stw_st_framebuffer *stwfb = stw_st_framebuffer(stfb); unsigned front = ST_ATTACHMENT_FRONT_LEFT, back = ST_ATTACHMENT_BACK_LEFT; @@ -245,7 +248,7 @@ stw_st_swap_framebuffer_locked(struct st_framebuffer_iface *stfb) stwfb->texture_mask = mask; front = ST_ATTACHMENT_FRONT_LEFT; - return stw_st_framebuffer_present_locked(&stwfb->base, front); + return stw_st_framebuffer_present_locked(hdc, &stwfb->base, front); } /**