util/global: remove wl_display arg from wlr_global_destroy_safe

Since [1], we can get the wl_display directly from the wl_global.

[1]: 2b22160fb6
This commit is contained in:
Simon Ser 2021-06-29 19:12:50 +02:00 committed by Simon Zeni
parent 4c59f7d46a
commit 4377b55292
5 changed files with 6 additions and 7 deletions

View File

@ -9,7 +9,6 @@
* Globals that are created and destroyed on the fly need special handling to * 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. * prevent race conditions with wl_registry. Use this function to destroy them.
*/ */
void wlr_global_destroy_safe(struct wl_global *global, void wlr_global_destroy_safe(struct wl_global *global);
struct wl_display *display);
#endif #endif

View File

@ -140,7 +140,7 @@ void wlr_output_destroy_global(struct wlr_output *output) {
wl_list_init(wl_resource_get_link(resource)); 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; output->global = NULL;
} }

View File

@ -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->pointer_state.default_grab);
free(seat->keyboard_state.default_grab); free(seat->keyboard_state.default_grab);
free(seat->touch_state.default_grab); free(seat->touch_state.default_grab);

View File

@ -127,7 +127,7 @@ static void drm_lease_device_v1_destroy(
} }
wl_list_remove(&device->link); wl_list_remove(&device->link);
wlr_global_destroy_safe(device->global, device->manager->display); wlr_global_destroy_safe(device->global);
free(device); free(device);
} }

View File

@ -14,8 +14,7 @@ static int destroy_global(void *_data) {
return 0; return 0;
} }
void wlr_global_destroy_safe(struct wl_global *global, void wlr_global_destroy_safe(struct wl_global *global) {
struct wl_display *display) {
// Don't destroy the global immediately. If the global has been created // 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. // 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 // 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_remove(global);
wl_global_set_user_data(global, NULL); // safety net 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 wl_event_loop *event_loop = wl_display_get_event_loop(display);
struct destroy_global_data *data = calloc(1, sizeof(*data)); struct destroy_global_data *data = calloc(1, sizeof(*data));
if (data == NULL) { if (data == NULL) {