From d04ded37fda437fd488de09a6d243720503ad0ec Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 27 Oct 2022 17:14:58 +0900 Subject: [PATCH] examples: make tinyds-dpms files move the implementation of ds_tizen_dpms at tinyds-tdm.c to tinyds-dpms file. Change-Id: Ia61bb80c4e3b534a569441e365c483d5c66838e0 --- examples/meson.build | 1 + examples/tinyds-dpms.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++ examples/tinyds-dpms.h | 10 +++++ examples/tinyds-tdm.c | 103 +++++-------------------------------------------- examples/tinyds-tdm.h | 1 + 5 files changed, 122 insertions(+), 93 deletions(-) create mode 100644 examples/tinyds-dpms.c create mode 100644 examples/tinyds-dpms.h diff --git a/examples/meson.build b/examples/meson.build index c5addef..85b8165 100644 --- a/examples/meson.build +++ b/examples/meson.build @@ -22,6 +22,7 @@ tinyds_tdm_files = [ 'tinyds-tdm-renderer.c', 'protocol-trace.c', 'tinyds-policy.c', + 'tinyds-dpms.c', ] executable('tinyds-tdm', diff --git a/examples/tinyds-dpms.c b/examples/tinyds-dpms.c new file mode 100644 index 0000000..23821a1 --- /dev/null +++ b/examples/tinyds-dpms.c @@ -0,0 +1,100 @@ +#include + +#include "tinyds-tdm-common.h" +#include "tinyds-dpms.h" + +struct tinyds_dpms +{ + dpms_free_cb free_cb; + void *data; + + struct ds_tizen_dpms *ds_dpms; + + struct wl_listener destroy; + struct wl_listener set_dpms; + struct wl_listener get_dpms; +}; + +static void +dpms_handle_destroy(struct wl_listener *listener, void *data) +{ + struct tinyds_dpms *dpms; + + dpms = wl_container_of(listener, dpms, destroy); + + ds_inf("Dpms(%p) destroyed", dpms); + + dpms->free_cb(data); + + wl_list_remove(&dpms->destroy.link); + wl_list_remove(&dpms->set_dpms.link); + wl_list_remove(&dpms->get_dpms.link); + + free(dpms); +} + +static void +dpms_handle_set_dpms(struct wl_listener *listener, void *data) +{ + struct tinyds_dpms *dpms; + struct ds_tizen_dpms_event *event = data; + + dpms = wl_container_of(listener, dpms, set_dpms); + + ds_inf("Dpms(%p) set dpms : %d", dpms, event->mode); + + //To do + //set dpms mode to output + ds_tizen_dpms_send_set_result(dpms->ds_dpms, event->mode, + DS_TIZEN_DPMS_ERROR_NONE); +} + +static void +dpms_handle_get_dpms(struct wl_listener *listener, void *data) +{ + struct tinyds_dpms *dpms; + + dpms = wl_container_of(listener, dpms, get_dpms); + + ds_inf("Dpms(%p) get dpms", dpms); + + //To do + //get dpms mode from output + ds_tizen_dpms_send_get_result(dpms->ds_dpms, DS_TIZEN_DPMS_MODE_ON, + DS_TIZEN_DPMS_ERROR_NONE); +} + + +struct tinyds_dpms * +tinyds_dpms_init(struct wl_display *display, dpms_free_cb free_cb, + void *data) +{ + struct tinyds_dpms *dpms; + + dpms = calloc(1, sizeof *dpms); + if (!dpms) + return NULL; + + dpms->free_cb = free_cb; + data = data; + + dpms->ds_dpms = ds_tizen_dpms_create(display); + if (!dpms->ds_dpms) { + free(dpms); + ds_err("Could not create ds_tizen_dpms"); + return NULL; + } + + dpms->destroy.notify = dpms_handle_destroy; + ds_tizen_dpms_add_destroy_listener(dpms->ds_dpms, &dpms->destroy); + + dpms->set_dpms.notify = dpms_handle_set_dpms; + ds_tizen_dpms_add_set_dpms_listener(dpms->ds_dpms, &dpms->set_dpms); + + dpms->get_dpms.notify = dpms_handle_get_dpms; + ds_tizen_dpms_add_get_dpms_listener(dpms->ds_dpms, &dpms->get_dpms); + + ds_inf("Dpms (%p) added", dpms); + + return dpms; +} diff --git a/examples/tinyds-dpms.h b/examples/tinyds-dpms.h new file mode 100644 index 0000000..226cfb1 --- /dev/null +++ b/examples/tinyds-dpms.h @@ -0,0 +1,10 @@ +#ifndef TINYDS_DPMS_H +#define TINYDS_DPMS_H + +typedef void (*dpms_free_cb)(void *data); + +struct tinyds_dpms; + +struct tinyds_dpms *tinyds_dpms_init(struct wl_display *display, dpms_free_cb free_cb, void *data); + +#endif diff --git a/examples/tinyds-tdm.c b/examples/tinyds-tdm.c index a6a49aa..cb8f2e5 100644 --- a/examples/tinyds-tdm.c +++ b/examples/tinyds-tdm.c @@ -33,16 +33,6 @@ struct tinyds_output #endif }; -struct tinyds_dpms -{ - struct ds_tizen_dpms *ds_dpms; - struct tinyds_server *server; - - struct wl_listener destroy; - struct wl_listener set_dpms; - struct wl_listener get_dpms; -}; - struct tinyds_view { struct tinyds_server *server; @@ -184,9 +174,6 @@ static void output_swapchain_init(struct tinyds_output *output, static void output_draw_with_swapchain(struct tinyds_output *output); static void draw_view(struct tinyds_view *view, pixman_image_t *dst_image); #endif -static void dpms_handle_destroy(struct wl_listener *listener, void *data); -static void dpms_handle_set_dpms(struct wl_listener *listener, void *data); -static void dpms_handle_get_dpms(struct wl_listener *listener, void *data); static void server_add_keyboard(struct tinyds_server *server, struct ds_input_device *dev); static void server_add_pointer(struct tinyds_server *server, @@ -470,38 +457,6 @@ backend_handle_new_output(struct wl_listener *listener, void *data) output_schedule_commit(output); } -static bool -add_new_dpms(struct tinyds_server *server) -{ - struct tinyds_dpms *dpms; - - dpms = calloc(1, sizeof *dpms); - if (!dpms) - return false; - - dpms->ds_dpms = ds_tizen_dpms_create(server->display); - if (!dpms->ds_dpms) { - free(dpms); - ds_err("Could not create ds_tizen_dpms"); - return false; - } - - dpms->destroy.notify = dpms_handle_destroy; - ds_tizen_dpms_add_destroy_listener(dpms->ds_dpms, &dpms->destroy); - - dpms->set_dpms.notify = dpms_handle_set_dpms; - ds_tizen_dpms_add_set_dpms_listener(dpms->ds_dpms, &dpms->set_dpms); - - dpms->get_dpms.notify = dpms_handle_get_dpms; - ds_tizen_dpms_add_get_dpms_listener(dpms->ds_dpms, &dpms->get_dpms); - - server->dpms = dpms; - - ds_inf("Dpms (%p) added", dpms); - - return true; -} - static void backend_handle_new_input(struct wl_listener *listener, void *data) { @@ -740,6 +695,14 @@ launch_effect_handle_new_splash(struct wl_listener *listener, void *data) } static void +dpms_free_func(void *data) +{ + struct tinyds_server *server = (struct tinyds_server *)data; + + server->dpms = NULL; +} + +static void policy_free_func(void *data) { struct tinyds_server *server = (struct tinyds_server *)data; @@ -792,7 +755,8 @@ init_server(struct tinyds_server *server, struct wl_display *display) ds_xdg_shell_add_new_surface_listener(server->xdg_shell, &server->new_xdg_surface); - if (!add_new_dpms(server)) + server->dpms = tinyds_dpms_init(server->display, dpms_free_func, (void *)server); + if (!server->dpms) goto err; server->policy = tinyds_policy_init(server->display, policy_free_func, (void *)server); @@ -1344,53 +1308,6 @@ server_dispatch_stdin(int fd, uint32_t mask, void *data) } static void -dpms_handle_destroy(struct wl_listener *listener, void *data) -{ - struct tinyds_dpms *dpms; - - dpms = wl_container_of(listener, dpms, destroy); - - ds_inf("Dpms(%p) destroyed", dpms); - - wl_list_remove(&dpms->destroy.link); - wl_list_remove(&dpms->set_dpms.link); - wl_list_remove(&dpms->get_dpms.link); - - free(dpms); -} - -static void -dpms_handle_set_dpms(struct wl_listener *listener, void *data) -{ - struct tinyds_dpms *dpms; - struct ds_tizen_dpms_event *event = data; - - dpms = wl_container_of(listener, dpms, set_dpms); - - ds_inf("Dpms(%p) set dpms : %d", dpms, event->mode); - - //To do - //set dpms mode to output - ds_tizen_dpms_send_set_result(dpms->ds_dpms, event->mode, - DS_TIZEN_DPMS_ERROR_NONE); -} - -static void -dpms_handle_get_dpms(struct wl_listener *listener, void *data) -{ - struct tinyds_dpms *dpms; - - dpms = wl_container_of(listener, dpms, get_dpms); - - ds_inf("Dpms(%p) get dpms", dpms); - - //To do - //get dpms mode from output - ds_tizen_dpms_send_get_result(dpms->ds_dpms, DS_TIZEN_DPMS_MODE_ON, - DS_TIZEN_DPMS_ERROR_NONE); -} - -static void keyboard_handle_device_destroy(struct wl_listener *listener, void *data) { struct tinyds_keyboard *kbd; diff --git a/examples/tinyds-tdm.h b/examples/tinyds-tdm.h index 119ea87..0359ec0 100644 --- a/examples/tinyds-tdm.h +++ b/examples/tinyds-tdm.h @@ -13,6 +13,7 @@ #include "pixman-helper.h" #include "protocol-trace.h" #include "tinyds-policy.h" +#include "tinyds-dpms.h" struct tinyds_keyboard; struct tinyds_pointer; -- 2.7.4