diff --git a/src/lib/ecore_wl2/ecore_wl2_dnd.c b/src/lib/ecore_wl2/ecore_wl2_dnd.c index 7390eb804b..13cc87b95e 100644 --- a/src/lib/ecore_wl2/ecore_wl2_dnd.c +++ b/src/lib/ecore_wl2/ecore_wl2_dnd.c @@ -37,19 +37,6 @@ static const struct wl_data_offer_listener _offer_listener = _offer_cb_offer }; -static void -_ecore_wl2_dnd_del(Ecore_Wl2_Dnd_Source *source) -{ - if (!source) return; - source->refcount--; - if (source->refcount == 0) - { - wl_data_offer_destroy(source->offer); - wl_array_release(&source->types); - free(source); - } -} - static void _source_cb_target_free(void *data EINA_UNUSED, void *event) { @@ -410,6 +397,19 @@ _ecore_wl2_dnd_selection(Ecore_Wl2_Input *input, struct wl_data_offer *offer) } } +void +_ecore_wl2_dnd_del(Ecore_Wl2_Dnd_Source *source) +{ + if (!source) return; + source->refcount--; + if (source->refcount == 0) + { + wl_data_offer_destroy(source->offer); + wl_array_release(&source->types); + free(source); + } +} + EAPI void ecore_wl2_dnd_drag_types_set(Ecore_Wl2_Input *input, const char **types) { diff --git a/src/lib/ecore_wl2/ecore_wl2_input.c b/src/lib/ecore_wl2/ecore_wl2_input.c index c73908ce82..1acbf3c5a2 100644 --- a/src/lib/ecore_wl2/ecore_wl2_input.c +++ b/src/lib/ecore_wl2/ecore_wl2_input.c @@ -1268,8 +1268,8 @@ _ecore_wl2_input_del(Ecore_Wl2_Input *input) } if (input->data.source) wl_data_source_destroy(input->data.source); - /* TODO: cleanup dnd */ - /* TODO: cleanup selection */ + if (input->drag.source) _ecore_wl2_dnd_del(input->drag.source); + if (input->selection.source) _ecore_wl2_dnd_del(input->selection.source); if (input->data.device) wl_data_device_destroy(input->data.device); if (input->xkb.state) xkb_state_unref(input->xkb.state); diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index eac52db870..ed3f24630f 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -239,5 +239,6 @@ void _ecore_wl2_dnd_leave(Ecore_Wl2_Input *input); void _ecore_wl2_dnd_motion(Ecore_Wl2_Input *input, int x, int y, unsigned int timestamp); void _ecore_wl2_dnd_drop(Ecore_Wl2_Input *input); void _ecore_wl2_dnd_selection(Ecore_Wl2_Input *input, struct wl_data_offer *offer); +void _ecore_wl2_dnd_del(Ecore_Wl2_Dnd_Source *source); #endif