ecore-wl2: Cleanup dnd drag and selection sources when we delete an
input Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
a4b28e0375
commit
a084891013
|
@ -37,19 +37,6 @@ static const struct wl_data_offer_listener _offer_listener =
|
||||||
_offer_cb_offer
|
_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
|
static void
|
||||||
_source_cb_target_free(void *data EINA_UNUSED, void *event)
|
_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
|
EAPI void
|
||||||
ecore_wl2_dnd_drag_types_set(Ecore_Wl2_Input *input, const char **types)
|
ecore_wl2_dnd_drag_types_set(Ecore_Wl2_Input *input, const char **types)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1268,8 +1268,8 @@ _ecore_wl2_input_del(Ecore_Wl2_Input *input)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input->data.source) wl_data_source_destroy(input->data.source);
|
if (input->data.source) wl_data_source_destroy(input->data.source);
|
||||||
/* TODO: cleanup dnd */
|
if (input->drag.source) _ecore_wl2_dnd_del(input->drag.source);
|
||||||
/* TODO: cleanup selection */
|
if (input->selection.source) _ecore_wl2_dnd_del(input->selection.source);
|
||||||
if (input->data.device) wl_data_device_destroy(input->data.device);
|
if (input->data.device) wl_data_device_destroy(input->data.device);
|
||||||
|
|
||||||
if (input->xkb.state) xkb_state_unref(input->xkb.state);
|
if (input->xkb.state) xkb_state_unref(input->xkb.state);
|
||||||
|
|
|
@ -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_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_drop(Ecore_Wl2_Input *input);
|
||||||
void _ecore_wl2_dnd_selection(Ecore_Wl2_Input *input, struct wl_data_offer *offer);
|
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
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue