diff options
author | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2020-04-14 02:56:47 +0200 |
---|---|---|
committer | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2020-04-14 11:56:15 +0200 |
commit | 96288c7683e7f252e9bcb113818b8cda8a23c31a (patch) | |
tree | 5b9cb9ff8895c894ddadfda09e77c21de5971afe | |
parent | 0122f4c7b84f770551f66720a3268c30ee486faf (diff) | |
download | efl-96288c7683e7f252e9bcb113818b8cda8a23c31a.tar.gz |
ecore_evas_x: reject the promise instead of return
this is needed in order to tell the API user that this is not going to
be completed.
Differential Revision: https://phab.enlightenment.org/D11700
-rw-r--r-- | src/modules/ecore_evas/engines/x/ecore_evas_x.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c index 5730037e11..a107f66a6d 100644 --- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -3862,12 +3862,7 @@ _deliver_content(Ecore_Evas *ee, Ecore_Evas_Engine_Data_X11 *edata, Ecore_Evas_S Eina_Content *result = NULL; Eina_Stringshare *mime_type = _decrypt_type(edata->selection_data[selection].requested_type); - if (!ev->data) - { - ERR("delivering NULL content"); - return; - } - + EINA_SAFETY_ON_NULL_GOTO(ev->data, err); if (eina_streq(mime_type, "text/uri-list")) { Ecore_X_Selection_Data_Files *files = ev->data; @@ -3918,7 +3913,7 @@ _deliver_content(Ecore_Evas *ee, Ecore_Evas_Engine_Data_X11 *edata, Ecore_Evas_S Ecore_X_Selection_Data *x11_data = ev->data; result = _create_deliveriy_content(x11_data->length, x11_data->data, mime_type); } - EINA_SAFETY_ON_NULL_RETURN(result); + EINA_SAFETY_ON_NULL_GOTO(result, err); //ensure that we deliver the correct type, we might have choosen a convertion before if (edata->selection_data[selection].later_conversion != mime_type) @@ -3934,6 +3929,12 @@ _deliver_content(Ecore_Evas *ee, Ecore_Evas_Engine_Data_X11 *edata, Ecore_Evas_S if (selection == ECORE_EVAS_SELECTION_BUFFER_DRAG_AND_DROP_BUFFER) ecore_x_dnd_send_finished(); + return; +err: + eina_promise_reject(edata->selection_data[selection].delivery, ecore_evas_no_selection); + + if (selection == ECORE_EVAS_SELECTION_BUFFER_DRAG_AND_DROP_BUFFER) + ecore_x_dnd_send_finished(); } static Eina_Bool |