Avoid getting stuck into ecore main loop dispatchers.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 29 May 2009 16:33:00 +0000 (16:33 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 29 May 2009 16:33:00 +0000 (16:33 +0000)
commit2ce4f3bf13b046d7765edd8ac6b5d6a74ee7c7e6
tree5d897134a3080bdf8e71eb8a3a37613c154dc48a
parent7610628ee9f6881ed79ba1c70eaac2faf79e1d1c
Avoid getting stuck into ecore main loop dispatchers.

The old way we could run endless with the following case:

   int my_buggy_idler(void *data) {
       ecore_idler_add(my_buggy_idler, NULL);
       return 0;
   }

since it would append to that list, then the list would never end.

Now we just dispatch up to the last know idler, then go back to
regular processing, if nothing happens we'll be back to dispatch
again.

I tested it here and works fine, but might show issues with ecore
enterers/exiters of some applications that rely on the old (broken)
behavior.

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@40847 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33
src/lib/ecore/ecore_idle_enterer.c
src/lib/ecore/ecore_idle_exiter.c
src/lib/ecore/ecore_idler.c