Hello!
elm_map uses Ecore Con with CURL.
I tested elm_map many times on my device.
But sometimes UI interaction is held when data connection is poor.
So I tried to debug and I found that this code lead to hold an Ecore main
loop.
----------------------------------------------
In ecore_con_url.c
while (curl_multi_perform(_curlm, &still_running) ==
CURLM_CALL_MULTI_PERFORM) ;
----------------------------------------------
curl_multi_perform() is CURL's asynchronous API.
But above code hold an Ecore main loop.
When it takes long time in libcurl, UI interaction is delayed.
For example, If you have poor data connection.
libcurl is trying to resolve DNS in this step.
But it have to wait until timeout.
At that time it looks like being locked.
So I write a patch for fixing it.
Index: ecore_con_url.c
===================================================================
--- ecore_con_url.c (revision 63518)
+++ ecore_con_url.c (working copy)
@@ -1364,7 +1364,10 @@
url_con->active = EINA_TRUE;
curl_multi_add_handle(_curlm, url_con->curl_easy);
/* This one can't be stopped, or the download never start. */
- while (curl_multi_perform(_curlm, &still_running) ==
CURLM_CALL_MULTI_PERFORM) ;
+ while (curl_multi_perform(_curlm, &still_running) ==
CURLM_CALL_MULTI_PERFORM)
+ {
+ ecore_main_loop_iterate();
+ }
completed_immediately = _ecore_con_url_process_completed_jobs(url_con);
I am not sure that this patch is right because I don't understand Ecore and
libcurl deeply.
So I need your help. :)
Please review this patch.
Best regards,
Yunhan Kim (spbear)
Index: ecore_con_url.c
===================================================================
--- ecore_con_url.c (revision 63518)
+++ ecore_con_url.c (working copy)
@@ -1364,7 +1364,10 @@
url_con->active = EINA_TRUE;
curl_multi_add_handle(_curlm, url_con->curl_easy);
/* This one can't be stopped, or the download never start. */
- while (curl_multi_perform(_curlm, &still_running) ==
CURLM_CALL_MULTI_PERFORM) ;
+ while (curl_multi_perform(_curlm, &still_running) ==
CURLM_CALL_MULTI_PERFORM)
+ {
+ ecore_main_loop_iterate();
+ }
completed_immediately = _ecore_con_url_process_completed_jobs(url_con);
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel