e_explicit_sync: make move and clear functions for acquire_fence_fd 79/294979/1
authorSooChan Lim <sc1.lim@samsung.com>
Tue, 13 Jun 2023 08:08:29 +0000 (17:08 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 29 Jun 2023 08:31:02 +0000 (17:31 +0900)
Those functions also set the aquire_fence_fd to e_client.

Change-Id: Id0e7745eb0f6d690bf7d15652ba8c49e1e053dda

src/bin/e_explicit_sync.c

index 95a904baed48d0a7e08ae959f6041786ff9ca796..024df0e2749b3f3b5c290f65846f4ea79223b3a9 100644 (file)
@@ -53,12 +53,21 @@ _e_explicit_sync_fd_clear(int* fd)
 }
 
 static void
-_e_explicit_sync_fd_move(int *dst, int *src)
+_e_explicit_sync_ec_acquire_fd_move(E_Client *ec, int *dst, int *src)
 {
    if (dst == src) return;
 
    _e_explicit_sync_fd_set(dst, *src);
    *src = -1;
+
+   e_client_explicit_sync_acquire_fence_fd_set(ec, *dst);
+}
+
+static void
+_e_explicit_sync_ec_acquire_fd_clear(E_Client *ec, int* fd)
+{
+   _e_explicit_sync_fd_set(fd, -1);
+   e_client_explicit_sync_acquire_fence_fd_set(ec, -1);
 }
 
 static void
@@ -100,7 +109,9 @@ _e_explicit_sync_surface_cb_set_acquire_fence(struct wl_client *client,
         goto fail;
      }
 
-   _e_explicit_sync_fd_set(&explicit_sync_surface->pending_acquire_fence_fd, fd);
+   _e_explicit_sync_ec_acquire_fd_move(explicit_sync_surface->ec,
+                                       &explicit_sync_surface->pending_acquire_fence_fd,
+                                       &fd);
 
    EX_SYNC_TRACE("Explicit_Sync Surface:%p Set Acquire fence fd:%d",
                  explicit_sync_surface->ec, explicit_sync_surface, fd);
@@ -274,9 +285,9 @@ _e_explicit_sync_surface_cb_before_surface_commit(void *data, E_Client *ec)
    if (explicit_sync_surface->pending_acquire_fence_fd != -1)
      {
         if (explicit_sync_surface->acquire_fence_fd != -1)
-          _e_explicit_sync_fd_clear(&explicit_sync_surface->acquire_fence_fd);
+          _e_explicit_sync_ec_acquire_fd_clear(ec, &explicit_sync_surface->acquire_fence_fd);
 
-        _e_explicit_sync_fd_move(&explicit_sync_surface->acquire_fence_fd,
+        _e_explicit_sync_ec_acquire_fd_move(ec, &explicit_sync_surface->acquire_fence_fd,
                                  &explicit_sync_surface->pending_acquire_fence_fd);
      }
 
@@ -312,10 +323,10 @@ _e_explicit_sync_surface_cb_resource_destroy(struct wl_resource *resource)
    EX_SYNC_TRACE("Explicit_Sync Surface:%p Destroy", explicit_sync_surface->ec, explicit_sync_surface);
 
    if (explicit_sync_surface->pending_acquire_fence_fd != -1)
-     _e_explicit_sync_fd_clear(&explicit_sync_surface->pending_acquire_fence_fd);
+     _e_explicit_sync_ec_acquire_fd_clear(explicit_sync_surface->ec, &explicit_sync_surface->pending_acquire_fence_fd);
 
    if (explicit_sync_surface->acquire_fence_fd != -1)
-     _e_explicit_sync_fd_clear(&explicit_sync_surface->acquire_fence_fd);
+     _e_explicit_sync_ec_acquire_fd_clear(explicit_sync_surface->ec, &explicit_sync_surface->acquire_fence_fd);
 
    if (explicit_sync_surface->ec)
      {