#include <libds-tizen/allocator/tbm.h>
#include <libds-tizen/backend/tdm.h>
#include <libds-tizen/tbm_server.h>
+#include <libds-tizen/dpms.h>
#define USE_TDM_BUFFER_QUEUE
bool damaged;
};
+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_server
{
struct ds_tbm_server *tbm_server;
struct ds_xdg_shell *xdg_shell;
struct tinyds_output *output;
+ struct tinyds_dpms *dpms;
struct wl_event_source *stdin_source;
struct wl_list views;
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);
+
int
main(void)
}
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)
+ 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 bool
init_server(struct tinyds_server *server, struct wl_display *display)
{
server->display = display;
ds_xdg_shell_add_new_surface_listener(server->xdg_shell,
&server->new_xdg_surface);
+ if (!add_new_dpms(server)) {
+ ds_backend_destroy(server->backend);
+ return false;
+ }
+
return true;
}
return 1;
}
+
+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);
+}