change wl_signal_emit_mutable into wl_signal_emit
[platform/core/uifw/libds-tizen.git] / examples / tinyds-renderer.h
1 #ifndef TINYDS_RENDERER_H
2 #define TINYDS_RENDERER_H
3
4 #include <pthread.h>
5 #include <pixman.h>
6 #include <tbm_surface_queue.h>
7 #include <tbm_surface.h>
8 #include <wayland-server.h>
9
10 #define USE_CURSOR
11
12 struct tinyds_renderer
13 {
14     tbm_surface_queue_h surface_queue;
15
16     struct wl_list textures;
17
18     pthread_t worker_thread;
19     pthread_mutex_t mutex;
20     pthread_cond_t cond;
21
22     pixman_image_t *bg_image;
23
24 #ifdef USE_CURSOR
25     pixman_image_t *cursor_image;
26
27      struct {
28          uint32_t x, y, w, h;
29      } cursor;
30 #endif
31
32     bool damaged;
33     bool destroying;
34 };
35
36 struct tinyds_texture
37 {
38     struct tinyds_renderer *renderer;
39     pixman_image_t *image;
40     tbm_surface_h surface;
41
42     struct wl_list link;
43     struct wl_listener buffer_destroy;
44
45     int x, y;
46 };
47
48 bool init_renderer(struct tinyds_renderer *renderer);
49 void fini_renderer(struct tinyds_renderer *renderer);
50 void renderer_set_surface_queue(struct tinyds_renderer *renderer,
51         void *surface_queue);
52 void renderer_set_bg_color(struct tinyds_renderer *renderer,
53         uint8_t r, uint8_t g, uint8_t b);
54 void renderer_add_texture(struct tinyds_renderer *renderer,
55         tbm_surface_h tbm_surface, int x, int y);
56 void renderer_draw(struct tinyds_renderer *renderer);
57
58 #ifdef USE_CURSOR
59 void renderer_cursor_create(struct tinyds_renderer *renderer,
60         uint8_t r, uint8_t g, uint8_t b, uint32_t width, uint32_t height);
61 void renderer_cursor_destroy(struct tinyds_renderer *renderer);
62 void
63 renderer_cursor_update(struct tinyds_renderer *renderer,
64         uint32_t x, uint32_t y);
65 #endif
66
67 #endif