darwin: Eliminate a possible race condition while destroying a surface

Introduced by: c60ffd2840
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit d65bd195ec)
This commit is contained in:
Jeremy Huddleston 2012-04-27 18:36:33 -07:00
parent 7e624edba4
commit 9724c8d13c

View file

@ -207,9 +207,6 @@ apple_glx_surface_destroy(unsigned int uid)
d->types.surface.pending_destroy = true;
d->release(d);
/* apple_glx_drawable_find_by_uid returns a locked drawable */
d->unlock(d);
/*
* We release 2 references to the surface. One was acquired by
* the find, and the other was leftover from a context, or
@ -220,6 +217,9 @@ apple_glx_surface_destroy(unsigned int uid)
* to actually destroy it when the pending_destroy is processed
* by a glViewport callback (see apple_glx_context_update()).
*/
d->destroy(d);
if (!d->destroy(d)) {
/* apple_glx_drawable_find_by_uid returns a locked drawable */
d->unlock(d);
}
}
}