mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 04:20:08 +01:00
egl/wgl: Make ref_count atomic
Looks like wgl doesn't have much display state to protect. But it's ref_count should be atomic before we start removing locking from eglapi to protect against MakeCurrent being called in parallel on multiple threads. Signed-off-by: Rob Clark <robdclark@chromium.org> Acked-by: Eric Engestrom <eric@igalia.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18050>
This commit is contained in:
parent
f182b1952a
commit
a2d6dee4f0
1 changed files with 4 additions and 6 deletions
|
|
@ -318,7 +318,7 @@ wgl_initialize(_EGLDisplay *disp)
|
|||
* to free it up correctly.
|
||||
*/
|
||||
if (wgl_dpy) {
|
||||
wgl_dpy->ref_count++;
|
||||
p_atomic_inc(&wgl_dpy->ref_count);
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -338,7 +338,7 @@ wgl_initialize(_EGLDisplay *disp)
|
|||
return EGL_FALSE;
|
||||
|
||||
wgl_dpy = wgl_egl_display(disp);
|
||||
wgl_dpy->ref_count++;
|
||||
p_atomic_inc(&wgl_dpy->ref_count);
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
|
@ -357,9 +357,7 @@ wgl_display_release(_EGLDisplay *disp)
|
|||
wgl_dpy = wgl_egl_display(disp);
|
||||
|
||||
assert(wgl_dpy->ref_count > 0);
|
||||
wgl_dpy->ref_count--;
|
||||
|
||||
if (wgl_dpy->ref_count > 0)
|
||||
if (!p_atomic_dec_zero(&wgl_dpy->ref_count))
|
||||
return;
|
||||
|
||||
_eglCleanupDisplay(disp);
|
||||
|
|
@ -643,7 +641,7 @@ wgl_make_current(_EGLDisplay *disp, _EGLSurface *dsurf,
|
|||
* EGLDisplay is terminated and then initialized again while a
|
||||
* context is still bound. See wgl_intitialize() for a more in depth
|
||||
* explanation. */
|
||||
wgl_dpy->ref_count++;
|
||||
p_atomic_inc(&wgl_dpy->ref_count);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue