examples: make tinyds-dpms files 73/283573/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 27 Oct 2022 08:14:58 +0000 (17:14 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 31 Oct 2022 01:15:59 +0000 (10:15 +0900)
move the implementation of ds_tizen_dpms at tinyds-tdm.c to tinyds-dpms file.

Change-Id: Ia61bb80c4e3b534a569441e365c483d5c66838e0

examples/meson.build
examples/tinyds-dpms.c [new file with mode: 0644]
examples/tinyds-dpms.h [new file with mode: 0644]
examples/tinyds-tdm.c
examples/tinyds-tdm.h

index c5addef..85b8165 100644 (file)
@@ -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 (file)
index 0000000..23821a1
--- /dev/null
@@ -0,0 +1,100 @@
+#include <libds-tizen/dpms.h>
+
+#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 (file)
index 0000000..226cfb1
--- /dev/null
@@ -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
index a6a49aa..cb8f2e5 100644 (file)
@@ -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;
index 119ea87..0359ec0 100644 (file)
@@ -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;