wl_tbm_test_timeline_increase(wl_tbm_test, wl_buf);
ASSERT_EQ(CheckServerError(), 0);
- ASSERT_EQ(tbm_sync_fence_wait(fence, 1), 0);
+ ASSERT_EQ(tbm_sync_fence_wait(fence, 1), 1);
wayland_tbm_client_destroy_buffer(wl_tbm_client, wl_buf);
tbm_surface_destroy(tbm_surf);
close(fence);
close(td);
-}
\ No newline at end of file
+}
+
+TEST_F(UtWlTbm, SyncWaitByTime)
+{
+ tbm_fd td, fence;
+ tbm_surface_h tbm_surf;
+ struct wl_buffer *wl_buf;
+ int cnt = 0, ret;
+
+ td = tbm_sync_timeline_create();
+ ASSERT_NE(td, -1);
+
+ tbm_surf = tbm_surface_create(100, 200, TBM_FORMAT_ARGB8888);
+ ASSERT_NE(tbm_surf, nullptr);
+
+ wl_buf = wayland_tbm_client_create_buffer(wl_tbm_client, tbm_surf);
+ ASSERT_NE(wl_buf, nullptr);
+ ASSERT_EQ(CheckServerError(), 0);
+
+ fence = tbm_sync_fence_create(td, "test", 10);
+ ASSERT_NE(wl_buf, -1);
+
+ wayland_tbm_client_set_sync_timeline(wl_tbm_client, wl_buf, td);
+ ASSERT_EQ(CheckServerError(), 0);
+
+ while(cnt < 20) {
+ ret = tbm_sync_fence_wait(fence, 1);
+
+ if (ret == 1) {
+ break;
+ } else if (ret == -1) {
+ printf("increase cnt to %d\n", ++cnt);
+ wl_tbm_test_timeline_increase(wl_tbm_test, wl_buf);
+ ASSERT_EQ(CheckServerError(), 0);
+ continue;
+ } else {
+ break;
+ }
+ }
+
+ ASSERT_EQ(ret, 1);
+
+ wayland_tbm_client_destroy_buffer(wl_tbm_client, wl_buf);
+ tbm_surface_destroy(tbm_surf);
+ close(fence);
+ close(td);
+}