--- /dev/null
+#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;
+}
#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;
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,
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)
{
}
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;
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);
}
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;