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