Add an example of tdm backend
[platform/core/uifw/libds-tizen.git] / src / libds / backend.c
1 #include <stdlib.h>
2 #include <wayland-server.h>
3
4 #include "libds/interfaces/backend.h"
5
6 WL_EXPORT bool
7 ds_backend_start(struct ds_backend *backend)
8 {
9     if (backend->iface->start)
10         return backend->iface->start(backend);
11
12     backend->started = true;
13
14     return true;
15 }
16
17 WL_EXPORT void
18 ds_backend_destroy(struct ds_backend *backend)
19 {
20     if (!backend)
21         return;
22
23     if (backend->iface && backend->iface->destroy)
24         backend->iface->destroy(backend);
25     else
26         free(backend);
27 }
28
29 WL_EXPORT void
30 ds_backend_add_destroy_listener(struct ds_backend *backend,
31         struct wl_listener *listener)
32 {
33     wl_signal_add(&backend->events.destroy, listener);
34 }
35
36 WL_EXPORT void
37 ds_backend_add_new_output_listener(struct ds_backend *backend,
38         struct wl_listener *listener)
39 {
40     wl_signal_add(&backend->events.new_output, listener);
41 }
42
43 void
44 ds_backend_init(struct ds_backend *backend, const struct ds_backend_interface *iface)
45 {
46     backend->iface = iface;
47     wl_signal_init(&backend->events.destroy);
48     wl_signal_init(&backend->events.new_output);
49 }
50
51 void
52 ds_backend_finish(struct ds_backend *backend)
53 {
54     wl_signal_emit(&backend->events.destroy, backend);
55 }