fixed fd leak problem.
authorJoonbum Ko <joonbum.ko@samsung.com>
Thu, 4 Jun 2020 07:31:31 +0000 (16:31 +0900)
committerXuelian Bai <xuelian.bai@samsung.com>
Tue, 21 Feb 2023 06:32:50 +0000 (14:32 +0800)
Change-Id: I59e0b8c42f280582b0c0c25b2963786a3a5404d1
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
src/egl/drivers/dri2/platform_tizen.c

index 3792c83..b64e91d 100755 (executable)
@@ -186,6 +186,7 @@ tizen_internal_wait_sync_for_release_fence(struct dri2_egl_surface *dri2_surf,
 
    dri2_sync = calloc(1, sizeof(struct dri2_egl_sync));
    if (!dri2_sync) {
+      close(release_fence_fd);
       return EGL_FALSE;
    }
 
@@ -193,6 +194,7 @@ tizen_internal_wait_sync_for_release_fence(struct dri2_egl_surface *dri2_surf,
                      EGL_SYNC_NATIVE_FENCE_TIZEN,
                      attrib_list)) {
       free(dri2_sync);
+      close(release_fence_fd);
       return EGL_FALSE;
    }
 
@@ -204,16 +206,14 @@ tizen_internal_wait_sync_for_release_fence(struct dri2_egl_surface *dri2_surf,
 
    if (!dri2_sync->fence) {
       free(dri2_sync);
+      close(release_fence_fd);
       return EGL_FALSE;
    }
 
-   if (p_atomic_dec_zero(&dri2_sync->refcount)) {
-         close(dri2_sync->base.SyncFd);
-
-         if (dri2_sync->fence)
-            dri2_dpy->fence->destroy_fence(dri2_dpy->dri_screen, dri2_sync->fence);
-         free(dri2_sync);
-   }
+   close(dri2_sync->base.SyncFd);
+   if (dri2_sync->fence)
+      dri2_dpy->fence->destroy_fence(dri2_dpy->dri_screen, dri2_sync->fence);
+   free(dri2_sync);
 
    return EGL_TRUE;
 }