aboutsummaryrefslogtreecommitdiff
path: root/backend/drm
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2022-05-25 15:55:41 +0200
committerSimon Ser <contact@emersion.fr>2022-05-25 15:55:41 +0200
commitf91f38b79af2bcd091da7347e83066dea679a1bd (patch)
tree7bda8fd144699a39af71317ab377c3c805aa7a26 /backend/drm
parente59f4d4ffa9ac2c7add84278b716b7e1c7ac74f3 (diff)
backend/drm: remove wlr_drm_surface.{width,height}
This information is stored in wlr_swapchain, no need to duplicate it.
Diffstat (limited to 'backend/drm')
-rw-r--r--backend/drm/renderer.c40
1 files changed, 18 insertions, 22 deletions
diff --git a/backend/drm/renderer.c b/backend/drm/renderer.c
index 792de938..60155313 100644
--- a/backend/drm/renderer.c
+++ b/backend/drm/renderer.c
@@ -48,47 +48,43 @@ void finish_drm_renderer(struct wlr_drm_renderer *renderer) {
wlr_renderer_destroy(renderer->wlr_rend);
}
+static void finish_drm_surface(struct wlr_drm_surface *surf) {
+ if (!surf || !surf->renderer) {
+ return;
+ }
+
+ wlr_swapchain_destroy(surf->swapchain);
+
+ memset(surf, 0, sizeof(*surf));
+}
+
bool init_drm_surface(struct wlr_drm_surface *surf,
- struct wlr_drm_renderer *renderer, uint32_t width, uint32_t height,
+ struct wlr_drm_renderer *renderer, int width, int height,
const struct wlr_drm_format *drm_format) {
- if (surf->width == width && surf->height == height) {
+ if (surf->swapchain->width == width && surf->swapchain->height == height) {
return true;
}
- surf->renderer = renderer;
- surf->width = width;
- surf->height = height;
-
- wlr_swapchain_destroy(surf->swapchain);
- surf->swapchain = NULL;
+ finish_drm_surface(surf);
surf->swapchain = wlr_swapchain_create(renderer->allocator, width, height,
drm_format);
if (surf->swapchain == NULL) {
wlr_log(WLR_ERROR, "Failed to create swapchain");
- memset(surf, 0, sizeof(*surf));
return false;
}
- return true;
-}
-
-static void finish_drm_surface(struct wlr_drm_surface *surf) {
- if (!surf || !surf->renderer) {
- return;
- }
-
- wlr_swapchain_destroy(surf->swapchain);
+ surf->renderer = renderer;
- memset(surf, 0, sizeof(*surf));
+ return true;
}
struct wlr_buffer *drm_surface_blit(struct wlr_drm_surface *surf,
struct wlr_buffer *buffer) {
struct wlr_renderer *renderer = surf->renderer->wlr_rend;
- if (surf->width != (uint32_t)buffer->width ||
- surf->height != (uint32_t)buffer->height) {
+ if (surf->swapchain->width != buffer->width ||
+ surf->swapchain->height != buffer->height) {
wlr_log(WLR_ERROR, "Surface size doesn't match buffer size");
return NULL;
}
@@ -106,7 +102,7 @@ struct wlr_buffer *drm_surface_blit(struct wlr_drm_surface *surf,
float mat[9];
wlr_matrix_identity(mat);
- wlr_matrix_scale(mat, surf->width, surf->height);
+ wlr_matrix_scale(mat, surf->swapchain->width, surf->swapchain->height);
if (!wlr_renderer_begin_with_buffer(renderer, dst)) {
wlr_buffer_unlock(dst);