about summary refs log tree commit diff
path: root/drw.c
diff options
context:
space:
mode:
Diffstat (limited to 'drw.c')
-rw-r--r--drw.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drw.c b/drw.c
index 62ca1ce..7941a8e 100644
--- a/drw.c
+++ b/drw.c
@@ -29,8 +29,8 @@ static struct wl_callback_listener frame_listener = {
 
 void
 drwsurf_flip(struct drwsurf *ds) {
-	struct wl_callback *cb = wl_surface_frame(ds->surf);
-	wl_callback_add_listener(cb, &frame_listener, (void *)ds);
+	ds->cb = wl_surface_frame(ds->surf);
+	wl_callback_add_listener(ds->cb, &frame_listener, (void *)ds);
 
 	wl_surface_attach(ds->surf, ds->buf, 0, 0);
 	wl_surface_commit(ds->surf);
@@ -40,6 +40,7 @@ void
 surface_frame_callback(void *data, struct wl_callback *cb, uint32_t time) {
 	struct drwsurf *ds = (struct drwsurf *)data;
 	wl_callback_destroy(cb);
+	ds->cb = NULL;
 
 	drwsurf_flip(ds);
 }