st/wgl: fix locking issue in stw_st_framebuffer_present_locked()
authorBrian Paul <brianp@vmware.com>
Mon, 9 Nov 2015 21:51:56 +0000 (14:51 -0700)
committerBrian Paul <brianp@vmware.com>
Wed, 11 Nov 2015 16:38:22 +0000 (09:38 -0700)
When stw_st_framebuffer_present_locked() is called, the
stw_framebuffer's mutex will already be locked.  Normally, the
stw_framebuffer_present_locked() function calls
stw_framebuffer_release() to unlock the mutex when it's done.  But if
for some reason the 'resource' pointer in
stw_st_framebuffer_present_locked() is null, we'd return without
unlocking the stw_framebuffer.  This fixes that to avoid potential
deadlocks.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/state_trackers/wgl/stw_st.c

index b41171a9195b12da38201cb2f663b31a05bae443..2d5d4379932f7e5eec0250a5396c374dcbae4d29 100644 (file)
@@ -169,6 +169,9 @@ stw_st_framebuffer_present_locked(HDC hdc,
    if (resource) {
       stw_framebuffer_present_locked(hdc, stwfb->fb, resource);
    }
+   else {
+      stw_framebuffer_release(stwfb->fb);
+   }
 
    return TRUE;
 }