1 #ifndef TINYDS_RENDERER_H
2 #define TINYDS_RENDERER_H
6 #include <tbm_surface_queue.h>
7 #include <tbm_surface.h>
8 #include <wayland-server.h>
12 struct tinyds_renderer
14 tbm_surface_queue_h surface_queue;
16 struct wl_list textures;
18 pthread_t worker_thread;
19 pthread_mutex_t mutex;
22 pixman_image_t *bg_image;
25 pixman_image_t *cursor_image;
38 struct tinyds_renderer *renderer;
39 pixman_image_t *image;
40 tbm_surface_h surface;
43 struct wl_listener buffer_destroy;
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,
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);
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);
63 renderer_cursor_update(struct tinyds_renderer *renderer,
64 uint32_t x, uint32_t y);