summaryrefslogtreecommitdiff
path: root/src/platform/wayland/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/wayland/buffer.c')
-rw-r--r--src/platform/wayland/buffer.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/platform/wayland/buffer.c b/src/platform/wayland/buffer.c
index b906f4f..874cc76 100644
--- a/src/platform/wayland/buffer.c
+++ b/src/platform/wayland/buffer.c
@@ -182,10 +182,13 @@ int apply_pending_geometry(struct wayland_surface *w)
w->buffers[i].presented = false;
}
publish_surface_scale(w);
- if (w->cbs->configure && (resized || rescaled))
- w->cbs->configure(&w->base, (struct yasl_geometry){
+ if (resized || rescaled) {
+ yasl_surface_notify_configure(&w->base, (struct yasl_geometry){
.size = { .x = width, .y = height }, .scale_120 = w->scale_120,
- }, w->ud);
+ });
+ if (w->closed || w->destroyed)
+ return -1;
+ }
return 0;
}
@@ -525,9 +528,11 @@ void surface_draw_frame(struct wayland_surface *w)
};
w->frame_active = true;
w->frame_presented = false;
- w->cbs->draw(&w->base, &w->frame, w->ud);
+ yasl_surface_draw(&w->base, &w->frame);
+ if (w->closed || w->destroyed)
+ return;
w->frame_active = false;
- if (!w->closed && !w->frame_presented)
+ if (!w->frame_presented)
w->frames_skipped++;
}