summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2020-04-14 02:56:47 +0200
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2020-04-14 11:56:15 +0200
commit96288c7683e7f252e9bcb113818b8cda8a23c31a (patch)
tree5b9cb9ff8895c894ddadfda09e77c21de5971afe
parent0122f4c7b84f770551f66720a3268c30ee486faf (diff)
downloadefl-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.c15
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