From: Enlightenment S. <no-...@en...> - 2008-11-02 01:29:11
|
Log: new ecore_loop_time_get() call. also priority setting for spawning sub-procs Author: raster Date: 2008-11-01 18:29:08 -0700 (Sat, 01 Nov 2008) New Revision: 37389 Modified: trunk/ecore/src/lib/ecore/Ecore.h trunk/ecore/src/lib/ecore/ecore_exe.c trunk/ecore/src/lib/ecore/ecore_main.c trunk/ecore/src/lib/ecore/ecore_private.h trunk/ecore/src/lib/ecore/ecore_time.c Modified: trunk/ecore/src/lib/ecore/Ecore.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore.h 2008-11-02 01:10:10 UTC (rev 37388) +++ trunk/ecore/src/lib/ecore/Ecore.h 2008-11-02 01:29:08 UTC (rev 37389) @@ -77,6 +77,8 @@ #define ECORE_EVENT_SIGNAL_REALTIME 5 /**< Realtime signal event */ #define ECORE_EVENT_COUNT 6 +#define ECORE_EXE_PRIORITY_INHERIT 9999 + EAPI extern int ECORE_EXE_EVENT_ADD; /**< A child process has been added */ EAPI extern int ECORE_EXE_EVENT_DEL; /**< A child process has been deleted (it exited, naming consistant with the rest of ecore). */ EAPI extern int ECORE_EXE_EVENT_DATA; /**< Data from a child process. */ @@ -237,6 +239,8 @@ #ifndef _WIN32 + EAPI void ecore_exe_run_priority_set(int pri); + EAPI int ecore_exe_run_priority_get(void); EAPI Ecore_Exe *ecore_exe_run(const char *exe_cmd, const void *data); EAPI Ecore_Exe *ecore_exe_pipe_run(const char *exe_cmd, Ecore_Exe_Flags flags, const void *data); EAPI int ecore_exe_send(Ecore_Exe *exe, void *data, int size); @@ -281,7 +285,8 @@ EAPI void ecore_main_fd_handler_active_set(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_Flags flags); EAPI double ecore_time_get(void); - + EAPI double ecore_loop_time_get(void); + EAPI Ecore_Timer *ecore_timer_add(double in, int (*func) (void *data), const void *data); EAPI void *ecore_timer_del(Ecore_Timer *timer); EAPI void ecore_timer_interval_set(Ecore_Timer *timer, double in); Modified: trunk/ecore/src/lib/ecore/ecore_exe.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_exe.c 2008-11-02 01:10:10 UTC (rev 37388) +++ trunk/ecore/src/lib/ecore/ecore_exe.c 2008-11-02 01:29:08 UTC (rev 37389) @@ -207,7 +207,41 @@ * Functions that deal with spawned processes. */ +static int run_pri = ECORE_EXE_PRIORITY_INHERIT; + /** + * Sets the priority at which to launch processes + * + * This sets the priority of processes run by ecore_exe_run() and + * ecore_exe_pipe_run(). If set to ECORE_EXE_PRIORITY_INHERIT child processes + * inherit the priority of their parent. This is the default. + * + * @param pri value -20 to 19 or ECORE_EXE_PRIORITY_INHERIT + * @ingroup Ecore_Exe_Basic_Group + */ +EAPI void +ecore_exe_run_priority_set(int pri) +{ + run_pri = pri; +} + +/** + * Gets the priority at which to launch processes + * + * This gets ths priority of launched processes. See + * ecore_exe_run_priority_set() for details. This just returns the value set + * by this call. + * + * @return the value set by ecore_exe_run_priority_set() + * @ingroup Ecore_Exe_Basic_Group + */ +EAPI int +ecore_exe_run_priority_get(void) +{ + return run_pri; +} + +/** * Spawns a child process. * * This is now just a thin wrapper around ecore_exe_pipe_run() @@ -352,6 +386,13 @@ } else if (pid == 0) /* child */ { + if (run_pri != ECORE_EXE_PRIORITY_INHERIT) + { + if ((run_pri >= -20) && (run_pri <= 19)) + { + setpriority(PRIO_PROCESS, 0, run_pri); + } + } /* dup2 STDERR, STDIN, and STDOUT. dup2() allegedly closes the * second pipe if it's open. On the other hand, there was the * Great FD Leak Scare of '06, so let's be paranoid. */ Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2008-11-02 01:10:10 UTC (rev 37388) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2008-11-02 01:29:08 UTC (rev 37389) @@ -328,7 +328,7 @@ fdh = (Ecore_Fd_Handler *)l; if (!fdh->delete_me && fdh->prep_func) - fdh->prep_func (fdh->prep_data, fdh); + fdh->prep_func (fdh->prep_data, fdh); } for (l = (Ecore_List2 *)fd_handlers; l; l = l->next) { @@ -353,6 +353,7 @@ } if (_ecore_signal_count_get()) return -1; ret = select(max_fd + 1, &rfds, &wfds, &exfds, t); + _ecore_loop_time = ecore_time_get(); if (ret < 0) { if (errno == EINTR) return -1; @@ -531,7 +532,7 @@ { double now; - now = ecore_time_get(); + now = ecore_loop_time_get(); while (_ecore_timer_call(now)); _ecore_timer_cleanup(); } Modified: trunk/ecore/src/lib/ecore/ecore_private.h =================================================================== --- trunk/ecore/src/lib/ecore/ecore_private.h 2008-11-02 01:10:10 UTC (rev 37388) +++ trunk/ecore/src/lib/ecore/ecore_private.h 2008-11-02 01:29:08 UTC (rev 37389) @@ -16,6 +16,7 @@ #include <fcntl.h> #include <limits.h> #include <dirent.h> +#include <sys/resource.h> #include <eina_types.h> @@ -469,5 +470,6 @@ extern int _ecore_fps_debug; +extern double _ecore_loop_time; #endif Modified: trunk/ecore/src/lib/ecore/ecore_time.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_time.c 2008-11-02 01:10:10 UTC (rev 37388) +++ trunk/ecore/src/lib/ecore/ecore_time.c 2008-11-02 01:29:08 UTC (rev 37389) @@ -13,10 +13,15 @@ #include "Ecore.h" #include "ecore_private.h" + + /* FIXME: clock_gettime() is an option... */ /** * Retrieves the current system time as a floating point value in seconds. + * + * Also see ecore_loop_time_get(). + * * @return The number of seconds since 12.00AM 1st January 1970. * @ingroup Ecore_Time_Group */ @@ -32,3 +37,27 @@ # error "Your platform isn't supported yet" #endif } + +double _ecore_loop_time = -1.0; + +/** + * Retrieves the time at which the last loop stopped waiting for timeouts or events + * + * This gets the time (since Jan 1st, 1970, 12:00AM) that the main loop ceased + * waiting for timouts and/or events to come in or for signals or any other + * interrupt source. This should be considered a reference point fo all + * time based activity that should calculate its timepoint from the return + * of ecore_loop_time_get(). use this UNLESS you absolutely must get the + * current actual timepoint - then use ecore_time_get(). If this is called + * before any loop has ever been run, then it will call ecore_time_get() for + * you the first time and thus have an initial time reference. + * + * @return The number of seconds since 12.00AM 1st January 1970. + * @ingroup Ecore_Time_Group + */ +EAPI double +ecore_loop_time_get(void) +{ + if (_ecore_loop_time < 0.0) return ecore_time_get(); + return _ecore_loop_time; +} |
From: Enlightenment S. <no-...@en...> - 2008-11-02 02:19:23
|
Log: remove more useless ecore_time_get's Author: raster Date: 2008-11-01 19:19:18 -0700 (Sat, 01 Nov 2008) New Revision: 37392 Modified: trunk/ecore/src/lib/ecore/ecore_main.c trunk/ecore/src/lib/ecore/ecore_timer.c Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2008-11-02 01:33:50 UTC (rev 37391) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2008-11-02 02:19:18 UTC (rev 37392) @@ -645,17 +645,12 @@ { for (;;) { - double cur_time, t; - if (!_ecore_idler_call()) goto start_loop; if (_ecore_event_exist()) break; if (_ecore_main_select(0.0) > 0) have_event = 1; if (_ecore_main_win32_message(0.0) > 0) have_msg = 1; if (_ecore_signal_count_get() > 0) have_signal = 1; if (have_event || have_signal || have_msg) 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; Modified: trunk/ecore/src/lib/ecore/ecore_timer.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_timer.c 2008-11-02 01:33:50 UTC (rev 37391) +++ trunk/ecore/src/lib/ecore/ecore_timer.c 2008-11-02 02:19:18 UTC (rev 37392) @@ -289,7 +289,7 @@ Ecore_Timer *timer; if (!timers) return -1; - now = ecore_time_get(); + now = ecore_loop_time_get(); timer = (Ecore_Timer *)timers; while ((timer) && ((timer->delete_me) || (timer->just_added))) timer = (Ecore_Timer *)((Ecore_List2 *)timer)->next; |
From: Enlightenment S. <no-...@en...> - 2008-11-02 22:32:22
|
Log: move setup of loop time to init. Author: raster Date: 2008-11-02 14:32:18 -0800 (Sun, 02 Nov 2008) New Revision: 37424 Modified: trunk/ecore/src/lib/ecore/ecore.c trunk/ecore/src/lib/ecore/ecore_time.c Modified: trunk/ecore/src/lib/ecore/ecore.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore.c 2008-11-02 18:27:37 UTC (rev 37423) +++ trunk/ecore/src/lib/ecore/ecore.c 2008-11-02 22:32:18 UTC (rev 37424) @@ -73,6 +73,7 @@ if (_ecore_fps_debug) _ecore_fps_debug_init(); _ecore_signal_init(); _ecore_exe_init(); + _ecore_loop_time = ecore_time_get(); } return _ecore_init_count; Modified: trunk/ecore/src/lib/ecore/ecore_time.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_time.c 2008-11-02 18:27:37 UTC (rev 37423) +++ trunk/ecore/src/lib/ecore/ecore_time.c 2008-11-02 22:32:18 UTC (rev 37424) @@ -58,6 +58,5 @@ EAPI double ecore_loop_time_get(void) { - if (_ecore_loop_time < 0.0) return ecore_time_get(); return _ecore_loop_time; } |
From: Enlightenment S. <no-...@en...> - 2009-02-19 06:02:40
|
Log: eek. loop time is wrong when using idlers heavily... leads to jerkybobos. fix! Author: raster Date: 2009-02-18 22:02:35 -0800 (Wed, 18 Feb 2009) New Revision: 39087 Modified: trunk/ecore/src/lib/ecore/ecore_main.c Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2009-02-19 04:37:06 UTC (rev 39086) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2009-02-19 06:02:35 UTC (rev 39087) @@ -480,7 +480,7 @@ double now; now = ecore_loop_time_get(); - while (_ecore_timer_call(now)); + while (_ecore_timer_call(now)); _ecore_timer_cleanup(); } /* any timers re-added as a result of these are allowed to go */ @@ -567,6 +567,7 @@ if (next_time >= 0) goto start_loop; if (do_quit) break; } + _ecore_loop_time = ecore_time_get(); } } /* timers */ @@ -592,6 +593,7 @@ if (next_time < 0) goto start_loop; if (do_quit) break; } + _ecore_loop_time = ecore_time_get(); } } } |
From: Enlightenment S. <no-...@en...> - 2009-03-13 09:39:02
|
Log: patch from julian - fix typos in docs. Author: raster Date: 2009-03-13 02:38:46 -0700 (Fri, 13 Mar 2009) New Revision: 39460 Modified: trunk/ecore/src/lib/ecore/ecore_events.c trunk/ecore/src/lib/ecore/ecore_time.c trunk/ecore/src/lib/ecore/ecore_timer.c Modified: trunk/ecore/src/lib/ecore/ecore_events.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_events.c 2009-03-13 09:34:46 UTC (rev 39459) +++ trunk/ecore/src/lib/ecore/ecore_events.c 2009-03-13 09:38:46 UTC (rev 39460) @@ -38,7 +38,7 @@ * Add an event handler to the list of handlers. This will, on success, return * a handle to the event handler object that was created, that can be used * later to remove the handler using ecore_event_handler_del(). The @p type - * parameter is the iteger of the event type that will trigger this callback + * parameter is the integer of the event type that will trigger this callback * to be called. The callback @p func is called when this event is processed * and will be passed the event type, a pointer to the private event * structure that is specific to that event type, and a data pointer that is Modified: trunk/ecore/src/lib/ecore/ecore_time.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_time.c 2009-03-13 09:34:46 UTC (rev 39459) +++ trunk/ecore/src/lib/ecore/ecore_time.c 2009-03-13 09:38:46 UTC (rev 39460) @@ -55,7 +55,7 @@ * * This gets the time (since Jan 1st, 1970, 12:00AM) that the main loop ceased * waiting for timouts and/or events to come in or for signals or any other - * interrupt source. This should be considered a reference point fo all + * interrupt source. This should be considered a reference point for all * time based activity that should calculate its timepoint from the return * of ecore_loop_time_get(). use this UNLESS you absolutely must get the * current actual timepoint - then use ecore_time_get(). If this is called Modified: trunk/ecore/src/lib/ecore/ecore_timer.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_timer.c 2009-03-13 09:34:46 UTC (rev 39459) +++ trunk/ecore/src/lib/ecore/ecore_timer.c 2009-03-13 09:38:46 UTC (rev 39460) @@ -84,7 +84,7 @@ * @ingroup Ecore_Time_Group * * This function adds a timer and returns its handle on success and NULL on - * failure. The function @p func will be called every @in@ seconds. The + * failure. The function @p func will be called every @p in seconds. The * function will be passed the @p data pointer as its parameter. * * When the timer @p func is called, it must return a value of either 1 |
From: Enlightenment S. <no-...@en...> - 2009-03-23 02:13:54
|
Log: new timer add func - avoids more gettimeofday calls. Author: raster Date: 2009-03-22 19:13:50 -0700 (Sun, 22 Mar 2009) New Revision: 39638 Modified: trunk/ecore/src/lib/ecore/Ecore.h trunk/ecore/src/lib/ecore/ecore_timer.c Modified: trunk/ecore/src/lib/ecore/Ecore.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore.h 2009-03-22 21:40:52 UTC (rev 39637) +++ trunk/ecore/src/lib/ecore/Ecore.h 2009-03-23 02:13:50 UTC (rev 39638) @@ -295,6 +295,7 @@ EAPI double ecore_loop_time_get(void); EAPI Ecore_Timer *ecore_timer_add(double in, int (*func) (void *data), const void *data); + EAPI Ecore_Timer *ecore_timer_loop_add(double in, int (*func) (void *data), const void *data); EAPI void *ecore_timer_del(Ecore_Timer *timer); EAPI void ecore_timer_interval_set(Ecore_Timer *timer, double in); EAPI void ecore_timer_freeze(Ecore_Timer *timer); Modified: trunk/ecore/src/lib/ecore/ecore_timer.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_timer.c 2009-03-22 21:40:52 UTC (rev 39637) +++ trunk/ecore/src/lib/ecore/ecore_timer.c 2009-03-23 02:13:50 UTC (rev 39638) @@ -110,6 +110,35 @@ } /** + * Creates a timer to call the given function in the given period of time. + * @param in The interval in seconds from current loop time. + * @param func The given function. If @p func returns 1, the timer is + * rescheduled for the next interval @p in. + * @param data Data to pass to @p func when it is called. + * @return A timer object on success. @c NULL on failure. + * @ingroup Ecore_Time_Group + * + * This is the same as ecore_timer_add(), but "now" is the time from + * ecore_loop_time_get() not ecore_time_get() as ecore_timer_add() uses. See + * ecore_timer_add() for more details. + */ +EAPI Ecore_Timer * +ecore_timer_loop_add(double in, int (*func) (void *data), const void *data) +{ + double now; + Ecore_Timer *timer; + + if (!func) return NULL; + if (in < 0.0) in = 0.0; + timer = calloc(1, sizeof(Ecore_Timer)); + if (!timer) return NULL; + ECORE_MAGIC_SET(timer, ECORE_MAGIC_TIMER); + now = ecore_loop_time_get(); + _ecore_timer_set(timer, now + in, in, func, (void *)data); + return timer; +} + +/** * Delete the specified timer from the timer list. * @param timer The timer to delete. * @return The data pointer set for the timer when @ref ecore_timer_add was |
From: Enlightenment S. <no-...@en...> - 2009-04-10 12:48:35
|
Log: andre dieb: patch to fix ebadf handling. Author: raster Date: 2009-04-10 05:48:25 -0700 (Fri, 10 Apr 2009) New Revision: 39932 Modified: trunk/ecore/src/lib/ecore/ecore_main.c Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2009-04-10 12:18:36 UTC (rev 39931) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2009-04-10 12:48:25 UTC (rev 39932) @@ -18,6 +18,7 @@ #include <sys/types.h> #include <unistd.h> #include <errno.h> +#include <fcntl.h> #define FIX_HZ 1 @@ -33,6 +34,7 @@ static int _ecore_main_select(double timeout); static void _ecore_main_fd_handlers_cleanup(void); +static void _ecore_main_fd_handlers_bads_rem(void); static void _ecore_main_fd_handlers_call(void); static int _ecore_main_fd_handlers_buf_call(void); static void _ecore_main_loop_iterate_internal(int once_only); @@ -354,11 +356,14 @@ } } if (_ecore_signal_count_get()) return -1; + ret = select(max_fd + 1, &rfds, &wfds, &exfds, t); _ecore_loop_time = ecore_time_get(); if (ret < 0) { if (errno == EINTR) return -1; + else if (errno == EBADF) + _ecore_main_fd_handlers_bads_rem(); } if (ret > 0) { @@ -379,6 +384,45 @@ } static void +_ecore_main_fd_handlers_bads_rem(void) +{ + fprintf(stderr, "Removing bad fds\n"); + Ecore_Fd_Handler *fdh; + Eina_Inlist *l; + + for (l = EINA_INLIST_GET(fd_handlers); l; ) + { + fdh = (Ecore_Fd_Handler *) l; + l = l->next; + errno = 0; + + if ((fcntl(fdh->fd, F_GETFD) < 0) && (errno == EBADF)) + { + fprintf(stderr, "Found bad fd at index %d\n", fdh->fd); + if (fdh->flags & ECORE_FD_ERROR) + { + fprintf(stderr, "Fd set for error! calling user\n"); + if (!fdh->func(fdh->data, fdh)) + { + fprintf(stderr, "Fd function err returned 0, remove it\n"); + fdh->delete_me = 1; + fd_handlers_delete_me = 1; + _ecore_main_fd_handlers_cleanup(); + } + } + else + { + fprintf(stderr, "Problematic fd found at %d! setting it for delete\n", fdh->fd); + fdh->delete_me = 1; + fd_handlers_delete_me = 1; + _ecore_main_fd_handlers_cleanup(); + } + } + + } +} + +static void _ecore_main_fd_handlers_cleanup(void) { Ecore_Fd_Handler *fdh; @@ -392,6 +436,7 @@ l = l->next; if (fdh->delete_me) { + fprintf(stderr, "Removing fd %d\n", fdh->fd); fd_handlers = (Ecore_Fd_Handler *) eina_inlist_remove(EINA_INLIST_GET(fd_handlers), EINA_INLIST_GET(fdh)); ECORE_MAGIC_SET(fdh, ECORE_MAGIC_NONE); |
From: Enlightenment S. <no-...@en...> - 2009-04-23 02:09:18
|
Log: From: la...@se... (Lars Munch) Hi This patch adds two new functions, ecore_pipe_close_read and ecore_pipe_close_write, to ecore_pipe. The purpose it to enable ecore_pipe to be used together with fork (see example below). The patch also handles if the read or write end of the pipe closes. Author: raster Date: 2009-04-22 18:38:55 -0700 (Wed, 22 Apr 2009) New Revision: 40305 Modified: trunk/ecore/src/lib/ecore/Ecore.h trunk/ecore/src/lib/ecore/ecore_pipe.c Modified: trunk/ecore/src/lib/ecore/Ecore.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore.h 2009-04-23 01:25:32 UTC (rev 40304) +++ trunk/ecore/src/lib/ecore/Ecore.h 2009-04-23 01:38:55 UTC (rev 40305) @@ -294,10 +294,12 @@ EAPI Ecore_Pipe *ecore_pipe_add(void (*handler) (void *data, void *buffer, unsigned int nbyte), const void *data); EAPI void *ecore_pipe_del(Ecore_Pipe *p); EAPI int ecore_pipe_write(Ecore_Pipe *p, const void *buffer, unsigned int nbytes); + EAPI void ecore_pipe_close_write(Ecore_Pipe *p); + EAPI void ecore_pipe_close_read(Ecore_Pipe *p); EAPI double ecore_time_get(void); EAPI double ecore_loop_time_get(void); - + EAPI Ecore_Timer *ecore_timer_add(double in, int (*func) (void *data), const void *data); EAPI Ecore_Timer *ecore_timer_loop_add(double in, int (*func) (void *data), const void *data); EAPI void *ecore_timer_del(Ecore_Timer *timer); Modified: trunk/ecore/src/lib/ecore/ecore_pipe.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_pipe.c 2009-04-23 01:25:32 UTC (rev 40304) +++ trunk/ecore/src/lib/ecore/ecore_pipe.c 2009-04-23 01:38:55 UTC (rev 40305) @@ -332,20 +332,68 @@ "ecore_pipe_del"); return NULL; } - ecore_main_fd_handler_del(p->fd_handler); - close(p->fd_read); - close(p->fd_write); + if(p->fd_handler != NULL) + ecore_main_fd_handler_del(p->fd_handler); + if(p->fd_read != -1) + close(p->fd_read); + if(p->fd_write != -1) + close(p->fd_write); data = (void *)p->data; free (p); return data; } /** + * Close the read end of an Ecore_Pipe object created with ecore_pipe_add(). + * + * @param p The Ecore_Pipe object. + * @ingroup Ecore_Pipe_Group + */ +EAPI void +ecore_pipe_close_read(Ecore_Pipe *p) +{ + void *data; + + if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) + { + ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, + "ecore_pipe_close_read"); + return; + } + ecore_main_fd_handler_del(p->fd_handler); + p->fd_handler = NULL; + close(p->fd_read); + p->fd_read = -1; +} + +/** + * Close the write end of an Ecore_Pipe object created with ecore_pipe_add(). + * + * @param p The Ecore_Pipe object. + * @ingroup Ecore_Pipe_Group + */ +EAPI void +ecore_pipe_close_write(Ecore_Pipe *p) +{ + void *data; + + if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) + { + ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, + "ecore_pipe_close_write"); + return; + } + close(p->fd_write); + p->fd_write = -1; +} + +/** * Write on the file descriptor the data passed as parameter. * * @param p The Ecore_Pipe object. * @param buffer The data to write into the pipe. * @param nbytes The size of the @p buffer in bytes + * @return Returns TRUE on a successful write, FALSE on an error * @ingroup Ecore_Pipe_Group */ EAPI int @@ -359,9 +407,13 @@ { ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, "ecore_pipe_write"); - return 0; + return FALSE; } - /* first write the len into the pipe */ + + if(p->fd_write == -1) + return FALSE; + + /* First write the len into the pipe */ do { ret = pipe_write(p->fd_write, &nbytes, sizeof(nbytes)); @@ -375,8 +427,14 @@ /* XXX What should we do here? */ fprintf(stderr, "The length of the data was not written complete" " to the pipe\n"); - return 0; + return FALSE; } + else if (ret == -1 && errno == EPIPE) + { + close(p->fd_write); + p->fd_write = -1; + return FALSE; + } else if (ret == -1 && errno == EINTR) /* try it again */ ; @@ -390,7 +448,7 @@ while (retry--); if (retry != ECORE_PIPE_WRITE_RETRY) - return 0; + return FALSE; /* and now pass the data to the pipe */ do @@ -400,12 +458,18 @@ nbytes - already_written); if (ret == (ssize_t)(nbytes - already_written)) - return 1; + return TRUE; else if (ret >= 0) { already_written -= ret; continue; } + else if (ret == -1 && errno == EPIPE) + { + close(p->fd_write); + p->fd_write = -1; + return FALSE; + } else if (ret == -1 && errno == EINTR) /* try it again */ ; @@ -418,7 +482,7 @@ } while (retry--); - return 0; + return FALSE; } /* Private function */ @@ -453,8 +517,15 @@ fprintf(stderr, "Only read %d bytes from the pipe, although" " we need to read %d bytes.\n", ret, sizeof(p->len)); } - else if ((ret == 0) || - ((ret == -1) && ((errno == EINTR) || (errno == EAGAIN)))) + else if (ret == 0) + { + p->handler((void *)p->data, NULL, 0); + close(p->fd_read); + p->fd_read = -1; + p->fd_handler = NULL; + return ECORE_CALLBACK_CANCEL; + } + else if ((ret == -1) && ((errno == EINTR) || (errno == EAGAIN))) return ECORE_CALLBACK_RENEW; else { @@ -488,6 +559,14 @@ p->already_read += ret; return ECORE_CALLBACK_RENEW; } + else if (ret == 0) + { + p->handler((void *)p->data, NULL, 0); + close(p->fd_read); + p->fd_read = -1; + p->fd_handler = NULL; + return ECORE_CALLBACK_CANCEL; + } else if (ret == -1 && (errno == EINTR || errno == EAGAIN)) return ECORE_CALLBACK_RENEW; else |
From: Enlightenment S. <no-...@en...> - 2009-04-23 07:08:55
|
Log: From: Lars Munch <la...@se...> thx, but you committed rev 1 of the patch. I send out an updated patch since the function naming did not follow "e" style. Attached patch renames the functions accordingly. Please apply. Author: raster Date: 2009-04-23 00:08:50 -0700 (Thu, 23 Apr 2009) New Revision: 40322 Modified: trunk/ecore/src/lib/ecore/Ecore.h trunk/ecore/src/lib/ecore/ecore_pipe.c Modified: trunk/ecore/src/lib/ecore/Ecore.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore.h 2009-04-23 06:40:25 UTC (rev 40321) +++ trunk/ecore/src/lib/ecore/Ecore.h 2009-04-23 07:08:50 UTC (rev 40322) @@ -294,8 +294,8 @@ EAPI Ecore_Pipe *ecore_pipe_add(void (*handler) (void *data, void *buffer, unsigned int nbyte), const void *data); EAPI void *ecore_pipe_del(Ecore_Pipe *p); EAPI int ecore_pipe_write(Ecore_Pipe *p, const void *buffer, unsigned int nbytes); - EAPI void ecore_pipe_close_write(Ecore_Pipe *p); - EAPI void ecore_pipe_close_read(Ecore_Pipe *p); + EAPI void ecore_pipe_write_close(Ecore_Pipe *p); + EAPI void ecore_pipe_read_close(Ecore_Pipe *p); EAPI double ecore_time_get(void); EAPI double ecore_loop_time_get(void); Modified: trunk/ecore/src/lib/ecore/ecore_pipe.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_pipe.c 2009-04-23 06:40:25 UTC (rev 40321) +++ trunk/ecore/src/lib/ecore/ecore_pipe.c 2009-04-23 07:08:50 UTC (rev 40322) @@ -350,14 +350,14 @@ * @ingroup Ecore_Pipe_Group */ EAPI void -ecore_pipe_close_read(Ecore_Pipe *p) +ecore_pipe_read_close(Ecore_Pipe *p) { void *data; if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) { ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, - "ecore_pipe_close_read"); + "ecore_pipe_read_close"); return; } ecore_main_fd_handler_del(p->fd_handler); @@ -373,14 +373,14 @@ * @ingroup Ecore_Pipe_Group */ EAPI void -ecore_pipe_close_write(Ecore_Pipe *p) +ecore_pipe_write_close(Ecore_Pipe *p) { void *data; if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) { ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, - "ecore_pipe_close_write"); + "ecore_pipe_write_close"); return; } close(p->fd_write); |
From: Enlightenment S. <no-...@en...> - 2009-05-23 13:12:00
|
Log: add includes Author: raster Date: 2009-05-23 05:17:27 -0700 (Sat, 23 May 2009) New Revision: 40794 Modified: trunk/ecore/src/lib/ecore/ecore_private.h Modified: trunk/ecore/src/lib/ecore/ecore_private.h =================================================================== --- trunk/ecore/src/lib/ecore/ecore_private.h 2009-05-23 12:05:10 UTC (rev 40793) +++ trunk/ecore/src/lib/ecore/ecore_private.h 2009-05-23 12:17:27 UTC (rev 40794) @@ -3,6 +3,9 @@ #include <sys/types.h> #include <unistd.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> #ifdef HAVE_SIGNAL_H # include <signal.h> |
From: Enlightenment S. <no-...@en...> - 2009-08-13 00:31:12
|
Log: dont use #ifdeffed out calls Author: raster Date: 2009-08-12 17:30:59 -0700 (Wed, 12 Aug 2009) New Revision: 41726 Modified: trunk/ecore/src/lib/ecore/ecore_thread.c Modified: trunk/ecore/src/lib/ecore/ecore_thread.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_thread.c 2009-08-13 00:27:53 UTC (rev 41725) +++ trunk/ecore/src/lib/ecore/ecore_thread.c 2009-08-13 00:30:59 UTC (rev 41726) @@ -143,8 +143,9 @@ _ecore_thread_count_max = 1; ECORE_THREAD_PIPE_DEL = ecore_event_type_new(); +#ifdef BUILD_PTHREAD del_handler = ecore_event_handler_add(ECORE_THREAD_PIPE_DEL, _ecore_thread_pipe_del, NULL); - +#endif return _ecore_thread_init; } |
From: Enlightenment S. <no-...@en...> - 2009-08-13 03:47:10
|
Log: formatting! Author: raster Date: 2009-08-12 17:27:53 -0700 (Wed, 12 Aug 2009) New Revision: 41725 Modified: trunk/ecore/src/lib/ecore/ecore_pipe.c Modified: trunk/ecore/src/lib/ecore/ecore_pipe.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_pipe.c 2009-08-12 23:14:05 UTC (rev 41724) +++ trunk/ecore/src/lib/ecore/ecore_pipe.c 2009-08-13 00:27:53 UTC (rev 41725) @@ -59,15 +59,14 @@ int fd_write; Ecore_Fd_Handler *fd_handler; const void *data; - void (*handler) (void *data, void *buffer, unsigned int nbyte); + void (*handler) (void *data, void *buffer, unsigned int nbyte); unsigned int len; size_t already_read; void *passed_data; }; -static int _ecore_pipe_read(void *data, - Ecore_Fd_Handler *fd_handler); +static int _ecore_pipe_read(void *data, Ecore_Fd_Handler *fd_handler); /** * @defgroup Ecore_Pipe_Group Pipe wrapper @@ -289,12 +288,10 @@ Ecore_Pipe *p; int fds[2]; - if(!handler) - return NULL; + if (!handler) return NULL; p = (Ecore_Pipe *)calloc(1, sizeof(Ecore_Pipe)); - if (!p) - return NULL; + if (!p) return NULL; if (pipe(fds)) { @@ -316,7 +313,6 @@ _ecore_pipe_read, p, NULL, NULL); - return p; } @@ -334,18 +330,14 @@ if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) { - ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, - "ecore_pipe_del"); + ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, "ecore_pipe_del"); return NULL; } - if(p->fd_handler != NULL) - ecore_main_fd_handler_del(p->fd_handler); - if(p->fd_read != PIPE_FD_INVALID) - pipe_close(p->fd_read); - if(p->fd_write != PIPE_FD_INVALID) - pipe_close(p->fd_write); + if (p->fd_handler != NULL) ecore_main_fd_handler_del(p->fd_handler); + if (p->fd_read != PIPE_FD_INVALID) pipe_close(p->fd_read); + if (p->fd_write != PIPE_FD_INVALID) pipe_close(p->fd_write); data = (void *)p->data; - free (p); + free(p); return data; } @@ -360,8 +352,7 @@ { if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) { - ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, - "ecore_pipe_read_close"); + ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, "ecore_pipe_read_close"); return; } ecore_main_fd_handler_del(p->fd_handler); @@ -381,8 +372,7 @@ { if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) { - ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, - "ecore_pipe_write_close"); + ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, "ecore_pipe_write_close"); return; } pipe_close(p->fd_write); @@ -407,13 +397,11 @@ if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) { - ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, - "ecore_pipe_write"); + ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, "ecore_pipe_write"); return FALSE; } - if(p->fd_write == PIPE_FD_INVALID) - return FALSE; + if (p->fd_write == PIPE_FD_INVALID) return FALSE; /* First write the len into the pipe */ do @@ -428,7 +416,7 @@ { /* XXX What should we do here? */ fprintf(stderr, "The length of the data was not written complete" - " to the pipe\n"); + " to the pipe\n"); return FALSE; } else if (ret == PIPE_FD_ERROR && errno == EPIPE) @@ -443,22 +431,21 @@ else { fprintf(stderr, "An unhandled error (ret: %d errno: %d)" - "occured while writing to the pipe the length\n", - ret, errno); + "occured while writing to the pipe the length\n", + ret, errno); } } while (retry--); - if (retry != ECORE_PIPE_WRITE_RETRY) - return FALSE; + if (retry != ECORE_PIPE_WRITE_RETRY) return FALSE; /* and now pass the data to the pipe */ do { ret = pipe_write(p->fd_write, - ((unsigned char *)buffer) + already_written, - nbytes - already_written); - + ((unsigned char *)buffer) + already_written, + nbytes - already_written); + if (ret == (ssize_t)(nbytes - already_written)) return TRUE; else if (ret >= 0) @@ -478,8 +465,8 @@ else { fprintf(stderr, "An unhandled error (ret: %d errno: %d)" - "occured while writing to the pipe the length\n", - ret, errno); + "occured while writing to the pipe the length\n", + ret, errno); } } while (retry--); @@ -517,7 +504,7 @@ { /* XXX What should we do here? */ fprintf(stderr, "Only read %d bytes from the pipe, although" - " we need to read %d bytes.\n", ret, sizeof(p->len)); + " we need to read %d bytes.\n", ret, sizeof(p->len)); } else if (ret == 0) { @@ -532,8 +519,8 @@ else { fprintf(stderr, "An unhandled error (ret: %d errno: %d)" - "occured while reading from the pipe the length\n", - ret, errno); + "occured while reading from the pipe the length\n", + ret, errno); return ECORE_CALLBACK_RENEW; } } @@ -543,9 +530,9 @@ /* and read the passed data */ ret = pipe_read(p->fd_read, - ((unsigned char *)p->passed_data) + p->already_read, - p->len - p->already_read); - + ((unsigned char *)p->passed_data) + p->already_read, + p->len - p->already_read); + /* catch the non error case first */ if (ret == (ssize_t)(p->len - p->already_read)) { @@ -574,12 +561,12 @@ else { fprintf(stderr, "An unhandled error (ret: %d errno: %d)" - "occured while reading from the pipe the data\n", - ret, errno); + "occured while reading from the pipe the data\n", + ret, errno); return ECORE_CALLBACK_RENEW; } } while (ecore_time_get() - start_time < ecore_animator_frametime_get()); - + return ECORE_CALLBACK_RENEW; } |
From: Enlightenment S. <no-...@en...> - 2009-10-25 10:12:12
|
Log: fix build! Author: raster Date: 2009-10-25 03:11:59 -0700 (Sun, 25 Oct 2009) New Revision: 43260 Modified: trunk/ecore/src/lib/ecore/Ecore.h trunk/ecore/src/lib/ecore/ecore_private.h Modified: trunk/ecore/src/lib/ecore/Ecore.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore.h 2009-10-25 08:57:41 UTC (rev 43259) +++ trunk/ecore/src/lib/ecore/Ecore.h 2009-10-25 10:11:59 UTC (rev 43260) @@ -294,6 +294,7 @@ EAPI int ecore_main_fd_handler_fd_get(Ecore_Fd_Handler *fd_handler); EAPI int ecore_main_fd_handler_active_get(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_Flags flags); EAPI void ecore_main_fd_handler_active_set(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_Flags flags); + EAPI Ecore_Win32_Handler *ecore_main_win32_handler_add(void *h, int (*func) (void *data, Ecore_Win32_Handler *wh), const void *data); EAPI Ecore_Pipe *ecore_pipe_add(void (*handler) (void *data, void *buffer, unsigned int nbyte), const void *data); Modified: trunk/ecore/src/lib/ecore/ecore_private.h =================================================================== --- trunk/ecore/src/lib/ecore/ecore_private.h 2009-10-25 08:57:41 UTC (rev 43259) +++ trunk/ecore/src/lib/ecore/ecore_private.h 2009-10-25 10:11:59 UTC (rev 43260) @@ -228,6 +228,8 @@ typedef struct _Ecore_Poller Ecore_Poller; #ifdef _WIN32 typedef struct _Ecore_Win32_Handler Ecore_Win32_Handler; +#else +typedef void Ecore_Win32_Handler; #endif #ifndef _WIN32 |
From: Enlightenment S. <no-...@en...> - 2010-01-27 03:51:54
|
Log: make animator happen AT a vierual animator tick point. Author: raster Date: 2010-01-26 19:51:46 -0800 (Tue, 26 Jan 2010) New Revision: 45614 Modified: trunk/ecore/src/lib/ecore/ecore_anim.c Modified: trunk/ecore/src/lib/ecore/ecore_anim.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_anim.c 2010-01-27 01:55:50 UTC (rev 45613) +++ trunk/ecore/src/lib/ecore/ecore_anim.c 2010-01-27 03:51:46 UTC (rev 45614) @@ -7,6 +7,7 @@ #endif #include <stdlib.h> +#include <math.h> #include "Ecore.h" #include "ecore_private.h" @@ -57,9 +58,16 @@ ECORE_MAGIC_SET(animator, ECORE_MAGIC_ANIMATOR); animator->func = func; animator->data = (void *)data; - animators = (Ecore_Animator *) eina_inlist_append(EINA_INLIST_GET(animators), EINA_INLIST_GET(animator)); + animators = (Ecore_Animator *)eina_inlist_append(EINA_INLIST_GET(animators), EINA_INLIST_GET(animator)); if (!timer) - timer = ecore_timer_add(animators_frametime, _ecore_animator, NULL); + { + double t_loop = ecore_loop_time_get(); + double sync_0 = 0.0; + double d = -fmod(t_loop - sync_0, animators_frametime); + + timer = ecore_timer_loop_add(animators_frametime, _ecore_animator, NULL); + ecore_timer_delay(timer, d); + } return animator; } |
From: Enlightenment S. <no-...@en...> - 2010-02-16 16:52:09
|
Log: hmmmm try this. let me know if u see issues. Author: raster Date: 2010-02-16 08:52:02 -0800 (Tue, 16 Feb 2010) New Revision: 46218 Modified: trunk/ecore/src/lib/ecore/ecore_timer.c Modified: trunk/ecore/src/lib/ecore/ecore_timer.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_timer.c 2010-02-16 16:36:16 UTC (rev 46217) +++ trunk/ecore/src/lib/ecore/ecore_timer.c 2010-02-16 16:52:02 UTC (rev 46218) @@ -406,8 +406,7 @@ if (!timers_added) return; timers_added = 0; - EINA_INLIST_FOREACH(timers, timer) - timer->just_added = 0; + EINA_INLIST_FOREACH(timers, timer) timer->just_added = 0; } static inline Ecore_Timer * @@ -465,16 +464,19 @@ if (last_check > when) { /* User set time backwards */ - EINA_INLIST_FOREACH(timers, timer) - timer->at -= (last_check - when); + EINA_INLIST_FOREACH(timers, timer) timer->at -= (last_check - when); } last_check = when; for (l = timers; l;) { timer = l; l = (Ecore_Timer *) EINA_INLIST_GET(l)->next; +// printf("_ecore_timer_call %3.3f <= %3.3f %i %i %p\n", +// timer->at, when, timer->just_added, timer->delete_me, timer); if ((timer->at <= when) && - (timer->just_added == 0) && +// hmm this ends up pausing some edje program iterators... disable for now +// and see what the fallout is - if any? +// (timer->just_added == 0) && (timer->delete_me == 0)) { timer->running = EINA_TRUE; |
From: Enlightenment S. <no-...@en...> - 2010-02-17 08:13:37
|
Log: aaaah bummer. (see comment) Author: raster Date: 2010-02-17 00:13:30 -0800 (Wed, 17 Feb 2010) New Revision: 46243 Modified: trunk/ecore/src/lib/ecore/ecore_timer.c Modified: trunk/ecore/src/lib/ecore/ecore_timer.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_timer.c 2010-02-17 08:05:19 UTC (rev 46242) +++ trunk/ecore/src/lib/ecore/ecore_timer.c 2010-02-17 08:13:30 UTC (rev 46243) @@ -475,8 +475,11 @@ // timer->at, when, timer->just_added, timer->delete_me, timer); if ((timer->at <= when) && // hmm this ends up pausing some edje program iterators... disable for now -// and see what the fallout is - if any? -// (timer->just_added == 0) && +// and see what the fallout is - if any? +// ... +// ok - this does cause problems if disabled. i will need to dig into the +// bottom of this. no quick fixes here :( + (timer->just_added == 0) && (timer->delete_me == 0)) { timer->running = EINA_TRUE; |
From: Enlightenment S. <no-...@en...> - 2010-02-19 08:00:52
|
Log: rfiddling wiht lop to try and get rid of pauses. i think i found it... plus a bit of streamlining. need to test more widely now. Author: raster Date: 2010-02-19 00:00:44 -0800 (Fri, 19 Feb 2010) New Revision: 46303 Modified: trunk/ecore/src/lib/ecore/ecore_main.c trunk/ecore/src/lib/ecore/ecore_timer.c Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2010-02-19 06:28:03 UTC (rev 46302) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2010-02-19 08:00:44 UTC (rev 46303) @@ -687,50 +687,54 @@ in_main_loop++; /* expire any timers */ - { - double now; + while (_ecore_timer_call(_ecore_loop_time)); + _ecore_timer_cleanup(); - now = ecore_loop_time_get(); - while (_ecore_timer_call(now)); - _ecore_timer_cleanup(); - } /* process signals into events .... */ while (_ecore_signal_count_get()) _ecore_signal_call(); if (_ecore_event_exist()) { + _ecore_idle_enterer_call(); have_event = 1; _ecore_main_select(0.0); + _ecore_loop_time = ecore_time_get(); + _ecore_timer_enable_new(); goto process_events; } /* call idle enterers ... */ - if (!once_only) - _ecore_idle_enterer_call(); + if (!once_only) _ecore_idle_enterer_call(); else { have_event = have_signal = 0; if (_ecore_main_select(0.0) > 0) have_event = 1; - if (_ecore_signal_count_get() > 0) have_signal = 1; - if (have_signal || have_event) - goto process_events; + { + _ecore_loop_time = ecore_time_get(); + _ecore_timer_enable_new(); + goto process_events; + } } /* if these calls caused any buffered events to appear - deal with them */ - while (_ecore_main_fd_handlers_buf_call()); + _ecore_main_fd_handlers_buf_call(); /* if ther are any - jump to processing them */ if (_ecore_event_exist()) { have_event = 1; _ecore_main_select(0.0); + _ecore_loop_time = ecore_time_get(); + _ecore_timer_enable_new(); goto process_events; } if (once_only) { _ecore_idle_enterer_call(); in_main_loop--; + _ecore_loop_time = ecore_time_get(); + _ecore_timer_enable_new(); return; } @@ -745,7 +749,9 @@ _ecore_timer_enable_new(); if (do_quit) { + _ecore_loop_time = ecore_time_get(); in_main_loop--; + _ecore_timer_enable_new(); return; } if (!_ecore_event_exist()) @@ -775,7 +781,6 @@ if (next_time >= 0) goto start_loop; if (do_quit) break; } - _ecore_loop_time = ecore_time_get(); } } /* timers */ @@ -800,9 +805,9 @@ if (next_time <= 0) break; if (do_quit) break; } - _ecore_loop_time = ecore_time_get(); } } + _ecore_loop_time = ecore_time_get(); } if (_ecore_fps_debug) { @@ -815,22 +820,25 @@ /* this should read or write any data to the monitored fd and then */ /* post events onto the ecore event pipe if necessary */ process_events: - if (have_event) _ecore_main_fd_handlers_call(); - do - { +// if (have_event) + _ecore_main_fd_handlers_call(); + _ecore_main_fd_handlers_buf_call(); +// do +// { /* process signals into events .... */ while (_ecore_signal_count_get()) _ecore_signal_call(); /* handle events ... */ _ecore_event_call(); _ecore_main_fd_handlers_cleanup(); - } - while (_ecore_main_fd_handlers_buf_call()); +// } +// while (_ecore_main_fd_handlers_buf_call()); /* ok - too much optimising. let's call idle enterers more often. if we * have events that place more events or jobs etc. on the event queue * we may never get to call an idle enterer if (once_only) */ + if (once_only) _ecore_idle_enterer_call(); in_main_loop--; } Modified: trunk/ecore/src/lib/ecore/ecore_timer.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_timer.c 2010-02-19 06:28:03 UTC (rev 46302) +++ trunk/ecore/src/lib/ecore/ecore_timer.c 2010-02-19 08:00:44 UTC (rev 46303) @@ -474,18 +474,12 @@ // printf("_ecore_timer_call %3.3f <= %3.3f %i %i %p\n", // timer->at, when, timer->just_added, timer->delete_me, timer); if ((timer->at <= when) && -// hmm this ends up pausing some edje program iterators... disable for now -// and see what the fallout is - if any? -// ... -// ok - this does cause problems if disabled. i will need to dig into the -// bottom of this. no quick fixes here :( (timer->just_added == 0) && (timer->delete_me == 0)) { timer->running = EINA_TRUE; timers = (Ecore_Timer *) eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer)); - _ecore_timer_call(when); if ((!timer->delete_me) && (timer->func(timer->data))) { /* if the timer would have gone off more than 15 seconds ago, @@ -514,6 +508,7 @@ } else free(timer); + _ecore_timer_call(when); return 1; } } |
From: Enlightenment S. <no-...@en...> - 2010-04-27 04:31:03
|
Log: formatting. Author: raster Date: 2010-04-26 21:30:55 -0700 (Mon, 26 Apr 2010) New Revision: 48354 Modified: trunk/ecore/src/lib/ecore/ecore_glib.c trunk/ecore/src/lib/ecore/ecore_main.c Modified: trunk/ecore/src/lib/ecore/ecore_glib.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_glib.c 2010-04-27 04:24:08 UTC (rev 48353) +++ trunk/ecore/src/lib/ecore/ecore_glib.c 2010-04-27 04:30:55 UTC (rev 48354) @@ -27,13 +27,14 @@ _ecore_glib_fds_resize(size_t size) { void *tmp = realloc(_ecore_glib_fds, sizeof(GPollFD) * size); + if (!tmp) { ERR("Could not realloc from %zu to %zu buckets.", _ecore_glib_fds_size, size); return EINA_FALSE; } - + _ecore_glib_fds = tmp; _ecore_glib_fds_size = size; return EINA_TRUE; @@ -46,22 +47,19 @@ if (_ecore_glib_fds_size == 0) { - if (!_ecore_glib_fds_resize(ECORE_GLIB_FDS_INITIAL)) - return -1; + if (!_ecore_glib_fds_resize(ECORE_GLIB_FDS_INITIAL)) return -1; } - + while (1) { size_t size; - + reqfds = g_main_context_query (ctx, priority, p_timer, _ecore_glib_fds, _ecore_glib_fds_size); - if (reqfds <= (int)_ecore_glib_fds_size) - break; + if (reqfds <= (int)_ecore_glib_fds_size) break; size = (1 + reqfds / ECORE_GLIB_FDS_STEP) * ECORE_GLIB_FDS_STEP; - if (!_ecore_glib_fds_resize(size)) - return -1; + if (!_ecore_glib_fds_resize(size)) return -1; } if (reqfds + ECORE_GLIB_FDS_MAX_FREE < _ecore_glib_fds_size) @@ -80,6 +78,7 @@ { const GPollFD *itr = pfds, *itr_end = pfds + count; int glib_fds = -1; + for (; itr < itr_end; itr++) { if (glib_fds < itr->fd) @@ -100,6 +99,7 @@ _ecore_glib_context_poll_to(GPollFD *pfds, int count, const fd_set *rfds, const fd_set *wfds, const fd_set *efds, int ready) { GPollFD *itr = pfds, *itr_end = pfds + count; + for (; itr < itr_end && ready > 0; itr++) { itr->revents = 0; @@ -130,24 +130,24 @@ g_main_context_prepare(ctx, &priority); reqfds = _ecore_glib_context_query(ctx, priority, &reqtimeout); - if (reqfds < 0) - goto error; + if (reqfds < 0) goto error; glib_fds = _ecore_glib_context_poll_from (_ecore_glib_fds, reqfds, rfds, wfds, efds); if (reqtimeout == -1) timeout = ecore_timeout; - else { - glib_timeout.tv_sec = reqtimeout / 1000; - glib_timeout.tv_usec = (reqtimeout % 1000) * 1000; + else + { + glib_timeout.tv_sec = reqtimeout / 1000; + glib_timeout.tv_usec = (reqtimeout % 1000) * 1000; + + if (!ecore_timeout || timercmp(ecore_timeout, &glib_timeout, >)) + timeout = &glib_timeout; + else + timeout = ecore_timeout; + } - if (!ecore_timeout || timercmp(ecore_timeout, &glib_timeout, >)) - timeout = &glib_timeout; - else - timeout = ecore_timeout; - } - maxfds = (ecore_fds >= glib_fds) ? ecore_fds : glib_fds; ret = _ecore_glib_select_original(maxfds, rfds, wfds, efds, timeout); @@ -202,13 +202,12 @@ _ecore_glib_shutdown(void) { #ifdef HAVE_GLIB - if (!_ecore_glib_active) - return; + if (!_ecore_glib_active) return; _ecore_glib_active = EINA_FALSE; if (ecore_main_loop_select_func_get() == _ecore_glib_select) ecore_main_loop_select_func_set(_ecore_glib_select_original); - + if (_ecore_glib_fds) { free(_ecore_glib_fds); Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2010-04-27 04:24:08 UTC (rev 48353) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2010-04-27 04:30:55 UTC (rev 48354) @@ -539,7 +539,7 @@ #ifndef _WIN32 if (errno == EINTR) return -1; else if (errno == EBADF) - _ecore_main_fd_handlers_bads_rem(); + _ecore_main_fd_handlers_bads_rem(); #endif } if (ret > 0) @@ -567,10 +567,10 @@ static void _ecore_main_fd_handlers_bads_rem(void) { - ERR("Removing bad fds"); Ecore_Fd_Handler *fdh; Eina_Inlist *l; + ERR("Removing bad fds"); for (l = EINA_INLIST_GET(fd_handlers); l; ) { fdh = (Ecore_Fd_Handler *) l; |
From: Enlightenment S. <no-...@en...> - 2010-04-27 23:53:15
|
Log: better debug/error output for foreign fd issues. Author: raster Date: 2010-04-27 16:53:08 -0700 (Tue, 27 Apr 2010) New Revision: 48370 Modified: trunk/ecore/src/lib/ecore/ecore_main.c Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2010-04-27 22:39:30 UTC (rev 48369) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2010-04-27 23:53:08 UTC (rev 48370) @@ -569,6 +569,7 @@ { Ecore_Fd_Handler *fdh; Eina_Inlist *l; + int found = 0; ERR("Removing bad fds"); for (l = EINA_INLIST_GET(fd_handlers); l; ) @@ -589,6 +590,7 @@ ERR("Fd function err returned 0, remove it"); fdh->delete_me = 1; fd_handlers_delete_me = 1; + found++; } fdh->references--; } @@ -597,10 +599,18 @@ ERR("Problematic fd found at %d! setting it for delete", fdh->fd); fdh->delete_me = 1; fd_handlers_delete_me = 1; + found++; } } } - + if (found == 0) + { +#ifdef HAVE_GLIB + ERR("No bad fd found. Maybe a foreign fd from glib?\n"); +#else + ERR("No bad fd found. EEEK!\n"); +#endif + } _ecore_main_fd_handlers_cleanup(); } #endif |
From: Enlightenment S. <no-...@en...> - 2010-04-28 00:06:04
|
Log: \n-- Author: raster Date: 2010-04-27 17:05:56 -0700 (Tue, 27 Apr 2010) New Revision: 48371 Modified: trunk/ecore/src/lib/ecore/ecore_main.c Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2010-04-27 23:53:08 UTC (rev 48370) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2010-04-28 00:05:56 UTC (rev 48371) @@ -606,9 +606,9 @@ if (found == 0) { #ifdef HAVE_GLIB - ERR("No bad fd found. Maybe a foreign fd from glib?\n"); + ERR("No bad fd found. Maybe a foreign fd from glib?"); #else - ERR("No bad fd found. EEEK!\n"); + ERR("No bad fd found. EEEK!"); #endif } _ecore_main_fd_handlers_cleanup(); |
From: Enlightenment S. <no-...@en...> - 2010-05-18 07:00:06
|
Log: data passed in wrong order! fix. Author: raster Date: 2010-05-17 23:59:59 -0700 (Mon, 17 May 2010) New Revision: 48964 Modified: trunk/ecore/src/lib/ecore/ecore_events.c Modified: trunk/ecore/src/lib/ecore/ecore_events.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_events.c 2010-05-18 06:17:53 UTC (rev 48963) +++ trunk/ecore/src/lib/ecore/ecore_events.c 2010-05-18 06:59:59 UTC (rev 48964) @@ -460,7 +460,7 @@ { Ecore_Event *e = event_current; - if (!ef->func_filter(ef->loop_data, ef->data, + if (!ef->func_filter(ef->data, ef->loop_data, e->type, e->event)) { // printf("FILTER SAID TO DEL ev %p\n", e->event); |
From: Enlightenment S. <no-...@en...> - 2010-05-18 08:01:14
|
Log: formatting cleanups. Author: raster Date: 2010-05-18 01:01:06 -0700 (Tue, 18 May 2010) New Revision: 48970 Modified: trunk/ecore/src/lib/ecore/ecore_main.c Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2010-05-18 07:59:33 UTC (rev 48969) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2010-05-18 08:01:06 UTC (rev 48970) @@ -163,7 +163,7 @@ ecore_main_loop_begin(void) { in_main_loop++; - for (;do_quit == 0;) _ecore_main_loop_iterate_internal(0); + while (do_quit == 0) _ecore_main_loop_iterate_internal(0); do_quit = 0; in_main_loop--; } @@ -193,7 +193,7 @@ * @ingroup Ecore_Main_Loop_Group */ EAPI void -ecore_main_loop_select_func_set(int (*func)(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)) +ecore_main_loop_select_func_set(int (*func) (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)) { main_loop_select = func; } @@ -253,9 +253,7 @@ { Ecore_Fd_Handler *fdh; - if ((fd < 0) || - (flags == 0) || - (!func)) return NULL; + if ((fd < 0) || (flags == 0) || (!func)) return NULL; fdh = calloc(1, sizeof(Ecore_Fd_Handler)); if (!fdh) return NULL; @@ -270,8 +268,9 @@ fdh->data = (void *)data; fdh->buf_func = buf_func; fdh->buf_data = (void *)buf_data; - fd_handlers = (Ecore_Fd_Handler *) eina_inlist_append(EINA_INLIST_GET(fd_handlers), - EINA_INLIST_GET(fdh)); + fd_handlers = (Ecore_Fd_Handler *) + eina_inlist_append(EINA_INLIST_GET(fd_handlers), + EINA_INLIST_GET(fdh)); return fdh; } @@ -283,8 +282,7 @@ { Ecore_Win32_Handler *wh; - if (!h || !func) - return NULL; + if (!h || !func) return NULL; wh = calloc(1, sizeof(Ecore_Win32_Handler)); if (!wh) return NULL; @@ -293,8 +291,9 @@ wh->delete_me = 0; wh->func = func; wh->data = (void *)data; - win32_handlers = (Ecore_Win32_Handler *)eina_inlist_append(EINA_INLIST_GET(win32_handlers), - EINA_INLIST_GET(wh)); + win32_handlers = (Ecore_Win32_Handler *) + eina_inlist_append(EINA_INLIST_GET(win32_handlers), + EINA_INLIST_GET(wh)); return wh; } #else @@ -504,31 +503,35 @@ /* call the prepare callback for all handlers */ EINA_INLIST_FOREACH(fd_handlers, fdh) - if (!fdh->delete_me && fdh->prep_func) - { - fdh->references++; - fdh->prep_func (fdh->prep_data, fdh); - fdh->references--; - } + { + if (!fdh->delete_me && fdh->prep_func) + { + fdh->references++; + fdh->prep_func (fdh->prep_data, fdh); + fdh->references--; + } + } EINA_INLIST_FOREACH(fd_handlers, fdh) - if (!fdh->delete_me) - { - if (fdh->flags & ECORE_FD_READ) - { - FD_SET(fdh->fd, &rfds); - if (fdh->fd > max_fd) max_fd = fdh->fd; - } - if (fdh->flags & ECORE_FD_WRITE) - { - FD_SET(fdh->fd, &wfds); - if (fdh->fd > max_fd) max_fd = fdh->fd; - } - if (fdh->flags & ECORE_FD_ERROR) - { - FD_SET(fdh->fd, &exfds); - if (fdh->fd > max_fd) max_fd = fdh->fd; - } - } + { + if (!fdh->delete_me) + { + if (fdh->flags & ECORE_FD_READ) + { + FD_SET(fdh->fd, &rfds); + if (fdh->fd > max_fd) max_fd = fdh->fd; + } + if (fdh->flags & ECORE_FD_WRITE) + { + FD_SET(fdh->fd, &wfds); + if (fdh->fd > max_fd) max_fd = fdh->fd; + } + if (fdh->flags & ECORE_FD_ERROR) + { + FD_SET(fdh->fd, &exfds); + if (fdh->fd > max_fd) max_fd = fdh->fd; + } + } + } if (_ecore_signal_count_get()) return -1; ret = main_loop_select(max_fd + 1, &rfds, &wfds, &exfds, t); @@ -630,22 +633,20 @@ l = l->next; if (fdh->delete_me) { -// ERR("Removing fd %d", fdh->fd); - if (fdh->references) { deleted_in_use++; continue; } - fd_handlers = (Ecore_Fd_Handler *) eina_inlist_remove(EINA_INLIST_GET(fd_handlers), - EINA_INLIST_GET(fdh)); + fd_handlers = (Ecore_Fd_Handler *) + eina_inlist_remove(EINA_INLIST_GET(fd_handlers), + EINA_INLIST_GET(fdh)); ECORE_MAGIC_SET(fdh, ECORE_MAGIC_NONE); free(fdh); } } - if (!deleted_in_use) - fd_handlers_delete_me = 0; + if (!deleted_in_use) fd_handlers_delete_me = 0; } #ifdef _WIN32 @@ -670,14 +671,14 @@ continue; } - win32_handlers = (Ecore_Win32_Handler *)eina_inlist_remove(EINA_INLIST_GET(win32_handlers), - EINA_INLIST_GET(wh)); + win32_handlers = (Ecore_Win32_Handler *) + eina_inlist_remove(EINA_INLIST_GET(win32_handlers), + EINA_INLIST_GET(wh)); ECORE_MAGIC_SET(wh, ECORE_MAGIC_NONE); free(wh); } } - if (!deleted_in_use) - win32_handlers_delete_me = 0; + if (!deleted_in_use) win32_handlers_delete_me = 0; } #endif @@ -732,20 +733,21 @@ ret = 0; EINA_INLIST_FOREACH(fd_handlers, fdh) - if (!fdh->delete_me) - { - if (fdh->buf_func) - { - fdh->references++; - if (fdh->buf_func(fdh->buf_data, fdh)) - { - ret |= fdh->func(fdh->data, fdh); - fdh->read_active = 1; - } - fdh->references--; - } - } - + { + if (!fdh->delete_me) + { + if (fdh->buf_func) + { + fdh->references++; + if (fdh->buf_func(fdh->buf_data, fdh)) + { + ret |= fdh->func(fdh->data, fdh); + fdh->read_active = 1; + } + fdh->references--; + } + } + } return ret; } @@ -879,37 +881,22 @@ } _ecore_loop_time = ecore_time_get(); } - if (_ecore_fps_debug) - { - t1 = ecore_time_get(); - } + if (_ecore_fps_debug) t1 = ecore_time_get(); /* we came out of our "wait state" so idle has exited */ - if (!once_only) - _ecore_idle_exiter_call(); + if (!once_only) _ecore_idle_exiter_call(); /* call the fd handler per fd that became alive... */ /* this should read or write any data to the monitored fd and then */ /* post events onto the ecore event pipe if necessary */ process_events: -// if (have_event) _ecore_main_fd_handlers_call(); _ecore_main_fd_handlers_buf_call(); -// do -// { - /* process signals into events .... */ - while (_ecore_signal_count_get()) _ecore_signal_call(); - /* handle events ... */ - _ecore_event_call(); - _ecore_main_fd_handlers_cleanup(); -// } -// while (_ecore_main_fd_handlers_buf_call()); + /* process signals into events .... */ + while (_ecore_signal_count_get()) _ecore_signal_call(); + /* handle events ... */ + _ecore_event_call(); + _ecore_main_fd_handlers_cleanup(); -/* ok - too much optimising. let's call idle enterers more often. if we - * have events that place more events or jobs etc. on the event queue - * we may never get to call an idle enterer - if (once_only) - */ - if (once_only) - _ecore_idle_enterer_call(); + if (once_only) _ecore_idle_enterer_call(); in_main_loop--; } @@ -918,18 +905,18 @@ _ecore_main_win32_select(int nfds __UNUSED__, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *tv) { - HANDLE objects[MAXIMUM_WAIT_OBJECTS]; - int sockets[MAXIMUM_WAIT_OBJECTS]; + HANDLE objects[MAXIMUM_WAIT_OBJECTS]; + int sockets[MAXIMUM_WAIT_OBJECTS]; Ecore_Fd_Handler *fdh; Ecore_Win32_Handler *wh; unsigned int objects_nbr = 0; unsigned int handles_nbr = 0; unsigned int events_nbr = 0; - DWORD result; - DWORD timeout; - MSG msg; - unsigned int i; - int res; + DWORD result; + DWORD timeout; + MSG msg; + unsigned int i; + int res; /* Create an event object per socket */ EINA_INLIST_FOREACH(fd_handlers, fdh) @@ -938,14 +925,14 @@ long network_event; network_event = 0; - if(FD_ISSET(fdh->fd, readfds)) + if (FD_ISSET(fdh->fd, readfds)) network_event |= FD_READ; - if(FD_ISSET(fdh->fd, writefds)) + if (FD_ISSET(fdh->fd, writefds)) network_event |= FD_WRITE; - if(FD_ISSET(fdh->fd, exceptfds)) + if (FD_ISSET(fdh->fd, exceptfds)) network_event |= FD_OOB; - if(network_event) + if (network_event) { event = WSACreateEvent(); WSAEventSelect(fdh->fd, event, network_event); @@ -973,10 +960,10 @@ /* Wait for any message sent or posted to this queue */ /* or for one of the passed handles be set to signaled. */ - if(tv == NULL) + if (tv == NULL) timeout = INFINITE; else - timeout = (DWORD)(tv->tv_sec * 1000.0 + tv->tv_usec / 1000.0); + timeout = (DWORD)((tv->tv_sec * 1000.0) + (tv->tv_usec / 1000.0)); if (timeout == 0) return 0; @@ -1018,16 +1005,17 @@ WSAEnumNetworkEvents(sockets[result], objects[result], &network_event); - if(network_event.lNetworkEvents & FD_READ) + if (network_event.lNetworkEvents & FD_READ) FD_SET(sockets[result], readfds); - if(network_event.lNetworkEvents & FD_WRITE) + if (network_event.lNetworkEvents & FD_WRITE) FD_SET(sockets[result], writefds); - if(network_event.lNetworkEvents & FD_OOB) + if (network_event.lNetworkEvents & FD_OOB) FD_SET(sockets[result], exceptfds); res = 1; } - else if ((result >= WAIT_OBJECT_0 + events_nbr) && (result < WAIT_OBJECT_0 + objects_nbr)) + else if ((result >= (WAIT_OBJECT_0 + events_nbr)) && + (result < (WAIT_OBJECT_0 + objects_nbr))) { if (!win32_handler_current) { @@ -1045,17 +1033,18 @@ wh = win32_handler_current; if (objects[result - WAIT_OBJECT_0] == wh->h) - if (!wh->delete_me) - { - wh->references++; - if (!wh->func(wh->data, wh)) - { - wh->delete_me = 1; - win32_handlers_delete_me = 1; - } - wh->references--; - } - + { + if (!wh->delete_me) + { + wh->references++; + if (!wh->func(wh->data, wh)) + { + wh->delete_me = 1; + win32_handlers_delete_me = 1; + } + wh->references--; + } + } if (win32_handler_current) /* may have changed in recursive main loops */ win32_handler_current = (Ecore_Win32_Handler *)EINA_INLIST_GET(win32_handler_current)->next; } @@ -1068,8 +1057,7 @@ } /* Remove event objects again */ - for(i = 0; i < events_nbr; i++) - WSACloseEvent(objects[i]); + for (i = 0; i < events_nbr; i++) WSACloseEvent(objects[i]); return res; } |
From: Enlightenment S. <no-...@en...> - 2010-05-26 11:40:29
|
Log: ooh someone somewhere made the main event loop not work quite right. fix if event purge happens to generate events. Author: raster Date: 2010-05-26 04:40:22 -0700 (Wed, 26 May 2010) New Revision: 49203 Modified: trunk/ecore/src/lib/ecore/ecore_events.c Modified: trunk/ecore/src/lib/ecore/ecore_events.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_events.c 2010-05-26 03:08:10 UTC (rev 49202) +++ trunk/ecore/src/lib/ecore/ecore_events.c 2010-05-26 11:40:22 UTC (rev 49203) @@ -11,6 +11,7 @@ #include "Ecore.h" #include "ecore_private.h" +static int inpurge = 0; struct _Ecore_Event_Handler { @@ -52,6 +53,7 @@ static int events_num = 0; static Ecore_Event *events = NULL; static Ecore_Event *event_current = NULL; +static Ecore_Event *purge_events = NULL; static Ecore_Event_Handler **event_handlers = NULL; static Ecore_Event_Handler *event_handler_current = NULL; @@ -384,8 +386,16 @@ e->event = ev; e->func_free = func_free; e->data = data; - events = (Ecore_Event *) eina_inlist_append(EINA_INLIST_GET(events), EINA_INLIST_GET(e)); - events_num++; + if (inpurge > 0) + { + purge_events = (Ecore_Event *)eina_inlist_append(EINA_INLIST_GET(purge_events), EINA_INLIST_GET(e)); + events_num++; + } + else + { + events = (Ecore_Event *)eina_inlist_append(EINA_INLIST_GET(events), EINA_INLIST_GET(e)); + events_num++; + } return e; } @@ -408,6 +418,7 @@ { Ecore_Event *itr = events; + inpurge++; while (itr) { Ecore_Event *next = (Ecore_Event *)EINA_INLIST_GET(itr)->next; @@ -415,6 +426,13 @@ _ecore_event_del(itr); itr = next; } + inpurge--; + while (purge_events) + { + Ecore_Event *e = purge_events; + purge_events = (Ecore_Event *)eina_inlist_remove(EINA_INLIST_GET(purge_events), EINA_INLIST_GET(purge_events)); + events = eina_inlist_append(EINA_INLIST_GET(events), EINA_INLIST_GET(e)); + } } void @@ -504,8 +522,6 @@ event_filters_delete_me = 0; } -// printf("EVENT BATCH...\n"); - if (!event_current) { /* regular main loop, start from head */ @@ -534,7 +550,7 @@ else { /* recursive main loop, continue from where we were */ - event_handler_current= (Ecore_Event_Handler *)EINA_INLIST_GET(event_handler_current)->next; + event_handler_current = (Ecore_Event_Handler *)EINA_INLIST_GET(event_handler_current)->next; } while ((event_handler_current) && (!e->delete_me)) @@ -557,7 +573,7 @@ } } if (event_handler_current) /* may have changed in recursive main loops */ - event_handler_current= (Ecore_Event_Handler *)EINA_INLIST_GET(event_handler_current)->next; + event_handler_current = (Ecore_Event_Handler *)EINA_INLIST_GET(event_handler_current)->next; } } /* if no handlers were set for EXIT signal - then default is */ @@ -575,6 +591,7 @@ ecore_raw_event_event = NULL; _ecore_event_purge_deleted(); + EINA_LIST_FOREACH_SAFE(event_handlers_delete_list, l, l_next, eh) { if (eh->references) continue; |
From: Enlightenment S. <no-...@en...> - 2010-05-29 06:37:09
|
Log: more extern c outside typedefs etc. Author: raster Date: 2010-05-28 23:37:02 -0700 (Fri, 28 May 2010) New Revision: 49273 Modified: trunk/ecore/src/lib/ecore/Ecore.h Modified: trunk/ecore/src/lib/ecore/Ecore.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore.h 2010-05-29 06:28:38 UTC (rev 49272) +++ trunk/ecore/src/lib/ecore/Ecore.h 2010-05-29 06:37:02 UTC (rev 49273) @@ -33,19 +33,6 @@ # endif #endif /* ! _WIN32 */ -#define ECORE_VERSION_MAJOR 0 -#define ECORE_VERSION_MINOR 9 - -typedef struct _Ecore_Version -{ - int major; - int minor; - int micro; - int revision; -} Ecore_Version; - -EAPI extern Ecore_Version *ecore_version; - /** * @file Ecore.h * @brief The file that provides the program utility, main loop and timer @@ -84,6 +71,19 @@ extern "C" { #endif +#define ECORE_VERSION_MAJOR 0 +#define ECORE_VERSION_MINOR 9 + + typedef struct _Ecore_Version + { + int major; + int minor; + int micro; + int revision; + } Ecore_Version; + + EAPI extern Ecore_Version *ecore_version; + #define ECORE_CALLBACK_CANCEL 0 /**< Return value to remove a callback */ #define ECORE_CALLBACK_RENEW 1 /**< Return value to keep a callback */ |
From: Enlightenment S. <no-...@en...> - 2010-05-29 13:43:56
|
Log: wanring: shadddaaap Author: raster Date: 2010-05-29 06:43:48 -0700 (Sat, 29 May 2010) New Revision: 49297 Modified: trunk/ecore/src/lib/ecore/ecore_events.c Modified: trunk/ecore/src/lib/ecore/ecore_events.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_events.c 2010-05-29 13:33:16 UTC (rev 49296) +++ trunk/ecore/src/lib/ecore/ecore_events.c 2010-05-29 13:43:48 UTC (rev 49297) @@ -431,7 +431,7 @@ { Ecore_Event *e = purge_events; purge_events = (Ecore_Event *)eina_inlist_remove(EINA_INLIST_GET(purge_events), EINA_INLIST_GET(purge_events)); - events = eina_inlist_append(EINA_INLIST_GET(events), EINA_INLIST_GET(e)); + events = (Ecore_Event *)eina_inlist_append(EINA_INLIST_GET(events), EINA_INLIST_GET(e)); } } |