diff --git a/types/wlr_linux_drm_syncobj_v1.c b/types/wlr_linux_drm_syncobj_v1.c index b9865dcce..6d9188777 100644 --- a/types/wlr_linux_drm_syncobj_v1.c +++ b/types/wlr_linux_drm_syncobj_v1.c @@ -387,6 +387,7 @@ static void manager_handle_import_timeline(struct wl_client *client, struct wl_resource *timeline_resource = wl_resource_create(client, &wp_linux_drm_syncobj_timeline_v1_interface, version, id); if (timeline_resource == NULL) { + wlr_drm_syncobj_timeline_unref(timeline); wl_resource_post_no_memory(resource); return; } @@ -545,7 +546,7 @@ bool wlr_linux_drm_syncobj_v1_state_add_release_point( bool wlr_linux_drm_syncobj_v1_state_add_release_from_implicit_sync( struct wlr_linux_drm_syncobj_surface_v1_state *state, struct wlr_buffer *buffer, struct wl_event_loop *event_loop) { - if (state->release_merger != NULL) { + if (state->release_merger == NULL) { return true; } return wlr_drm_syncobj_merger_add_dmabuf(state->release_merger, buffer, event_loop);