2011/9/21 Kim Yunhan <[email protected]>:
> 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)
>
> ------------------------------------------------------------------------------
> 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
>
>

There is a c_ares[1]  support for asynchronous DNS resolution in
ecore_con iirc. Why not using it ?

[1] http://c-ares.haxx.se/

-- 
Nicolas Aguirre
Mail: [email protected]
Web: http://enna.geexbox.org
Blog: http://dev.enlightenment.fr/~captainigloo/

------------------------------------------------------------------------------
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

Reply via email to