From 96f69e534cc7e5b02e45699f3f48879f8e0026ce Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Mon, 3 Jul 2023 16:19:13 +0900 Subject: [PATCH 01/16] Fix build error of misleading-indentation Change-Id: I4bc0b1304ee5f0c9cf215c579c987cd843b9324b --- haltests/src/tc_tdm_hwc.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/haltests/src/tc_tdm_hwc.cpp b/haltests/src/tc_tdm_hwc.cpp index 7917b69..93d4c6f 100644 --- a/haltests/src/tc_tdm_hwc.cpp +++ b/haltests/src/tc_tdm_hwc.cpp @@ -556,13 +556,12 @@ TEST_P(TDMHwc, AcceptChangesSuccessful) EXPECT_EQ(tc_tdm_output_prepare(dpy, outputs[o], true), true); hwc = tdm_output_get_hwc(outputs[o], &error); if (hwc) { + EXPECT_EQ(TDM_ERROR_NONE, error); EXPECT_EQ(_tc_tdm_hwc_prepare_commit(hwc, hwc_wnds), true); for (int w = 0; w < HWC_WIN_NUM; w++) tdm_hwc_window_destroy(hwc_wnds[w]); - - EXPECT_EQ(TDM_ERROR_NONE, error); - } + } } } @@ -589,6 +588,7 @@ TEST_P(TDMHwc, CommitSuccessful) EXPECT_EQ(tc_tdm_output_prepare(dpy, outputs[o], true), true); hwc = tdm_output_get_hwc(outputs[o], &error); if (hwc) { + EXPECT_EQ(TDM_ERROR_NONE, error); EXPECT_EQ(_tc_tdm_hwc_prepare_commit(hwc, hwc_wnds), true); error = tdm_hwc_commit(hwc, 0, _tc_tdm_hwc_commit_cb, NULL); @@ -596,9 +596,7 @@ TEST_P(TDMHwc, CommitSuccessful) for (int w = 0; w < HWC_WIN_NUM; w++) tdm_hwc_window_destroy(hwc_wnds[w]); - - EXPECT_EQ(TDM_ERROR_NONE, error); - } + } } } -- 2.7.4 From 745fb18f4e20ed0f187f20b231c493e8124e138a Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 25 Jul 2023 17:17:53 +0900 Subject: [PATCH 02/16] tdm_vblank: Add tdm_vblank_set_timeout_handler Change-Id: I90358136d4a7486db8cc883e8cdebd2b15074dd2 --- src/tdm_private.h | 2 ++ src/tdm_private_types.h | 2 ++ src/tdm_vblank.c | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/src/tdm_private.h b/src/tdm_private.h index fcc3245..32e461c 100644 --- a/src/tdm_private.h +++ b/src/tdm_private.h @@ -180,6 +180,8 @@ tdm_error tdm_vblank_set_client_vblank_fps(unsigned int pid, const char *name, unsigned int fps); void tdm_vblank_get_vblank_list_information(tdm_display *dpy, char *reply, int *len); +tdm_error +tdm_vblank_set_timeout_handler(tdm_vblank *vblank, tdm_vblank_timeout_handler func, void *user_data); tdm_error tdm_pp_init(tdm_private_display *private_display); diff --git a/src/tdm_private_types.h b/src/tdm_private_types.h index 5ec9411..fd8567f 100644 --- a/src/tdm_private_types.h +++ b/src/tdm_private_types.h @@ -122,6 +122,8 @@ typedef struct _tdm_private_voutput_commit_handler tdm_private_voutput_commit_ha typedef struct _tdm_private_layer_buffer tdm_private_layer_buffer; +typedef void (*tdm_vblank_timeout_handler)(tdm_vblank *vblank, void *user_data); + struct _tdm_private_module { struct list_head link; diff --git a/src/tdm_vblank.c b/src/tdm_vblank.c index bc53543..499bba4 100644 --- a/src/tdm_vblank.c +++ b/src/tdm_vblank.c @@ -129,6 +129,8 @@ typedef struct _tdm_private_vblank { /* for timeout */ tdm_event_loop_source *timeout_timer; + tdm_vblank_timeout_handler timeout_func; + void *timeout_user_data; } tdm_private_vblank; struct _tdm_vblank_wait_info { @@ -1096,6 +1098,9 @@ _tdm_vblank_timeout_timer_cb(void *user_data) w, w->req_time, w->target_time, w->target_seq, w->interval); } + if (private_vblank->timeout_func) + private_vblank->timeout_func(private_vblank, private_vblank->timeout_user_data); + return TDM_ERROR_NONE; } @@ -1782,6 +1787,19 @@ no_client: return; } +INTERN tdm_error +tdm_vblank_set_timeout_handler(tdm_vblank *vblank, tdm_vblank_timeout_handler func, void *user_data) +{ + tdm_private_vblank *private_vblank = vblank; + + TDM_RETURN_VAL_IF_FAIL(tdm_vblank_is_valid(vblank), TDM_ERROR_INVALID_PARAMETER); + + private_vblank->timeout_func = func; + private_vblank->timeout_user_data = user_data; + + return TDM_ERROR_NONE; +} + /* LCOV_EXCL_START */ INTERN void tdm_vblank_get_vblank_list_information(tdm_display *dpy, char *reply, int *len) -- 2.7.4 From 136183d0c920d51c0bb8c1875cce9cffd4678eff Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 25 Jul 2023 17:19:06 +0900 Subject: [PATCH 03/16] tdm_server: Use timeout handler of vblank instead timer Remove duplicate timer for vblank Change-Id: Iacde2b99f77ed910f351ca6247ba7d5894ff9629 --- src/tdm_server.c | 85 +++++++++++++------------------------------------------- 1 file changed, 19 insertions(+), 66 deletions(-) diff --git a/src/tdm_server.c b/src/tdm_server.c index a5274e1..e13fb83 100644 --- a/src/tdm_server.c +++ b/src/tdm_server.c @@ -104,9 +104,6 @@ typedef struct _tdm_server_vblank_info { tdm_vblank *vblank; unsigned int stamp; - - /* for timeout */ - tdm_event_loop_source *vblank_timeout_timer; } tdm_server_vblank_info; typedef struct _tdm_server_wait_info { @@ -135,7 +132,6 @@ static tdm_private_server *keep_private_server; static struct list_head client_list; static void destroy_wait(tdm_server_wait_info *wait_info); -static void _tdm_server_vblank_timeout_update(tdm_server_vblank_info *vblank_info, int ms_delay); static void _tdm_server_get_process_name(pid_t pid, char *name, unsigned int size) @@ -170,9 +166,6 @@ _tdm_server_send_done(tdm_server_wait_info *wait_info, tdm_error error, { tdm_server_wait_info *found; tdm_server_vblank_info *vblank_info; - tdm_server_output_info *output_info; - tdm_private_server *private_server; - tdm_private_loop *private_loop; TDM_RETURN_IF_FAIL(keep_private_server != NULL); @@ -187,13 +180,6 @@ _tdm_server_send_done(tdm_server_wait_info *wait_info, tdm_error error, TDM_DBG("req_id(%d) done", wait_info->req_id); vblank_info = wait_info->vblank_info; - output_info = vblank_info->output_info; - private_server = output_info->private_server; - private_loop = private_server->private_loop; - - tdm_display_lock(private_loop->dpy); - _tdm_server_vblank_timeout_update(vblank_info, 0); - tdm_display_unlock(private_loop->dpy); if (tdm_ttrace_module & TDM_TTRACE_SERVER_VBLANK) TDM_TRACE_ASYNC_END((int)wait_info->req_time, "TDM_Server_Vblank:%u", vblank_info->stamp); @@ -207,8 +193,8 @@ _tdm_server_send_done(tdm_server_wait_info *wait_info, tdm_error error, /* LCOV_EXCL_STOP */ /* LCOV_EXCL_START */ -static tdm_error -_tdm_server_timeout_timer_cb(void *user_data) +static void +_tdm_server_vblank_timeout_cb(tdm_vblank *vblank, void *user_data) { tdm_server_vblank_info *vblank_info = user_data; tdm_server_wait_info *wait_info = NULL; @@ -216,8 +202,8 @@ _tdm_server_timeout_timer_cb(void *user_data) unsigned int tv_sec; unsigned int tv_usec; - TDM_RETURN_VAL_IF_FAIL(vblank_info != NULL, TDM_ERROR_OPERATION_FAILED); - TDM_RETURN_VAL_IF_FAIL(keep_private_server != NULL, TDM_ERROR_OPERATION_FAILED); + TDM_RETURN_IF_FAIL(vblank_info != NULL); + TDM_RETURN_IF_FAIL(keep_private_server != NULL); curr = tdm_helper_get_time(); tv_sec = TDM_TIME_SEC(curr); @@ -232,38 +218,6 @@ _tdm_server_timeout_timer_cb(void *user_data) TDM_ERR("tdm_server_vblank(%p) req_id(%d) timeout force send vblank", vblank_info, wait_info->req_id); wait_info->timeout = 1; } - - return TDM_ERROR_NONE; -} - -static void -_tdm_server_vblank_timeout_update(tdm_server_vblank_info *vblank_info, int ms_delay) -{ - tdm_server_output_info *output_info = vblank_info->output_info; - tdm_private_server *private_server = output_info->private_server; - tdm_private_loop *private_loop = private_server->private_loop; - tdm_error ret; - - if (!vblank_info->vblank_timeout_timer) { - vblank_info->vblank_timeout_timer = - tdm_event_loop_add_timer_handler(private_loop->dpy, - _tdm_server_timeout_timer_cb, - vblank_info, - &ret); - if (!vblank_info->vblank_timeout_timer) { - TDM_ERR("tdm_server_vblank(%p) couldn't add timer", vblank_info); - return; - } - - if (tdm_debug_module & TDM_DEBUG_VBLANK) - TDM_INFO("tdm_server_vblank(%p) create vblank timeout timer", vblank_info); - } - - ret = tdm_event_loop_source_timer_update(vblank_info->vblank_timeout_timer, ms_delay); - if (ret != TDM_ERROR_NONE) { - TDM_ERR("tdm_server_vblank(%p) couldn't update timer", vblank_info); - return; - } } static void @@ -339,19 +293,10 @@ static void destroy_vblank_callback(struct wl_resource *resource) { tdm_server_vblank_info *vblank_info = wl_resource_get_user_data(resource); - tdm_server_output_info *output_info = vblank_info->output_info; - tdm_private_server *private_server = output_info->private_server; - tdm_private_loop *private_loop = private_server->private_loop; tdm_server_wait_info *w = NULL, *ww = NULL; TDM_RETURN_IF_FAIL(vblank_info != NULL); - if (vblank_info->vblank_timeout_timer) { - tdm_display_lock(private_loop->dpy); - tdm_event_loop_source_remove(vblank_info->vblank_timeout_timer); - tdm_display_unlock(private_loop->dpy); - } - LIST_DEL(&vblank_info->link); if (vblank_info->vblank) @@ -425,7 +370,6 @@ _tdm_server_vblank_wait_vblank(tdm_server_vblank_info *vblank_info, tdm_server_v { tdm_server_output_info *output_info = vblank_info->output_info; tdm_private_server *private_server = output_info->private_server; - tdm_private_loop *private_loop = private_server->private_loop; tdm_server_wait_info *wait_info; unsigned int enable_fake = 0; tdm_error ret; @@ -464,12 +408,6 @@ _tdm_server_vblank_wait_vblank(tdm_server_vblank_info *vblank_info, tdm_server_v TDM_GOTO_IF_FAIL(ret == TDM_ERROR_NONE, wait_failed); - if (wait_type == VBLANK_WAIT_TYPE_INTERVAL) { - tdm_display_lock(private_loop->dpy); - _tdm_server_vblank_timeout_update(vblank_info, 1000); - tdm_display_unlock(private_loop->dpy); - } - return; wait_failed: @@ -525,6 +463,7 @@ _tdm_server_output_cb_create_vblank(struct wl_client *client, struct wl_resource struct wl_resource *vblank_resource; tdm_vblank *vblank; tdm_server_vblank_info *vblank_info; + tdm_error ret; vblank_resource = wl_resource_create(client, &wl_tdm_vblank_interface, @@ -564,6 +503,20 @@ _tdm_server_output_cb_create_vblank(struct wl_client *client, struct wl_resource /* LCOV_EXCL_STOP */ } + ret = tdm_vblank_set_timeout_handler(vblank, _tdm_server_vblank_timeout_cb, vblank_info); + if (ret != TDM_ERROR_NONE) { + /* LCOV_EXCL_START */ + + wl_resource_post_no_memory(resource); + wl_resource_destroy(vblank_resource); + tdm_vblank_destroy(vblank); + free(vblank_info); + TDM_ERR("tdm_vblank_set_timeout_handler failed"); + return; + + /* LCOV_EXCL_STOP */ + } + LIST_ADDTAIL(&vblank_info->link, &output_info->vblank_list); vblank_info->output_info = output_info; vblank_info->resource = vblank_resource; -- 2.7.4 From b489b3c09dba4caef96517bb932ff17a1e8066f7 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 25 Jul 2023 17:30:56 +0900 Subject: [PATCH 04/16] Package version up to 3.1.8 Change-Id: I91872165c6c7b49bb2c3210093dae9def9c552e7 --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index 55ed0c8..3857c7d 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 3.1.7 +Version: 3.1.8 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4 From 30ba4bdfd0b21548ffb124e216b885c28f13bc65 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Wed, 6 Mar 2024 12:33:16 +0900 Subject: [PATCH 05/16] client: Fix missing lock Change-Id: Iacef5f2e65b6dee0c7eb41bb8daa8a1df6dae433 --- client/tdm_client.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/client/tdm_client.c b/client/tdm_client.c index 8bfbf84..2bc0cdc 100644 --- a/client/tdm_client.c +++ b/client/tdm_client.c @@ -2322,16 +2322,17 @@ tdm_client_voutput_commit_done(tdm_client_voutput *voutput) TDM_RETURN_VAL_IF_FAIL(voutput != NULL, TDM_ERROR_INVALID_PARAMETER); private_voutput = (tdm_private_client_voutput *)voutput; - TDM_RETURN_VAL_IF_FAIL(private_voutput->attach_buffer != NULL, TDM_ERROR_NONE); private_client = private_voutput->private_client; pthread_mutex_lock(&private_client->lock); - buffer = (tbm_surface_h)wl_buffer_get_user_data(private_voutput->attach_buffer->wl_buffer); - tbm_surface_internal_unref(buffer); - private_voutput->attach_buffer = NULL; - wl_tdm_voutput_commit_done(private_voutput->wl_voutput); + if (private_voutput->attach_buffer) { + buffer = (tbm_surface_h)wl_buffer_get_user_data(private_voutput->attach_buffer->wl_buffer); + tbm_surface_internal_unref(buffer); + private_voutput->attach_buffer = NULL; + wl_tdm_voutput_commit_done(private_voutput->wl_voutput); + } pthread_mutex_unlock(&private_client->lock); -- 2.7.4 From 6eee535fa40274f758c4c1a5bbaf4b6b3c900e90 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Wed, 6 Mar 2024 13:09:24 +0900 Subject: [PATCH 06/16] tdm_test_server: Remove dead code Change-Id: I5f8225397123b13b3aaf9ee0c784c03e133bb8f7 --- tools/tdm_test_server.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/tdm_test_server.c b/tools/tdm_test_server.c index 3eaf916..2d80050 100644 --- a/tools/tdm_test_server.c +++ b/tools/tdm_test_server.c @@ -1828,8 +1828,6 @@ run_test(tdm_test_server *data) TDM_EXIT_IF_FAIL(ret == TDM_ERROR_NONE); } - destroy(data); - return; no_pp: printf("no PP capability\n"); -- 2.7.4 From ef37298774f244f3937d29484cf1aeda24d6eace Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Wed, 6 Mar 2024 16:35:28 +0900 Subject: [PATCH 07/16] Package version up to 3.1.9 Change-Id: I4c618e8adc5223994259f1eac968bdc5a939d052 --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index 3857c7d..2b0a1ce 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 3.1.8 +Version: 3.1.9 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4 From 6c3b75dc58a3fa5e3719f3418dbff26e856fffcd Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 8 Mar 2024 19:10:27 +0900 Subject: [PATCH 08/16] Fix lcov pair error New lcov version do not allow start stop comment pair error. It makes lcov generating failed. Change-Id: I42aa883a0f1faca63b08e097df60ed3388691237 Signed-off-by: Junkyeong Kim --- src/tdm_hwc_window.c | 7 ------- src/tdm_output.c | 2 -- src/tdm_server.c | 8 -------- 3 files changed, 17 deletions(-) diff --git a/src/tdm_hwc_window.c b/src/tdm_hwc_window.c index 074131d..a4f2fb6 100644 --- a/src/tdm_hwc_window.c +++ b/src/tdm_hwc_window.c @@ -98,22 +98,18 @@ tdm_hwc_window_create_internal(tdm_private_hwc *private_hwc, tdm_error *error) if (!private_module->use_hal_tdm) { if (!func_hwc->hwc_create_window) { - /* LCOV_EXCL_START */ if (error) *error = TDM_ERROR_BAD_MODULE; return NULL; - /* LCOV_EXCL_STOP */ } } private_hwc_window = calloc(1, sizeof(tdm_private_hwc_window)); if (!private_hwc_window) { - /* LCOV_EXCL_START */ TDM_ERR("failed: alloc memory"); if (error) *error = TDM_ERROR_OUT_OF_MEMORY; return NULL; - /* LCOV_EXCL_STOP */ } if (private_module->use_hal_tdm) hwc_window_backend = (tdm_hwc_window *)hal_tdm_hwc_create_window((hal_tdm_hwc *)private_hwc->hwc_backend, (hal_tdm_error *)&ret); @@ -208,7 +204,6 @@ tdm_hwc_window_acquire_buffer_queue(tdm_hwc_window *hwc_window, tdm_error *error queue = hal_tdm_hwc_window_acquire_buffer_queue((hal_tdm_hwc_window *)private_hwc_window->hwc_window_backend, (hal_tdm_error *)error); } else { if (!func_hwc_window->hwc_window_acquire_buffer_queue) { - /* LCOV_EXCL_START */ _pthread_mutex_unlock(&private_display->lock); TDM_WRN("not implemented!!"); if (error) @@ -472,7 +467,6 @@ tdm_hwc_window_get_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_val memcpy(&value->ptr, &hvalue.ptr, sizeof(tdm_value)); } else { if (!func_hwc_window->hwc_window_get_property) { - /* LCOV_EXCL_START */ _pthread_mutex_unlock(&private_display->lock); TDM_WRN("not implemented!!"); return TDM_ERROR_NOT_IMPLEMENTED; @@ -504,7 +498,6 @@ tdm_hwc_window_set_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_val ret = hal_tdm_hwc_window_set_property((hal_tdm_hwc_window *)private_hwc_window->hwc_window_backend, id, hvalue); } else { if (!func_hwc_window->hwc_window_set_property) { - /* LCOV_EXCL_START */ _pthread_mutex_unlock(&private_display->lock); TDM_WRN("not implemented!!"); return TDM_ERROR_NOT_IMPLEMENTED; diff --git a/src/tdm_output.c b/src/tdm_output.c index 9232de9..d8c3946 100644 --- a/src/tdm_output.c +++ b/src/tdm_output.c @@ -571,11 +571,9 @@ tdm_output_add_mode_change_request_handler(tdm_output *output, mode_change_handler = calloc(1, sizeof(tdm_private_output_mode_change_handler)); if (!mode_change_handler) { - /* LCOV_EXCL_START */ TDM_ERR("failed: alloc memory"); _pthread_mutex_unlock(&private_display->lock); return TDM_ERROR_OUT_OF_MEMORY; - /* LCOV_EXCL_STOP */ } mode_change_handler->private_output = private_output; diff --git a/src/tdm_server.c b/src/tdm_server.c index e13fb83..bdcda8b 100644 --- a/src/tdm_server.c +++ b/src/tdm_server.c @@ -1258,25 +1258,17 @@ _tdm_server_cb_create_virtual_output(struct wl_client *client, struct wl_resourc wl_resource_create(client, &wl_tdm_voutput_interface, wl_resource_get_version(resource), id); if (!voutput_resource) { - /* LCOV_EXCL_START */ - wl_resource_post_no_memory(resource); TDM_ERR("wl_resource_create failed"); return; - - /* LCOV_EXCL_STOP */ } voutput_info = calloc(1, sizeof * voutput_info); if (!voutput_info) { - /* LCOV_EXCL_START */ - wl_resource_post_no_memory(resource); wl_resource_destroy(voutput_resource); TDM_ERR("alloc failed"); return; - - /* LCOV_EXCL_STOP */ } LIST_ADDTAIL(&voutput_info->link, &private_server->voutput_list); -- 2.7.4 From 0aa70a7c49bfce77a9765b00dcd05e45c02decb3 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 8 Mar 2024 19:11:38 +0900 Subject: [PATCH 09/16] Package version up to 3.1.10 Change-Id: Ia8832f01ba3b14b98d271a0eaf698f6858bc5a3c Signed-off-by: Junkyeong Kim --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index 2b0a1ce..868e947 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 3.1.9 +Version: 3.1.10 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4 From 989bea4e12cdc7a2991eae38451e7a1e0a53a180 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Tue, 19 Mar 2024 11:13:36 +0900 Subject: [PATCH 10/16] haltest: Fix test execution error The gtest version up to 1.14. Have to match test build version to 1.14. Change-Id: I549e7aafba00544d3a4bea8bdc634ee8f9b284e0 Signed-off-by: Junkyeong Kim --- haltests/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/haltests/Makefile.am b/haltests/Makefile.am index 45f7aa7..341e852 100644 --- a/haltests/Makefile.am +++ b/haltests/Makefile.am @@ -33,7 +33,8 @@ tdm_haltests_CXXFLAGS = \ -I$(top_srcdir)/client \ -I$(top_srcdir)/tools \ -I$(includedir)/gtest \ - -fpermissive + -fpermissive \ + -std=c++14 # The flag -w is used, because there are many warnings in libtdm's sources. # Warnings occur because we build project with g++. # In C++ we need to use explicit types conversion. -- 2.7.4 From b8177e66f89cbd8edff8b8b4a25ffd9a10f058b2 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Tue, 19 Mar 2024 11:15:10 +0900 Subject: [PATCH 11/16] Package version up to 3.1.11 Change-Id: I61586a0e3a8ebd69a09da1908858605b6ab2a533 Signed-off-by: Junkyeong Kim --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index 868e947..deccca4 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 3.1.10 +Version: 3.1.11 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4 From 21e7ed5b1592743ab405cdb87208a38ebd0983d7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C5=81ukasz=20Stelmach?= Date: Wed, 22 May 2024 15:30:30 +0200 Subject: [PATCH 12/16] Prevent spurious restarts MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Due to a fix to path units in systemd in commit 708961c701 ("core/path: recheck path specs when triggered unit changes state"), service units that aren't supposed to run repeatedly and are triggered by path units need to set RemainAfterExit=yes. Change-Id: Id33118caeec97b279a558fc7c90af32c6e8272ce Signed-off-by: Łukasz Stelmach --- service/tdm-socket-user.service | 1 + 1 file changed, 1 insertion(+) diff --git a/service/tdm-socket-user.service b/service/tdm-socket-user.service index b42b642..4cda73e 100644 --- a/service/tdm-socket-user.service +++ b/service/tdm-socket-user.service @@ -5,4 +5,5 @@ Before=starter.service [Service] Type=oneshot +RemainAfterExit=yes ExecStart=/usr/bin/sh -c "while [ ! -e /run/tdm-socket ] ; do /usr/bin/sleep .1 ; done ;/usr/bin/ln -s /run/tdm-socket /run/user/%U/" -- 2.7.4 From ead2940cb3afb10a37564efbbd72f6b60027c40c Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 9 Jul 2024 14:50:31 +0900 Subject: [PATCH 13/16] Transfer ownership of acquire_fence fd when fd is set to tdm Change-Id: I1d1bae70a45a749979d820ce6f4f8951dfe7c383 --- include/tdm.h | 2 ++ include/tdm_backend.h | 8 ++++++++ src/tdm_hwc.c | 2 ++ src/tdm_hwc_window.c | 2 ++ 4 files changed, 14 insertions(+) diff --git a/include/tdm.h b/include/tdm.h index 0772b7f..86eff26 100644 --- a/include/tdm.h +++ b/include/tdm.h @@ -1004,6 +1004,7 @@ tdm_hwc_set_client_target_buffer(tdm_hwc *hwc, tbm_surface_h target_buffer, tdm_ /** * @brief Set the acquire fence fd of client(relative to the TDM) target + * @details ownership of the acquire fence fd is transfered * @param[in] hwc A output hwc * @param[in] acquire_fence The acquire fence fd of target * @return #TDM_ERROR_NONE if success. Otherwise, error value. @@ -1276,6 +1277,7 @@ tdm_hwc_window_set_cursor_image(tdm_hwc_window *hwc_window, int width, int heigh /** * @brief Set the acquire fence of hwc_window + * @details ownership of the acquire fence fd is transfered * @param[in] hwc_window A hwc window object * @param[in] acquire_fence the acquire fence fd of a hwc window object * @return #TDM_ERROR_NONE if success. Otherwise, error value. diff --git a/include/tdm_backend.h b/include/tdm_backend.h index e53eb10..75f0675 100644 --- a/include/tdm_backend.h +++ b/include/tdm_backend.h @@ -892,6 +892,8 @@ typedef struct _tdm_func_hwc { /** * @brief Set the acquire fence of client(relative to the TDM) target buffer + * @details ownership of the acquire fence fd is transfered and + * backend must close the acquire fence fd when it is no longer needed. * @param[in] hwc A output hwc * @param[in] acquire_fence The acquire fence fd of target * @return #TDM_ERROR_NONE if success. Otherwise, error value. @@ -979,6 +981,8 @@ typedef struct _tdm_func_hwc { * @brief Get commit fence * @details After all change of a window object are applied to last tdm_hwc_commit, * the fence is signaled. + * ownership of the commit fence fd is transfered and + * backend must dup the commit fence fd if the commit fence is continued used it in backend. * @param[in] hwc A hwc object * @param[out] commit_fence the commit fence fd of tdm_hwc_commit * @return #TDM_ERROR_NONE if success. Otherwise, error value. @@ -989,6 +993,8 @@ typedef struct _tdm_func_hwc { * @brief Get release fences * @details Retrieves the windows which the backend requires setting the release fences * the release fence is signaled when the backend is no longer using previous buffer. + * ownership of the release fence fd is transfered and + * backend must dup the release fence fd if the release fence is continued used it in backend. * @param[in] hwc A hwc object * @param[out] num_elements the number of hwc_windows * @param[out] hwc_windows An array of windows @@ -1174,6 +1180,8 @@ typedef struct _tdm_func_hwc_window { /** * @brief Set the acquire fence of hwc_window + * @details ownership of the acquire fence fd is transfered and + * backend must close the acquire fence fd when it is no longer needed. * @param[in] hwc_window A hwc window object * @param[in] acquire_fence the acquire fence fd of a hwc window object * @return #TDM_ERROR_NONE if success. Otherwise, error value. diff --git a/src/tdm_hwc.c b/src/tdm_hwc.c index 81fb042..c2695c0 100644 --- a/src/tdm_hwc.c +++ b/src/tdm_hwc.c @@ -636,6 +636,8 @@ tdm_hwc_set_client_target_acquire_fence(tdm_hwc *hwc, int acquire_fence) } else { if (!func_hwc->hwc_set_client_target_acquire_fence) { /* LCOV_EXCL_START */ + if (acquire_fence >= 0) + close(acquire_fence); _pthread_mutex_unlock(&private_display->lock); TDM_WRN("not implemented!!"); return TDM_ERROR_NOT_IMPLEMENTED; diff --git a/src/tdm_hwc_window.c b/src/tdm_hwc_window.c index a4f2fb6..6504389 100644 --- a/src/tdm_hwc_window.c +++ b/src/tdm_hwc_window.c @@ -433,6 +433,8 @@ tdm_hwc_window_set_acquire_fence(tdm_hwc_window *hwc_window, int acquire_fence) ret = hal_tdm_hwc_window_set_acquire_fence((hal_tdm_hwc_window *)private_hwc_window->hwc_window_backend, acquire_fence); } else { if (!func_hwc_window->hwc_window_set_acquire_fence) { + if (acquire_fence >= 0) + close(acquire_fence); _pthread_mutex_unlock(&private_display->lock); TDM_WRN("not implemented!!"); return TDM_ERROR_NOT_IMPLEMENTED; -- 2.7.4 From f87b957b75f7e5795b9182600b5daeac6f709e1a Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 9 Jul 2024 14:50:58 +0900 Subject: [PATCH 14/16] Package version up to 3.1.12 Change-Id: I3dc2ca0e40d5b0b0ca85e13edc152f721aeeb6d1 --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index deccca4..1abd7e2 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 3.1.11 +Version: 3.1.12 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4 From 450959ba93356008fb7df2deac468c9c672f3aeb Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Thu, 8 Aug 2024 14:48:49 +0900 Subject: [PATCH 15/16] Include tbm internal header Change-Id: Ie947f764f776a95f1683cc85720a3181909f49c1 --- haltests/src/tc_tdm.h | 1 + src/tdm_private.h | 1 + 2 files changed, 2 insertions(+) diff --git a/haltests/src/tc_tdm.h b/haltests/src/tc_tdm.h index 2838c79..7059296 100644 --- a/haltests/src/tc_tdm.h +++ b/haltests/src/tc_tdm.h @@ -16,6 +16,7 @@ extern "C" { #include #include +#include } /* LCOV_EXCL_START */ diff --git a/src/tdm_private.h b/src/tdm_private.h index 32e461c..4e37bf3 100644 --- a/src/tdm_private.h +++ b/src/tdm_private.h @@ -59,6 +59,7 @@ #include #include #include +#include #include "tdm_private_types.h" #include "tdm_macro.h" -- 2.7.4 From fe2c92eabffd1311a253e2d59d3c9262e0b5a0fe Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Thu, 8 Aug 2024 14:52:36 +0900 Subject: [PATCH 16/16] Package version up to 3.1.13 Change-Id: I24853d3471212d40901623fcb2327929224a95f4 --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index 1abd7e2..aa88461 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 3.1.12 +Version: 3.1.13 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4