examples: rename tinyds-tdm-renderer to tinyds-renderer 74/283574/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 27 Oct 2022 09:00:24 +0000 (18:00 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 31 Oct 2022 01:15:59 +0000 (10:15 +0900)
Change-Id: I7d897f44a0042fb16d8efe9d6d656aec820d54f2

examples/meson.build
examples/tinyds-renderer.c [new file with mode: 0644]
examples/tinyds-renderer.h [new file with mode: 0644]
examples/tinyds-tdm-renderer.c [deleted file]
examples/tinyds-tdm-renderer.h [deleted file]
examples/tinyds-tdm.h

index 85b81655919d2f99a8182f237e8c69d122a063f4..23156e17965a09b386af5916688a2e9992f337a7 100644 (file)
@@ -19,7 +19,7 @@ tinyds_tdm_files = [
   'tinyds-tdm.c',
   'pixman-helper.c',
   'pixman-tbm-helper.c',
-  'tinyds-tdm-renderer.c',
+  'tinyds-renderer.c',
   'protocol-trace.c',
   'tinyds-policy.c',
   'tinyds-dpms.c',
diff --git a/examples/tinyds-renderer.c b/examples/tinyds-renderer.c
new file mode 100644 (file)
index 0000000..24c40d3
--- /dev/null
@@ -0,0 +1,250 @@
+#include <assert.h>
+#include <stdlib.h>
+
+#include <libds/log.h>
+
+#include "pixman-helper.h"
+#include "pixman-tbm-helper.h"
+#include "tinyds-renderer.h"
+
+static void renderer_setup_thread(struct tinyds_renderer *renderer);
+static void *renderer_thread_func(void *data);
+static void texture_destroy(struct tinyds_texture *texture);
+
+bool
+init_renderer(struct tinyds_renderer *renderer)
+{
+    renderer->damaged = false;
+
+    wl_list_init(&renderer->textures);
+
+    renderer_setup_thread(renderer);
+
+    return true;
+}
+
+void
+fini_renderer(struct tinyds_renderer *renderer)
+{
+    pthread_mutex_lock(&renderer->mutex);
+
+    renderer->destroying = true;
+    pthread_cond_signal(&renderer->cond);
+
+    pthread_mutex_unlock(&renderer->mutex);
+
+    pthread_join(renderer->worker_thread, NULL);
+
+    pthread_mutex_destroy(&renderer->mutex);
+    pthread_cond_destroy(&renderer->cond);
+}
+
+void
+renderer_set_surface_queue(struct tinyds_renderer *renderer,
+        void *surface_queue)
+{
+    pthread_mutex_lock(&renderer->mutex);
+
+    renderer->surface_queue = (tbm_surface_queue_h)surface_queue;
+
+    pthread_mutex_unlock(&renderer->mutex);
+}
+
+void
+renderer_set_bg_color(struct tinyds_renderer *renderer,
+        uint8_t r, uint8_t g, uint8_t b)
+{
+    pixman_color_t color;
+
+    pthread_mutex_lock(&renderer->mutex);
+
+    color_rgb888(&color, r, g, b);
+
+    renderer->bg_image = pixman_image_create_solid_fill(&color);
+    assert(renderer->bg_image);
+
+    renderer->damaged = true;
+
+    pthread_mutex_unlock(&renderer->mutex);
+}
+
+#ifdef USE_CURSOR
+void
+renderer_cursor_create(struct tinyds_renderer *renderer,
+        uint8_t r, uint8_t g, uint8_t b, uint32_t width, uint32_t height)
+{
+    pixman_color_t color;
+
+    pthread_mutex_lock(&renderer->mutex);
+
+    color_rgb888(&color, r, g, b);
+
+    renderer->cursor_image = pixman_image_create_solid_fill(&color);
+    assert(renderer->cursor_image);
+
+    renderer->damaged = true;
+
+    renderer->cursor.w = width;
+    renderer->cursor.h = height;
+
+    pthread_mutex_unlock(&renderer->mutex);
+}
+
+void
+renderer_cursor_destroy(struct tinyds_renderer *renderer)
+{
+    pthread_mutex_lock(&renderer->mutex);
+
+    if (renderer->cursor_image)
+    {
+        pixman_image_unref(renderer->cursor_image);
+        renderer->cursor_image = NULL;
+    }
+
+    renderer->damaged = true;
+
+    pthread_mutex_unlock(&renderer->mutex);
+}
+
+void
+renderer_cursor_update(struct tinyds_renderer *renderer,
+        uint32_t x, uint32_t y)
+{
+    pthread_mutex_lock(&renderer->mutex);
+
+    renderer->cursor.x = x;
+    renderer->cursor.y = y;
+
+    pthread_mutex_unlock(&renderer->mutex);
+}
+#endif
+
+void
+renderer_add_texture(struct tinyds_renderer *renderer,
+        tbm_surface_h tbm_surface, int x, int y)
+{
+    struct tinyds_texture *texture;
+
+    pthread_mutex_lock(&renderer->mutex);
+
+    texture = calloc(1, sizeof *texture);
+
+    texture->x = x;
+    texture->y = y;
+    texture->renderer = renderer;
+    texture->surface = tbm_surface;
+    texture->image = pixman_image_from_tbm_surface(tbm_surface,
+            DS_BUFFER_DATA_PTR_ACCESS_READ);
+
+    wl_list_insert(renderer->textures.prev, &texture->link);
+
+    ds_dbg("Add texture(%p)", texture);
+
+    pthread_mutex_unlock(&renderer->mutex);
+}
+
+void
+renderer_draw(struct tinyds_renderer *renderer)
+{
+    pthread_mutex_lock(&renderer->mutex);
+
+    renderer->damaged = true;
+    pthread_cond_signal(&renderer->cond);
+
+    pthread_mutex_unlock(&renderer->mutex);
+}
+
+static void
+renderer_setup_thread(struct tinyds_renderer *renderer)
+{
+    pthread_mutex_init(&renderer->mutex, NULL);
+    pthread_cond_init(&renderer->cond, NULL);
+    pthread_create(&renderer->worker_thread, NULL,
+            renderer_thread_func, renderer);
+}
+
+static void *
+renderer_thread_func(void *data)
+{
+    struct tinyds_renderer *renderer = data;
+    struct tinyds_texture *texture, *texture_tmp;
+    pixman_image_t *dst_image;
+    tbm_surface_h surface;
+    tbm_surface_queue_error_e err;
+
+    pthread_mutex_lock(&renderer->mutex);
+
+    while (!renderer->destroying) {
+        if (!renderer->damaged)
+            pthread_cond_wait(&renderer->cond, &renderer->mutex);
+
+        if (!renderer->damaged)
+            continue;
+
+        if (!tbm_surface_queue_can_dequeue(renderer->surface_queue, 0))
+            continue;
+
+        ds_dbg(">> BEGIN DRAW");
+
+        err = tbm_surface_queue_dequeue(renderer->surface_queue, &surface);
+        assert(err == TBM_SURFACE_QUEUE_ERROR_NONE);
+
+        dst_image = pixman_image_from_tbm_surface(surface,
+                DS_BUFFER_DATA_PTR_ACCESS_WRITE);
+
+        if (renderer->bg_image) {
+            pixman_image_composite32(PIXMAN_OP_SRC,
+                    renderer->bg_image,
+                    NULL,
+                    dst_image,
+                    0, 0, 0, 0, 0, 0,
+                    pixman_image_get_width(dst_image),
+                    pixman_image_get_height(dst_image));
+        }
+
+#ifdef USE_CURSOR
+        if (renderer->cursor_image) {
+            pixman_image_composite32(PIXMAN_OP_OVER,
+                    renderer->cursor_image,
+                    NULL,
+                    dst_image,
+                    0, 0, 0, 0,
+                    renderer->cursor.x, renderer->cursor.y,
+                    renderer->cursor.w, renderer->cursor.h);
+        }
+#endif
+
+        wl_list_for_each_safe(texture, texture_tmp, &renderer->textures, link) {
+            ds_dbg("Draw texture(%p)", texture);
+            pixman_image_composite32(PIXMAN_OP_OVER,
+                    texture->image,
+                    NULL,
+                    dst_image,
+                    0, 0, 0, 0,
+                    texture->x, texture->y,
+                    pixman_image_get_width(texture->image),
+                    pixman_image_get_height(texture->image));
+            texture_destroy(texture);
+        }
+        pixman_image_unref(dst_image);
+
+        err = tbm_surface_queue_enqueue(renderer->surface_queue, surface);
+        assert(err == TBM_SURFACE_QUEUE_ERROR_NONE);
+
+        renderer->damaged = false;
+
+        ds_dbg("<< END DRAW");
+    }
+
+    pthread_mutex_unlock(&renderer->mutex);
+
+    return NULL;
+}
+
+static void
+texture_destroy(struct tinyds_texture *texture)
+{
+    pixman_image_unref(texture->image);
+    wl_list_remove(&texture->link);
+    free(texture);
+}
diff --git a/examples/tinyds-renderer.h b/examples/tinyds-renderer.h
new file mode 100644 (file)
index 0000000..b2dc234
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef TINYDS_RENDERER_H
+#define TINYDS_RENDERER_H
+
+#include <pthread.h>
+#include <pixman.h>
+#include <tbm_surface_queue.h>
+#include <tbm_surface.h>
+#include <wayland-server.h>
+
+#define USE_CURSOR
+
+struct tinyds_renderer
+{
+    tbm_surface_queue_h surface_queue;
+
+    struct wl_list textures;
+
+    pthread_t worker_thread;
+    pthread_mutex_t mutex;
+    pthread_cond_t cond;
+
+    pixman_image_t *bg_image;
+
+#ifdef USE_CURSOR
+    pixman_image_t *cursor_image;
+
+     struct {
+         uint32_t x, y, w, h;
+     } cursor;
+#endif
+
+    bool damaged;
+    bool destroying;
+};
+
+struct tinyds_texture
+{
+    struct tinyds_renderer *renderer;
+    pixman_image_t *image;
+    tbm_surface_h surface;
+
+    struct wl_list link;
+    struct wl_listener buffer_destroy;
+
+    int x, y;
+};
+
+bool init_renderer(struct tinyds_renderer *renderer);
+void fini_renderer(struct tinyds_renderer *renderer);
+void renderer_set_surface_queue(struct tinyds_renderer *renderer,
+        void *surface_queue);
+void renderer_set_bg_color(struct tinyds_renderer *renderer,
+        uint8_t r, uint8_t g, uint8_t b);
+void renderer_add_texture(struct tinyds_renderer *renderer,
+        tbm_surface_h tbm_surface, int x, int y);
+void renderer_draw(struct tinyds_renderer *renderer);
+
+#ifdef USE_CURSOR
+void renderer_cursor_create(struct tinyds_renderer *renderer,
+        uint8_t r, uint8_t g, uint8_t b, uint32_t width, uint32_t height);
+void renderer_cursor_destroy(struct tinyds_renderer *renderer);
+void
+renderer_cursor_update(struct tinyds_renderer *renderer,
+        uint32_t x, uint32_t y);
+#endif
+
+#endif
diff --git a/examples/tinyds-tdm-renderer.c b/examples/tinyds-tdm-renderer.c
deleted file mode 100644 (file)
index dd891b6..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-#include <assert.h>
-#include <stdlib.h>
-
-#include <libds/log.h>
-
-#include "pixman-helper.h"
-#include "pixman-tbm-helper.h"
-#include "tinyds-tdm-renderer.h"
-
-static void renderer_setup_thread(struct tinyds_renderer *renderer);
-static void *renderer_thread_func(void *data);
-static void texture_destroy(struct tinyds_texture *texture);
-
-bool
-init_renderer(struct tinyds_renderer *renderer)
-{
-    renderer->damaged = false;
-
-    wl_list_init(&renderer->textures);
-
-    renderer_setup_thread(renderer);
-
-    return true;
-}
-
-void
-fini_renderer(struct tinyds_renderer *renderer)
-{
-    pthread_mutex_lock(&renderer->mutex);
-
-    renderer->destroying = true;
-    pthread_cond_signal(&renderer->cond);
-
-    pthread_mutex_unlock(&renderer->mutex);
-
-    pthread_join(renderer->worker_thread, NULL);
-
-    pthread_mutex_destroy(&renderer->mutex);
-    pthread_cond_destroy(&renderer->cond);
-}
-
-void
-renderer_set_surface_queue(struct tinyds_renderer *renderer,
-        void *surface_queue)
-{
-    pthread_mutex_lock(&renderer->mutex);
-
-    renderer->surface_queue = (tbm_surface_queue_h)surface_queue;
-
-    pthread_mutex_unlock(&renderer->mutex);
-}
-
-void
-renderer_set_bg_color(struct tinyds_renderer *renderer,
-        uint8_t r, uint8_t g, uint8_t b)
-{
-    pixman_color_t color;
-
-    pthread_mutex_lock(&renderer->mutex);
-
-    color_rgb888(&color, r, g, b);
-
-    renderer->bg_image = pixman_image_create_solid_fill(&color);
-    assert(renderer->bg_image);
-
-    renderer->damaged = true;
-
-    pthread_mutex_unlock(&renderer->mutex);
-}
-
-#ifdef USE_CURSOR
-void
-renderer_cursor_create(struct tinyds_renderer *renderer,
-        uint8_t r, uint8_t g, uint8_t b, uint32_t width, uint32_t height)
-{
-    pixman_color_t color;
-
-    pthread_mutex_lock(&renderer->mutex);
-
-    color_rgb888(&color, r, g, b);
-
-    renderer->cursor_image = pixman_image_create_solid_fill(&color);
-    assert(renderer->cursor_image);
-
-    renderer->damaged = true;
-
-    renderer->cursor.w = width;
-    renderer->cursor.h = height;
-
-    pthread_mutex_unlock(&renderer->mutex);
-}
-
-void
-renderer_cursor_destroy(struct tinyds_renderer *renderer)
-{
-    pthread_mutex_lock(&renderer->mutex);
-
-    if (renderer->cursor_image)
-    {
-        pixman_image_unref(renderer->cursor_image);
-        renderer->cursor_image = NULL;
-    }
-
-    renderer->damaged = true;
-
-    pthread_mutex_unlock(&renderer->mutex);
-}
-
-void
-renderer_cursor_update(struct tinyds_renderer *renderer,
-        uint32_t x, uint32_t y)
-{
-    pthread_mutex_lock(&renderer->mutex);
-
-    renderer->cursor.x = x;
-    renderer->cursor.y = y;
-
-    pthread_mutex_unlock(&renderer->mutex);
-}
-#endif
-
-void
-renderer_add_texture(struct tinyds_renderer *renderer,
-        tbm_surface_h tbm_surface, int x, int y)
-{
-    struct tinyds_texture *texture;
-
-    pthread_mutex_lock(&renderer->mutex);
-
-    texture = calloc(1, sizeof *texture);
-
-    texture->x = x;
-    texture->y = y;
-    texture->renderer = renderer;
-    texture->surface = tbm_surface;
-    texture->image = pixman_image_from_tbm_surface(tbm_surface,
-            DS_BUFFER_DATA_PTR_ACCESS_READ);
-
-    wl_list_insert(renderer->textures.prev, &texture->link);
-
-    ds_dbg("Add texture(%p)", texture);
-
-    pthread_mutex_unlock(&renderer->mutex);
-}
-
-void
-renderer_draw(struct tinyds_renderer *renderer)
-{
-    pthread_mutex_lock(&renderer->mutex);
-
-    renderer->damaged = true;
-    pthread_cond_signal(&renderer->cond);
-
-    pthread_mutex_unlock(&renderer->mutex);
-}
-
-static void
-renderer_setup_thread(struct tinyds_renderer *renderer)
-{
-    pthread_mutex_init(&renderer->mutex, NULL);
-    pthread_cond_init(&renderer->cond, NULL);
-    pthread_create(&renderer->worker_thread, NULL,
-            renderer_thread_func, renderer);
-}
-
-static void *
-renderer_thread_func(void *data)
-{
-    struct tinyds_renderer *renderer = data;
-    struct tinyds_texture *texture, *texture_tmp;
-    pixman_image_t *dst_image;
-    tbm_surface_h surface;
-    tbm_surface_queue_error_e err;
-
-    pthread_mutex_lock(&renderer->mutex);
-
-    while (!renderer->destroying) {
-        if (!renderer->damaged)
-            pthread_cond_wait(&renderer->cond, &renderer->mutex);
-
-        if (!renderer->damaged)
-            continue;
-
-        if (!tbm_surface_queue_can_dequeue(renderer->surface_queue, 0))
-            continue;
-
-        ds_dbg(">> BEGIN DRAW");
-
-        err = tbm_surface_queue_dequeue(renderer->surface_queue, &surface);
-        assert(err == TBM_SURFACE_QUEUE_ERROR_NONE);
-
-        dst_image = pixman_image_from_tbm_surface(surface,
-                DS_BUFFER_DATA_PTR_ACCESS_WRITE);
-
-        if (renderer->bg_image) {
-            pixman_image_composite32(PIXMAN_OP_SRC,
-                    renderer->bg_image,
-                    NULL,
-                    dst_image,
-                    0, 0, 0, 0, 0, 0,
-                    pixman_image_get_width(dst_image),
-                    pixman_image_get_height(dst_image));
-        }
-
-#ifdef USE_CURSOR
-        if (renderer->cursor_image) {
-            pixman_image_composite32(PIXMAN_OP_OVER,
-                    renderer->cursor_image,
-                    NULL,
-                    dst_image,
-                    0, 0, 0, 0,
-                    renderer->cursor.x, renderer->cursor.y,
-                    renderer->cursor.w, renderer->cursor.h);
-        }
-#endif
-
-        wl_list_for_each_safe(texture, texture_tmp, &renderer->textures, link) {
-            ds_dbg("Draw texture(%p)", texture);
-            pixman_image_composite32(PIXMAN_OP_OVER,
-                    texture->image,
-                    NULL,
-                    dst_image,
-                    0, 0, 0, 0,
-                    texture->x, texture->y,
-                    pixman_image_get_width(texture->image),
-                    pixman_image_get_height(texture->image));
-            texture_destroy(texture);
-        }
-        pixman_image_unref(dst_image);
-
-        err = tbm_surface_queue_enqueue(renderer->surface_queue, surface);
-        assert(err == TBM_SURFACE_QUEUE_ERROR_NONE);
-
-        renderer->damaged = false;
-
-        ds_dbg("<< END DRAW");
-    }
-
-    pthread_mutex_unlock(&renderer->mutex);
-
-    return NULL;
-}
-
-static void
-texture_destroy(struct tinyds_texture *texture)
-{
-    pixman_image_unref(texture->image);
-    wl_list_remove(&texture->link);
-    free(texture);
-}
diff --git a/examples/tinyds-tdm-renderer.h b/examples/tinyds-tdm-renderer.h
deleted file mode 100644 (file)
index 943e2be..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef EXAMPLES_TINYDS_TDM_RENDERER_H
-#define EXAMPLES_TINYDS_TDM_RENDERER_H
-
-#include <pthread.h>
-#include <pixman.h>
-#include <tbm_surface_queue.h>
-#include <tbm_surface.h>
-#include <wayland-server.h>
-
-#define USE_CURSOR
-
-struct tinyds_renderer
-{
-    tbm_surface_queue_h surface_queue;
-
-    struct wl_list textures;
-
-    pthread_t worker_thread;
-    pthread_mutex_t mutex;
-    pthread_cond_t cond;
-
-    pixman_image_t *bg_image;
-
-#ifdef USE_CURSOR
-    pixman_image_t *cursor_image;
-
-     struct {
-         uint32_t x, y, w, h;
-     } cursor;
-#endif
-
-    bool damaged;
-    bool destroying;
-};
-
-struct tinyds_texture
-{
-    struct tinyds_renderer *renderer;
-    pixman_image_t *image;
-    tbm_surface_h surface;
-
-    struct wl_list link;
-    struct wl_listener buffer_destroy;
-
-    int x, y;
-};
-
-bool init_renderer(struct tinyds_renderer *renderer);
-void fini_renderer(struct tinyds_renderer *renderer);
-void renderer_set_surface_queue(struct tinyds_renderer *renderer,
-        void *surface_queue);
-void renderer_set_bg_color(struct tinyds_renderer *renderer,
-        uint8_t r, uint8_t g, uint8_t b);
-void renderer_add_texture(struct tinyds_renderer *renderer,
-        tbm_surface_h tbm_surface, int x, int y);
-void renderer_draw(struct tinyds_renderer *renderer);
-
-#ifdef USE_CURSOR
-void renderer_cursor_create(struct tinyds_renderer *renderer,
-        uint8_t r, uint8_t g, uint8_t b, uint32_t width, uint32_t height);
-void renderer_cursor_destroy(struct tinyds_renderer *renderer);
-void
-renderer_cursor_update(struct tinyds_renderer *renderer,
-        uint32_t x, uint32_t y);
-#endif
-
-#endif
index 0359ec017620c13a4bb2c8f701f71e174f3d81b3..413cebdcffbac4b44f9d2494974cf6654306a452 100644 (file)
@@ -5,7 +5,7 @@
 
 #ifdef USE_TDM_BUFFER_QUEUE
 #include "pixman-tbm-helper.h"
-#include "tinyds-tdm-renderer.h"
+#include "tinyds-renderer.h"
 #else
 #include <libds/swapchain.h>
 #endif