diff --git a/src/video/wayland/SDL_waylanddatamanager.c b/src/video/wayland/SDL_waylanddatamanager.c index 8de4cdddf..0f2d75082 100644 --- a/src/video/wayland/SDL_waylanddatamanager.c +++ b/src/video/wayland/SDL_waylanddatamanager.c @@ -396,8 +396,9 @@ Wayland_data_device_clear_selection(SDL_WaylandDataDevice *data_device) if (data_device == NULL || data_device->data_device == NULL) { status = SDL_SetError("Invalid Data Device"); - } else if (data_device->selection_source != 0) { + } else if (data_device->selection_source != NULL) { wl_data_device_set_selection(data_device->data_device, NULL, 0); + Wayland_data_source_destroy(data_device->selection_source); data_device->selection_source = NULL; } return status; @@ -444,6 +445,9 @@ Wayland_data_device_set_selection(SDL_WaylandDataDevice *data_device, source->source, data_device->selection_serial); } + if (data_device->selection_source != NULL) { + Wayland_data_source_destroy(data_device->selection_source); + } data_device->selection_source = source; } }