Enlightenment CVS committal Author : raster Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore Modified Files: ecore_main.c Log Message: some defines, a fix for ecores main loop so if an idle enterer generates events we dont sit and wait on timers or fd's before processing them. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/ecore_main.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- ecore_main.c 20 Oct 2004 17:51:27 -0000 1.14 +++ ecore_main.c 8 Nov 2004 00:08:25 -0000 1.15 @@ -500,80 +500,83 @@ in_main_loop--; return; } - /* init flags */ - have_event = have_signal = 0; - next_time = _ecore_timer_next_get(); - /* no timers */ - if (next_time < 0) + if (!_ecore_event_exist()) { - /* no idlers */ - if (!_ecore_idler_exist()) + /* init flags */ + have_event = have_signal = 0; + next_time = _ecore_timer_next_get(); + /* no timers */ + if (next_time < 0) { - int ret; - - ret = _ecore_main_select(-1); - if (ret > 0) have_event = 1; -#ifndef WIN32 - if (_ecore_signal_count_get() > 0) have_signal = 1; -#endif - } - /* idlers */ - else - { - for (;;) + /* no idlers */ + if (!_ecore_idler_exist()) { int ret; - if (!_ecore_idler_call()) goto start_loop; - if (_ecore_event_exist()) break; - ret = _ecore_main_select(0); + ret = _ecore_main_select(-1); if (ret > 0) have_event = 1; #ifndef WIN32 if (_ecore_signal_count_get() > 0) have_signal = 1; #endif - if (have_event || have_signal) break; - next_time = _ecore_timer_next_get(); - if (next_time >= 0) goto start_loop; - if (do_quit) break; + } + /* idlers */ + else + { + for (;;) + { + int ret; + + if (!_ecore_idler_call()) goto start_loop; + if (_ecore_event_exist()) break; + ret = _ecore_main_select(0); + if (ret > 0) have_event = 1; +#ifndef WIN32 + if (_ecore_signal_count_get() > 0) have_signal = 1; +#endif + if (have_event || have_signal) break; + next_time = _ecore_timer_next_get(); + if (next_time >= 0) goto start_loop; + if (do_quit) break; + } } } - } - /* timers */ - else - { - /* no idlers */ - if (!_ecore_idler_exist()) - { - int ret; - - ret = _ecore_main_select(next_time); - if (ret > 0) have_event = 1; -#ifndef WIN32 - if (_ecore_signal_count_get() > 0) have_signal = 1; -#endif - } - /* idlers */ + /* timers */ else { - for (;;) + /* no idlers */ + if (!_ecore_idler_exist()) { - double cur_time, t; int ret; - if (!_ecore_idler_call()) goto start_loop; - if (_ecore_event_exist()) break; - ret = _ecore_main_select(0); + ret = _ecore_main_select(next_time); if (ret > 0) have_event = 1; #ifndef WIN32 if (_ecore_signal_count_get() > 0) have_signal = 1; #endif - if ((have_event) || (have_signal)) break; - cur_time = ecore_time_get(); - t = ecore_time_get() - cur_time; - if (t >= next_time) break; - next_time = _ecore_timer_next_get(); - if (next_time < 0) goto start_loop; - if (do_quit) break; + } + /* idlers */ + else + { + for (;;) + { + double cur_time, t; + int ret; + + if (!_ecore_idler_call()) goto start_loop; + if (_ecore_event_exist()) break; + ret = _ecore_main_select(0); + if (ret > 0) have_event = 1; +#ifndef WIN32 + if (_ecore_signal_count_get() > 0) have_signal = 1; +#endif + if ((have_event) || (have_signal)) break; + cur_time = ecore_time_get(); + t = ecore_time_get() - cur_time; + if (t >= next_time) break; + next_time = _ecore_timer_next_get(); + if (next_time < 0) goto start_loop; + if (do_quit) break; + } } } } ------------------------------------------------------- This SF.Net email is sponsored by: Sybase ASE Linux Express Edition - download now for FREE LinuxWorld Reader's Choice Award Winner for best database on Linux. http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs