diff --git a/include/util/global.h b/include/util/global.h index ea0fda83..1c979ab1 100644 --- a/include/util/global.h +++ b/include/util/global.h @@ -9,7 +9,6 @@ * Globals that are created and destroyed on the fly need special handling to * prevent race conditions with wl_registry. Use this function to destroy them. */ -void wlr_global_destroy_safe(struct wl_global *global, - struct wl_display *display); +void wlr_global_destroy_safe(struct wl_global *global); #endif diff --git a/types/output/output.c b/types/output/output.c index 900cfda6..85590ab6 100644 --- a/types/output/output.c +++ b/types/output/output.c @@ -140,7 +140,7 @@ void wlr_output_destroy_global(struct wlr_output *output) { wl_list_init(wl_resource_get_link(resource)); } - wlr_global_destroy_safe(output->global, output->display); + wlr_global_destroy_safe(output->global); output->global = NULL; } diff --git a/types/seat/wlr_seat.c b/types/seat/wlr_seat.c index f9314744..4933133c 100644 --- a/types/seat/wlr_seat.c +++ b/types/seat/wlr_seat.c @@ -191,7 +191,7 @@ void wlr_seat_destroy(struct wlr_seat *seat) { } } - wlr_global_destroy_safe(seat->global, seat->display); + wlr_global_destroy_safe(seat->global); free(seat->pointer_state.default_grab); free(seat->keyboard_state.default_grab); free(seat->touch_state.default_grab); diff --git a/types/wlr_drm_lease_v1.c b/types/wlr_drm_lease_v1.c index 7063e0d3..7cb9974d 100644 --- a/types/wlr_drm_lease_v1.c +++ b/types/wlr_drm_lease_v1.c @@ -127,7 +127,7 @@ static void drm_lease_device_v1_destroy( } wl_list_remove(&device->link); - wlr_global_destroy_safe(device->global, device->manager->display); + wlr_global_destroy_safe(device->global); free(device); } diff --git a/util/global.c b/util/global.c index a0d84ed3..fa99a994 100644 --- a/util/global.c +++ b/util/global.c @@ -14,8 +14,7 @@ static int destroy_global(void *_data) { return 0; } -void wlr_global_destroy_safe(struct wl_global *global, - struct wl_display *display) { +void wlr_global_destroy_safe(struct wl_global *global) { // Don't destroy the global immediately. If the global has been created // recently, clients might try to bind to it after we've destroyed it. // Instead, remove the global so that clients stop seeing it and wait an @@ -25,6 +24,7 @@ void wlr_global_destroy_safe(struct wl_global *global, wl_global_remove(global); wl_global_set_user_data(global, NULL); // safety net + struct wl_display *display = wl_global_get_display(global); struct wl_event_loop *event_loop = wl_display_get_event_loop(display); struct destroy_global_data *data = calloc(1, sizeof(*data)); if (data == NULL) {