From 1668a22dfca0a93c64068f535ff95b1989f14a75 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 12 Mar 2024 20:58:13 +0900 Subject: [PATCH 01/16] blender: Reset the current committed flag when the pending committed is none Change-Id: I56fd12b833f6a9574c35981c4b590242e67624f6 --- src/blender/blender.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/blender/blender.c b/src/blender/blender.c index 7e70a85..272b0a8 100644 --- a/src/blender/blender.c +++ b/src/blender/blender.c @@ -235,8 +235,10 @@ blend_handle_surface_commit(struct wl_listener *listener, void *data) return; } - if (blend->pending.committed == DS_TIZEN_BLEND_STATE_NONE) + if (blend->pending.committed == DS_TIZEN_BLEND_STATE_NONE) { + blend->current.committed = DS_TIZEN_BLEND_STATE_NONE; return; + } if (blend->pending.committed & DS_TIZEN_BLEND_STATE_ALPHA) blend->current.alpha = blend->pending.alpha; -- 2.7.4 From 286128b2db7517995caab57784b5b5ed7f9fb60e Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 12 Mar 2024 20:59:05 +0900 Subject: [PATCH 02/16] blur: Reset the current committed flag when the pending committed is none Change-Id: I7c8a45f0b88ac544a31418dac34e7d5938779988 --- src/blur/blur.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/blur/blur.c b/src/blur/blur.c index ad75eb9..48d7329 100644 --- a/src/blur/blur.c +++ b/src/blur/blur.c @@ -247,8 +247,10 @@ blur_handle_surface_commit(struct wl_listener *listener, void *data) return; } - if (blur->pending.committed == DS_TIZEN_BLUR_STATE_NONE) + if (blur->pending.committed == DS_TIZEN_BLUR_STATE_NONE) { + blur->current.committed = DS_TIZEN_BLUR_STATE_NONE; return; + } if (blur->pending.committed & DS_TIZEN_BLUR_STATE_REGION) pixman_region32_copy(&blur->current.region, &blur->pending.region); -- 2.7.4 From cb50adb44d6f2b7209874473b68907ce5164294f Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Fri, 10 May 2024 11:35:45 +0900 Subject: [PATCH 03/16] change wl_signal_emit_mutable into wl_signal_emit wl_signal_emit_mutable make the sigsegv crash at multi-threading situation. So libds-tizen does not use wl_signal_emit_mutable till fixing it Change-Id: I7bda8bafac54df4c45e0954ab8896d2d76197480 --- src/backend/tdm/backend.c | 2 +- src/backend/tdm/output.c | 2 +- src/backend/tdm/tdm_buffer_queue.c | 2 +- src/backend/tdm/tdm_output_hwc.c | 4 +- src/blender/blender.c | 8 +-- src/blur/blur.c | 8 +-- src/clipboard/clipboard.c | 8 +-- src/display_policy/display_policy.c | 6 +- src/dpms/dpms.c | 6 +- src/embedded_compositor/embedded_compositor.c | 2 +- src/eom/eom.c | 10 +-- src/global_resource/global_resource.c | 8 +-- src/hwc/hwc.c | 6 +- src/indicator/indicator.c | 8 +-- src/input_devicemgr/input_devicemgr.c | 20 +++--- src/input_method/input_method.c | 28 ++++---- src/keyrouter/keyrouter.c | 2 +- src/launch/appinfo.c | 8 +-- src/launch/effect.c | 18 ++--- src/memory_flusher/memory_flusher.c | 8 +-- src/policy/policy.c | 98 +++++++++++++-------------- src/remote_surface/remote_surface.c | 52 +++++++------- src/renderer/renderer.c | 8 +-- src/screen/screen.c | 14 ++-- src/screen_rotation/screen_rotation.c | 6 +- src/screenshooter/screenmirror.c | 16 ++--- src/screenshooter/screenshooter.c | 6 +- src/tbm_server/tbm_server.c | 2 +- src/text_input/text_input.c | 20 +++--- src/video/video.c | 18 ++--- src/video/viewport.c | 8 +-- 31 files changed, 206 insertions(+), 206 deletions(-) diff --git a/src/backend/tdm/backend.c b/src/backend/tdm/backend.c index bf1b0d6..8ca365e 100644 --- a/src/backend/tdm/backend.c +++ b/src/backend/tdm/backend.c @@ -125,7 +125,7 @@ tdm_backend_scan_outputs(struct ds_tdm_backend *tdm) wl_list_insert(&tdm->outputs, &output->link); - wl_signal_emit_mutable(&tdm->base.events.new_output, &output->base); + wl_signal_emit(&tdm->base.events.new_output, &output->base); } return true; diff --git a/src/backend/tdm/output.c b/src/backend/tdm/output.c index 03f4c62..4a236a8 100644 --- a/src/backend/tdm/output.c +++ b/src/backend/tdm/output.c @@ -333,7 +333,7 @@ output_hwc_commit_handler(struct wl_listener *listener, void *data) output_update_front_buffer(output); - wl_signal_emit_mutable(&output->base.events.frame, &output->base); + wl_signal_emit(&output->base.events.frame, &output->base); } static void diff --git a/src/backend/tdm/tdm_buffer_queue.c b/src/backend/tdm/tdm_buffer_queue.c index 954954b..6f0e497 100644 --- a/src/backend/tdm/tdm_buffer_queue.c +++ b/src/backend/tdm/tdm_buffer_queue.c @@ -306,7 +306,7 @@ buffer_queue_handle_acquirable_efd(int fd, uint32_t mask, void *data) if (len < 0 && errno != EAGAIN) return -1; - wl_signal_emit_mutable(&queue->events.acquirable, queue); + wl_signal_emit(&queue->events.acquirable, queue); return 0; } diff --git a/src/backend/tdm/tdm_output_hwc.c b/src/backend/tdm/tdm_output_hwc.c index a5bba62..3618aff 100644 --- a/src/backend/tdm/tdm_output_hwc.c +++ b/src/backend/tdm/tdm_output_hwc.c @@ -181,7 +181,7 @@ ds_tdm_output_hwc_create(struct ds_tdm_output *output, tdm_hwc *thwc) void ds_tdm_output_hwc_destroy(struct ds_tdm_output_hwc *hwc) { - wl_signal_emit_mutable(&hwc->events.destroy, hwc); + wl_signal_emit(&hwc->events.destroy, hwc); free(hwc); } @@ -622,7 +622,7 @@ ds_tdm_output_hwc_commit_handler(tdm_hwc *thwc, unsigned int sequence, wl_list_for_each_safe(hwc_window, tmp, &hwc->hwc_windows, link) hwc_window_update_front_buffer(hwc_window); - wl_signal_emit_mutable(&hwc->events.commit_handler, hwc); + wl_signal_emit(&hwc->events.commit_handler, hwc); } bool diff --git a/src/blender/blender.c b/src/blender/blender.c index 272b0a8..c651cac 100644 --- a/src/blender/blender.c +++ b/src/blender/blender.c @@ -148,7 +148,7 @@ blender_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: blender(%p)", blender); - wl_signal_emit_mutable(&blender->events.destroy, blender); + wl_signal_emit(&blender->events.destroy, blender); wl_list_remove(&blender->destroy.link); wl_global_destroy(blender->global); free(blender); @@ -195,7 +195,7 @@ blend_destroy(struct ds_tizen_blend *blend) { ds_inf("blend_destroy (blend:%p)", blend); - wl_signal_emit_mutable(&blend->events.destroy, blend); + wl_signal_emit(&blend->events.destroy, blend); if (blend->listener.surface_commit.notify) wl_list_remove(&blend->listener.surface_commit.link); @@ -249,7 +249,7 @@ blend_handle_surface_commit(struct wl_listener *listener, void *data) blend->current.committed = blend->pending.committed; blend->pending.committed = DS_TIZEN_BLEND_STATE_NONE; - wl_signal_emit_mutable(&blend->events.commit, blend); + wl_signal_emit(&blend->events.commit, blend); } static void @@ -347,7 +347,7 @@ blender_handle_get_blend(struct wl_client *wl_client, wl_signal_init(&blend->events.destroy); wl_signal_init(&blend->events.commit); - wl_signal_emit_mutable(&client->blender->events.new_blend, blend); + wl_signal_emit(&client->blender->events.new_blend, blend); } static void diff --git a/src/blur/blur.c b/src/blur/blur.c index 48d7329..e15840f 100644 --- a/src/blur/blur.c +++ b/src/blur/blur.c @@ -150,7 +150,7 @@ blur_manager_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: blur_manager(%p)", blur_manager); - wl_signal_emit_mutable(&blur_manager->events.destroy, blur_manager); + wl_signal_emit(&blur_manager->events.destroy, blur_manager); wl_list_remove(&blur_manager->destroy.link); wl_global_destroy(blur_manager->global); free(blur_manager); @@ -205,7 +205,7 @@ blur_destroy(struct ds_tizen_blur *blur) { ds_inf("blur_destroy (blur:%p)", blur); - wl_signal_emit_mutable(&blur->events.destroy, blur); + wl_signal_emit(&blur->events.destroy, blur); if (blur->listener.surface_commit.notify) wl_list_remove(&blur->listener.surface_commit.link); @@ -261,7 +261,7 @@ blur_handle_surface_commit(struct wl_listener *listener, void *data) blur->current.committed = blur->pending.committed; blur->pending.committed = DS_TIZEN_BLUR_STATE_NONE; - wl_signal_emit_mutable(&blur->events.commit, blur); + wl_signal_emit(&blur->events.commit, blur); } static void @@ -362,7 +362,7 @@ blur_manager_handle_get_blur(struct wl_client *wl_client, wl_signal_init(&blur->events.destroy); wl_signal_init(&blur->events.commit); - wl_signal_emit_mutable(&client->blur_manager->events.new_blur, blur); + wl_signal_emit(&client->blur_manager->events.new_blur, blur); } static void diff --git a/src/clipboard/clipboard.c b/src/clipboard/clipboard.c index da409c3..bfa9595 100644 --- a/src/clipboard/clipboard.c +++ b/src/clipboard/clipboard.c @@ -219,7 +219,7 @@ clipboard_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: clipboard(%p)", clipboard); - wl_signal_emit_mutable(&clipboard->events.destroy, clipboard); + wl_signal_emit(&clipboard->events.destroy, clipboard); wl_list_remove(&clipboard->destroy.link); wl_global_destroy(clipboard->global); free(clipboard); @@ -261,7 +261,7 @@ clipboard_handle_show(struct wl_client *wl_client, return; } - wl_signal_emit_mutable(&client->clipboard->events.show, surface); + wl_signal_emit(&client->clipboard->events.show, surface); } static void @@ -284,7 +284,7 @@ clipboard_handle_hide(struct wl_client *wl_client, return; } - wl_signal_emit_mutable(&client->clipboard->events.hide, surface); + wl_signal_emit(&client->clipboard->events.hide, surface); } static void @@ -298,7 +298,7 @@ clipboard_handle_set_data_only(struct wl_client *wl_client, client = wl_resource_get_user_data(resource); client->data_only = set; - wl_signal_emit_mutable(&client->clipboard->events.set_data_only, client); + wl_signal_emit(&client->clipboard->events.set_data_only, client); } static const struct tizen_clipboard_interface clipboard_impl = diff --git a/src/display_policy/display_policy.c b/src/display_policy/display_policy.c index 0ba779c..e278888 100644 --- a/src/display_policy/display_policy.c +++ b/src/display_policy/display_policy.c @@ -191,7 +191,7 @@ display_policy_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: display_policy(%p)", display_policy); - wl_signal_emit_mutable(&display_policy->events.destroy, display_policy); + wl_signal_emit(&display_policy->events.destroy, display_policy); wl_list_remove(&display_policy->destroy.link); wl_global_destroy(display_policy->global); free(display_policy); @@ -236,7 +236,7 @@ display_policy_handle_set_brightness(struct wl_client *wl_client, info->brightness_value = brightness_value; - wl_signal_emit_mutable(&client->display_policy->events.set_brightness, info); + wl_signal_emit(&client->display_policy->events.set_brightness, info); } static const struct tizen_display_policy_interface display_policy_impl = @@ -256,7 +256,7 @@ _tizen_display_policy_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_display_policy_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(info, tmp, &client->infos, link) { - wl_signal_emit_mutable(&client->events.destroy, info); + wl_signal_emit(&client->events.destroy, info); wl_list_remove(&info->link); free(info); } diff --git a/src/dpms/dpms.c b/src/dpms/dpms.c index d3e1663..5bedcee 100644 --- a/src/dpms/dpms.c +++ b/src/dpms/dpms.c @@ -166,7 +166,7 @@ dpms_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("global destroy : tizen_dpms_manager(%p)", dpms); - wl_signal_emit_mutable(&dpms->events.destroy, dpms); + wl_signal_emit(&dpms->events.destroy, dpms); wl_list_remove(&dpms->destroy.link); if (dpms->res) wl_resource_set_user_data(dpms->res, NULL); @@ -206,7 +206,7 @@ _tizen_dpms_manager_handle_set_dpms(struct wl_client *client, .mode = ds_mode, }; - wl_signal_emit_mutable(&dpms->events.set_dpms, &event); + wl_signal_emit(&dpms->events.set_dpms, &event); } static void @@ -219,7 +219,7 @@ _tizen_dpms_manager_handle_get_dpms(struct wl_client *client, dpms = wl_resource_get_user_data(resource); output = wl_resource_get_user_data(wl_output); - wl_signal_emit_mutable(&dpms->events.get_dpms, output); + wl_signal_emit(&dpms->events.get_dpms, output); } static const struct tizen_dpms_manager_interface dpms_impl = diff --git a/src/embedded_compositor/embedded_compositor.c b/src/embedded_compositor/embedded_compositor.c index 0a802fa..29f3bb9 100644 --- a/src/embedded_compositor/embedded_compositor.c +++ b/src/embedded_compositor/embedded_compositor.c @@ -86,7 +86,7 @@ embedded_compositor_handle_display_destroy(struct wl_listener *listener, void *d ds_inf("Global destroy: embedded_compositor(%p)", embedded_compositor); - wl_signal_emit_mutable(&embedded_compositor->events.destroy, embedded_compositor); + wl_signal_emit(&embedded_compositor->events.destroy, embedded_compositor); wl_list_remove(&embedded_compositor->destroy.link); wl_global_destroy(embedded_compositor->global); free(embedded_compositor); diff --git a/src/eom/eom.c b/src/eom/eom.c index ce3e627..030ef84 100644 --- a/src/eom/eom.c +++ b/src/eom/eom.c @@ -457,7 +457,7 @@ ds_tizen_eom_send_output_info(struct ds_tizen_eom *eom, ds_inf("send_output_info - id:%d, type:%d, mode:%d, conn:%d, w:%d, h:%d, w_mm:%d, h_mm:%d", output->id, output->type, output->mode, output->status, output->width, output->height, output->physical_width, output->physical_height); - + } WL_EXPORT void @@ -547,7 +547,7 @@ _ds_tizen_eom_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("global destroy : eom(%p)", eom); - wl_signal_emit_mutable(&eom->events.destroy, eom); + wl_signal_emit(&eom->events.destroy, eom); wl_list_remove(&eom->destroy.link); wl_global_destroy(eom->global); @@ -601,7 +601,7 @@ _ds_tizen_eom_handle_set_attribute(struct wl_client *client, .attribute = eom_attribute, }; - wl_signal_emit_mutable(&eom->events.set_attribute, &event); + wl_signal_emit(&eom->events.set_attribute, &event); } static void @@ -630,7 +630,7 @@ _ds_tizen_eom_handle_set_shell_window(struct wl_client *client, .surface = surface, }; - wl_signal_emit_mutable(&eom->events.set_shell_window, &event); + wl_signal_emit(&eom->events.set_shell_window, &event); } static void @@ -683,7 +683,7 @@ _ds_tizen_eom_client_cb_destroy(struct wl_resource *resource) eom_client = wl_resource_get_user_data(resource); - wl_signal_emit_mutable(&eom_client->eom->events.client_destroy, eom_client); + wl_signal_emit(&eom_client->eom->events.client_destroy, eom_client); wl_list_remove(&eom_client->link); free(eom_client); } diff --git a/src/global_resource/global_resource.c b/src/global_resource/global_resource.c index d233106..3c15f23 100644 --- a/src/global_resource/global_resource.c +++ b/src/global_resource/global_resource.c @@ -188,7 +188,7 @@ resource_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: resource(%p)", global_resource); - wl_signal_emit_mutable(&global_resource->events.destroy, global_resource); + wl_signal_emit(&global_resource->events.destroy, global_resource); wl_list_remove(&global_resource->destroy.link); wl_global_destroy(global_resource->global); free(global_resource); @@ -215,7 +215,7 @@ _tizen_surface_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_surface_handle_destroy (info:%p)", info); - wl_signal_emit_mutable(&info->client->events.destroy, info); + wl_signal_emit(&info->client->events.destroy, info); wl_list_remove(&info->link); free(info); } @@ -258,7 +258,7 @@ surface_handle_get_tizen_global_resource(struct wl_client *wl_client, wl_resource_set_implementation(info->resource, &resource_impl, info, _tizen_surface_handle_destroy); - wl_signal_emit_mutable(&client->global_resource->events.get_resource_info, info); + wl_signal_emit(&client->global_resource->events.get_resource_info, info); tizen_resource_send_resource_id(info->resource, info->universal_id); } @@ -296,7 +296,7 @@ _tizen_global_resource_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_global_resource_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(info, tmp, &client->infos, link) { - wl_signal_emit_mutable(&info->client->events.destroy, info); + wl_signal_emit(&info->client->events.destroy, info); wl_list_remove(&info->link); free(info); } diff --git a/src/hwc/hwc.c b/src/hwc/hwc.c index 552632a..7346911 100644 --- a/src/hwc/hwc.c +++ b/src/hwc/hwc.c @@ -84,7 +84,7 @@ _hwc_commit_feedback_cb_resource_destroy(struct wl_resource *commit_feedback_res commit_feedback->listener.surface_destroy.notify = NULL; } - wl_signal_emit_mutable(&commit_feedback->events.destroy, commit_feedback); + wl_signal_emit(&commit_feedback->events.destroy, commit_feedback); free(commit_feedback); } @@ -131,7 +131,7 @@ hwc_handle_create_commit_feedback(struct wl_client *client, wl_signal_init(&commit_feedback->events.destroy); - wl_signal_emit_mutable(&hwc_client->hwc->events.new_commit_feedback, commit_feedback); + wl_signal_emit(&hwc_client->hwc->events.new_commit_feedback, commit_feedback); } static void @@ -205,7 +205,7 @@ hwc_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: hwc(%p)", hwc); - wl_signal_emit_mutable(&hwc->events.destroy, hwc); + wl_signal_emit(&hwc->events.destroy, hwc); wl_list_remove(&hwc->destroy.link); wl_global_destroy(hwc->global); free(hwc); diff --git a/src/indicator/indicator.c b/src/indicator/indicator.c index b0bb21c..7b8cf67 100644 --- a/src/indicator/indicator.c +++ b/src/indicator/indicator.c @@ -281,7 +281,7 @@ indicator_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: indicator(%p)", indicator); - wl_signal_emit_mutable(&indicator->events.destroy, indicator); + wl_signal_emit(&indicator->events.destroy, indicator); wl_list_remove(&indicator->destroy.link); wl_global_destroy(indicator->global); free(indicator); @@ -342,7 +342,7 @@ indicator_handle_set_state(struct wl_client *wl_client, surface, info->state, indicator_state); info->state = indicator_state; - wl_signal_emit_mutable(&client->indicator->events.change_state, surface); + wl_signal_emit(&client->indicator->events.change_state, surface); } } @@ -391,7 +391,7 @@ indicator_handle_set_opacity_mode(struct wl_client *wl_client, surface, info->opacity_mode, opacity_mode); info->opacity_mode = opacity_mode; - wl_signal_emit_mutable(&client->indicator->events.change_opacity_mode, surface); + wl_signal_emit(&client->indicator->events.change_opacity_mode, surface); } } @@ -431,7 +431,7 @@ indicator_handle_set_visible_type(struct wl_client *wl_client, surface, info->visible_type, visible_type); info->visible_type = visible_type; - wl_signal_emit_mutable(&client->indicator->events.change_visible_type, surface); + wl_signal_emit(&client->indicator->events.change_visible_type, surface); } } diff --git a/src/input_devicemgr/input_devicemgr.c b/src/input_devicemgr/input_devicemgr.c index 4a8236d..d76b1dc 100644 --- a/src/input_devicemgr/input_devicemgr.c +++ b/src/input_devicemgr/input_devicemgr.c @@ -272,7 +272,7 @@ tz_devicemgr_destroy(struct ds_tizen_input_devicemgr *tz_devicemgr) tz_devicemgr_ungrab_keyboard(tz_devicemgr); ds_seat_keyboard_grab_destroy(tz_devicemgr->grab); - wl_signal_emit_mutable(&tz_devicemgr->events.destroy, tz_devicemgr); + wl_signal_emit(&tz_devicemgr->events.destroy, tz_devicemgr); wl_list_remove(&tz_devicemgr->backend_destroy.link); wl_list_remove(&tz_devicemgr->seat_destroy.link); wl_list_remove(&tz_devicemgr->new_input.link); @@ -818,7 +818,7 @@ device_manager_handle_pointer_warp(struct wl_client *client, ds_inf("Pointer warp. surface:%p, x:%.2f, y:%.2f", ds_event.surface, ds_event.x, ds_event.y); - wl_signal_emit_mutable(&tz_devicemgr->events.pointer_warp, &ds_event); + wl_signal_emit(&tz_devicemgr->events.pointer_warp, &ds_event); ret = TIZEN_INPUT_DEVICE_MANAGER_ERROR_NONE; finish: @@ -964,7 +964,7 @@ tz_devicemgr_init_generator(struct ds_tizen_input_devicemgr *tz_devicemgr, tz_devicemgr->devices.kbd->ref++; } if (dev->created) { - wl_signal_emit_mutable(&tz_devicemgr->backend->events.new_input, + wl_signal_emit(&tz_devicemgr->backend->events.new_input, dev->input_device); } } @@ -976,7 +976,7 @@ tz_devicemgr_init_generator(struct ds_tizen_input_devicemgr *tz_devicemgr, tz_devicemgr->devices.ptr->ref++; } if (dev->created) { - wl_signal_emit_mutable(&tz_devicemgr->backend->events.new_input, + wl_signal_emit(&tz_devicemgr->backend->events.new_input, dev->input_device); } } @@ -988,7 +988,7 @@ tz_devicemgr_init_generator(struct ds_tizen_input_devicemgr *tz_devicemgr, tz_devicemgr->devices.touch->ref++; } if (dev->created) { - wl_signal_emit_mutable(&tz_devicemgr->backend->events.new_input, + wl_signal_emit(&tz_devicemgr->backend->events.new_input, dev->input_device); } } @@ -1242,7 +1242,7 @@ tz_devicemgr_generate_touch_move(struct ds_input_device *device, double x, doubl ds_event.y = y; ds_inf("Generate touch motion. touch:%p, id:%d (%d, %d)", touch, ds_event.id, x, y); - wl_signal_emit_mutable(&touch->events.motion, &ds_event); + wl_signal_emit(&touch->events.motion, &ds_event); return true; } @@ -1271,7 +1271,7 @@ tz_devicemgr_generate_touch_down(struct ds_input_device *device, double x, doubl ds_event.y = y; ds_inf("Generate touch down. touch:%p, id:%d (%d, %d)", touch, ds_event.id, x, y); - wl_signal_emit_mutable(&touch->events.down, &ds_event); + wl_signal_emit(&touch->events.down, &ds_event); return true; } @@ -1297,7 +1297,7 @@ tz_devicemgr_generate_touch_up(struct ds_input_device *device, uint32_t finger) ds_event.id = finger; ds_inf("Generate touch up. touch:%p, id:%d", touch, ds_event.id); - wl_signal_emit_mutable(&touch->events.up, &ds_event); + wl_signal_emit(&touch->events.up, &ds_event); return true; } @@ -1324,7 +1324,7 @@ tz_devicemgr_generate_mouse_move(struct ds_input_device *device, double x, doubl ds_event.delta_y = y; ds_inf("Generate mouse motion. pointer:%p, x:%f, y:%f", pointer, ds_event.delta_x, ds_event.delta_y); - wl_signal_emit_mutable(&pointer->events.motion, &ds_event); + wl_signal_emit(&pointer->events.motion, &ds_event); return true; } @@ -1354,7 +1354,7 @@ tz_devicemgr_generate_mouse_button(struct ds_input_device *device, uint32_t butt ds_event.state = DS_BUTTON_RELEASED; ds_inf("Generate mouse button. pointer:%p, button:%d, state:%s", pointer, ds_event.button, state ? "PRESSED" : "RELEASED"); - wl_signal_emit_mutable(&pointer->events.button, &ds_event); + wl_signal_emit(&pointer->events.button, &ds_event); return true; } diff --git a/src/input_method/input_method.c b/src/input_method/input_method.c index 93f9a0c..d2e6cbb 100644 --- a/src/input_method/input_method.c +++ b/src/input_method/input_method.c @@ -83,7 +83,7 @@ input_method_mgr_handle_display_destroy(struct wl_listener *listener, void *data ds_inf("Global destroy: input_method_mgr(%p)", input_method_mgr); - wl_signal_emit_mutable(&input_method_mgr->events.destroy, input_method_mgr); + wl_signal_emit(&input_method_mgr->events.destroy, input_method_mgr); wl_list_remove(&input_method_mgr->destroy.link); wl_global_destroy(input_method_mgr->global); @@ -105,7 +105,7 @@ input_method_mgr_handle_set_transient_for(struct wl_client *wl_client, ds_event.im_mgr = input_method_mgr; ds_event.pid_parent = parent_pid; ds_event.pid_child = child_pid; - wl_signal_emit_mutable(&input_method_mgr->events.set_transient_for, &ds_event); + wl_signal_emit(&input_method_mgr->events.set_transient_for, &ds_event); } static const struct zwp_input_method_manager_v1_interface input_method_mgr_impl = @@ -194,7 +194,7 @@ context_destroy(struct ds_tizen_input_method_context *context) { ds_inf("input_method_context(%p) destroy", context); - wl_signal_emit_mutable(&context->events.destroy, context); + wl_signal_emit(&context->events.destroy, context); free(context); } @@ -442,7 +442,7 @@ context_handle_commit_string(struct wl_client *client, ds_event.serial = serial; ds_event.text = text; - wl_signal_emit_mutable(&context->events.commit_string, &ds_event); + wl_signal_emit(&context->events.commit_string, &ds_event); } static void @@ -461,7 +461,7 @@ context_handle_preedit_string(struct wl_client *client, ds_event.text = text; ds_event.commit = commit; - wl_signal_emit_mutable(&context->events.preedit_string, &ds_event); + wl_signal_emit(&context->events.preedit_string, &ds_event); } static void @@ -480,7 +480,7 @@ context_handle_preedit_styling(struct wl_client *client, ds_event.length = length; ds_event.style = style; - wl_signal_emit_mutable(&context->events.preedit_styling, &ds_event); + wl_signal_emit(&context->events.preedit_styling, &ds_event); } static void @@ -494,7 +494,7 @@ context_handle_preedit_cursor(struct wl_client *client, ds_event.im_context = context; ds_event.index = index; - wl_signal_emit_mutable(&context->events.preedit_styling, &ds_event); + wl_signal_emit(&context->events.preedit_styling, &ds_event); } static void @@ -509,7 +509,7 @@ context_handle_delete_surrounding_text(struct wl_client *client, ds_event.im_context = context; ds_event.index = index; ds_event.length = length; - wl_signal_emit_mutable(&context->events.delete_surrounding_text, &ds_event); + wl_signal_emit(&context->events.delete_surrounding_text, &ds_event); } static void @@ -524,7 +524,7 @@ context_handle_cursor_position(struct wl_client *client, ds_event.im_context = context; ds_event.index = index; ds_event.anchor = anchor; - wl_signal_emit_mutable(&context->events.cursor_position, &ds_event); + wl_signal_emit(&context->events.cursor_position, &ds_event); } static void @@ -538,7 +538,7 @@ context_handle_modifiers_map(struct wl_client *client, ds_event.im_context = context; ds_event.map = map; - wl_signal_emit_mutable(&context->events.modifiers_map, &ds_event); + wl_signal_emit(&context->events.modifiers_map, &ds_event); } static void @@ -558,7 +558,7 @@ context_handle_keysym(struct wl_client *client, struct wl_resource *resource, ds_event.sym = sym; ds_event.state = state; ds_event.modifiers = modifiers; - wl_signal_emit_mutable(&context->events.keysym, &ds_event); + wl_signal_emit(&context->events.keysym, &ds_event); } static void @@ -598,7 +598,7 @@ context_handle_language(struct wl_client *client, ds_event.im_context = context; ds_event.serial = serial; ds_event.language = language; - wl_signal_emit_mutable(&context->events.language, &ds_event); + wl_signal_emit(&context->events.language, &ds_event); } static void @@ -613,7 +613,7 @@ context_handle_text_direction(struct wl_client *client, ds_event.im_context = context; ds_event.serial = serial; ds_event.direction = direction; - wl_signal_emit_mutable(&context->events.text_direction, &ds_event); + wl_signal_emit(&context->events.text_direction, &ds_event); } static const struct zwp_input_method_context_v1_interface context_impl = { @@ -661,7 +661,7 @@ input_method_handle_display_destroy(struct wl_listener *listener, void *data) if (input_method->context) context_destroy(input_method->context); - wl_signal_emit_mutable(&input_method->events.destroy, input_method); + wl_signal_emit(&input_method->events.destroy, input_method); wl_list_remove(&input_method->destroy.link); wl_global_destroy(input_method->global); diff --git a/src/keyrouter/keyrouter.c b/src/keyrouter/keyrouter.c index b4fae3b..097f4df 100644 --- a/src/keyrouter/keyrouter.c +++ b/src/keyrouter/keyrouter.c @@ -296,7 +296,7 @@ keyrouter_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: ds_tizen_keyrouter(%p)", keyrouter); - wl_signal_emit_mutable(&keyrouter->events.destroy, keyrouter); + wl_signal_emit(&keyrouter->events.destroy, keyrouter); if (keyrouter->security_initialized) tizen_security_finish(); diff --git a/src/launch/appinfo.c b/src/launch/appinfo.c index 6c5a06a..944797b 100644 --- a/src/launch/appinfo.c +++ b/src/launch/appinfo.c @@ -137,7 +137,7 @@ appinfo_mgr_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: appinfo_mgr(%p)", appinfo_mgr); - wl_signal_emit_mutable(&appinfo_mgr->events.destroy, appinfo_mgr); + wl_signal_emit(&appinfo_mgr->events.destroy, appinfo_mgr); wl_list_remove(&appinfo_mgr->destroy.link); wl_list_for_each_safe(client, tmp_client, &appinfo_mgr->clients, link) { @@ -258,7 +258,7 @@ appinfo_set_pid(struct ds_tizen_launch_appinfo *info, pid_t pid) info->pid = pid; ds_inf("appinfo(%p) set pid(%u)", info, pid); - wl_signal_emit_mutable(&appinfo_mgr->events.set_pid, info); + wl_signal_emit(&appinfo_mgr->events.set_pid, info); return true; } @@ -295,7 +295,7 @@ appinfo_set_appid(struct ds_tizen_launch_appinfo *info, const char *appid) info->appid = strdup(appid); ds_inf("appinfo(%p) set appid(%u)", info, appid); - wl_signal_emit_mutable(&appinfo_mgr->events.set_appid, info); + wl_signal_emit(&appinfo_mgr->events.set_appid, info); return true; } @@ -512,7 +512,7 @@ appinfo_handle_ready_metadata(struct wl_client *wl_client, if ((uint32_t)info->pid != pid) appinfo_set_pid(info, pid); - wl_signal_emit_mutable(&client->appinfo_mgr->events.metadata_ready, info); + wl_signal_emit(&client->appinfo_mgr->events.metadata_ready, info); /* TODO: base output resolution */ } diff --git a/src/launch/effect.c b/src/launch/effect.c index 7994776..3ad0bea 100644 --- a/src/launch/effect.c +++ b/src/launch/effect.c @@ -221,7 +221,7 @@ effect_client_destroy(struct ds_tizen_launch_effect_client *client) struct ds_tizen_launch_splash *splash, *tmp; wl_list_for_each_safe(splash, tmp, &client->splashs, link) { - wl_signal_emit_mutable(&splash->events.destroy, splash); + wl_signal_emit(&splash->events.destroy, splash); wl_list_remove(&splash->link); free(splash); } @@ -241,7 +241,7 @@ static void effect_handle_display_destroy(struct wl_listener *listener, ds_inf("Global destroy: effect(%p)", effect); - wl_signal_emit_mutable(&effect->events.destroy, effect); + wl_signal_emit(&effect->events.destroy, effect); wl_list_remove(&effect->destroy.link); wl_list_for_each_safe(client, tmp_client, &effect->clients, link) { @@ -301,7 +301,7 @@ splash_handle_launch(struct wl_client *wl_client, ds_inf("Effect type_set. pid:%u type:%s", ds_event.pid, effect_type); - wl_signal_emit_mutable(&effect->events.type_set, &ds_event); + wl_signal_emit(&effect->events.type_set, &ds_event); } } @@ -317,7 +317,7 @@ splash_handle_owner(struct wl_client *wl_client, splash = wl_resource_get_user_data(resource); ds_event.pid = pid; - wl_signal_emit_mutable(&splash->events.owner, &ds_event); + wl_signal_emit(&splash->events.owner, &ds_event); } static void @@ -345,7 +345,7 @@ splash_handle_launch_v2(struct wl_client *wl_client, ds_inf("Effect type_set. pid:%u type:%s", ds_event.pid, effect_type); - wl_signal_emit_mutable(&effect->events.type_set, &ds_event); + wl_signal_emit(&effect->events.type_set, &ds_event); } //Parse extra config @@ -395,7 +395,7 @@ splash_client_handle_destroy(struct wl_resource *resource) ds_inf("splash_client_handle_destroy (client:%p)", splash->client); - wl_signal_emit_mutable(&splash->events.destroy, splash); + wl_signal_emit(&splash->events.destroy, splash); wl_list_remove(&splash->link); free(splash); } @@ -449,7 +449,7 @@ effect_handle_create_splash_img(struct wl_client *wl_client, if (!splash) return; effect = client->effect; - wl_signal_emit_mutable(&effect->events.new_splash, splash); + wl_signal_emit(&effect->events.new_splash, splash); } static void @@ -469,7 +469,7 @@ effect_handle_type_set(struct wl_client *wl_client, ds_inf("Effect type_set. pid:%u type:%s", pid, effect_type); - wl_signal_emit_mutable(&effect->events.type_set, &ds_event); + wl_signal_emit(&effect->events.type_set, &ds_event); } static void @@ -487,7 +487,7 @@ effect_handle_type_unset(struct wl_client *wl_client, ds_inf("Effect type_unset. pid:%u", pid); - wl_signal_emit_mutable(&effect->events.type_unset, &ds_event); + wl_signal_emit(&effect->events.type_unset, &ds_event); } static void diff --git a/src/memory_flusher/memory_flusher.c b/src/memory_flusher/memory_flusher.c index 4dadce7..499e05d 100644 --- a/src/memory_flusher/memory_flusher.c +++ b/src/memory_flusher/memory_flusher.c @@ -189,7 +189,7 @@ memory_flusher_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: memory_flusher(%p)", memory_flusher); - wl_signal_emit_mutable(&memory_flusher->events.destroy, memory_flusher); + wl_signal_emit(&memory_flusher->events.destroy, memory_flusher); wl_list_remove(&memory_flusher->destroy.link); wl_global_destroy(memory_flusher->global); free(memory_flusher); @@ -216,7 +216,7 @@ _tizen_memory_flusher_info_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_memory_flusher_info_handle_destroy (info:%p)", info); - wl_signal_emit_mutable(&info->client->events.destroy, info); + wl_signal_emit(&info->client->events.destroy, info); wl_list_remove(&info->link); free(info); } @@ -256,7 +256,7 @@ memory_flusher_handle_get_flusher(struct wl_client *wl_client, wl_resource_set_implementation(info->resource, &flusher_impl, info, _tizen_memory_flusher_info_handle_destroy); - wl_signal_emit_mutable(&client->memory_flusher->events.get_flusher, info); + wl_signal_emit(&client->memory_flusher->events.get_flusher, info); } static void @@ -292,7 +292,7 @@ _tizen_memory_flusher_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_memory_flusher_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(info, tmp, &client->infos, link) { - wl_signal_emit_mutable(&client->events.destroy, info); + wl_signal_emit(&client->events.destroy, info); wl_list_remove(&info->link); free(info); } diff --git a/src/policy/policy.c b/src/policy/policy.c index 624720d..ab7e9a6 100644 --- a/src/policy/policy.c +++ b/src/policy/policy.c @@ -993,7 +993,7 @@ tizen_policy_client_get_surface(struct wl_resource *resource, .policy = client->policy, .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&client->policy->events.new_surface, &event); + wl_signal_emit(&client->policy->events.new_surface, &event); return policy_surface; } @@ -1007,7 +1007,7 @@ policy_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: policy(%p)", policy); - wl_signal_emit_mutable(&policy->events.destroy, policy); + wl_signal_emit(&policy->events.destroy, policy); if (policy->use_security) tizen_security_finish(); @@ -1039,7 +1039,7 @@ _tizen_policy_visibility_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_policy_visibility_handle_destroy (visibility:%p)", visibility); - wl_signal_emit_mutable(&visibility->events.destroy, visibility); + wl_signal_emit(&visibility->events.destroy, visibility); wl_list_remove(&visibility->link); free(visibility); } @@ -1088,7 +1088,7 @@ policy_handle_get_visibility(struct wl_client *wl_client, struct wl_resource *re .policy_surface = policy_surface, .visibility = visibility, }; - wl_signal_emit_mutable(&policy_surface->events.new_visibility, &event); + wl_signal_emit(&policy_surface->events.new_visibility, &event); } static void @@ -1110,7 +1110,7 @@ position_handle_set(struct wl_client *wl_client, struct wl_resource *resource, .x = x, .y = y, }; - wl_signal_emit_mutable(&position->events.set, &event); + wl_signal_emit(&position->events.set, &event); } static const struct tizen_position_interface position_impl = @@ -1129,7 +1129,7 @@ _tizen_policy_position_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_policy_position_handle_destroy (position:%p)", position); - wl_signal_emit_mutable(&position->events.destroy, position); + wl_signal_emit(&position->events.destroy, position); wl_list_remove(&position->link); free(position); } @@ -1179,7 +1179,7 @@ policy_handle_get_position(struct wl_client *wl_client, struct wl_resource *reso .policy_surface = policy_surface, .position = position, }; - wl_signal_emit_mutable(&policy_surface->events.new_position, &event); + wl_signal_emit(&policy_surface->events.new_position, &event); } static void @@ -1198,7 +1198,7 @@ policy_handle_activate(struct wl_client *wl_client, struct ds_tizen_policy_surface_event_activate event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.activate, &event); + wl_signal_emit(&policy_surface->events.activate, &event); } static void @@ -1215,7 +1215,7 @@ policy_handle_activate_below_by_res_id(struct wl_client *wl_client, .universal_id = universal_id, .below_universal_id = below_universal_id, }; - wl_signal_emit_mutable(&client->policy->events.activate_below_by_univeral_id, &event); + wl_signal_emit(&client->policy->events.activate_below_by_univeral_id, &event); } static void @@ -1234,7 +1234,7 @@ policy_handle_raise(struct wl_client *wl_client, struct wl_resource *resource, struct ds_tizen_policy_surface_event_raise event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.raise, &event); + wl_signal_emit(&policy_surface->events.raise, &event); } static void @@ -1253,7 +1253,7 @@ policy_handle_lower(struct wl_client *wl_client, struct wl_resource *resource, struct ds_tizen_policy_surface_event_lower event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.lower, &event); + wl_signal_emit(&policy_surface->events.lower, &event); } static void @@ -1268,7 +1268,7 @@ policy_handle_lower_by_res_id(struct wl_client *wl_client, .policy = client->policy, .universal_id = universal_id, }; - wl_signal_emit_mutable(&client->policy->events.lower_by_universal_id, &event); + wl_signal_emit(&client->policy->events.lower_by_universal_id, &event); } static void @@ -1287,7 +1287,7 @@ policy_handle_set_focus_skip(struct wl_client *wl_client, struct ds_tizen_policy_surface_event_set_focus_skip event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.set_focus_skip, &event); + wl_signal_emit(&policy_surface->events.set_focus_skip, &event); } static void @@ -1306,7 +1306,7 @@ policy_handle_unset_focus_skip(struct wl_client *wl_client, struct ds_tizen_policy_surface_event_unset_focus_skip event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.unset_focus_skip, &event); + wl_signal_emit(&policy_surface->events.unset_focus_skip, &event); } static void @@ -1326,7 +1326,7 @@ policy_handle_set_role(struct wl_client *wl_client, struct wl_resource *resource .policy_surface = policy_surface, .role = role, }; - wl_signal_emit_mutable(&policy_surface->events.set_role, &event); + wl_signal_emit(&policy_surface->events.set_role, &event); } static void @@ -1395,7 +1395,7 @@ policy_handle_set_type(struct wl_client *wl_client, struct wl_resource *resource .policy_surface = policy_surface, .win_type = win_type, }; - wl_signal_emit_mutable(&policy_surface->events.set_window_type, &event); + wl_signal_emit(&policy_surface->events.set_window_type, &event); } static void @@ -1417,7 +1417,7 @@ policy_handle_set_conformant(struct wl_client *wl_client, struct ds_tizen_policy_surface_event_set_conformant event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.set_conformant, &event); + wl_signal_emit(&policy_surface->events.set_conformant, &event); } static void @@ -1439,7 +1439,7 @@ policy_handle_unset_conformant(struct wl_client *wl_client, struct ds_tizen_policy_surface_event_unset_conformant event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.unset_conformant, &event); + wl_signal_emit(&policy_surface->events.unset_conformant, &event); } static void @@ -1458,7 +1458,7 @@ policy_handle_get_conformant(struct wl_client *wl_client, struct ds_tizen_policy_surface_event_get_conformant event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.get_conformant, &event); + wl_signal_emit(&policy_surface->events.get_conformant, &event); } static void @@ -1523,7 +1523,7 @@ policy_handle_set_notification_level(struct wl_client *wl_client, .policy_surface = policy_surface, .level = noti_level, }; - wl_signal_emit_mutable(&policy_surface->events.set_notification_level, &event); + wl_signal_emit(&policy_surface->events.set_notification_level, &event); } static void @@ -1539,7 +1539,7 @@ policy_handle_set_transient_for(struct wl_client *wl_client, .child_universal_id = child_id, .parent_universal_id = parent_id, }; - wl_signal_emit_mutable(&client->policy->events.set_transient_for, &event); + wl_signal_emit(&client->policy->events.set_transient_for, &event); tizen_policy_send_transient_for_done(resource, child_id); } @@ -1556,7 +1556,7 @@ policy_handle_unset_transient_for(struct wl_client *wl_client, .policy = client->policy, .child_universal_id = child_id, }; - wl_signal_emit_mutable(&client->policy->events.unset_transient_for, &event); + wl_signal_emit(&client->policy->events.unset_transient_for, &event); } static void @@ -1603,7 +1603,7 @@ policy_handle_set_window_screen_mode(struct wl_client *wl_client, .policy_surface = policy_surface, .mode = screen_mode, }; - wl_signal_emit_mutable(&policy_surface->events.set_window_screen_mode, &event); + wl_signal_emit(&policy_surface->events.set_window_screen_mode, &event); } static void @@ -1620,7 +1620,7 @@ policy_handle_place_subsurface_below_parent(struct wl_client *wl_client, .policy = client->policy, .subsurface = subsurface, }; - wl_signal_emit_mutable( + wl_signal_emit( &client->policy->events.place_subsurface_below_parent, &event); } @@ -1639,7 +1639,7 @@ policy_handle_set_subsurface_stand_alone(struct wl_client *wl_client, .policy = client->policy, .subsurface = subsurface, }; - wl_signal_emit_mutable( + wl_signal_emit( &client->policy->events.set_subsurface_stand_alone, &event); } @@ -1664,7 +1664,7 @@ policy_handle_get_subsurface(struct wl_client *wl_client, .policy_surface = policy_surface, .parent_universal_id = parent_id, }; - wl_signal_emit_mutable(&policy_surface->events.get_subsurface, &event); + wl_signal_emit(&policy_surface->events.get_subsurface, &event); } static void @@ -1704,7 +1704,7 @@ policy_handle_iconify(struct wl_client *wl_client, struct wl_resource *resource, struct ds_tizen_policy_surface_event_iconify event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.iconify, &event); + wl_signal_emit(&policy_surface->events.iconify, &event); } static void @@ -1726,7 +1726,7 @@ policy_handle_uniconify(struct wl_client *wl_client, struct wl_resource *resourc struct ds_tizen_policy_surface_event_uniconify event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.uniconify, &event); + wl_signal_emit(&policy_surface->events.uniconify, &event); } static void @@ -1749,7 +1749,7 @@ policy_handle_add_aux_hint(struct wl_client *wl_client, .name = name, .value = value, }; - wl_signal_emit_mutable(&policy_surface->events.add_aux_hint, &event); + wl_signal_emit(&policy_surface->events.add_aux_hint, &event); } static void @@ -1771,7 +1771,7 @@ policy_handle_change_aux_hint(struct wl_client *wl_client, .id = id, .value = value, }; - wl_signal_emit_mutable(&policy_surface->events.change_aux_hint, &event); + wl_signal_emit(&policy_surface->events.change_aux_hint, &event); } static void @@ -1792,7 +1792,7 @@ policy_handle_delete_aux_hint(struct wl_client *wl_client, .policy_surface = policy_surface, .id = id, }; - wl_signal_emit_mutable(&policy_surface->events.delete_aux_hint, &event); + wl_signal_emit(&policy_surface->events.delete_aux_hint, &event); } static void @@ -1811,7 +1811,7 @@ policy_handle_get_supported_aux_hints(struct wl_client *wl_client, struct ds_tizen_policy_surface_event_get_supported_aux_hints event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.get_supported_aux_hints, &event); + wl_signal_emit(&policy_surface->events.get_supported_aux_hints, &event); } static void @@ -1830,7 +1830,7 @@ policy_handle_set_background_state(struct wl_client *wl_client, .policy = client->policy, .pid = pid, }; - wl_signal_emit_mutable(&client->policy->events.set_background_state, &event); + wl_signal_emit(&client->policy->events.set_background_state, &event); } } } @@ -1851,7 +1851,7 @@ policy_handle_unset_background_state(struct wl_client *wl_client, .policy = client->policy, .pid = pid, }; - wl_signal_emit_mutable(&client->policy->events.unset_background_state, &event); + wl_signal_emit(&client->policy->events.unset_background_state, &event); } } } @@ -1877,7 +1877,7 @@ policy_handle_set_floating_mode(struct wl_client *wl_client, struct ds_tizen_policy_surface_event_set_floating_mode event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.set_floating_mode, &event); + wl_signal_emit(&policy_surface->events.set_floating_mode, &event); } static void @@ -1901,7 +1901,7 @@ policy_handle_unset_floating_mode(struct wl_client *wl_client, struct ds_tizen_policy_surface_event_unset_floating_mode event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.unset_floating_mode, &event); + wl_signal_emit(&policy_surface->events.unset_floating_mode, &event); } static void @@ -1940,7 +1940,7 @@ policy_handle_set_stack_mode(struct wl_client *wl_client, .policy_surface = policy_surface, .mode = stack_mode, }; - wl_signal_emit_mutable(&policy_surface->events.set_stack_mode, &event); + wl_signal_emit(&policy_surface->events.set_stack_mode, &event); } static void @@ -1957,7 +1957,7 @@ policy_handle_activate_above_by_res_id(struct wl_client *wl_client, .universal_id = universal_id, .above_universal_id = above_universal_id, }; - wl_signal_emit_mutable(&client->policy->events.activate_above_by_universal_id, &event); + wl_signal_emit(&client->policy->events.activate_above_by_universal_id, &event); } static void @@ -1982,7 +1982,7 @@ _tizen_policy_subsurface_watcher_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_policy_subsurface_watcher_handle_destroy (subsurface_watcher:%p)", subsurface_watcher); - wl_signal_emit_mutable(&subsurface_watcher->events.destroy, subsurface_watcher); + wl_signal_emit(&subsurface_watcher->events.destroy, subsurface_watcher); free(subsurface_watcher); } @@ -2030,7 +2030,7 @@ policy_handle_get_subsurface_watcher(struct wl_client *wl_client, .policy_surface = policy_surface, .subsurface_watcher = subsurface_watcher, }; - wl_signal_emit_mutable(&policy_surface->events.new_subsurface_watcher, &event); + wl_signal_emit(&policy_surface->events.new_subsurface_watcher, &event); } static void @@ -2054,7 +2054,7 @@ policy_handle_set_parent(struct wl_client *wl_client, .policy_surface = policy_surface, .parent_surface = parent_surface, }; - wl_signal_emit_mutable(&policy_surface->events.set_parent, &event); + wl_signal_emit(&policy_surface->events.set_parent, &event); } static void @@ -2075,7 +2075,7 @@ policy_handle_ack_conformant_region(struct wl_client *wl_client, .policy_surface = policy_surface, .serial = serial, }; - wl_signal_emit_mutable(&policy_surface->events.ack_conformant_region, &event); + wl_signal_emit(&policy_surface->events.ack_conformant_region, &event); } static void @@ -2116,7 +2116,7 @@ policy_handle_has_video(struct wl_client *wl_client, .policy_surface = policy_surface, .video = has, }; - wl_signal_emit_mutable(&policy_surface->events.set_video, &event); + wl_signal_emit(&policy_surface->events.set_video, &event); } static void @@ -2132,7 +2132,7 @@ policy_handle_set_appid(struct wl_client *wl_client, .pid = pid, .appid = appid, }; - wl_signal_emit_mutable(&client->policy->events.set_appid, &event); + wl_signal_emit(&client->policy->events.set_appid, &event); } static void @@ -2151,7 +2151,7 @@ policy_handle_show(struct wl_client *wl_client, struct wl_resource *resource, struct ds_tizen_policy_surface_event_show event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.show, &event); + wl_signal_emit(&policy_surface->events.show, &event); } static void @@ -2170,7 +2170,7 @@ policy_handle_hide(struct wl_client *wl_client, struct wl_resource *resource, struct ds_tizen_policy_surface_event_hide event = { .policy_surface = policy_surface, }; - wl_signal_emit_mutable(&policy_surface->events.hide, &event); + wl_signal_emit(&policy_surface->events.hide, &event); } static void @@ -2187,7 +2187,7 @@ policy_handle_set_transient_for_below(struct wl_client *wl_client, .universal_id = universal_id, .parent_universal_id = parent_universal_id, }; - wl_signal_emit_mutable(&client->policy->events.set_transient_for_below, &event); + wl_signal_emit(&client->policy->events.set_transient_for_below, &event); } static void @@ -2211,7 +2211,7 @@ policy_handle_set_parent_with_below(struct wl_client *wl_client, .policy_surface = policy_surface, .parent_surface = parent_surface, }; - wl_signal_emit_mutable(&policy_surface->events.set_parent_with_below, &event); + wl_signal_emit(&policy_surface->events.set_parent_with_below, &event); } static const struct tizen_policy_interface policy_impl = @@ -2273,7 +2273,7 @@ _tizen_policy_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_policy_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(policy_surface, tmp, &client->policy_surfaces, link) { - wl_signal_emit_mutable(&policy_surface->events.destroy, policy_surface); + wl_signal_emit(&policy_surface->events.destroy, policy_surface); wl_list_remove(&policy_surface->link); free(policy_surface); } diff --git a/src/remote_surface/remote_surface.c b/src/remote_surface/remote_surface.c index 20ebafe..b9aaa36 100644 --- a/src/remote_surface/remote_surface.c +++ b/src/remote_surface/remote_surface.c @@ -201,7 +201,7 @@ remote_surface_provider_handle_set_offscreen(struct wl_client *wl_client, remote_provider->offscreen = offscreen; - wl_signal_emit_mutable(&remote_provider->events.set_offscreen, remote_provider); + wl_signal_emit(&remote_provider->events.set_offscreen, remote_provider); } static void @@ -217,7 +217,7 @@ remote_surface_provider_handle_set_input_event_filter(struct wl_client *wl_clien remote_provider->input_event_filter = event_filter; - wl_signal_emit_mutable(&remote_provider->events.set_input_event_filter, remote_provider); + wl_signal_emit(&remote_provider->events.set_input_event_filter, remote_provider); } static const struct tizen_remote_surface_provider_interface remote_surface_provider_impl = @@ -258,7 +258,7 @@ remote_surface_provider_handle_resource_destroy(struct wl_resource *remote_provi wl_list_remove(&remote_provider->link); - wl_signal_emit_mutable(&remote_provider->events.destroy, remote_provider); + wl_signal_emit(&remote_provider->events.destroy, remote_provider); free(remote_provider); } @@ -303,7 +303,7 @@ remote_surface_manager_handle_create_provider(struct wl_client *wl_client, wl_signal_init(&remote_provider->events.set_offscreen); wl_signal_init(&remote_provider->events.set_input_event_filter); - wl_signal_emit_mutable(&remote_client->remote_manager->events.new_provider, remote_provider); + wl_signal_emit(&remote_client->remote_manager->events.new_provider, remote_provider); remote_provider->resource_id = global_resource_id++; @@ -329,7 +329,7 @@ remote_surface_handle_redirect(struct wl_client *wl_client, remote_surface->redirect = true; - wl_signal_emit_mutable(&remote_surface->events.set_redirect, remote_surface); + wl_signal_emit(&remote_surface->events.set_redirect, remote_surface); } static void @@ -342,7 +342,7 @@ remote_surface_handle_unredirect(struct wl_client *wl_client, remote_surface->redirect = false; - wl_signal_emit_mutable(&remote_surface->events.set_redirect, remote_surface); + wl_signal_emit(&remote_surface->events.set_redirect, remote_surface); } static void @@ -373,7 +373,7 @@ remote_surface_handle_transfer_mouse_event(struct wl_client *wl_client, event.identifier = identifier; event.time = time; - wl_signal_emit_mutable(&remote_surface->events.transfer_mouse_event, &event); + wl_signal_emit(&remote_surface->events.transfer_mouse_event, &event); } static void @@ -395,7 +395,7 @@ remote_surface_handle_transfer_mouse_wheel(struct wl_client *wl_client, event.identifier = identifier; event.time = time; - wl_signal_emit_mutable(&remote_surface->events.transfer_mouse_wheel_event, &event); + wl_signal_emit(&remote_surface->events.transfer_mouse_wheel_event, &event); } static void @@ -425,7 +425,7 @@ remote_surface_handle_transfer_touch_event(struct wl_client *wl_client, event.identifier = identifier; event.time = time; - wl_signal_emit_mutable(&remote_surface->events.transfer_touch_event, &event); + wl_signal_emit(&remote_surface->events.transfer_touch_event, &event); } static void @@ -439,7 +439,7 @@ remote_surface_handle_transfer_touch_cancel(struct wl_client *wl_client, event.remote_surface = remote_surface; - wl_signal_emit_mutable(&remote_surface->events.transfer_touch_cancel_event, &event); + wl_signal_emit(&remote_surface->events.transfer_touch_cancel_event, &event); } static void @@ -461,7 +461,7 @@ remote_surface_handle_transfer_key_event(struct wl_client *wl_client, event.identifier = identifier; event.time = time; - wl_signal_emit_mutable(&remote_surface->events.transfer_key_event, &event); + wl_signal_emit(&remote_surface->events.transfer_key_event, &event); } static void @@ -477,7 +477,7 @@ remote_surface_handle_transfer_visibility(struct wl_client *wl_client, event.remote_surface = remote_surface; event.visibility = visibility_type; - wl_signal_emit_mutable(&remote_surface->events.transfer_visibility_event, &event); + wl_signal_emit(&remote_surface->events.transfer_visibility_event, &event); } static void @@ -510,7 +510,7 @@ remote_surface_handle_set_owner(struct wl_client *wl_client, ds_surface_add_destroy_listener(surface, &remote_surface->listener.owner_surface_destroy); remote_surface->owner_surface = surface; - wl_signal_emit_mutable(&remote_surface->events.set_owner, remote_surface); + wl_signal_emit(&remote_surface->events.set_owner, remote_surface); } static void @@ -534,7 +534,7 @@ remote_region_handle_set_geometry(struct wl_client *wl_client, remote_region->w = w; remote_region->h = h; - wl_signal_emit_mutable(&remote_region->events.set_geometry, remote_region); + wl_signal_emit(&remote_region->events.set_geometry, remote_region); } static const struct tizen_remote_surface_region_interface remote_surface_region_impl = @@ -552,7 +552,7 @@ remote_surface_region_handle_resource_destroy(struct wl_resource *remote_region_ ds_inf("remote_region:%p destroy", remote_region); - wl_signal_emit_mutable(&remote_region->events.destroy, remote_region); + wl_signal_emit(&remote_region->events.destroy, remote_region); free(remote_region); } @@ -589,7 +589,7 @@ remote_surface_handle_create_region(struct wl_client *wl_client, wl_signal_init(&remote_region->events.destroy); wl_signal_init(&remote_region->events.set_geometry); - wl_signal_emit_mutable(&remote_surface->events.new_region, remote_region); + wl_signal_emit(&remote_surface->events.new_region, remote_region); } static void @@ -607,7 +607,7 @@ remote_surface_handle_release(struct wl_client *wl_client, event.remote_surface = remote_surface; event.buffer = buffer; - wl_signal_emit_mutable(&remote_surface->events.buffer_release, &event); + wl_signal_emit(&remote_surface->events.buffer_release, &event); } static void @@ -624,7 +624,7 @@ remote_surface_handle_set_remote_render(struct wl_client *wl_client, else remote_surface->remote_render = false; - wl_signal_emit_mutable(&remote_surface->events.set_remote_render, remote_surface); + wl_signal_emit(&remote_surface->events.set_remote_render, remote_surface); } static void @@ -638,7 +638,7 @@ remote_surface_handle_set_changed_buffer_event_filter(struct wl_client *wl_clien remote_surface->changed_buffer_event_filter = filter; - wl_signal_emit_mutable(&remote_surface->events.set_changed_buffer_event_filter, remote_surface); + wl_signal_emit(&remote_surface->events.set_changed_buffer_event_filter, remote_surface); } static void @@ -656,7 +656,7 @@ remote_surface_handle_get_current_buffer(struct wl_client *wl_client, event.buffer_type = buff_type; event.request_serial = req_serial; - wl_signal_emit_mutable(&remote_surface->events.get_current_buffer, &event); + wl_signal_emit(&remote_surface->events.get_current_buffer, &event); } static const struct tizen_remote_surface_interface remote_surface_impl = @@ -729,7 +729,7 @@ remote_surface_handle_resource_destroy(struct wl_resource *remote_surface_resour wl_list_remove(&remote_surface->link); - wl_signal_emit_mutable(&remote_surface->events.destroy, remote_surface); + wl_signal_emit(&remote_surface->events.destroy, remote_surface); free(remote_surface); } @@ -804,7 +804,7 @@ remote_surface_manager_handle_create_surface(struct wl_client *wl_client, wl_list_insert(&remote_client->remote_manager->remote_surfaces, &remote_surface->link); - wl_signal_emit_mutable(&remote_client->remote_manager->events.new_surface, remote_surface); + wl_signal_emit(&remote_client->remote_manager->events.new_surface, remote_surface); } static void @@ -825,7 +825,7 @@ remote_surface_manager_handle_bind_surface(struct wl_client *wl_client, event.remote_surface = remote_surface; event.surface = surface; - wl_signal_emit_mutable(&remote_client->remote_manager->events.bind_surface, &event); + wl_signal_emit(&remote_client->remote_manager->events.bind_surface, &event); } static void @@ -911,8 +911,8 @@ remote_surface_manager_handle_create_surface_with_wl_surface(struct wl_client *w wl_list_insert(&remote_client->remote_manager->remote_surfaces, &remote_surface->link); - wl_signal_emit_mutable(&remote_client->remote_manager->events.new_surface, remote_surface); - wl_signal_emit_mutable(&remote_surface->events.set_owner, remote_surface); + wl_signal_emit(&remote_client->remote_manager->events.new_surface, remote_surface); + wl_signal_emit(&remote_surface->events.set_owner, remote_surface); } static const struct tizen_remote_surface_manager_interface remote_surface_manager_impl = @@ -979,7 +979,7 @@ remote_surface_manager_handle_display_destroy(struct wl_listener *listener, void ds_inf("Global destroy: remote_surface_manager(%p)", remote_manager); - wl_signal_emit_mutable(&remote_manager->events.destroy, remote_manager); + wl_signal_emit(&remote_manager->events.destroy, remote_manager); wl_list_remove(&remote_manager->destroy.link); wl_global_destroy(remote_manager->global); free(remote_manager); diff --git a/src/renderer/renderer.c b/src/renderer/renderer.c index 3595f2c..f1e0e84 100644 --- a/src/renderer/renderer.c +++ b/src/renderer/renderer.c @@ -182,7 +182,7 @@ renderer_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: renderer(%p)", renderer); - wl_signal_emit_mutable(&renderer->events.destroy, renderer); + wl_signal_emit(&renderer->events.destroy, renderer); wl_list_remove(&renderer->destroy.link); wl_global_destroy(renderer->global); free(renderer); @@ -209,7 +209,7 @@ _tizen_renderer_info_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_renderer_info_handle_destroy (info:%p)", info); - wl_signal_emit_mutable(&info->client->events.destroy, info); + wl_signal_emit(&info->client->events.destroy, info); wl_list_remove(&info->link); free(info); } @@ -249,7 +249,7 @@ renderer_handle_get_renderer_surface(struct wl_client *wl_client, wl_resource_set_implementation(info->resource, &renderer_surface_impl, info, _tizen_renderer_info_handle_destroy); - wl_signal_emit_mutable(&client->renderer->events.get_renderer_surface, info); + wl_signal_emit(&client->renderer->events.get_renderer_surface, info); } static void @@ -285,7 +285,7 @@ _tizen_renderer_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_renderer_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(info, tmp, &client->infos, link) { - wl_signal_emit_mutable(&client->events.destroy, info); + wl_signal_emit(&client->events.destroy, info); wl_list_remove(&info->link); free(info); } diff --git a/src/screen/screen.c b/src/screen/screen.c index c5c9916..6ba8442 100644 --- a/src/screen/screen.c +++ b/src/screen/screen.c @@ -87,7 +87,7 @@ splitscreen_handle_activate(struct wl_client *client, ds_inf("screen_splitscreen:%p activate", splitscreen); - wl_signal_emit_mutable(&splitscreen->events.activate, splitscreen); + wl_signal_emit(&splitscreen->events.activate, splitscreen); } static void @@ -100,7 +100,7 @@ splitscreen_handle_deactivate(struct wl_client *client, ds_inf("screen_splitscreen:%p deactivate", splitscreen); - wl_signal_emit_mutable(&splitscreen->events.deactivate, splitscreen); + wl_signal_emit(&splitscreen->events.deactivate, splitscreen); } static const struct wtz_splitscreen_interface splitscreen_impl = @@ -120,7 +120,7 @@ _tizen_screen_splitscreen_handle_resource_destroy(struct wl_resource *splitscree ds_inf("screen_splitscreen:%p destroy", splitscreen); - wl_signal_emit_mutable(&splitscreen->events.destroy, splitscreen); + wl_signal_emit(&splitscreen->events.destroy, splitscreen); screen = splitscreen->screen; screen->splitscreen_enabled = false; // unset splitscreen resource on a screen @@ -183,7 +183,7 @@ screen_handle_get_splitscreen(struct wl_client *client, screen->splitscreen_enabled = true; // set splitscreen resource on a screen - wl_signal_emit_mutable(&screen_client->screen->events.get_splitscreen, splitscreen); + wl_signal_emit(&screen_client->screen->events.get_splitscreen, splitscreen); } static void @@ -260,7 +260,7 @@ screen_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: screen(%p)", screen); - wl_signal_emit_mutable(&screen->events.destroy, screen); + wl_signal_emit(&screen->events.destroy, screen); wl_list_remove(&screen->destroy.link); wl_global_destroy(screen->global); free(screen); @@ -389,7 +389,7 @@ splitscreen_region_handle_assign_appid(struct wl_client *client, splitscreen_region->appid = appid; - wl_signal_emit_mutable(&splitscreen_region->events.assign_appid, (void *)appid); + wl_signal_emit(&splitscreen_region->events.assign_appid, (void *)appid); } static const struct wtz_splitscreen_region_interface splitscreen_region_impl = @@ -408,7 +408,7 @@ _tizen_screen_splitscreen_region_handle_resource_destroy( ds_inf("screen_splitscreen_region:%p destroy", splitscreen_region); - wl_signal_emit_mutable(&splitscreen_region->events.destroy, + wl_signal_emit(&splitscreen_region->events.destroy, splitscreen_region); free(splitscreen_region); diff --git a/src/screen_rotation/screen_rotation.c b/src/screen_rotation/screen_rotation.c index fc00936..e4ddb6b 100644 --- a/src/screen_rotation/screen_rotation.c +++ b/src/screen_rotation/screen_rotation.c @@ -183,7 +183,7 @@ screen_rotation_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: screen_rotation(%p)", screen_rotation); - wl_signal_emit_mutable(&screen_rotation->events.destroy, screen_rotation); + wl_signal_emit(&screen_rotation->events.destroy, screen_rotation); wl_list_remove(&screen_rotation->destroy.link); wl_global_destroy(screen_rotation->global); free(screen_rotation); @@ -225,7 +225,7 @@ screen_rotation_handle_get_ignore_output_transfrom(struct wl_client *wl_client, return; } - wl_signal_emit_mutable(&client->screen_rotation->events.get_ignore_output_transfrom, info); + wl_signal_emit(&client->screen_rotation->events.get_ignore_output_transfrom, info); } static const struct tizen_screen_rotation_interface screen_rotation_impl = @@ -245,7 +245,7 @@ _tizen_screen_rotation_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_screen_rotation_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(info, tmp, &client->infos, link) { - wl_signal_emit_mutable(&client->events.destroy, info); + wl_signal_emit(&client->events.destroy, info); wl_list_remove(&info->link); free(info); } diff --git a/src/screenshooter/screenmirror.c b/src/screenshooter/screenmirror.c index 7a1d580..0675a37 100644 --- a/src/screenshooter/screenmirror.c +++ b/src/screenshooter/screenmirror.c @@ -92,7 +92,7 @@ ds_tizen_screenmirror_destroy(struct ds_tizen_screenmirror *mirror) if (mirror->resource) wl_resource_set_destructor(mirror->resource, NULL); - wl_signal_emit_mutable(&mirror->events.destroy, NULL); + wl_signal_emit(&mirror->events.destroy, NULL); //should be called buffer_dequeued from server(ds_tizen_screenmirror_send_dequeued) free(mirror); @@ -123,7 +123,7 @@ ds_tizen_screenmirror_create(struct ds_tizen_screenshooter_client *client, ds_err("screenmirror create fail : memory alloc failed"); return NULL; } - + mirror->resource = wl_resource_create(client->client, &tizen_screenmirror_interface, version, id); if (mirror->resource == NULL) { @@ -174,7 +174,7 @@ _tizen_screenmirror_handle_set_stretch(struct wl_client *client, struct wl_resou else ds_stretch = DS_TIZEN_SCREENMIRROR_STRETCH_FULLY; - wl_signal_emit_mutable(&mirror->events.set_stretch, &ds_stretch); + wl_signal_emit(&mirror->events.set_stretch, &ds_stretch); } static void @@ -190,7 +190,7 @@ _tizen_screenmirror_handle_queue(struct wl_client *client, struct wl_resource *r return; } - wl_signal_emit_mutable(&mirror->events.queue, &buffer); + wl_signal_emit(&mirror->events.queue, &buffer); } static void @@ -206,7 +206,7 @@ _tizen_screenmirror_handle_dequeue(struct wl_client *client, struct wl_resource return; } - wl_signal_emit_mutable(&mirror->events.dequeue, &buffer); + wl_signal_emit(&mirror->events.dequeue, &buffer); } static void @@ -215,7 +215,7 @@ _tizen_screenmirror_handle_start(struct wl_client *client, struct wl_resource *r struct ds_tizen_screenmirror *mirror; mirror = wl_resource_get_user_data(resource); - wl_signal_emit_mutable(&mirror->events.start, NULL); + wl_signal_emit(&mirror->events.start, NULL); } static void @@ -224,7 +224,7 @@ _tizen_screenmirror_handle_stop(struct wl_client *client, struct wl_resource *re struct ds_tizen_screenmirror *mirror; mirror = wl_resource_get_user_data(resource); - wl_signal_emit_mutable(&mirror->events.stop, NULL); + wl_signal_emit(&mirror->events.stop, NULL); } static void @@ -233,7 +233,7 @@ _tizen_screenmirror_handle_set_auto_rotation(struct wl_client *client, struct wl struct ds_tizen_screenmirror *mirror; mirror = wl_resource_get_user_data(resource); - wl_signal_emit_mutable(&mirror->events.set_auto_rotation, &set); + wl_signal_emit(&mirror->events.set_auto_rotation, &set); } static const struct tizen_screenmirror_interface _screenmirror_interface = { diff --git a/src/screenshooter/screenshooter.c b/src/screenshooter/screenshooter.c index 7b478e2..3c8e623 100644 --- a/src/screenshooter/screenshooter.c +++ b/src/screenshooter/screenshooter.c @@ -80,7 +80,7 @@ screenshooter_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("global destroy : tizen_screenshooter(%p)", shot); - wl_signal_emit_mutable(&shot->events.destroy, shot); + wl_signal_emit(&shot->events.destroy, shot); wl_list_remove(&shot->destroy.link); wl_global_destroy(shot->global); free(shot); @@ -106,7 +106,7 @@ _tizen_screenshooter_handle_get_screenmirror(struct wl_client *client, if (shot_client->mirror == NULL) wl_client_post_no_memory(client); else - wl_signal_emit_mutable(&shot->events.get_screenmirror, shot_client->mirror); + wl_signal_emit(&shot->events.get_screenmirror, shot_client->mirror); } static void @@ -158,7 +158,7 @@ _tizen_screenshooter_handle_shoot(struct wl_client *client, .auto_rotation = shot->auto_rotation, }; - wl_signal_emit_mutable(&shot->events.shoot, &event); + wl_signal_emit(&shot->events.shoot, &event); } static const struct tizen_screenshooter_interface _tizen_screenshooter_interface = diff --git a/src/tbm_server/tbm_server.c b/src/tbm_server/tbm_server.c index 3e3499b..77570fc 100644 --- a/src/tbm_server/tbm_server.c +++ b/src/tbm_server/tbm_server.c @@ -85,7 +85,7 @@ tbm_server_handle_display_destroy(struct wl_listener *listener, void *data) tbm = wl_container_of(listener, tbm, display_destroy); - wl_signal_emit_mutable(&tbm->events.destroy, tbm); + wl_signal_emit(&tbm->events.destroy, tbm); wayland_tbm_server_deinit(tbm->wl_tbm); free(tbm); diff --git a/src/text_input/text_input.c b/src/text_input/text_input.c index 8711ab6..709cadb 100644 --- a/src/text_input/text_input.c +++ b/src/text_input/text_input.c @@ -241,7 +241,7 @@ text_input_handle_activate(struct wl_client *client, if (seat_client) ds_event.seat = ds_seat_client_get_seat(seat_client); ds_event.surface = ds_surf; - wl_signal_emit_mutable(&text_input->events.activate, &ds_event); + wl_signal_emit(&text_input->events.activate, &ds_event); ds_tizen_text_input_send_enter(text_input, ds_surf); } @@ -259,7 +259,7 @@ text_input_handle_deactivate(struct wl_client *client, seat_client = ds_seat_client_from_resource(seat); if (seat_client) ds_event.seat = ds_seat_client_get_seat(seat_client); - wl_signal_emit_mutable(&text_input->events.deactivate, &ds_event); + wl_signal_emit(&text_input->events.deactivate, &ds_event); ds_tizen_text_input_send_leave(text_input); } @@ -284,7 +284,7 @@ text_input_handle_reset(struct wl_client *client, struct wl_resource *resource) struct ds_tizen_text_input *text_input = wl_resource_get_user_data(resource); ds_inf("text_input_handle_reset"); - wl_signal_emit_mutable(&text_input->events.reset, text_input); + wl_signal_emit(&text_input->events.reset, text_input); } static void @@ -299,7 +299,7 @@ text_input_handle_set_content_type(struct wl_client *client, ds_event.purpose = purpose; ds_event.text_input = text_input; - wl_signal_emit_mutable(&text_input->events.set_content_type, &ds_event); + wl_signal_emit(&text_input->events.set_content_type, &ds_event); } static void @@ -321,7 +321,7 @@ text_input_handle_set_preferred_language(struct wl_client *client, ds_event.language = language; ds_event.text_input = text_input; - wl_signal_emit_mutable(&text_input->events.set_preferred_language, &ds_event); + wl_signal_emit(&text_input->events.set_preferred_language, &ds_event); } static void @@ -335,7 +335,7 @@ text_input_handle_commit_state(struct wl_client *client, ds_event.serial = serial; ds_event.text_input = text_input; - wl_signal_emit_mutable(&text_input->events.commit_state, &ds_event); + wl_signal_emit(&text_input->events.commit_state, &ds_event); } static void @@ -351,7 +351,7 @@ text_input_handle_invoke_action(struct wl_client *client, ds_event.index = index; ds_event.text_input = text_input; - wl_signal_emit_mutable(&text_input->events.invoke_action, &ds_event); + wl_signal_emit(&text_input->events.invoke_action, &ds_event); } static void @@ -512,7 +512,7 @@ static const struct wl_text_input_interface text_input_impl = { static void text_input_destroy(struct ds_tizen_text_input *text_input) { - wl_signal_emit_mutable(&text_input->events.destroy, text_input); + wl_signal_emit(&text_input->events.destroy, text_input); wl_list_remove(&text_input->link); free(text_input); @@ -528,7 +528,7 @@ text_input_mgr_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Global destroy: text_input_mgr(%p)", text_input_mgr); - wl_signal_emit_mutable(&text_input_mgr->events.destroy, text_input_mgr); + wl_signal_emit(&text_input_mgr->events.destroy, text_input_mgr); wl_list_remove(&text_input_mgr->destroy.link); wl_list_for_each_safe(text_input, tmp, &text_input_mgr->text_inputs, link) { @@ -589,7 +589,7 @@ text_input_manager_handle_create_text_input(struct wl_client *wl_client, wl_signal_init(&text_input->events.destroy); wl_list_insert(&text_input_mgr->text_inputs, &text_input->link); - wl_signal_emit_mutable(&text_input_mgr->events.new_text_input, text_input); + wl_signal_emit(&text_input_mgr->events.new_text_input, text_input); } static const struct wl_text_input_manager_interface text_input_mgr_impl = diff --git a/src/video/video.c b/src/video/video.c index d2b8230..56f62f1 100644 --- a/src/video/video.c +++ b/src/video/video.c @@ -257,7 +257,7 @@ video_handle_display_destroy(struct wl_listener *listener, void *data) ds_inf("Destroy ds_tizen_video(%p)", video); - wl_signal_emit_mutable(&video->events.destroy, video); + wl_signal_emit(&video->events.destroy, video); wl_array_release(&video->formats); wl_array_release(&video->properties); @@ -296,7 +296,7 @@ video_handle_get_object(struct wl_client *client, struct wl_resource *resource, prop->name, prop->value); } - wl_signal_emit_mutable(&video->events.new_object, object); + wl_signal_emit(&video->events.new_object, object); } static void @@ -312,7 +312,7 @@ video_handle_get_viewport(struct wl_client *client, return; video = wl_resource_get_user_data(resource); - wl_signal_emit_mutable(&video->events.new_viewport, viewport); + wl_signal_emit(&video->events.new_viewport, viewport); } static void @@ -429,7 +429,7 @@ video_object_handle_set_attribute(struct wl_client *client, .name = name, .value = value, }; - wl_signal_emit_mutable(&object->events.request_set_property, &event); + wl_signal_emit(&object->events.request_set_property, &event); } static void @@ -442,7 +442,7 @@ video_object_handle_follow_topmost_visibility(struct wl_client *client, if (!object) return; - wl_signal_emit_mutable(&object->events.request_follow_topmost_visibility, object); + wl_signal_emit(&object->events.request_follow_topmost_visibility, object); } static void @@ -455,7 +455,7 @@ video_object_handle_unfollow_topmost_visibility(struct wl_client *client, if (!object) return; - wl_signal_emit_mutable(&object->events.request_unfollow_topmost_visibility, object); + wl_signal_emit(&object->events.request_unfollow_topmost_visibility, object); } static void @@ -468,7 +468,7 @@ video_object_handle_allowed_attribute(struct wl_client *client, if (!object) return; - wl_signal_emit_mutable(&object->events.request_attribute_allowed, object); + wl_signal_emit(&object->events.request_attribute_allowed, object); } static void @@ -481,7 +481,7 @@ video_object_handle_disallowed_attribute(struct wl_client *client, if (!object) return; - wl_signal_emit_mutable(&object->events.request_attribute_disallowed, object); + wl_signal_emit(&object->events.request_attribute_disallowed, object); } static const struct tizen_video_object_interface video_object_impl = { @@ -554,7 +554,7 @@ video_object_destroy(struct ds_tizen_video_object *object) { ds_inf("Destroy ds_tizen_video_object(%p)", object); - wl_signal_emit_mutable(&object->events.destroy, object); + wl_signal_emit(&object->events.destroy, object); wl_resource_set_user_data(object->resource, NULL); diff --git a/src/video/viewport.c b/src/video/viewport.c index 20b4ef0..321ee6a 100644 --- a/src/video/viewport.c +++ b/src/video/viewport.c @@ -177,7 +177,7 @@ viewport_handle_set_source(struct wl_client *client, } static void -viewport_handle_set_destination(struct wl_client *client, +viewport_handle_set_destination(struct wl_client *client, struct wl_resource *resource, int32_t x, int32_t y, uint32_t width, uint32_t height) { @@ -291,7 +291,7 @@ viewport_handle_query_parent_size(struct wl_client *client, viewport = wl_resource_get_user_data(resource); viewport->query_parent_size = true; - wl_signal_emit_mutable(&viewport->events.query_parent_size, viewport); + wl_signal_emit(&viewport->events.query_parent_size, viewport); } static void @@ -357,13 +357,13 @@ viewport_handle_surface_commit(struct wl_listener *listener, void *data) viewport->current = viewport->pending; viewport->pending.committed = DS_TIZEN_VIEWPORT_STATE_NONE; - wl_signal_emit_mutable(&viewport->events.commit, &viewport->current); + wl_signal_emit(&viewport->events.commit, &viewport->current); } static void viewport_destroy(struct ds_tizen_viewport *viewport) { - wl_signal_emit_mutable(&viewport->events.destroy, viewport); + wl_signal_emit(&viewport->events.destroy, viewport); ds_surface_viewport_release(viewport->surface_viewport); -- 2.7.4 From 066947816433c1a09a53af644512b8039769e277 Mon Sep 17 00:00:00 2001 From: Junseok Kim Date: Thu, 23 May 2024 09:39:56 +0900 Subject: [PATCH 04/16] screen: add wtz_screen_set_opaque_region request callback Change-Id: I299750529260c82a90a4d17e470397629a58baa4 --- include/libds-tizen/screen.h | 12 +++++++ src/meson.build | 1 + src/screen/screen.c | 75 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) diff --git a/include/libds-tizen/screen.h b/include/libds-tizen/screen.h index 11a39ab..092e6ac 100644 --- a/include/libds-tizen/screen.h +++ b/include/libds-tizen/screen.h @@ -2,6 +2,7 @@ #define LIBDS_TIZEN_SCREEN_H #include +#include #include #ifdef __cplusplus @@ -9,6 +10,7 @@ extern "C" { #endif struct ds_tizen_screen; +struct ds_tizen_screen_opaque_region; struct ds_tizen_splitscreen; struct ds_tizen_splitscreen_region; @@ -18,6 +20,12 @@ enum ds_tizen_screen_capability DS_TIZEN_SCREEN_CAPABILITY_SPLITSCREEN, }; +WL_EXPORT pixman_region32_t +ds_tizen_screen_opaque_region_get_opaque_region(struct ds_tizen_screen_opaque_region *opaque_region); + +WL_EXPORT uint32_t +ds_tizen_screen_opaque_region_get_serial(struct ds_tizen_screen_opaque_region *opaque_region); + WL_EXPORT struct ds_tizen_screen * ds_tizen_screen_create(struct wl_display *display); @@ -34,6 +42,10 @@ ds_tizen_screen_add_get_splitscreen_listener( struct ds_tizen_screen *screen, struct wl_listener *listener); +WL_EXPORT void +ds_tizen_screen_add_set_opaque_region_listener( + struct ds_tizen_screen *screen, + struct wl_listener *listener); WL_EXPORT void ds_tizen_splitscreen_add_destroy_listener( diff --git a/src/meson.build b/src/meson.build index 2e0d09d..de0b18e 100644 --- a/src/meson.build +++ b/src/meson.build @@ -135,6 +135,7 @@ lib_libds_tizen = shared_library('ds-tizen', libds_tizen_files, include_directories('./video'), include_directories('./blender'), include_directories('./blur'), + include_directories('./screen'), ], version: meson.project_version(), c_args: [ '-DKEYLAYOUT_DIR="@0@"'.format(keylayout_dir) ], diff --git a/src/screen/screen.c b/src/screen/screen.c index 6ba8442..4021ed4 100644 --- a/src/screen/screen.c +++ b/src/screen/screen.c @@ -1,15 +1,28 @@ #include #include #include +#include #include #include + #include +#include #include "util.h" #include "libds-tizen/screen.h" #define TIZEN_SCREEN_VERSION 1 +struct ds_tizen_screen_opaque_region +{ + struct ds_tizen_screen *screen; + + struct wl_list link; // ds_tizen_screen::opaque_region_list + + pixman_region32_t region; + uint32_t serial; +}; + struct ds_tizen_screen { struct wl_global *global; @@ -21,12 +34,14 @@ struct ds_tizen_screen struct wl_array capabilities; uint32_t splitscreen_capability; + struct wl_list opaque_region_list; // list of ds_tizen_screen_opaque_region bool splitscreen_enabled; struct { struct wl_signal destroy; struct wl_signal get_splitscreen; + struct wl_signal set_opaque_region; } events; }; @@ -187,6 +202,43 @@ screen_handle_get_splitscreen(struct wl_client *client, } static void +screen_handle_set_opaque_region(struct wl_client *client, + struct wl_resource *screen_client_resource, + struct wl_resource *region_resource, + uint32_t serial) +{ + struct ds_tizen_screen_opaque_region *opaque_region; + struct ds_tizen_screen_client *screen_client; + struct ds_tizen_screen *screen; + pixman_region32_t *region; + + screen_client = wl_resource_get_user_data(screen_client_resource); + + screen = screen_client->screen; + + opaque_region = calloc(1, sizeof *opaque_region); + if (!opaque_region) { + ds_err("calloc() failed."); + wl_resource_post_no_memory(screen_client_resource); + return; + } + opaque_region->screen = screen; + opaque_region->serial = serial; + pixman_region32_init(&opaque_region->region); + + if (region_resource) { + region = ds_region_from_resource(region_resource); + pixman_region32_copy(&opaque_region->region, region); + } + + wl_list_insert(&screen->opaque_region_list, &opaque_region->link); + + ds_inf("wtz_screen set opaque region, region:%p, serial:%u", opaque_region, serial); + + wl_signal_emit(&screen->events.set_opaque_region, opaque_region); +} + +static void screen_handle_destroy(struct wl_client *wl_client, struct wl_resource *resource) { @@ -197,6 +249,7 @@ static const struct wtz_screen_interface screen_impl = { .destroy = screen_handle_destroy, .get_splitscreen = screen_handle_get_splitscreen, + .set_opaque_region = screen_handle_set_opaque_region, }; static void @@ -266,6 +319,18 @@ screen_handle_display_destroy(struct wl_listener *listener, void *data) free(screen); } +WL_EXPORT pixman_region32_t +ds_tizen_screen_opaque_region_get_opaque_region(struct ds_tizen_screen_opaque_region *opaque_region) +{ + return opaque_region->region; +} + +WL_EXPORT uint32_t +ds_tizen_screen_opaque_region_get_serial(struct ds_tizen_screen_opaque_region *opaque_region) +{ + return opaque_region->serial; +} + WL_EXPORT struct ds_tizen_screen * ds_tizen_screen_create(struct wl_display *display) { @@ -286,6 +351,7 @@ ds_tizen_screen_create(struct wl_display *display) } wl_list_init(&screen->clients); + wl_list_init(&screen->opaque_region_list); screen->destroy.notify = screen_handle_display_destroy; wl_display_add_destroy_listener(display, &screen->destroy); @@ -294,6 +360,7 @@ ds_tizen_screen_create(struct wl_display *display) wl_signal_init(&screen->events.destroy); wl_signal_init(&screen->events.get_splitscreen); + wl_signal_init(&screen->events.set_opaque_region); ds_inf("Global created: tizen_screen(%p)", screen); @@ -347,6 +414,14 @@ ds_tizen_screen_add_get_splitscreen_listener( } WL_EXPORT void +ds_tizen_screen_add_set_opaque_region_listener( + struct ds_tizen_screen *screen, + struct wl_listener *listener) +{ + wl_signal_add(&screen->events.set_opaque_region, listener); +} + +WL_EXPORT void ds_tizen_splitscreen_add_destroy_listener( struct ds_tizen_splitscreen *splitscreen, struct wl_listener *listener) -- 2.7.4 From 7f0257792c365f168a5b51212cbc14e3583fce49 Mon Sep 17 00:00:00 2001 From: Junseok Kim Date: Tue, 4 Jun 2024 20:09:55 +0900 Subject: [PATCH 05/16] Revert "screen: add wtz_screen_set_opaque_region request callback" This reverts commit e511fc05afa2bf1098a133ab9eb7fd646faa58c4. Change-Id: Ifeb3b6ce3d43e3e2ebe00f7e343c9416c7fa6520 --- include/libds-tizen/screen.h | 12 ------- src/meson.build | 1 - src/screen/screen.c | 75 -------------------------------------------- 3 files changed, 88 deletions(-) diff --git a/include/libds-tizen/screen.h b/include/libds-tizen/screen.h index 092e6ac..11a39ab 100644 --- a/include/libds-tizen/screen.h +++ b/include/libds-tizen/screen.h @@ -2,7 +2,6 @@ #define LIBDS_TIZEN_SCREEN_H #include -#include #include #ifdef __cplusplus @@ -10,7 +9,6 @@ extern "C" { #endif struct ds_tizen_screen; -struct ds_tizen_screen_opaque_region; struct ds_tizen_splitscreen; struct ds_tizen_splitscreen_region; @@ -20,12 +18,6 @@ enum ds_tizen_screen_capability DS_TIZEN_SCREEN_CAPABILITY_SPLITSCREEN, }; -WL_EXPORT pixman_region32_t -ds_tizen_screen_opaque_region_get_opaque_region(struct ds_tizen_screen_opaque_region *opaque_region); - -WL_EXPORT uint32_t -ds_tizen_screen_opaque_region_get_serial(struct ds_tizen_screen_opaque_region *opaque_region); - WL_EXPORT struct ds_tizen_screen * ds_tizen_screen_create(struct wl_display *display); @@ -42,10 +34,6 @@ ds_tizen_screen_add_get_splitscreen_listener( struct ds_tizen_screen *screen, struct wl_listener *listener); -WL_EXPORT void -ds_tizen_screen_add_set_opaque_region_listener( - struct ds_tizen_screen *screen, - struct wl_listener *listener); WL_EXPORT void ds_tizen_splitscreen_add_destroy_listener( diff --git a/src/meson.build b/src/meson.build index de0b18e..2e0d09d 100644 --- a/src/meson.build +++ b/src/meson.build @@ -135,7 +135,6 @@ lib_libds_tizen = shared_library('ds-tizen', libds_tizen_files, include_directories('./video'), include_directories('./blender'), include_directories('./blur'), - include_directories('./screen'), ], version: meson.project_version(), c_args: [ '-DKEYLAYOUT_DIR="@0@"'.format(keylayout_dir) ], diff --git a/src/screen/screen.c b/src/screen/screen.c index 4021ed4..6ba8442 100644 --- a/src/screen/screen.c +++ b/src/screen/screen.c @@ -1,28 +1,15 @@ #include #include #include -#include #include #include - #include -#include #include "util.h" #include "libds-tizen/screen.h" #define TIZEN_SCREEN_VERSION 1 -struct ds_tizen_screen_opaque_region -{ - struct ds_tizen_screen *screen; - - struct wl_list link; // ds_tizen_screen::opaque_region_list - - pixman_region32_t region; - uint32_t serial; -}; - struct ds_tizen_screen { struct wl_global *global; @@ -34,14 +21,12 @@ struct ds_tizen_screen struct wl_array capabilities; uint32_t splitscreen_capability; - struct wl_list opaque_region_list; // list of ds_tizen_screen_opaque_region bool splitscreen_enabled; struct { struct wl_signal destroy; struct wl_signal get_splitscreen; - struct wl_signal set_opaque_region; } events; }; @@ -202,43 +187,6 @@ screen_handle_get_splitscreen(struct wl_client *client, } static void -screen_handle_set_opaque_region(struct wl_client *client, - struct wl_resource *screen_client_resource, - struct wl_resource *region_resource, - uint32_t serial) -{ - struct ds_tizen_screen_opaque_region *opaque_region; - struct ds_tizen_screen_client *screen_client; - struct ds_tizen_screen *screen; - pixman_region32_t *region; - - screen_client = wl_resource_get_user_data(screen_client_resource); - - screen = screen_client->screen; - - opaque_region = calloc(1, sizeof *opaque_region); - if (!opaque_region) { - ds_err("calloc() failed."); - wl_resource_post_no_memory(screen_client_resource); - return; - } - opaque_region->screen = screen; - opaque_region->serial = serial; - pixman_region32_init(&opaque_region->region); - - if (region_resource) { - region = ds_region_from_resource(region_resource); - pixman_region32_copy(&opaque_region->region, region); - } - - wl_list_insert(&screen->opaque_region_list, &opaque_region->link); - - ds_inf("wtz_screen set opaque region, region:%p, serial:%u", opaque_region, serial); - - wl_signal_emit(&screen->events.set_opaque_region, opaque_region); -} - -static void screen_handle_destroy(struct wl_client *wl_client, struct wl_resource *resource) { @@ -249,7 +197,6 @@ static const struct wtz_screen_interface screen_impl = { .destroy = screen_handle_destroy, .get_splitscreen = screen_handle_get_splitscreen, - .set_opaque_region = screen_handle_set_opaque_region, }; static void @@ -319,18 +266,6 @@ screen_handle_display_destroy(struct wl_listener *listener, void *data) free(screen); } -WL_EXPORT pixman_region32_t -ds_tizen_screen_opaque_region_get_opaque_region(struct ds_tizen_screen_opaque_region *opaque_region) -{ - return opaque_region->region; -} - -WL_EXPORT uint32_t -ds_tizen_screen_opaque_region_get_serial(struct ds_tizen_screen_opaque_region *opaque_region) -{ - return opaque_region->serial; -} - WL_EXPORT struct ds_tizen_screen * ds_tizen_screen_create(struct wl_display *display) { @@ -351,7 +286,6 @@ ds_tizen_screen_create(struct wl_display *display) } wl_list_init(&screen->clients); - wl_list_init(&screen->opaque_region_list); screen->destroy.notify = screen_handle_display_destroy; wl_display_add_destroy_listener(display, &screen->destroy); @@ -360,7 +294,6 @@ ds_tizen_screen_create(struct wl_display *display) wl_signal_init(&screen->events.destroy); wl_signal_init(&screen->events.get_splitscreen); - wl_signal_init(&screen->events.set_opaque_region); ds_inf("Global created: tizen_screen(%p)", screen); @@ -414,14 +347,6 @@ ds_tizen_screen_add_get_splitscreen_listener( } WL_EXPORT void -ds_tizen_screen_add_set_opaque_region_listener( - struct ds_tizen_screen *screen, - struct wl_listener *listener) -{ - wl_signal_add(&screen->events.set_opaque_region, listener); -} - -WL_EXPORT void ds_tizen_splitscreen_add_destroy_listener( struct ds_tizen_splitscreen *splitscreen, struct wl_listener *listener) -- 2.7.4 From 0aadcf3312caf8629f2c3c7ed1bd11f565dd8f72 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 9 Jul 2024 17:36:35 +0900 Subject: [PATCH 06/16] blur: Support wtz_blur_rectangle protocol Support create_rectangle request and Remove set_region request Change-Id: I673d777e55fdd3a270b97c87ca1ada757ad6c96b --- include/libds-tizen/blur.h | 22 ++++- src/blur/blur.c | 194 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 214 insertions(+), 2 deletions(-) diff --git a/include/libds-tizen/blur.h b/include/libds-tizen/blur.h index 84fe80f..8112908 100644 --- a/include/libds-tizen/blur.h +++ b/include/libds-tizen/blur.h @@ -11,18 +11,20 @@ extern "C" { struct ds_tizen_blur_manager; struct ds_tizen_blur; +struct ds_tizen_blur_rectangle; enum ds_tizen_blur_state_field { DS_TIZEN_BLUR_STATE_NONE = 0, - DS_TIZEN_BLUR_STATE_REGION = (1 << 0), + DS_TIZEN_BLUR_STATE_REGION = (1 << 0),//temporary DS_TIZEN_BLUR_STATE_RADIUS = (1 << 1), + DS_TIZEN_BLUR_STATE_RECTANGLE = (1 << 2), }; struct ds_tizen_blur_state { enum ds_tizen_blur_state_field committed; - pixman_region32_t region; + pixman_region32_t region; //temporary uint32_t radius; }; @@ -55,6 +57,22 @@ ds_tizen_blur_get_surface(struct ds_tizen_blur *blur); struct ds_tizen_blur_state * ds_tizen_blur_get_state(struct ds_tizen_blur *blur); +void +ds_tizen_blur_add_new_rectangle_listener(struct ds_tizen_blur *blur, + struct wl_listener *listener); + +void +ds_tizen_blur_rectangle_add_destroy_listener(struct ds_tizen_blur_rectangle *blur_rectangle, + struct wl_listener *listener); + +void +ds_tizen_blur_rectangle_get_geometry(struct ds_tizen_blur_rectangle *blur_rectangle, + int *x, int *y, int *width, int *height); + +void +ds_tizen_blur_rectangle_get_corner_radius(struct ds_tizen_blur_rectangle *blur_rectangle, + int *rx, int *ry); + #ifdef __cplusplus } #endif diff --git a/src/blur/blur.c b/src/blur/blur.c index e15840f..fd3768b 100644 --- a/src/blur/blur.c +++ b/src/blur/blur.c @@ -48,6 +48,8 @@ struct ds_tizen_blur struct wl_resource *resource; struct wl_client *wl_client; + struct wl_list rectangles; + struct ds_tizen_blur_state current, pending; struct ds_surface *surface; @@ -60,6 +62,34 @@ struct ds_tizen_blur struct { struct wl_signal commit; struct wl_signal destroy; + struct wl_signal new_rectangle; + } events; +}; + +struct ds_tizen_blur_rectangle +{ + struct wl_list link; //rectangles + + struct wl_resource *resource; + struct wl_client *wl_client; + + struct ds_tizen_blur *blur; + + bool pending; + + int x; + int y; + int width; + int height; + int rx; + int ry; + + struct { + struct wl_listener blur_destroy; + } listener; + + struct { + struct wl_signal destroy; } events; }; @@ -141,6 +171,38 @@ ds_tizen_blur_get_state(struct ds_tizen_blur *blur) return &blur->current; } +WL_EXPORT void +ds_tizen_blur_add_new_rectangle_listener(struct ds_tizen_blur *blur, + struct wl_listener *listener) +{ + wl_signal_add(&blur->events.new_rectangle, listener); +} + +WL_EXPORT void +ds_tizen_blur_rectangle_add_destroy_listener(struct ds_tizen_blur_rectangle *blur_rectangle, + struct wl_listener *listener) +{ + wl_signal_add(&blur_rectangle->events.destroy, listener); +} + +WL_EXPORT void +ds_tizen_blur_rectangle_get_geometry(struct ds_tizen_blur_rectangle *blur_rectangle, + int *x, int *y, int *width, int *height) +{ + if (x) *x = blur_rectangle->x; + if (y) *y = blur_rectangle->y; + if (width) *width = blur_rectangle->width; + if (height) *height = blur_rectangle->height; +} + +WL_EXPORT void +ds_tizen_blur_rectangle_get_corner_radius(struct ds_tizen_blur_rectangle *blur_rectangle, + int *rx, int *ry) +{ + if (rx) *rx = blur_rectangle->rx; + if (ry) *ry = blur_rectangle->ry; +} + static void blur_manager_handle_display_destroy(struct wl_listener *listener, void *data) { @@ -194,10 +256,129 @@ blur_handle_set_radius(struct wl_client *client, struct wl_resource *resource, blur->pending.committed |= DS_TIZEN_BLUR_STATE_RADIUS; } +static void +blur_rectangle_handle_destroy(struct wl_client *client, struct wl_resource *resource) +{ + wl_resource_destroy(resource); +} + +static const struct wtz_blur_rectangle_interface blur_rectangle_impl = { + blur_rectangle_handle_destroy, +}; + +static void +blur_rectangle_destroy(struct ds_tizen_blur_rectangle *blur_rectangle) +{ + ds_inf("blur_rectangle_destroy (blur_rectangle:%p)", blur_rectangle); + + wl_signal_emit(&blur_rectangle->events.destroy, blur_rectangle); + + if (blur_rectangle->listener.blur_destroy.notify) + wl_list_remove(&blur_rectangle->listener.blur_destroy.link); + + if (blur_rectangle->blur) + wl_list_remove(&blur_rectangle->link); + + free(blur_rectangle); +} + +static void +blur_rectangle_handle_resource_destroy(struct wl_resource *resource) +{ + struct ds_tizen_blur_rectangle *blur_rectangle; + + blur_rectangle = wl_resource_get_user_data(resource); + + ds_inf("blur_rectangle_handle_resource_destroy (blur_rectangle:%p)", blur_rectangle); + + if (blur_rectangle->blur) { + blur_rectangle->resource = NULL; + blur_rectangle->pending = true; + blur_rectangle->blur->pending.committed |= DS_TIZEN_BLUR_STATE_RECTANGLE; + return; + } + + blur_rectangle_destroy(blur_rectangle); +} + +static void +blur_rectangle_handle_blur_destroy(struct wl_listener *listener, void *data) +{ + struct ds_tizen_blur_rectangle *blur_rectangle; + + blur_rectangle = wl_container_of(listener, blur_rectangle, listener.blur_destroy); + + blur_rectangle->listener.blur_destroy.notify = NULL; + wl_list_remove(&blur_rectangle->listener.blur_destroy.link); + + blur_rectangle->blur = NULL; + wl_list_remove(&blur_rectangle->link); + + if (!blur_rectangle->resource) + blur_rectangle_destroy(blur_rectangle); +} + +static void +blur_handle_create_rectangle(struct wl_client *wl_client, struct wl_resource *resource, + uint32_t id, int32_t x, int32_t y, + int32_t width, int32_t height, int32_t rx, int32_t ry) +{ + struct ds_tizen_blur *blur; + struct ds_tizen_blur_rectangle *blur_rectangle; + + ds_inf("tizen_blur: create_rectangle"); + + blur = wl_resource_get_user_data(resource); + if (!blur) { + wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_OBJECT, + "invalid blur resource:%u", + (unsigned int)wl_resource_get_id(resource)); + return; + } + + blur_rectangle = calloc(1, sizeof *blur_rectangle); + if (blur_rectangle == NULL) { + ds_err("calloc() failed. tizen_blur_rectangle"); + wl_client_post_no_memory(wl_client); + return; + } + + blur_rectangle->resource = wl_resource_create(wl_client, &wtz_blur_rectangle_interface, + wl_resource_get_version(resource), id); + if (blur_rectangle->resource == NULL) { + ds_err("tizen_blur_rectangle : wl_resource_create() failed."); + free(blur_rectangle); + wl_client_post_no_memory(wl_client); + return; + } + + wl_resource_set_implementation(blur_rectangle->resource, &blur_rectangle_impl, blur_rectangle, + blur_rectangle_handle_resource_destroy); + + blur_rectangle->listener.blur_destroy.notify = blur_rectangle_handle_blur_destroy; + ds_tizen_blur_add_destroy_listener(blur, &blur_rectangle->listener.blur_destroy); + + blur_rectangle->x = x; + blur_rectangle->y = y; + blur_rectangle->width = width; + blur_rectangle->height = height; + blur_rectangle->rx = rx; + blur_rectangle->ry = ry; + + blur_rectangle->blur = blur; + wl_list_insert(&blur->rectangles, &blur_rectangle->link); + + wl_signal_init(&blur_rectangle->events.destroy); + + blur_rectangle->pending = true; + blur->pending.committed |= DS_TIZEN_BLUR_STATE_RECTANGLE; +} + static const struct wtz_blur_interface blur_impl = { blur_handle_destroy, blur_handle_set_region, blur_handle_set_radius, + blur_handle_create_rectangle, }; static void @@ -239,6 +420,7 @@ static void blur_handle_surface_commit(struct wl_listener *listener, void *data) { struct ds_tizen_blur *blur; + struct ds_tizen_blur_rectangle *blur_rectangle, *tmp; blur = wl_container_of(listener, blur, listener.surface_commit); @@ -247,6 +429,15 @@ blur_handle_surface_commit(struct wl_listener *listener, void *data) return; } + wl_list_for_each_safe(blur_rectangle, tmp, &blur->rectangles, link) { + if (!blur_rectangle->pending) continue; + + if (blur_rectangle->resource) + wl_signal_emit(&blur->events.new_rectangle, blur_rectangle); + else + blur_rectangle_destroy(blur_rectangle); + } + if (blur->pending.committed == DS_TIZEN_BLUR_STATE_NONE) { blur->current.committed = DS_TIZEN_BLUR_STATE_NONE; return; @@ -359,8 +550,11 @@ blur_manager_handle_get_blur(struct wl_client *wl_client, blur->surface = surface; + wl_list_init(&blur->rectangles); + wl_signal_init(&blur->events.destroy); wl_signal_init(&blur->events.commit); + wl_signal_init(&blur->events.new_rectangle); wl_signal_emit(&client->blur_manager->events.new_blur, blur); } -- 2.7.4 From 1ca3353a7f4a9db03a3607d32cfdbb22579fd872 Mon Sep 17 00:00:00 2001 From: TaeHyeon Jeong Date: Wed, 24 Jul 2024 15:57:06 +0900 Subject: [PATCH 07/16] dpms: Add wl_signal_emit in _tizen_dpms_client_cb_destroy() Change-Id: I5f1b95b4bd645a812a53b0f012bc215928bc956a --- src/dpms/dpms.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dpms/dpms.c b/src/dpms/dpms.c index 5bedcee..47d4bdb 100644 --- a/src/dpms/dpms.c +++ b/src/dpms/dpms.c @@ -241,6 +241,7 @@ _tizen_dpms_client_cb_destroy(struct wl_resource *resource) dpms->binded = false; dpms->res = NULL; } + wl_signal_emit(&dpms->events.destroy, dpms); } static void -- 2.7.4 From f80c7112a34a6d55681299159f442ebdb2bcbb33 Mon Sep 17 00:00:00 2001 From: TaeHyeon Jeong Date: Thu, 25 Jul 2024 10:57:32 +0900 Subject: [PATCH 08/16] dpms: Move wl_signal_emit for consistency Change-Id: Id1d7dfeabb9f636c79d47bbca906b25be445d66a --- src/dpms/dpms.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/dpms/dpms.c b/src/dpms/dpms.c index 47d4bdb..518f2be 100644 --- a/src/dpms/dpms.c +++ b/src/dpms/dpms.c @@ -178,8 +178,14 @@ static void _tizen_dpms_manager_handle_destroy(struct wl_client *client, struct wl_resource *resource) { + struct ds_tizen_dpms *dpms; + + dpms = wl_resource_get_user_data(resource); + ds_inf("tizen_dpms_manager cb_destroy (res:%p)", resource); wl_resource_destroy(resource); + + wl_signal_emit(&dpms->events.destroy, dpms); } static void @@ -241,7 +247,6 @@ _tizen_dpms_client_cb_destroy(struct wl_resource *resource) dpms->binded = false; dpms->res = NULL; } - wl_signal_emit(&dpms->events.destroy, dpms); } static void -- 2.7.4 From 3ad69f63a797eab56e0ce1ea5ad099936af60c5d Mon Sep 17 00:00:00 2001 From: TaeHyeon Jeong Date: Tue, 30 Jul 2024 17:43:22 +0900 Subject: [PATCH 09/16] renderer: Fix dangling pointer Change-Id: I9e11e2a45170130d1b941d43b4011d1e5083caa9 --- src/renderer/renderer.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/renderer/renderer.c b/src/renderer/renderer.c index f1e0e84..b87e65e 100644 --- a/src/renderer/renderer.c +++ b/src/renderer/renderer.c @@ -286,8 +286,7 @@ _tizen_renderer_client_handle_destroy(struct wl_resource *resource) wl_list_for_each_safe(info, tmp, &client->infos, link) { wl_signal_emit(&client->events.destroy, info); - wl_list_remove(&info->link); - free(info); + wl_resource_destroy(info->resource); } wl_list_remove(&client->link); -- 2.7.4 From 21d0340ac493702b349111c59cc8021be8f073cf Mon Sep 17 00:00:00 2001 From: TaeHyeon Jeong Date: Wed, 31 Jul 2024 18:43:03 +0900 Subject: [PATCH 10/16] hwc: Add commit_feedback destroy when client destroyed Change-Id: I4959d3ae0dd604ba4c6084427e98eeddad8a8f53 --- src/hwc/hwc.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/hwc/hwc.c b/src/hwc/hwc.c index 7346911..3a15a2e 100644 --- a/src/hwc/hwc.c +++ b/src/hwc/hwc.c @@ -31,6 +31,8 @@ struct ds_tizen_hwc_client struct wl_resource *resource; struct wl_client *wl_client; + struct wl_list feedbacks; + struct { struct wl_signal destroy; } events; @@ -52,6 +54,8 @@ struct ds_tizen_hwc_commit_feedback struct { struct wl_signal destroy; } events; + + struct wl_list link; }; static void @@ -86,6 +90,8 @@ _hwc_commit_feedback_cb_resource_destroy(struct wl_resource *commit_feedback_res wl_signal_emit(&commit_feedback->events.destroy, commit_feedback); + wl_list_remove(&commit_feedback->link); + free(commit_feedback); } @@ -132,6 +138,8 @@ hwc_handle_create_commit_feedback(struct wl_client *client, wl_signal_init(&commit_feedback->events.destroy); wl_signal_emit(&hwc_client->hwc->events.new_commit_feedback, commit_feedback); + + wl_list_insert(&hwc_client->feedbacks, &commit_feedback->link); } static void @@ -151,11 +159,15 @@ static void _tizen_hwc_client_handle_resource_destroy(struct wl_resource *resource) { struct ds_tizen_hwc_client *client; + struct ds_tizen_hwc_commit_feedback *commit_feedback, *tmp; client = wl_resource_get_user_data(resource); ds_inf("_tizen_hwc_client_handle_destroy (client:%p)", client); + wl_list_for_each_safe(commit_feedback, tmp, &client->feedbacks, link) + wl_resource_destroy(commit_feedback->resource); + wl_list_remove(&client->link); free(client); } @@ -191,6 +203,8 @@ hwc_bind(struct wl_client *wl_client, void *data, uint32_t version, wl_resource_set_implementation(hwc_client->resource, &hwc_impl, hwc_client, _tizen_hwc_client_handle_resource_destroy); + wl_list_init(&hwc_client->feedbacks); + wl_signal_init(&hwc_client->events.destroy); wl_list_insert(&hwc->clients, &hwc_client->link); -- 2.7.4 From 4890f9e609e4709c6d0a2ad370ab0c73371f53b5 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Mon, 12 Aug 2024 11:32:37 +0900 Subject: [PATCH 11/16] tbm_server: Inlucde tbm_bufmgr_internal header Change-Id: I9052096372839f039fdf1403aa20d1ddae351cd2 --- src/tbm_server/tbm_server.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tbm_server/tbm_server.c b/src/tbm_server/tbm_server.c index 77570fc..24ccbb5 100644 --- a/src/tbm_server/tbm_server.c +++ b/src/tbm_server/tbm_server.c @@ -3,6 +3,7 @@ #include #include +#include #include #include "shared/pixel_format.h" -- 2.7.4 From a63a38293741566d3ed80687aee31443aefe14f9 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Wed, 14 Aug 2024 12:25:54 +0900 Subject: [PATCH 12/16] blur: Fix missing reset pending flag of blur_rectangle Change-Id: I22a2557cde98951337747765365cabd5efe26326 --- src/blur/blur.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/blur/blur.c b/src/blur/blur.c index fd3768b..4cd3886 100644 --- a/src/blur/blur.c +++ b/src/blur/blur.c @@ -432,6 +432,8 @@ blur_handle_surface_commit(struct wl_listener *listener, void *data) wl_list_for_each_safe(blur_rectangle, tmp, &blur->rectangles, link) { if (!blur_rectangle->pending) continue; + blur_rectangle->pending = false; + if (blur_rectangle->resource) wl_signal_emit(&blur->events.new_rectangle, blur_rectangle); else -- 2.7.4 From ae90ddaf4f1d68f3fc182d251d5c49e74cfd6b32 Mon Sep 17 00:00:00 2001 From: TaeHyeon Jeong Date: Wed, 7 Aug 2024 17:26:08 +0900 Subject: [PATCH 13/16] memory_flusher: Add flusher version check Change-Id: If33ac0dc8f0d6ec9edf9b6acdeb50a3e5a6494c1 --- include/libds-tizen/memory_flusher.h | 4 ++++ src/memory_flusher/memory_flusher.c | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/libds-tizen/memory_flusher.h b/include/libds-tizen/memory_flusher.h index 0b72425..7a9ec2a 100644 --- a/include/libds-tizen/memory_flusher.h +++ b/include/libds-tizen/memory_flusher.h @@ -42,6 +42,10 @@ void ds_tizen_memory_flusher_info_send_free_flush( struct ds_tizen_memory_flusher_info *info); +bool +ds_tizen_memory_flusher_info_supported_free_flush( + struct ds_tizen_memory_flusher_info *info); + #ifdef __cplusplus } #endif diff --git a/src/memory_flusher/memory_flusher.c b/src/memory_flusher/memory_flusher.c index 499e05d..5222687 100644 --- a/src/memory_flusher/memory_flusher.c +++ b/src/memory_flusher/memory_flusher.c @@ -139,9 +139,22 @@ WL_EXPORT void ds_tizen_memory_flusher_info_send_free_flush( struct ds_tizen_memory_flusher_info *info) { + if (ds_tizen_memory_flusher_info_supported_free_flush(info)) + return; + tizen_surface_shm_flusher_send_free_flush(info->resource); } +WL_EXPORT bool +ds_tizen_memory_flusher_info_supported_free_flush( + struct ds_tizen_memory_flusher_info *info) +{ + if (wl_resource_get_version(info->resource) < TIZEN_SURFACE_SHM_FLUSHER_FREE_FLUSH_SINCE_VERSION) + return false; + + return true; +} + static struct ds_tizen_memory_flusher_info * tizen_memory_flusher_client_find_info(struct ds_tizen_memory_flusher_client *client, struct ds_surface *surface) -- 2.7.4 From 188548e348f8f929e3b2d6d9d23efb3327efc5c7 Mon Sep 17 00:00:00 2001 From: TaeHyeon Jeong Date: Thu, 8 Aug 2024 14:36:46 +0900 Subject: [PATCH 14/16] memory_flusher: Remove useless version check Change-Id: I3ba16fa8dcba630eaa4beaa73f9be0c76c0e5aea --- src/memory_flusher/memory_flusher.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/memory_flusher/memory_flusher.c b/src/memory_flusher/memory_flusher.c index 5222687..378794f 100644 --- a/src/memory_flusher/memory_flusher.c +++ b/src/memory_flusher/memory_flusher.c @@ -139,9 +139,6 @@ WL_EXPORT void ds_tizen_memory_flusher_info_send_free_flush( struct ds_tizen_memory_flusher_info *info) { - if (ds_tizen_memory_flusher_info_supported_free_flush(info)) - return; - tizen_surface_shm_flusher_send_free_flush(info->resource); } -- 2.7.4 From c124bd86fe332c84e3073f04f07fc896b1755669 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Thu, 22 Aug 2024 11:52:04 +0900 Subject: [PATCH 15/16] blur: Support wtz_blur_behind protocol Change-Id: I8d05b48842718f28af03c7d5191fa095eab4901e --- include/libds-tizen/blur.h | 39 ++++++-- src/blur/blur.c | 238 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 267 insertions(+), 10 deletions(-) diff --git a/include/libds-tizen/blur.h b/include/libds-tizen/blur.h index 8112908..e66dcbd 100644 --- a/include/libds-tizen/blur.h +++ b/include/libds-tizen/blur.h @@ -12,6 +12,7 @@ extern "C" { struct ds_tizen_blur_manager; struct ds_tizen_blur; struct ds_tizen_blur_rectangle; +struct ds_tizen_blur_behind; enum ds_tizen_blur_state_field { DS_TIZEN_BLUR_STATE_NONE = 0, @@ -28,19 +29,27 @@ struct ds_tizen_blur_state uint32_t radius; }; +enum ds_tizen_blur_behind_state_field { + DS_TIZEN_BLUR_BEHIND_STATE_NONE = 0, + DS_TIZEN_BLUR_BEHIND_STATE_RADIUS = (1 << 0), +}; + +struct ds_tizen_blur_behind_state +{ + enum ds_tizen_blur_behind_state_field committed; + + uint32_t radius; +}; + struct ds_tizen_blur_manager * ds_tizen_blur_manager_create(struct wl_display *display); void -ds_tizen_blur_manager_add_destroy_listener(struct ds_tizen_blur_manager *blur, +ds_tizen_blur_manager_add_destroy_listener(struct ds_tizen_blur_manager *blur_manager, struct wl_listener *listener); void -ds_tizen_blur_manager_add_destroy_listener(struct ds_tizen_blur_manager *blur, - struct wl_listener *listener); - -void -ds_tizen_blur_manager_add_new_blur_listener(struct ds_tizen_blur_manager *blur, +ds_tizen_blur_manager_add_new_blur_listener(struct ds_tizen_blur_manager *blur_manager, struct wl_listener *listener); void @@ -73,6 +82,24 @@ void ds_tizen_blur_rectangle_get_corner_radius(struct ds_tizen_blur_rectangle *blur_rectangle, int *rx, int *ry); +void +ds_tizen_blur_manager_add_new_blur_behind_listener(struct ds_tizen_blur_manager *blur, + struct wl_listener *listener); + +void +ds_tizen_blur_behind_add_destroy_listener(struct ds_tizen_blur_behind *blur_behind, + struct wl_listener *listener); + +void +ds_tizen_blur_behind_add_commit_listener(struct ds_tizen_blur_behind *blur_behind, + struct wl_listener *listener); + +struct ds_surface * +ds_tizen_blur_behind_get_surface(struct ds_tizen_blur_behind *blur_behind); + +struct ds_tizen_blur_behind_state * +ds_tizen_blur_behind_get_state(struct ds_tizen_blur_behind *blur_behind); + #ifdef __cplusplus } #endif diff --git a/src/blur/blur.c b/src/blur/blur.c index 4cd3886..36e1d4c 100644 --- a/src/blur/blur.c +++ b/src/blur/blur.c @@ -26,6 +26,7 @@ struct ds_tizen_blur_manager struct { struct wl_signal destroy; struct wl_signal new_blur; + struct wl_signal new_blur_behind; } events; }; @@ -93,6 +94,26 @@ struct ds_tizen_blur_rectangle } events; }; +struct ds_tizen_blur_behind +{ + struct wl_resource *resource; + struct wl_client *wl_client; + + struct ds_tizen_blur_behind_state current, pending; + + struct ds_surface *surface; + struct ds_addon surface_addon; + + struct { + struct wl_listener surface_commit; + } listener; + + struct { + struct wl_signal commit; + struct wl_signal destroy; + } events; +}; + static void blur_manager_handle_display_destroy(struct wl_listener *listener, void *data); static void @@ -125,6 +146,7 @@ ds_tizen_blur_manager_create(struct wl_display *display) wl_signal_init(&blur_manager->events.destroy); wl_signal_init(&blur_manager->events.new_blur); + wl_signal_init(&blur_manager->events.new_blur_behind); ds_inf("Global created: tizen_blur_manager(%p)", blur_manager); @@ -132,17 +154,17 @@ ds_tizen_blur_manager_create(struct wl_display *display) } WL_EXPORT void -ds_tizen_blur_manager_add_destroy_listener(struct ds_tizen_blur_manager *blur, +ds_tizen_blur_manager_add_destroy_listener(struct ds_tizen_blur_manager *blur_manager, struct wl_listener *listener) { - wl_signal_add(&blur->events.destroy, listener); + wl_signal_add(&blur_manager->events.destroy, listener); } WL_EXPORT void -ds_tizen_blur_manager_add_new_blur_listener(struct ds_tizen_blur_manager *blur, +ds_tizen_blur_manager_add_new_blur_listener(struct ds_tizen_blur_manager *blur_manager, struct wl_listener *listener) { - wl_signal_add(&blur->events.new_blur, listener); + wl_signal_add(&blur_manager->events.new_blur, listener); } WL_EXPORT void @@ -203,6 +225,39 @@ ds_tizen_blur_rectangle_get_corner_radius(struct ds_tizen_blur_rectangle *blur_r if (ry) *ry = blur_rectangle->ry; } +WL_EXPORT void +ds_tizen_blur_manager_add_new_blur_behind_listener(struct ds_tizen_blur_manager *blur_manager, + struct wl_listener *listener) +{ + wl_signal_add(&blur_manager->events.new_blur_behind, listener); +} + +WL_EXPORT void +ds_tizen_blur_behind_add_destroy_listener(struct ds_tizen_blur_behind *blur_behind, + struct wl_listener *listener) +{ + wl_signal_add(&blur_behind->events.destroy, listener); +} + +WL_EXPORT void +ds_tizen_blur_behind_add_commit_listener(struct ds_tizen_blur_behind *blur_behind, + struct wl_listener *listener) +{ + wl_signal_add(&blur_behind->events.commit, listener); +} + +WL_EXPORT struct ds_surface * +ds_tizen_blur_behind_get_surface(struct ds_tizen_blur_behind *blur_behind) +{ + return blur_behind->surface; +} + +WL_EXPORT struct ds_tizen_blur_behind_state * +ds_tizen_blur_behind_get_state(struct ds_tizen_blur_behind *blur_behind) +{ + return &blur_behind->current; +} + static void blur_manager_handle_display_destroy(struct wl_listener *listener, void *data) { @@ -562,6 +617,180 @@ blur_manager_handle_get_blur(struct wl_client *wl_client, } static void +blur_behind_destroy(struct ds_tizen_blur_behind *blur_behind) +{ + ds_inf("blur_behind_destroy (blur_behind:%p)", blur_behind); + + wl_signal_emit(&blur_behind->events.destroy, blur_behind); + + if (blur_behind->surface) { + wl_list_remove(&blur_behind->listener.surface_commit.link); + ds_addon_finish(&blur_behind->surface_addon); + } + + free(blur_behind); +} + +static void +blur_behind_handle_resource_destroy(struct wl_resource *resource) +{ + struct ds_tizen_blur_behind *blur_behind; + + blur_behind = wl_resource_get_user_data(resource); + + ds_inf("blur_behind_handle_resource_destroy (blur_behind:%p)", blur_behind); + + if (blur_behind->surface) { + blur_behind->resource = NULL; + return; + } + + blur_behind_destroy(blur_behind); +} + +static void +blur_behind_handle_surface_commit(struct wl_listener *listener, void *data) +{ + struct ds_tizen_blur_behind *blur_behind; + + blur_behind = wl_container_of(listener, blur_behind, listener.surface_commit); + + if (!blur_behind->resource) { + blur_behind_destroy(blur_behind); + return; + } + + if (blur_behind->pending.committed == DS_TIZEN_BLUR_BEHIND_STATE_NONE) { + blur_behind->current.committed = DS_TIZEN_BLUR_BEHIND_STATE_NONE; + return; + } + + if (blur_behind->pending.committed & DS_TIZEN_BLUR_BEHIND_STATE_RADIUS) + blur_behind->current.radius = blur_behind->pending.radius; + + blur_behind->current.committed = blur_behind->pending.committed; + blur_behind->pending.committed = DS_TIZEN_BLUR_BEHIND_STATE_NONE; + + wl_signal_emit(&blur_behind->events.commit, blur_behind); +} + +static void +blur_behind_handle_surface_destroy(struct ds_addon *addon) +{ + struct ds_tizen_blur_behind *blur_behind; + + blur_behind = wl_container_of(addon, blur_behind, surface_addon); + + wl_list_remove(&blur_behind->listener.surface_commit.link); + + ds_addon_finish(&blur_behind->surface_addon); + blur_behind->surface = NULL; + + if (!blur_behind->resource) + blur_behind_destroy(blur_behind); +} + +static struct ds_addon_interface blur_behind_addon_impl = { + .name = "ds_tizen_blur_behind", + .destroy = blur_behind_handle_surface_destroy, +}; + +static struct ds_tizen_blur_behind * +blur_behind_client_get_from_surface(struct ds_tizen_blur_client *client, struct ds_surface *surface) +{ + struct ds_addon *addon; + struct ds_tizen_blur_behind *blur_behind; + + addon = ds_addon_find(&surface->addons, client, &blur_behind_addon_impl); + if (!addon) return NULL; + + return wl_container_of(addon, blur_behind, surface_addon); +} + +static void +blur_behind_handle_destroy(struct wl_client *client, struct wl_resource *resource) +{ + wl_resource_destroy(resource); +} + +static void +blur_behind_handle_set_radius(struct wl_client *client, struct wl_resource *resource, + uint32_t radius) +{ + struct ds_tizen_blur_behind *blur_behind; + + blur_behind = wl_resource_get_user_data(resource); + + blur_behind->pending.radius = radius; + blur_behind->pending.committed |= DS_TIZEN_BLUR_BEHIND_STATE_RADIUS; +} + +static const struct wtz_blur_behind_interface blur_behind_impl = { + blur_behind_handle_destroy, + blur_behind_handle_set_radius, +}; + +static void +blur_manager_handle_get_blur_behind(struct wl_client *wl_client, + struct wl_resource *resource, + uint32_t id, struct wl_resource *surface_resource) +{ + struct ds_tizen_blur_client *client; + struct ds_surface *surface; + struct ds_tizen_blur_behind *blur_behind; + + ds_inf("tizen_blur: get_blur"); + + client = wl_resource_get_user_data(resource); + + surface = ds_surface_from_resource(surface_resource); + if (!surface) { + wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_OBJECT, + "invalid wl_surface resource:%u", + (unsigned int)wl_resource_get_id(surface_resource)); + return; + } + + blur_behind = blur_behind_client_get_from_surface(client, surface); + if (blur_behind) { + wl_resource_post_error(resource, WTZ_BLUR_MANAGER_ERROR_BLUR_EXISTS, + "blend object already exists"); + return; + } + + blur_behind = calloc(1, sizeof *blur_behind); + if (blur_behind == NULL) { + ds_err("calloc() failed. tizen_blur"); + wl_client_post_no_memory(wl_client); + return; + } + + blur_behind->resource = wl_resource_create(wl_client, &wtz_blur_behind_interface, + wl_resource_get_version(resource), id); + if (blur_behind->resource == NULL) { + ds_err("tizen_blur : wl_resource_create() failed."); + free(blur_behind); + wl_client_post_no_memory(wl_client); + return; + } + + wl_resource_set_implementation(blur_behind->resource, &blur_behind_impl, blur_behind, + blur_behind_handle_resource_destroy); + + ds_addon_init(&blur_behind->surface_addon, &surface->addons, client, &blur_behind_addon_impl); + + blur_behind->listener.surface_commit.notify = blur_behind_handle_surface_commit; + ds_surface_add_commit_listener(surface, &blur_behind->listener.surface_commit); + + blur_behind->surface = surface; + + wl_signal_init(&blur_behind->events.destroy); + wl_signal_init(&blur_behind->events.commit); + + wl_signal_emit(&client->blur_manager->events.new_blur_behind, blur_behind); +} + +static void blur_manager_handle_destroy(struct wl_client *wl_client, struct wl_resource *resource) { @@ -572,6 +801,7 @@ static const struct wtz_blur_manager_interface blur_manager_impl = { blur_manager_handle_destroy, blur_manager_handle_get_blur, + blur_manager_handle_get_blur_behind, }; static void -- 2.7.4 From 256205a90777ff97b9d805522a47f0512bb58c1c Mon Sep 17 00:00:00 2001 From: TaeHyeon Jeong Date: Tue, 13 Aug 2024 13:57:29 +0900 Subject: [PATCH 16/16] Improve wl_signal_emit() func call when children destroyed - AS-IS if we try to add listener to info (child) using add_destroy_listener() func, listener is added to client (parent) rather than info. for this reason, when info is destroyed, client's destroy signal is emitted, so all added listeners recive signal. - TO-BE client don't have info's destroy signal and info have its own destroy signal. so, when info is destroyed, info emits its own destroy signal. Change-Id: Ida00bfc4d0bcb51c6df462281413ecf8d8024be0 --- src/display_policy/display_policy.c | 16 ++++++++-------- src/global_resource/global_resource.c | 18 +++++++++--------- src/memory_flusher/memory_flusher.c | 18 +++++++++--------- src/renderer/renderer.c | 18 +++++++++--------- src/screen_rotation/screen_rotation.c | 16 ++++++++-------- 5 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/display_policy/display_policy.c b/src/display_policy/display_policy.c index e278888..558e741 100644 --- a/src/display_policy/display_policy.c +++ b/src/display_policy/display_policy.c @@ -33,10 +33,6 @@ struct ds_tizen_display_policy_client struct wl_list infos; - struct { - struct wl_signal destroy; - } events; - struct wl_list link; // ds_tizen_display_policy::clients }; @@ -48,6 +44,10 @@ struct ds_tizen_display_policy_info int32_t brightness_value; + struct { + struct wl_signal destroy; + } events; + struct wl_list link; // ds_tizen_display_policy_client::infos }; @@ -117,7 +117,7 @@ ds_tizen_display_policy_info_add_destroy_listener( struct ds_tizen_display_policy_info *info, struct wl_listener *listener) { - wl_signal_add(&info->client->events.destroy, listener); + wl_signal_add(&info->events.destroy, listener); } WL_EXPORT struct ds_surface * @@ -177,6 +177,8 @@ tizen_display_policy_client_get_info(struct ds_tizen_display_policy_client *clie info->client = client; info->surface = surface; + wl_signal_init(&info->events.destroy); + wl_list_insert(&client->infos, &info->link); return info; @@ -256,7 +258,7 @@ _tizen_display_policy_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_display_policy_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(info, tmp, &client->infos, link) { - wl_signal_emit(&client->events.destroy, info); + wl_signal_emit(&info->events.destroy, info); wl_list_remove(&info->link); free(info); } @@ -299,7 +301,5 @@ display_policy_bind(struct wl_client *wl_client, void *data, uint32_t version, wl_resource_set_implementation(client->resource, &display_policy_impl, client, _tizen_display_policy_client_handle_destroy); - wl_signal_init(&client->events.destroy); - wl_list_insert(&display_policy->clients, &client->link); } diff --git a/src/global_resource/global_resource.c b/src/global_resource/global_resource.c index 3c15f23..4a05c60 100644 --- a/src/global_resource/global_resource.c +++ b/src/global_resource/global_resource.c @@ -35,10 +35,6 @@ struct ds_tizen_global_resource_client struct wl_list infos; - struct { - struct wl_signal destroy; - } events; - struct wl_list link; // ds_tizen_global_resource::clients }; @@ -52,6 +48,10 @@ struct ds_tizen_global_resource_info uint32_t universal_id; + struct { + struct wl_signal destroy; + } events; + struct wl_list link; // ds_tizen_global_resource_client::infos }; @@ -122,7 +122,7 @@ ds_tizen_global_resource_info_add_destroy_listener( struct ds_tizen_global_resource_info *info, struct wl_listener *listener) { - wl_signal_add(&info->client->events.destroy, listener); + wl_signal_add(&info->events.destroy, listener); } WL_EXPORT struct ds_surface * @@ -174,6 +174,8 @@ tizen_global_resource_client_get_info( info->client = client; info->surface = surface; + wl_signal_init(&info->events.destroy); + wl_list_insert(&client->infos, &info->link); return info; @@ -215,7 +217,7 @@ _tizen_surface_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_surface_handle_destroy (info:%p)", info); - wl_signal_emit(&info->client->events.destroy, info); + wl_signal_emit(&info->events.destroy, info); wl_list_remove(&info->link); free(info); } @@ -296,7 +298,7 @@ _tizen_global_resource_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_global_resource_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(info, tmp, &client->infos, link) { - wl_signal_emit(&info->client->events.destroy, info); + wl_signal_emit(&info->events.destroy, info); wl_list_remove(&info->link); free(info); } @@ -339,7 +341,5 @@ resource_bind(struct wl_client *wl_client, void *data, uint32_t version, wl_resource_set_implementation(client->resource, &surface_impl, client, _tizen_global_resource_client_handle_destroy); - wl_signal_init(&client->events.destroy); - wl_list_insert(&global_resource->clients, &client->link); } diff --git a/src/memory_flusher/memory_flusher.c b/src/memory_flusher/memory_flusher.c index 378794f..9e8e407 100644 --- a/src/memory_flusher/memory_flusher.c +++ b/src/memory_flusher/memory_flusher.c @@ -33,10 +33,6 @@ struct ds_tizen_memory_flusher_client struct wl_list infos; - struct { - struct wl_signal destroy; - } events; - struct wl_list link; // ds_tizen_memory_flusher::clients }; @@ -48,6 +44,10 @@ struct ds_tizen_memory_flusher_info struct ds_surface *surface; + struct { + struct wl_signal destroy; + } events; + struct wl_list link; // ds_tizen_memory_flusher_client::infos }; @@ -118,7 +118,7 @@ ds_tizen_memory_flusher_info_add_destroy_listener( struct ds_tizen_memory_flusher_info *info, struct wl_listener *listener) { - wl_signal_add(&info->client->events.destroy, listener); + wl_signal_add(&info->events.destroy, listener); } WL_EXPORT struct ds_surface * @@ -185,6 +185,8 @@ tizen_memory_flusher_client_get_info(struct ds_tizen_memory_flusher_client *clie info->client = client; info->surface = surface; + wl_signal_init(&info->events.destroy); + wl_list_insert(&client->infos, &info->link); return info; @@ -226,7 +228,7 @@ _tizen_memory_flusher_info_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_memory_flusher_info_handle_destroy (info:%p)", info); - wl_signal_emit(&info->client->events.destroy, info); + wl_signal_emit(&info->events.destroy, info); wl_list_remove(&info->link); free(info); } @@ -302,7 +304,7 @@ _tizen_memory_flusher_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_memory_flusher_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(info, tmp, &client->infos, link) { - wl_signal_emit(&client->events.destroy, info); + wl_signal_emit(&info->events.destroy, info); wl_list_remove(&info->link); free(info); } @@ -345,7 +347,5 @@ memory_flusher_bind(struct wl_client *wl_client, void *data, uint32_t version, wl_resource_set_implementation(client->resource, &memory_flusher_impl, client, _tizen_memory_flusher_client_handle_destroy); - wl_signal_init(&client->events.destroy); - wl_list_insert(&memory_flusher->clients, &client->link); } diff --git a/src/renderer/renderer.c b/src/renderer/renderer.c index b87e65e..bcd320d 100644 --- a/src/renderer/renderer.c +++ b/src/renderer/renderer.c @@ -33,10 +33,6 @@ struct ds_tizen_renderer_client struct wl_list infos; - struct { - struct wl_signal destroy; - } events; - struct wl_list link; // ds_tizen_renderer::clients }; @@ -48,6 +44,10 @@ struct ds_tizen_renderer_info struct ds_surface *surface; + struct { + struct wl_signal destroy; + } events; + struct wl_list link; // ds_tizen_renderer_client::infos }; @@ -118,7 +118,7 @@ ds_tizen_renderer_info_add_destroy_listener( struct ds_tizen_renderer_info *info, struct wl_listener *listener) { - wl_signal_add(&info->client->events.destroy, listener); + wl_signal_add(&info->events.destroy, listener); } WL_EXPORT struct ds_surface * @@ -168,6 +168,8 @@ tizen_renderer_client_get_info(struct ds_tizen_renderer_client *client, info->client = client; info->surface = surface; + wl_signal_init(&info->events.destroy); + wl_list_insert(&client->infos, &info->link); return info; @@ -209,7 +211,7 @@ _tizen_renderer_info_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_renderer_info_handle_destroy (info:%p)", info); - wl_signal_emit(&info->client->events.destroy, info); + wl_signal_emit(&info->events.destroy, info); wl_list_remove(&info->link); free(info); } @@ -285,7 +287,7 @@ _tizen_renderer_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_renderer_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(info, tmp, &client->infos, link) { - wl_signal_emit(&client->events.destroy, info); + wl_signal_emit(&info->events.destroy, info); wl_resource_destroy(info->resource); } @@ -327,7 +329,5 @@ renderer_bind(struct wl_client *wl_client, void *data, uint32_t version, wl_resource_set_implementation(client->resource, &renderer_impl, client, _tizen_renderer_client_handle_destroy); - wl_signal_init(&client->events.destroy); - wl_list_insert(&renderer->clients, &client->link); } diff --git a/src/screen_rotation/screen_rotation.c b/src/screen_rotation/screen_rotation.c index e4ddb6b..656347e 100644 --- a/src/screen_rotation/screen_rotation.c +++ b/src/screen_rotation/screen_rotation.c @@ -33,10 +33,6 @@ struct ds_tizen_screen_rotation_client struct wl_list infos; - struct { - struct wl_signal destroy; - } events; - struct wl_list link; // ds_tizen_screen_rotation::clients }; @@ -46,6 +42,10 @@ struct ds_tizen_screen_rotation_info struct ds_surface *surface; + struct { + struct wl_signal destroy; + } events; + struct wl_list link; // ds_tizen_screen_rotation_client::infos }; @@ -118,7 +118,7 @@ ds_tizen_screen_rotation_info_add_destroy_listener( struct ds_tizen_screen_rotation_info *info, struct wl_listener *listener) { - wl_signal_add(&info->client->events.destroy, listener); + wl_signal_add(&info->events.destroy, listener); } WL_EXPORT struct ds_surface * @@ -169,6 +169,8 @@ tizen_screen_rotation_client_get_info(struct ds_tizen_screen_rotation_client *cl info->client = client; info->surface = surface; + wl_signal_init(&info->events.destroy); + wl_list_insert(&client->infos, &info->link); return info; @@ -245,7 +247,7 @@ _tizen_screen_rotation_client_handle_destroy(struct wl_resource *resource) ds_inf("_tizen_screen_rotation_client_handle_destroy (client:%p)", client); wl_list_for_each_safe(info, tmp, &client->infos, link) { - wl_signal_emit(&client->events.destroy, info); + wl_signal_emit(&info->events.destroy, info); wl_list_remove(&info->link); free(info); } @@ -288,7 +290,5 @@ screen_rotation_bind(struct wl_client *wl_client, void *data, uint32_t version, wl_resource_set_implementation(client->resource, &screen_rotation_impl, client, _tizen_screen_rotation_client_handle_destroy); - wl_signal_init(&client->events.destroy); - wl_list_insert(&screen_rotation->clients, &client->link); } -- 2.7.4