forked from enlightenment/efl
ecore-wl2: add functions for proxying a selection receive externally
in some cases (e.g,, x11 bridged selections) it is necessary to use alternate means when transferring a selection, and so performing the entire piped receive is not necessary. instead, extend the lifetime of the data offer until the proxied receive has completed @feature
This commit is contained in:
parent
8afdbaba48
commit
68a3f43d1e
|
@ -1411,6 +1411,28 @@ EAPI void ecore_wl2_offer_accept(Ecore_Wl2_Offer *offer, const char *mime_type);
|
||||||
*/
|
*/
|
||||||
EAPI void ecore_wl2_offer_receive(Ecore_Wl2_Offer *offer, char *mime);
|
EAPI void ecore_wl2_offer_receive(Ecore_Wl2_Offer *offer, char *mime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request the data from this offer on an externally managed fd.
|
||||||
|
* The event ECORE_WL2_EVENT_OFFER_DATA_READY is called when the data is available.
|
||||||
|
* There offer will be not destroyed as long as requested data is not emitted by the event.
|
||||||
|
*
|
||||||
|
* @param offer the offer to use
|
||||||
|
* @param mime the mimetype to receive
|
||||||
|
* @param fd the fd to pass for receiving
|
||||||
|
*
|
||||||
|
* @since 1.20
|
||||||
|
*/
|
||||||
|
EAPI void ecore_wl2_offer_proxy_receive(Ecore_Wl2_Offer *offer, const char *mime, int fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* End the use of a proxy received offer. This may invalidate the offer object
|
||||||
|
*
|
||||||
|
* @param offer the offer
|
||||||
|
*
|
||||||
|
* @since 1.20
|
||||||
|
*/
|
||||||
|
EAPI void ecore_wl2_offer_proxy_receive_end(Ecore_Wl2_Offer *offer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the given offer supports the given mimetype
|
* Check if the given offer supports the given mimetype
|
||||||
*
|
*
|
||||||
|
|
|
@ -54,6 +54,7 @@ struct _Ecore_Wl2_Offer
|
||||||
Eina_List *reads;
|
Eina_List *reads;
|
||||||
int ref;
|
int ref;
|
||||||
unsigned int window_id;
|
unsigned int window_id;
|
||||||
|
Eina_Bool proxied : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -861,6 +862,26 @@ ecore_wl2_offer_receive(Ecore_Wl2_Offer *offer, char *mime)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_wl2_offer_proxy_receive(Ecore_Wl2_Offer *offer, const char *mime, int fd)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(offer);
|
||||||
|
|
||||||
|
if (!offer->proxied) offer->ref++;
|
||||||
|
offer->proxied = 1;
|
||||||
|
wl_data_offer_receive(offer->offer, mime, fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_wl2_offer_proxy_receive_end(Ecore_Wl2_Offer *offer)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(offer);
|
||||||
|
|
||||||
|
if (!offer->proxied) return;
|
||||||
|
offer->proxied = 0;
|
||||||
|
_ecore_wl2_offer_unref(offer);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_wl2_offer_finish(Ecore_Wl2_Offer *offer)
|
ecore_wl2_offer_finish(Ecore_Wl2_Offer *offer)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue