st/egl: Use resource reference count for egl_g3d_sync.
authorChia-I Wu <olv@lunarg.com>
Sat, 23 Oct 2010 09:27:58 +0000 (17:27 +0800)
committerChia-I Wu <olv@lunarg.com>
Sat, 23 Oct 2010 09:28:56 +0000 (17:28 +0800)
src/gallium/state_trackers/egl/common/egl_g3d.h
src/gallium/state_trackers/egl/common/egl_g3d_sync.c

index be450bbede35a700b585d955b9bc890e3d0837d2..72c14f0ac497d596e6f48384df26138ddd2a5c84 100644 (file)
@@ -106,8 +106,6 @@ _EGL_DRIVER_TYPECAST(egl_g3d_image, _EGLImage, obj)
 struct egl_g3d_sync {
    _EGLSync base;
 
-   int refs;
-
    /* the mutex protects only the condvar, not the struct */
    pipe_mutex mutex;
    pipe_condvar condvar;
index ec74e9eb94c85878709f7a8a9d165dc6ab6db714..4e6d944c1510ec38c2f7a08b67337f32c73f117a 100644 (file)
@@ -128,13 +128,13 @@ egl_g3d_wait_fence_sync(struct egl_g3d_sync *gsync, EGLTimeKHR timeout)
 static INLINE void
 egl_g3d_ref_sync(struct egl_g3d_sync *gsync)
 {
-   p_atomic_inc(&gsync->refs);
+   _eglGetSync(&gsync->base);
 }
 
 static INLINE void
 egl_g3d_unref_sync(struct egl_g3d_sync *gsync)
 {
-   if (p_atomic_dec_zero(&gsync->refs)) {
+   if (_eglPutSync(&gsync->base)) {
       pipe_condvar_destroy(gsync->condvar);
       pipe_mutex_destroy(gsync->mutex);
 
@@ -194,7 +194,6 @@ egl_g3d_create_sync(_EGLDriver *drv, _EGLDisplay *dpy,
 
    pipe_mutex_init(gsync->mutex);
    pipe_condvar_init(gsync->condvar);
-   p_atomic_set(&gsync->refs, 1);
 
    return &gsync->base;
 }