aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzccrs <zccrs@live.com>2021-05-28 14:15:40 +0800
committerSimon Ser <contact@emersion.fr>2021-06-19 10:04:35 +0200
commitdc17ecd2365eaf9b5cb8f0193cdcb3991e788b4e (patch)
treef2f4e7c2b2eef29e5ab65928cd1f7fd9891e35c7
parentfdc40e071ed103d6bdc03fa6181dedef296b0509 (diff)
render/pixman: add wlr_*_is_pixman and wlr_pixman_texture_get_image
Add the following functions: - wlr_renderer_is_pixman - wlr_texture_is_pixman - wlr_pixman_texture_get_image
-rw-r--r--include/wlr/render/pixman.h5
-rw-r--r--render/pixman/renderer.c17
2 files changed, 20 insertions, 2 deletions
diff --git a/include/wlr/render/pixman.h b/include/wlr/render/pixman.h
index 713e431d..f417efa2 100644
--- a/include/wlr/render/pixman.h
+++ b/include/wlr/render/pixman.h
@@ -9,9 +9,14 @@
#ifndef WLR_RENDER_PIXMAN_H
#define WLR_RENDER_PIXMAN_H
+#include <pixman.h>
#include <wlr/backend.h>
#include <wlr/render/wlr_renderer.h>
struct wlr_renderer *wlr_pixman_renderer_create(void);
+bool wlr_renderer_is_pixman(struct wlr_renderer *wlr_renderer);
+bool wlr_texture_is_pixman(struct wlr_texture *texture);
+pixman_image_t *wlr_pixman_texture_get_image(struct wlr_texture *wlr_texture);
+
#endif
diff --git a/render/pixman/renderer.c b/render/pixman/renderer.c
index 85df25a0..56960fc2 100644
--- a/render/pixman/renderer.c
+++ b/render/pixman/renderer.c
@@ -12,9 +12,13 @@
static const struct wlr_renderer_impl renderer_impl;
+bool wlr_renderer_is_pixman(struct wlr_renderer *wlr_renderer) {
+ return wlr_renderer->impl == &renderer_impl;
+}
+
static struct wlr_pixman_renderer *get_renderer(
struct wlr_renderer *wlr_renderer) {
- assert(wlr_renderer->impl == &renderer_impl);
+ assert(wlr_renderer_is_pixman(wlr_renderer));
return (struct wlr_pixman_renderer *)wlr_renderer;
}
@@ -31,9 +35,13 @@ static struct wlr_pixman_buffer *get_buffer(
static const struct wlr_texture_impl texture_impl;
+bool wlr_texture_is_pixman(struct wlr_texture *texture) {
+ return texture->impl == &texture_impl;
+}
+
static struct wlr_pixman_texture *get_texture(
struct wlr_texture *wlr_texture) {
- assert(wlr_texture->impl == &texture_impl);
+ assert(wlr_texture_is_pixman(wlr_texture));
return (struct wlr_pixman_texture *)wlr_texture;
}
@@ -554,3 +562,8 @@ struct wlr_renderer *wlr_pixman_renderer_create(void) {
return &renderer->wlr_renderer;
}
+
+pixman_image_t *wlr_pixman_texture_get_image(struct wlr_texture *wlr_texture) {
+ struct wlr_pixman_texture *texture = get_texture(wlr_texture);
+ return texture->image;
+}