change wl_signal_emit_mutable into wl_signal_emit
[platform/core/uifw/libds-tizen.git] / examples / tinyds-dpms.c
1 #include <libds-tizen/dpms.h>
2
3 #include "tinyds-common.h"
4 #include "tinyds-dpms.h"
5
6 struct tinyds_dpms
7 {
8     dpms_free_cb free_cb;
9     void *data;
10
11     struct ds_tizen_dpms *ds_dpms;
12
13     struct wl_listener destroy;
14     struct wl_listener set_dpms;
15     struct wl_listener get_dpms;
16 };
17
18 static void
19 dpms_handle_destroy(struct wl_listener *listener, void *data)
20 {
21     struct tinyds_dpms *dpms;
22
23     dpms = wl_container_of(listener, dpms, destroy);
24
25     ds_inf("Dpms(%p) destroyed", dpms);
26
27     dpms->free_cb(data);
28
29     wl_list_remove(&dpms->destroy.link);
30     wl_list_remove(&dpms->set_dpms.link);
31     wl_list_remove(&dpms->get_dpms.link);
32
33     free(dpms);
34 }
35
36 static void
37 dpms_handle_set_dpms(struct wl_listener *listener, void *data)
38 {
39     struct tinyds_dpms *dpms;
40     struct ds_tizen_dpms_event_set_dpms *event = data;
41
42     dpms = wl_container_of(listener, dpms, set_dpms);
43
44     ds_inf("Dpms(%p) set dpms : %d", dpms, event->mode);
45
46     //To do
47     //set dpms mode to output
48     ds_tizen_dpms_send_set_result(dpms->ds_dpms, event->mode,
49         DS_TIZEN_DPMS_ERROR_NONE);
50 }
51
52 static void
53 dpms_handle_get_dpms(struct wl_listener *listener, void *data)
54 {
55     struct tinyds_dpms *dpms;
56
57     dpms = wl_container_of(listener, dpms, get_dpms);
58
59     ds_inf("Dpms(%p) get dpms", dpms);
60
61     //To do
62     //get dpms mode from output
63     ds_tizen_dpms_send_get_result(dpms->ds_dpms, DS_TIZEN_DPMS_MODE_ON,
64         DS_TIZEN_DPMS_ERROR_NONE);
65 }
66
67
68 struct tinyds_dpms *
69 tinyds_dpms_init(struct wl_display *display, dpms_free_cb free_cb,
70     void *data)
71 {
72     struct tinyds_dpms *dpms;
73
74     dpms = calloc(1, sizeof *dpms);
75     if (!dpms)
76         return NULL;
77
78     dpms->free_cb = free_cb;
79     data = data;
80
81     dpms->ds_dpms = ds_tizen_dpms_create(display);
82     if (!dpms->ds_dpms) {
83         free(dpms);
84         ds_err("Could not create ds_tizen_dpms");
85         return NULL;
86     }
87
88     dpms->destroy.notify = dpms_handle_destroy;
89     ds_tizen_dpms_add_destroy_listener(dpms->ds_dpms, &dpms->destroy);
90
91     dpms->set_dpms.notify = dpms_handle_set_dpms;
92     ds_tizen_dpms_add_set_dpms_listener(dpms->ds_dpms, &dpms->set_dpms);
93
94     dpms->get_dpms.notify = dpms_handle_get_dpms;
95     ds_tizen_dpms_add_get_dpms_listener(dpms->ds_dpms, &dpms->get_dpms);
96
97     ds_inf("Dpms (%p) added", dpms);
98
99     return dpms;
100 }