From: Enlightenment S. <no-...@en...> - 2008-11-12 07:54:30
|
Log: fix compilation on windows, minor formatting, use unix end of line Author: caro Date: 2008-11-11 23:54:25 -0800 (Tue, 11 Nov 2008) New Revision: 37597 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 2008-11-12 07:25:38 UTC (rev 37596) +++ trunk/ecore/src/lib/ecore/ecore_pipe.c 2008-11-12 07:54:25 UTC (rev 37597) @@ -1,498 +1,503 @@ -/* - * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 - */ -#include <stdlib.h> -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif -#ifdef HAVE_EVIL -# include <Evil.h> -#endif -#include "ecore_private.h" -#include "Ecore.h" - -struct _Ecore_Pipe -{ - ECORE_MAGIC; - int fd_read; - int fd_write; - Ecore_Fd_Handler *fd_handler; - const void *data; - void (*handler) (void *data, void *buffer, unsigned int nbyte); - unsigned int len; - size_t already_read; - void *passed_data; -}; - -/* How of then we should retry to write to the pipe */ -#define ECORE_PIPE_WRITE_RETRY 6 - -/* - * On Windows, pipe() is implemented with sockets. - * Contrary to Linux, Windows uses different functions - * for sockets and fd's: write() is for fd's and send - * is for sockets. So I need to put some win32 code - * here. I can't think of a solution where the win32 - * code is in Evil and not here. - */ - -#ifdef _WIN32 - -# include <winsock2.h> - -# define pipe_write(fd, buffer, size) send((fd), (char *)(buffer), size, 0) -# define pipe_read(fd, buffer, size) recv((fd), (char *)(buffer), size, 0) - -#else - -# include <unistd.h> -# include <fcntl.h> -# include <errno.h> - -# define pipe_write(fd, buffer, size) write((fd), buffer, size) -# define pipe_read(fd, buffer, size) read((fd), buffer, size) - -#endif /* _WIN32 */ - - -static int _ecore_pipe_read(void *data, - Ecore_Fd_Handler *fd_handler); - -/** - * @defgroup Ecore_Pipe_Group Pipe wrapper - * - * These functions wrap the pipe / write / read functions to - * easily integrate a loop that is in its own thread to the ecore - * main loop. - * - * The ecore_pipe_add() function creates file descriptors (sockets on - * Windows) and attach an handle to the ecore main loop. That handle is - * called when data is read in the pipe. To write data in the pipe, - * just call ecore_pipe_write(). When you are done, just call - * ecore_pipe_del(). - * - * Here is an example that uses the pipe wrapper with a Gstreamer - * pipeline. For each decoded frame in the Gstreamer thread, a handle - * is called in the ecore thread. - * - * @code#include <gst/gst.h> - * #include <Ecore.h> - * - * static int nbr = 0; - * - * static GstElement *_buid_pipeline (gchar *filename, Ecore_Pipe *pipe); - * - * static void new_decoded_pad_cb (GstElement *demuxer, - * GstPad *new_pad, - * gpointer user_data); - * - * static void handler(void *data, void *buf, unsigned int len) - * { - * GstBuffer *buffer = *((GstBuffer **)buf); - * - * printf ("handler : %p\n", buffer); - * printf ("frame : %d %p %lld %p\n", nbr++, data, (long long)GST_BUFFER_DURATION(buffer), buffer); - * gst_buffer_unref (buffer); - * } - * - * - * static void handoff (GstElement* object, - * GstBuffer* arg0, - * GstPad* arg1, - * gpointer user_data) - * { - * Ecore_Pipe *pipe; - * - * pipe = (Ecore_Pipe *)user_data; - * printf ("handoff : %p\n", arg0); - * gst_buffer_ref (arg0); - * ecore_pipe_write(pipe, &arg0, sizeof(arg0)); - * } - * - * int - * main (int argc, char *argv[]) - * { - * GstElement *pipeline; - * char *filename; - * Ecore_Pipe *pipe; - * - * gst_init (&argc, &argv); - * - * if (!ecore_init ()) - * { - * gst_deinit (); - * return 0; - * } - * - * pipe = ecore_pipe_add (handler); - * if (!pipe) - * { - * ecore_shutdown (); - * gst_deinit (); - * return 0; - * } - * - * if (argc < 2) { - * g_print ("usage: %s file.avi\n", argv[0]); - * ecore_pipe_del (pipe); - * ecore_shutdown (); - * gst_deinit (); - * return 0; - * } - * filename = argv[1]; - * - * pipeline = _buid_pipeline (filename, pipe); - * if (!pipeline) { - * g_print ("Error during the pipeline building\n"); - * ecore_pipe_free (pipe); - * ecore_shutdown (); - * gst_deinit (); - * return -1; - * } - * - * gst_element_set_state (pipeline, GST_STATE_PLAYING); - * - * ecore_main_loop_begin(); - * - * ecore_pipe_free (pipe); - * ecore_shutdown (); - * gst_deinit (); - * - * return 0; - * } - * - * static void - * new_decoded_pad_cb (GstElement *demuxer, - * GstPad *new_pad, - * gpointer user_data) - * { - * GstElement *decoder; - * GstPad *pad; - * GstCaps *caps; - * gchar *str; - * - * caps = gst_pad_get_caps (new_pad); - * str = gst_caps_to_string (caps); - * - * if (g_str_has_prefix (str, "video/")) { - * decoder = GST_ELEMENT (user_data); - * - * pad = gst_element_get_pad (decoder, "sink"); - * if (GST_PAD_LINK_FAILED (gst_pad_link (new_pad, pad))) { - * g_warning ("Failed to link %s:%s to %s:%s", GST_DEBUG_PAD_NAME (new_pad), - * GST_DEBUG_PAD_NAME (pad)); - * } - * } - * g_free (str); - * gst_caps_unref (caps); - * } - * - * static GstElement * - * _buid_pipeline (gchar *filename, Ecore_Pipe *pipe) - * { - * GstElement *pipeline; - * GstElement *filesrc; - * GstElement *demuxer; - * GstElement *decoder; - * GstElement *sink; - GstStateChangeReturn res; - * - * pipeline = gst_pipeline_new ("pipeline"); - * if (!pipeline) - * return NULL; - * - * filesrc = gst_element_factory_make ("filesrc", "filesrc"); - * if (!filesrc) { - * printf ("no filesrc"); - * goto failure; - * } - * g_object_set (G_OBJECT (filesrc), "location", filename, NULL); - * - * demuxer = gst_element_factory_make ("oggdemux", "demuxer"); - * if (!demuxer) { - * printf ("no demux"); - * goto failure; - * } - * - * decoder = gst_element_factory_make ("theoradec", "decoder"); - * if (!decoder) { - * printf ("no dec"); - * goto failure; - * } - * - * g_signal_connect (demuxer, "pad-added", - * G_CALLBACK (new_decoded_pad_cb), decoder); - * - * sink = gst_element_factory_make ("fakesink", "sink"); - * if (!sink) { - * printf ("no sink"); - * goto failure; - * } - * g_object_set (G_OBJECT (sink), "sync", TRUE, NULL); - * g_object_set (G_OBJECT (sink), "signal-handoffs", TRUE, NULL); - * g_signal_connect (sink, "handoff", - * G_CALLBACK (handoff), pipe); - * - * gst_bin_add_many (GST_BIN (pipeline), - * filesrc, demuxer, decoder, sink, NULL); - * - * if (!gst_element_link (filesrc, demuxer)) - * goto failure; - * if (!gst_element_link (decoder, sink)) - * goto failure; - * - * res = gst_element_set_state (pipeline, GST_STATE_PAUSED); - * if (res == GST_STATE_CHANGE_FAILURE) - * goto failure; - * - * res = gst_element_get_state( pipeline, NULL, NULL, GST_CLOCK_TIME_NONE ); - * if (res != GST_STATE_CHANGE_SUCCESS) - * goto failure; - * - * return pipeline; - * - * failure: - * gst_object_unref (GST_OBJECT (pipeline)); - * return NULL; - * } - * @endcode - */ - - -/** - * Create two file descriptors (sockets on Windows). Add - * a callback that will be called when the file descriptor that - * is listened receives data. An event is also put in the event - * queue when data is received. - * - * @param handler The handler called when data is received. - * @param data Data to pass to @p handler when it is called. - * @return A newly created Ecore_Pipe object if successful. - * @c NULL otherwise. - * @ingroup Ecore_Pipe_Group - */ -EAPI Ecore_Pipe * -ecore_pipe_add(void (*handler) (void *data, void *buffer, unsigned int nbyte), - const void *data) -{ - Ecore_Pipe *p; - int fds[2]; - - if(!handler) - return NULL; - p = (Ecore_Pipe *)calloc(1, sizeof(Ecore_Pipe)); - if (!p) - return NULL; - - if (pipe(fds)) - { - free(p); - return NULL; - } - - ECORE_MAGIC_SET(p, ECORE_MAGIC_PIPE); - p->fd_read = fds[0]; - p->fd_write = fds[1]; - p->handler = handler; - p->data = data; - -#ifndef _WIN32 - fcntl(p->fd_read, F_SETFL, O_NONBLOCK); -#endif /* _WIN32 */ - p->fd_handler = ecore_main_fd_handler_add(p->fd_read, - ECORE_FD_READ, - _ecore_pipe_read, - p, - NULL, NULL); - - return p; -} - -/** - * Free an Ecore_Pipe object created with ecore_pipe_add(). - * - * @param p The Ecore_Pipe object to be freed. - * @return The pointer to the private data - * @ingroup Ecore_Pipe_Group - */ -EAPI void * -ecore_pipe_del(Ecore_Pipe *p) -{ - void *data; - - if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) - { - ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, - "ecore_pipe_del"); - return NULL; - } - ecore_main_fd_handler_del(p->fd_handler); - close(p->fd_read); - close(p->fd_write); - data = (void *)p->data; - free (p); - return data; -} - -/** - * 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 - * @ingroup Ecore_Pipe_Group - */ -EAPI int -ecore_pipe_write(Ecore_Pipe *p, const void *buffer, unsigned int nbytes) -{ - ssize_t ret; - size_t already_written = 0; - int retry = ECORE_PIPE_WRITE_RETRY; - - if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) - { - ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, - "ecore_pipe_write"); - return 0; - } - /* first write the len into the pipe */ - do - { - ret = pipe_write(p->fd_write, &nbytes, sizeof(nbytes)); - if (ret == sizeof(nbytes)) - { - retry = ECORE_PIPE_WRITE_RETRY; - break; - } - else if (ret > 0) - { - /* XXX What should we do here? */ - fprintf(stderr, "The length of the data was not written complete" - " to the pipe\n"); - return 0; - } - else if (ret == -1 && errno == EINTR) - /* try it again */ - ; - else - { - fprintf(stderr, "An unhandled error (ret: %d errno: %d)" - "occured while writing to the pipe the length\n", - ret, errno); - } - } - while (retry--); - - if (retry != ECORE_PIPE_WRITE_RETRY) - return 0; - - /* and now pass the data to the pipe */ - do - { - ret = pipe_write(p->fd_write, - ((unsigned char *)buffer) + already_written, - nbytes - already_written); - - if (ret == (ssize_t)(nbytes - already_written)) - return 1; - else if (ret >= 0) - { - already_written -= ret; - continue; - } - else if (ret == -1 && errno == EINTR) - /* try it again */ - ; - else - { - fprintf(stderr, "An unhandled error (ret: %d errno: %d)" - "occured while writing to the pipe the length\n", - ret, errno); - } - } - while (retry--); - - return 0; -} - -/* Private function */ - -static int -_ecore_pipe_read(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__) -{ - Ecore_Pipe *p; - double start_time; - - p = (Ecore_Pipe *)data; - start_time = ecore_time_get(); - - do - { - ssize_t ret; - - /* if we already have read some data we don't need to read the len - * but to finish the already started job - */ - if (p->len == 0) - { - /* read the len of the passed data */ - ret = pipe_read(p->fd_read, &p->len, sizeof(p->len)); - - /* catch the non error case first */ - if (ret == sizeof(p->len)) - ; - else if (ret > 0) - { - /* 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)); - } - else if (ret == 0 - || (ret == -1 && (errno == EINTR || errno == EAGAIN))) - return ECORE_CALLBACK_RENEW; - else - { - fprintf(stderr, "An unhandled error (ret: %d errno: %d)" - "occured while reading from the pipe the length\n", - ret, errno); - return ECORE_CALLBACK_RENEW; - } - } - - if (!p->passed_data) - p->passed_data = malloc(p->len); - - /* and read the passed data */ - ret = pipe_read(p->fd_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)) - { - p->handler((void *)p->data, p->passed_data, p->len); - free(p->passed_data); - /* reset all values to 0 */ - p->passed_data = NULL; - p->already_read = 0; - p->len = 0; - } - else if (ret >= 0) - { - p->already_read += ret; - return ECORE_CALLBACK_RENEW; - } - else if (ret == -1 && (errno == EINTR || errno == EAGAIN)) - return ECORE_CALLBACK_RENEW; - else - { - fprintf(stderr, "An unhandled error (ret: %d errno: %d)" - "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; -} +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <stdlib.h> +#include <errno.h> + +#ifdef HAVE_EVIL +# include <Evil.h> +#endif + +#include "ecore_private.h" +#include "Ecore.h" + +/* How of then we should retry to write to the pipe */ +#define ECORE_PIPE_WRITE_RETRY 6 + +/* + * On Windows, pipe() is implemented with sockets. + * Contrary to Linux, Windows uses different functions + * for sockets and fd's: write() is for fd's and send + * is for sockets. So I need to put some win32 code + * here. I can't think of a solution where the win32 + * code is in Evil and not here. + */ + +#ifdef _WIN32 + +# include <winsock2.h> + +# define pipe_write(fd, buffer, size) send((fd), (char *)(buffer), size, 0) +# define pipe_read(fd, buffer, size) recv((fd), (char *)(buffer), size, 0) + +#else + +# include <unistd.h> +# include <fcntl.h> + +# define pipe_write(fd, buffer, size) write((fd), buffer, size) +# define pipe_read(fd, buffer, size) read((fd), buffer, size) + +#endif /* ! _WIN32 */ + +struct _Ecore_Pipe +{ + ECORE_MAGIC; + int fd_read; + int fd_write; + Ecore_Fd_Handler *fd_handler; + const void *data; + 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); + +/** + * @defgroup Ecore_Pipe_Group Pipe wrapper + * + * These functions wrap the pipe / write / read functions to + * easily integrate a loop that is in its own thread to the ecore + * main loop. + * + * The ecore_pipe_add() function creates file descriptors (sockets on + * Windows) and attach an handle to the ecore main loop. That handle is + * called when data is read in the pipe. To write data in the pipe, + * just call ecore_pipe_write(). When you are done, just call + * ecore_pipe_del(). + * + * Here is an example that uses the pipe wrapper with a Gstreamer + * pipeline. For each decoded frame in the Gstreamer thread, a handle + * is called in the ecore thread. + * + * @code#include <gst/gst.h> + * #include <Ecore.h> + * + * static int nbr = 0; + * + * static GstElement *_buid_pipeline (gchar *filename, Ecore_Pipe *pipe); + * + * static void new_decoded_pad_cb (GstElement *demuxer, + * GstPad *new_pad, + * gpointer user_data); + * + * static void handler(void *data, void *buf, unsigned int len) + * { + * GstBuffer *buffer = *((GstBuffer **)buf); + * + * printf ("handler : %p\n", buffer); + * printf ("frame : %d %p %lld %p\n", nbr++, data, (long long)GST_BUFFER_DURATION(buffer), buffer); + * gst_buffer_unref (buffer); + * } + * + * + * static void handoff (GstElement* object, + * GstBuffer* arg0, + * GstPad* arg1, + * gpointer user_data) + * { + * Ecore_Pipe *pipe; + * + * pipe = (Ecore_Pipe *)user_data; + * printf ("handoff : %p\n", arg0); + * gst_buffer_ref (arg0); + * ecore_pipe_write(pipe, &arg0, sizeof(arg0)); + * } + * + * int + * main (int argc, char *argv[]) + * { + * GstElement *pipeline; + * char *filename; + * Ecore_Pipe *pipe; + * + * gst_init (&argc, &argv); + * + * if (!ecore_init ()) + * { + * gst_deinit (); + * return 0; + * } + * + * pipe = ecore_pipe_add (handler); + * if (!pipe) + * { + * ecore_shutdown (); + * gst_deinit (); + * return 0; + * } + * + * if (argc < 2) { + * g_print ("usage: %s file.avi\n", argv[0]); + * ecore_pipe_del (pipe); + * ecore_shutdown (); + * gst_deinit (); + * return 0; + * } + * filename = argv[1]; + * + * pipeline = _buid_pipeline (filename, pipe); + * if (!pipeline) { + * g_print ("Error during the pipeline building\n"); + * ecore_pipe_free (pipe); + * ecore_shutdown (); + * gst_deinit (); + * return -1; + * } + * + * gst_element_set_state (pipeline, GST_STATE_PLAYING); + * + * ecore_main_loop_begin(); + * + * ecore_pipe_free (pipe); + * ecore_shutdown (); + * gst_deinit (); + * + * return 0; + * } + * + * static void + * new_decoded_pad_cb (GstElement *demuxer, + * GstPad *new_pad, + * gpointer user_data) + * { + * GstElement *decoder; + * GstPad *pad; + * GstCaps *caps; + * gchar *str; + * + * caps = gst_pad_get_caps (new_pad); + * str = gst_caps_to_string (caps); + * + * if (g_str_has_prefix (str, "video/")) { + * decoder = GST_ELEMENT (user_data); + * + * pad = gst_element_get_pad (decoder, "sink"); + * if (GST_PAD_LINK_FAILED (gst_pad_link (new_pad, pad))) { + * g_warning ("Failed to link %s:%s to %s:%s", GST_DEBUG_PAD_NAME (new_pad), + * GST_DEBUG_PAD_NAME (pad)); + * } + * } + * g_free (str); + * gst_caps_unref (caps); + * } + * + * static GstElement * + * _buid_pipeline (gchar *filename, Ecore_Pipe *pipe) + * { + * GstElement *pipeline; + * GstElement *filesrc; + * GstElement *demuxer; + * GstElement *decoder; + * GstElement *sink; + GstStateChangeReturn res; + * + * pipeline = gst_pipeline_new ("pipeline"); + * if (!pipeline) + * return NULL; + * + * filesrc = gst_element_factory_make ("filesrc", "filesrc"); + * if (!filesrc) { + * printf ("no filesrc"); + * goto failure; + * } + * g_object_set (G_OBJECT (filesrc), "location", filename, NULL); + * + * demuxer = gst_element_factory_make ("oggdemux", "demuxer"); + * if (!demuxer) { + * printf ("no demux"); + * goto failure; + * } + * + * decoder = gst_element_factory_make ("theoradec", "decoder"); + * if (!decoder) { + * printf ("no dec"); + * goto failure; + * } + * + * g_signal_connect (demuxer, "pad-added", + * G_CALLBACK (new_decoded_pad_cb), decoder); + * + * sink = gst_element_factory_make ("fakesink", "sink"); + * if (!sink) { + * printf ("no sink"); + * goto failure; + * } + * g_object_set (G_OBJECT (sink), "sync", TRUE, NULL); + * g_object_set (G_OBJECT (sink), "signal-handoffs", TRUE, NULL); + * g_signal_connect (sink, "handoff", + * G_CALLBACK (handoff), pipe); + * + * gst_bin_add_many (GST_BIN (pipeline), + * filesrc, demuxer, decoder, sink, NULL); + * + * if (!gst_element_link (filesrc, demuxer)) + * goto failure; + * if (!gst_element_link (decoder, sink)) + * goto failure; + * + * res = gst_element_set_state (pipeline, GST_STATE_PAUSED); + * if (res == GST_STATE_CHANGE_FAILURE) + * goto failure; + * + * res = gst_element_get_state( pipeline, NULL, NULL, GST_CLOCK_TIME_NONE ); + * if (res != GST_STATE_CHANGE_SUCCESS) + * goto failure; + * + * return pipeline; + * + * failure: + * gst_object_unref (GST_OBJECT (pipeline)); + * return NULL; + * } + * @endcode + */ + + +/** + * Create two file descriptors (sockets on Windows). Add + * a callback that will be called when the file descriptor that + * is listened receives data. An event is also put in the event + * queue when data is received. + * + * @param handler The handler called when data is received. + * @param data Data to pass to @p handler when it is called. + * @return A newly created Ecore_Pipe object if successful. + * @c NULL otherwise. + * @ingroup Ecore_Pipe_Group + */ +EAPI Ecore_Pipe * +ecore_pipe_add(void (*handler) (void *data, void *buffer, unsigned int nbyte), + const void *data) +{ + Ecore_Pipe *p; + int fds[2]; + + if(!handler) + return NULL; + + p = (Ecore_Pipe *)calloc(1, sizeof(Ecore_Pipe)); + if (!p) + return NULL; + + if (pipe(fds)) + { + free(p); + return NULL; + } + + ECORE_MAGIC_SET(p, ECORE_MAGIC_PIPE); + p->fd_read = fds[0]; + p->fd_write = fds[1]; + p->handler = handler; + p->data = data; + +#ifndef _WIN32 + fcntl(p->fd_read, F_SETFL, O_NONBLOCK); +#endif /* _WIN32 */ + p->fd_handler = ecore_main_fd_handler_add(p->fd_read, + ECORE_FD_READ, + _ecore_pipe_read, + p, + NULL, NULL); + + return p; +} + +/** + * Free an Ecore_Pipe object created with ecore_pipe_add(). + * + * @param p The Ecore_Pipe object to be freed. + * @return The pointer to the private data + * @ingroup Ecore_Pipe_Group + */ +EAPI void * +ecore_pipe_del(Ecore_Pipe *p) +{ + void *data; + + if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) + { + ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, + "ecore_pipe_del"); + return NULL; + } + ecore_main_fd_handler_del(p->fd_handler); + close(p->fd_read); + close(p->fd_write); + data = (void *)p->data; + free (p); + return data; +} + +/** + * 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 + * @ingroup Ecore_Pipe_Group + */ +EAPI int +ecore_pipe_write(Ecore_Pipe *p, const void *buffer, unsigned int nbytes) +{ + ssize_t ret; + size_t already_written = 0; + int retry = ECORE_PIPE_WRITE_RETRY; + + if (!ECORE_MAGIC_CHECK(p, ECORE_MAGIC_PIPE)) + { + ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, + "ecore_pipe_write"); + return 0; + } + /* first write the len into the pipe */ + do + { + ret = pipe_write(p->fd_write, &nbytes, sizeof(nbytes)); + if (ret == sizeof(nbytes)) + { + retry = ECORE_PIPE_WRITE_RETRY; + break; + } + else if (ret > 0) + { + /* XXX What should we do here? */ + fprintf(stderr, "The length of the data was not written complete" + " to the pipe\n"); + return 0; + } + else if (ret == -1 && errno == EINTR) + /* try it again */ + ; + else + { + fprintf(stderr, "An unhandled error (ret: %d errno: %d)" + "occured while writing to the pipe the length\n", + ret, errno); + } + } + while (retry--); + + if (retry != ECORE_PIPE_WRITE_RETRY) + return 0; + + /* and now pass the data to the pipe */ + do + { + ret = pipe_write(p->fd_write, + ((unsigned char *)buffer) + already_written, + nbytes - already_written); + + if (ret == (ssize_t)(nbytes - already_written)) + return 1; + else if (ret >= 0) + { + already_written -= ret; + continue; + } + else if (ret == -1 && errno == EINTR) + /* try it again */ + ; + else + { + fprintf(stderr, "An unhandled error (ret: %d errno: %d)" + "occured while writing to the pipe the length\n", + ret, errno); + } + } + while (retry--); + + return 0; +} + +/* Private function */ + +static int +_ecore_pipe_read(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__) +{ + Ecore_Pipe *p; + double start_time; + + p = (Ecore_Pipe *)data; + start_time = ecore_time_get(); + + do + { + ssize_t ret; + + /* if we already have read some data we don't need to read the len + * but to finish the already started job + */ + if (p->len == 0) + { + /* read the len of the passed data */ + ret = pipe_read(p->fd_read, &p->len, sizeof(p->len)); + + /* catch the non error case first */ + if (ret == sizeof(p->len)) + ; + else if (ret > 0) + { + /* 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)); + } + else if ((ret == 0) || + ((ret == -1) && ((errno == EINTR) || (errno == EAGAIN)))) + return ECORE_CALLBACK_RENEW; + else + { + fprintf(stderr, "An unhandled error (ret: %d errno: %d)" + "occured while reading from the pipe the length\n", + ret, errno); + return ECORE_CALLBACK_RENEW; + } + } + + if (!p->passed_data) + p->passed_data = malloc(p->len); + + /* and read the passed data */ + ret = pipe_read(p->fd_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)) + { + p->handler((void *)p->data, p->passed_data, p->len); + free(p->passed_data); + /* reset all values to 0 */ + p->passed_data = NULL; + p->already_read = 0; + p->len = 0; + } + else if (ret >= 0) + { + p->already_read += ret; + return ECORE_CALLBACK_RENEW; + } + else if (ret == -1 && (errno == EINTR || errno == EAGAIN)) + return ECORE_CALLBACK_RENEW; + else + { + fprintf(stderr, "An unhandled error (ret: %d errno: %d)" + "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...> - 2008-11-18 06:56:37
|
Log: remove the problem of the main loop taking 100% of the cpu consumption on Windows Author: caro Date: 2008-11-17 22:56:31 -0800 (Mon, 17 Nov 2008) New Revision: 37699 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 2008-11-18 02:40:33 UTC (rev 37698) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2008-11-18 06:56:31 UTC (rev 37699) @@ -8,6 +8,7 @@ #ifdef _WIN32 # include <winsock2.h> +# define USER_TIMER_MINIMUM 0x0a #endif #include <math.h> @@ -303,6 +304,11 @@ { int sec, usec; +#if _WIN32 + if (timeout > 0.05) + timeout = 0.05; +#endif + #ifdef FIX_HZ timeout += (0.5 / HZ); sec = (int)timeout; @@ -459,73 +465,12 @@ return ret; } -static int -_ecore_main_win32_message(double timeout) -{ -#ifdef _WIN32 - MSG msg; - - if (!finite(timeout)) - timeout = 0.0; - - if (timeout < 0.0) - { - for (;;) - { - if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) - return 1; - } - } - else - { - double start; - double t; - - start = ecore_time_get(); - while ((t = ecore_time_get()) < (start + timeout)) - { - if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) - return 1; - } - } -#else - timeout = 0.0; -#endif /* _WIN32 */ - - return 0; -} - -static int -_ecore_main_win32_message_buf_call(void) -{ -#ifdef _WIN32 - MSG msg; - int ret; - - ret = 0; - if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) - { - if ((msg.message & 0xffff) < 0xC000) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - ret = 1; - } - - return ret; -#else - return 0; -#endif /* _WIN32 */ -} - static void _ecore_main_loop_iterate_internal(int once_only) { double next_time; int have_event = 0; int have_signal; - int have_msg = 0; in_main_loop++; /* expire any timers */ @@ -544,9 +489,7 @@ { have_event = 1; have_signal = 1; - have_msg = 1; _ecore_main_select(0.0); - _ecore_main_win32_message(0.0); goto process_events; } /* call idle enterers ... */ @@ -554,29 +497,25 @@ _ecore_idle_enterer_call(); else { - have_event = have_signal = have_msg = 0; + have_event = have_signal = 0; 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_signal || have_event || have_msg) + if (have_signal || have_event) goto process_events; } /* if these calls caused any buffered events to appear - deal with them */ while (_ecore_main_fd_handlers_buf_call()); - while (_ecore_main_win32_message_buf_call()); /* if ther are any - jump to processing them */ if (_ecore_event_exist()) { have_event = 1; have_signal = 1; - have_msg = 1; _ecore_main_select(0.0); - _ecore_main_win32_message(0.0); goto process_events; } if (once_only) @@ -601,7 +540,7 @@ if (!_ecore_event_exist()) { /* init flags */ - have_event = have_signal = have_msg = 0; + have_event = have_signal = 0; next_time = _ecore_timer_next_get(); /* no timers */ if (next_time < 0) @@ -610,7 +549,6 @@ if (!_ecore_idler_exist()) { if (_ecore_main_select(-1.0) > 0) have_event = 1; - if (_ecore_main_win32_message(-1.0) > 0) have_msg = 1; if (_ecore_signal_count_get() > 0) have_signal = 1; } /* idlers */ @@ -621,9 +559,8 @@ 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; + if (have_event || have_signal) break; next_time = _ecore_timer_next_get(); if (next_time >= 0) goto start_loop; if (do_quit) break; @@ -637,7 +574,6 @@ if (!_ecore_idler_exist()) { if (_ecore_main_select(next_time) > 0) have_event = 1; - if (_ecore_main_win32_message(next_time) > 0) have_msg = 1; if (_ecore_signal_count_get() > 0) have_signal = 1; } /* idlers */ @@ -648,9 +584,8 @@ 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; + if (have_event || have_signal) break; next_time = _ecore_timer_next_get(); if (next_time < 0) goto start_loop; if (do_quit) break; @@ -679,8 +614,37 @@ _ecore_main_fd_handlers_cleanup(); } while (_ecore_main_fd_handlers_buf_call()); - if (have_msg) _ecore_main_win32_message_buf_call(); - while (_ecore_main_win32_message_buf_call()); +#if _WIN32 + { + MSG msg; + BOOL ret; + UINT_PTR TmrID = 0; + if ((UINT) (next_time * 1000.0) > USER_TIMER_MINIMUM) + { + TmrID = SetTimer(NULL, 0, (UINT) (next_time * 1000.0), NULL); + ret = GetMessage(&msg, NULL, 0, 0); + } + else + { + ret = PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); + } + + if (ret) + { + do + { + TranslateMessage(&msg); + DispatchMessageW(&msg); + Sleep(0); /* Give other threads a chance to run */ + } while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)); + } + + if (TmrID) + KillTimer(NULL, TmrID); + } +#endif + + /* 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 |
From: Enlightenment S. <no-...@en...> - 2008-11-22 07:55:07
|
Log: add evil init / shutdown. Necessary for gettimeofday on Windows CE Author: caro Date: 2008-11-21 23:55:02 -0800 (Fri, 21 Nov 2008) New Revision: 37741 Modified: trunk/ecore/src/lib/ecore/ecore.c Modified: trunk/ecore/src/lib/ecore/ecore.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore.c 2008-11-22 04:31:22 UTC (rev 37740) +++ trunk/ecore/src/lib/ecore/ecore.c 2008-11-22 07:55:02 UTC (rev 37741) @@ -68,6 +68,9 @@ printf("WARNING: not a utf8 locale!\n"); } */ +#ifdef HAVE_EVIL + evil_init(); +#endif eina_init(); if (getenv("ECORE_FPS_DEBUG")) _ecore_fps_debug = 1; if (_ecore_fps_debug) _ecore_fps_debug_init(); @@ -107,6 +110,9 @@ _ecore_main_shutdown(); _ecore_signal_shutdown(); eina_shutdown(); +#ifdef HAVE_EVIL + evil_shutdown(); +#endif return _ecore_init_count; } |
From: Enlightenment S. <no-...@en...> - 2008-11-29 11:23:21
|
Log: remove trailing spaces Author: caro Date: 2008-11-29 03:23:17 -0800 (Sat, 29 Nov 2008) New Revision: 37851 Modified: trunk/ecore/src/lib/ecore/ecore.c trunk/ecore/src/lib/ecore/ecore_anim.c trunk/ecore/src/lib/ecore/ecore_app.c trunk/ecore/src/lib/ecore/ecore_events.c trunk/ecore/src/lib/ecore/ecore_exe.c trunk/ecore/src/lib/ecore/ecore_hash.c trunk/ecore/src/lib/ecore/ecore_idle_enterer.c trunk/ecore/src/lib/ecore/ecore_idle_exiter.c trunk/ecore/src/lib/ecore/ecore_idler.c trunk/ecore/src/lib/ecore/ecore_list.c trunk/ecore/src/lib/ecore/ecore_main.c trunk/ecore/src/lib/ecore/ecore_path.c trunk/ecore/src/lib/ecore/ecore_plugin.c trunk/ecore/src/lib/ecore/ecore_poll.c trunk/ecore/src/lib/ecore/ecore_sheap.c trunk/ecore/src/lib/ecore/ecore_signal.c trunk/ecore/src/lib/ecore/ecore_str.c trunk/ecore/src/lib/ecore/ecore_strbuf.c trunk/ecore/src/lib/ecore/ecore_strings.c trunk/ecore/src/lib/ecore/ecore_time.c trunk/ecore/src/lib/ecore/ecore_timer.c trunk/ecore/src/lib/ecore/ecore_tree.c trunk/ecore/src/lib/ecore/ecore_value.c Modified: trunk/ecore/src/lib/ecore/ecore.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -1,4 +1,3 @@ - #ifdef HAVE_CONFIG_H # include <config.h> #endif Modified: trunk/ecore/src/lib/ecore/ecore_anim.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_anim.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_anim.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -14,22 +14,22 @@ * @param data The data to pass to the function * @return A handle to the new animator * @ingroup Ecore_Animator_Group - * + * * This function adds a animator and returns its handle on success and NULL on * failure. The function @p func will be called every N seconds where N is the * frametime interval set by ecore_animator_frametime_set(). The function will * be passed the @p data pointer as its parameter. - * - * When the animator @p func is called, it must return a value of either 1 or 0. - * If it returns 1 (or ECORE_CALLBACK_RENEW), it will be called again at the - * next tick, or if it returns 0 (or ECORE_CALLBACK_CANCEL) it will be deleted + * + * When the animator @p func is called, it must return a value of either 1 or 0. + * If it returns 1 (or ECORE_CALLBACK_RENEW), it will be called again at the + * next tick, or if it returns 0 (or ECORE_CALLBACK_CANCEL) it will be deleted * automatically making any references/handles for it invalid. */ EAPI Ecore_Animator * ecore_animator_add(int (*func) (void *data), const void *data) { Ecore_Animator *animator; - + if (!func) return NULL; animator = calloc(1, sizeof(Ecore_Animator)); if (!animator) return NULL; @@ -47,7 +47,7 @@ * @param animator The animator to delete * @return The data pointer set for the animator * @ingroup Ecore_Animator_Group - * + * * Delete the specified @p aqnimator from the set of animators that are executed * during main loop execution. This function returns the data parameter that * was being passed to the callback on success, or NULL on failure. After this @@ -72,7 +72,7 @@ /** * Set the animator call interval in seconds. * @param frametime The time in seconds in between animator ticks. - * + * * This function sets the time interval (in seconds) inbetween animator ticks. */ EAPI void @@ -93,7 +93,7 @@ /** * Get the animator call interval in seconds. * @return The time in second in between animator ticks. - * + * * this function retrieves the time inbetween animator ticks, in seconds. */ EAPI double @@ -109,11 +109,11 @@ { ecore_timer_del(timer); timer = NULL; - } + } while (animators) { Ecore_Animator *animator; - + animator = animators; animators = _ecore_list2_remove(animators, animator); ECORE_MAGIC_SET(animator, ECORE_MAGIC_NONE); @@ -129,7 +129,7 @@ for (l = (Ecore_List2 *)animators; l;) { Ecore_Animator *animator; - + animator = (Ecore_Animator *)l; l = l->next; if (!animator->delete_me) @@ -146,7 +146,7 @@ for (l = (Ecore_List2 *)animators; l;) { Ecore_Animator *animator; - + animator = (Ecore_Animator *)l; l = l->next; if (animator->delete_me) Modified: trunk/ecore/src/lib/ecore/ecore_app.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_app.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_app.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -1,4 +1,3 @@ - #ifdef HAVE_CONFIG_H # include <config.h> #endif @@ -17,7 +16,7 @@ * Set up the programs command-line arguments. * @param argc The same as passed as argc to the programs main() function * @param argv The same as passed as argv to the programs main() function - * + * * A call to this function will store the programs command-line arguments * for later use by ecore_app_restart() or ecore_app_args_get(). */ @@ -34,7 +33,7 @@ * Return the programs stored command-line arguments. * @param argc A pointer to the return value to hold argc * @param argv A pointer to the return value to hold argv - * + * * When called, this funciton returns the arguments for the program stored by * ecore_app_args_set(). The integer pointed to by @p argc will be filled, if * the pointer is not NULL, and the string array pointer @p argv will be filled @@ -50,7 +49,7 @@ /** * Restart the program executable with the command-line arguments stored. - * + * * This function will restart & re-execute this program in place of itself * using the command-line arguments stored by ecore_app_args_set(). This is * an easy way for a program to restart itself for cleanup purposes, @@ -61,7 +60,7 @@ { char *args[4096]; int i; - + if ((app_argc < 1) || (!app_argv)) return; if (app_argc >= 4096) return; for (i = 0; i < app_argc; i++) args[i] = app_argv[i]; Modified: trunk/ecore/src/lib/ecore/ecore_events.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_events.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_events.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -24,21 +24,21 @@ * @param func The function to call when the event is found in the queue * @param data A data pointer to pass to the called function @p func * @return A new Event handler, or NULL on failure - * + * * 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 + * 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 * 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 + * structure that is specific to that event type, and a data pointer that is * provided in this call as the @p data parameter. - * - * When the callback @p func is called, it must return 1 or 0. If it returns - * 1 (or ECORE_CALLBACK_RENEW), It will keep being called as per normal, for - * each handler set up for that event type. If it returns 0 (or + * + * When the callback @p func is called, it must return 1 or 0. If it returns + * 1 (or ECORE_CALLBACK_RENEW), It will keep being called as per normal, for + * each handler set up for that event type. If it returns 0 (or * ECORE_CALLBACK_CANCEL), it will cease processing handlers for that particular - * event, so all handler set to handle that event type that have not already + * event, so all handler set to handle that event type that have not already * been called, will not be. */ EAPI Ecore_Event_Handler * @@ -57,14 +57,14 @@ if (type >= (event_handlers_num - 1)) { int p_alloc_num; - + p_alloc_num = event_handlers_alloc_num; event_handlers_num = type + 1; if (event_handlers_num > event_handlers_alloc_num) { Ecore_Event_Handler **new_handlers; int i; - + event_handlers_alloc_num = ((event_handlers_num + 16) / 16) * 16; new_handlers = realloc(event_handlers, event_handlers_alloc_num * sizeof(Ecore_Event_Handler *)); if (!new_handlers) @@ -85,7 +85,7 @@ * Delete an event handler. * @param event_handler Event handler handle to delete * @return Data passed to handler - * + * * Delete a specified event handler from the handler list. On success this will * delete the event handler and return the pointer passed as @p data when the * handler was added by ecore_event_handler_add(). On failure NULL will be @@ -95,8 +95,8 @@ ecore_event_handler_del(Ecore_Event_Handler *event_handler) { Ecore_List2_Data *node; - - if (!ECORE_MAGIC_CHECK(event_handler, ECORE_MAGIC_EVENT_HANDLER)) + + if (!ECORE_MAGIC_CHECK(event_handler, ECORE_MAGIC_EVENT_HANDLER)) { ECORE_MAGIC_FAIL(event_handler, ECORE_MAGIC_EVENT_HANDLER, "ecore_event_handler_del"); @@ -109,7 +109,7 @@ return event_handler->data; } -static void +static void _ecore_event_generic_free (void *data __UNUSED__, void *event) { free (event); @@ -122,10 +122,10 @@ * @param func_free The function to be called to free this private structure * @param data The data pointer to be passed to the free function * @return A Handle for that event - * + * * On success this function returns a handle to an event on the event queue, or * NULL if it fails. If it succeeds, an event of type @p type will be added - * to the queue for processing by event handlers added by + * to the queue for processing by event handlers added by * ecore_event_handler_add(). The @p ev parameter will be a pointer to the event * private data that is specific to that event type. When the event is no * longer needed, @p func_free will be called and passed the private structure @@ -147,7 +147,7 @@ * Delete an event from the queue. * @param event The event handle to delete * @return The data pointer originally set for the event free function - * + * * This deletes the event @p event from the event queue, and returns the * @p data parameer originally set when adding it with ecore_event_add(). This * does not immediately call the free function, and it may be called later on @@ -157,9 +157,9 @@ EAPI void * ecore_event_del(Ecore_Event *event) { - if (!ECORE_MAGIC_CHECK(event, ECORE_MAGIC_EVENT)) + if (!ECORE_MAGIC_CHECK(event, ECORE_MAGIC_EVENT)) { - ECORE_MAGIC_FAIL(event, ECORE_MAGIC_EVENT, "ecore_event_del"); + ECORE_MAGIC_FAIL(event, ECORE_MAGIC_EVENT, "ecore_event_del"); return NULL; } event->delete_me = 1; @@ -169,8 +169,8 @@ /** * Allocate a new event type id sensibly and return the new id. * @return A new event type id. - * - * This function allocates a new event type id and returns it. Once an event + * + * This function allocates a new event type id and returns it. Once an event * type has been allocated it can never be de-allocated during the life of * the program. There is no guarantee of the contents of this event ID, or how * it is calculated, except that the ID will be unique to the current instance @@ -190,8 +190,8 @@ * @param func_end Function to call after the queu has been filtered * @param data Data to pass to the filter functions * @return A filter handle - * - * This adds a filter to call callbacks to loop through the event queue and + * + * This adds a filter to call callbacks to loop through the event queue and * filter events out of the queue. On failure NULL is returned. On success a * Filter handle is returned. Filters are called on the queue just before * Event handler processing to try and remove redundant events. Just as @@ -207,7 +207,7 @@ ecore_event_filter_add(void * (*func_start) (void *data), int (*func_filter) (void *data, void *loop_data, int type, void *event), void (*func_end) (void *data, void *loop_data), const void *data) { Ecore_Event_Filter *ef; - + if (!func_filter) return NULL; ef = calloc(1, sizeof(Ecore_Event_Filter)); if (!ef) return NULL; @@ -224,14 +224,14 @@ * Delete an event filter. * @param ef The event filter handle * @return The data set for the filter - * + * * Delete a filter that has been added by its @p ef handle. On success this * will return the data pointer set when this filter was added. On failure * NULL is returned. */ EAPI void * ecore_event_filter_del(Ecore_Event_Filter *ef) -{ +{ if (!ECORE_MAGIC_CHECK(ef, ECORE_MAGIC_EVENT_FILTER)) { ECORE_MAGIC_FAIL(ef, ECORE_MAGIC_EVENT_FILTER, "ecore_event_filter_del"); @@ -245,11 +245,11 @@ /** * Return the current event type being handled. * @return The current event type being handled if inside a handler callback - * + * * If the program is currently inside an Ecore event handler callback this * will return the type of the current event being processed. If Ecore is * not inside an event handler, ECORE_EVENT_NONE is returned. - * + * * This is useful when certain Ecore modules such as Ecore_Evas "swallow" * events and not all the original information is passed on. In special cases * this extra information may be useful or needed and using this call can let @@ -265,11 +265,11 @@ /** * Return the current event type pointer handled. * @return The current event pointer being handled if inside a handler callback - * + * * If the program is currently inside an Ecore event handler callback this * will return the pointer of the current event being processed. If Ecore is * not inside an event handler, NULL will be returned. - * + * * This is useful when certain Ecore modules such as Ecore_Evas "swallow" * events and not all the original information is passed on. In special cases * this extra information may be useful or needed and using this call can let @@ -286,14 +286,14 @@ _ecore_event_shutdown(void) { int i; - + while (events) _ecore_event_del(events); for (i = 0; i < event_handlers_num; i++) { while (event_handlers[i]) { Ecore_Event_Handler *eh; - + eh = event_handlers[i]; event_handlers[i] = _ecore_list2_remove(event_handlers[i], eh); ECORE_MAGIC_SET(eh, ECORE_MAGIC_NONE); @@ -303,7 +303,7 @@ while (event_handlers_delete_list) { Ecore_List2_Data *ehd; - + ehd = event_handlers_delete_list; event_handlers_delete_list = _ecore_list2_remove(event_handlers_delete_list, ehd); free(ehd); @@ -315,9 +315,9 @@ while (event_filters) { Ecore_Event_Filter *ef; - + ef = event_filters; - event_filters = _ecore_list2_remove(event_filters, ef); + event_filters = _ecore_list2_remove(event_filters, ef); ECORE_MAGIC_SET(ef, ECORE_MAGIC_NONE); free(ef); } @@ -335,7 +335,7 @@ _ecore_event_add(int type, void *ev, void (*func_free) (void *data, void *ev), void *data) { Ecore_Event *e; - + e = calloc(1, sizeof(Ecore_Event)); if (!e) return NULL; ECORE_MAGIC_SET(e, ECORE_MAGIC_EVENT); @@ -352,7 +352,7 @@ _ecore_event_del(Ecore_Event *event) { void *data; - + data = event->data; if (event->func_free) event->func_free(event->data, event->event); events = _ecore_list2_remove(events, event); @@ -440,7 +440,7 @@ // printf("EVENT BATCH DONE\n"); ecore_raw_event_type = ECORE_EVENT_NONE; ecore_raw_event_event = NULL; - + while (events) _ecore_event_del(events); while (event_handlers_delete_list) { @@ -458,7 +458,7 @@ _ecore_event_signal_user_new(void) { Ecore_Event_Signal_User *e; - + e = calloc(1, sizeof(Ecore_Event_Signal_User)); return e; } @@ -467,7 +467,7 @@ _ecore_event_signal_hup_new(void) { Ecore_Event_Signal_Hup *e; - + e = calloc(1, sizeof(Ecore_Event_Signal_Hup)); return e; } @@ -476,7 +476,7 @@ _ecore_event_signal_exit_new(void) { Ecore_Event_Signal_Exit *e; - + e = calloc(1, sizeof(Ecore_Event_Signal_Exit)); return e; } @@ -485,7 +485,7 @@ _ecore_event_signal_power_new(void) { Ecore_Event_Signal_Power *e; - + e = calloc(1, sizeof(Ecore_Event_Signal_Power)); return e; } Modified: trunk/ecore/src/lib/ecore/ecore_exe.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_exe.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_exe.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -212,10 +212,10 @@ /** * Sets the priority at which to launch processes * - * This sets the priority of processes run by ecore_exe_run() and + * 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 */ @@ -228,10 +228,10 @@ /** * Gets the priority at which to launch processes * - * This gets ths priority of launched processes. See + * 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 */ @@ -330,7 +330,7 @@ if ((flags & ECORE_EXE_PIPE_AUTO) && (!(flags & ECORE_EXE_PIPE_ERROR)) && (!(flags & ECORE_EXE_PIPE_READ))) /* We need something to auto pipe. */ - flags |= ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_ERROR; + flags |= ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_ERROR; exe->child_fd_error = -1; exe->child_fd_read = -1; @@ -374,11 +374,11 @@ { pid_t pid = 0; volatile int vfork_exec_errno = 0; - + /* FIXME: I should double check this. After a quick look around, this is already done, but via a more modern method. */ /* signal(SIGPIPE, SIG_IGN); We only want EPIPE on errors */ pid = fork(); - + if (pid == -1) { fprintf(stderr, "Failed to fork process\n"); @@ -434,7 +434,7 @@ if (flags & ECORE_EXE_PIPE_WRITE) E_NO_ERRNO(result, close(writePipe[0]), ok); E_NO_ERRNO(result, close(statusPipe[1]), ok); - + _exit(-1); } else /* parent */ @@ -442,13 +442,13 @@ /* Close the unused pipes. */ E_NO_ERRNO(result, close(statusPipe[1]), ok); - /* FIXME: after having a good look at the current e fd + /* FIXME: after having a good look at the current e fd * handling, investigate fcntl(dataPipe[x], F_SETSIG, ...) */ /* FIXME: above F_SETSIG etc. - this is async SIGIO based IO * which is also linux specific so we probably don't want to * do this as long as select() is working fine. the only time * we really want to think of SIGIO async IO is when it all - * actually works basically everywhere and we can turn all + * actually works basically everywhere and we can turn all * IO into DMA async activities (i.e. you do a read() then * the read is complete not on return but when you get a * SIGIO - the read() just starts the transfer and it is @@ -463,7 +463,7 @@ for (;;) { char buf; - + E_NO_ERRNO(result, read(statusPipe[0], &buf, 1), ok); if (result == 0) { @@ -560,7 +560,7 @@ ok = 0; } } - + exes = _ecore_list2_append(exes, exe); n = 0; } @@ -579,7 +579,7 @@ else { Ecore_Exe_Event_Add *e; - + e = _ecore_exe_event_add_new(); e->exe = exe; if (e) /* Send the event. */ @@ -587,7 +587,7 @@ _ecore_exe_event_add_free, NULL); /* printf("Running as %d for %s.\n", exe->pid, exe->cmd); */ } - + errno = n; return exe; } @@ -1448,7 +1448,7 @@ lost_exe = 0; errno = 0; if ((num = read(child_fd, buf, READBUFSIZ)) < 1) - /* FIXME: SPEED/SIZE TRADE OFF - add a smaller READBUFSIZE + /* FIXME: SPEED/SIZE TRADE OFF - add a smaller READBUFSIZE * (currently 64k) to inbuf, use that instead of buf, and * save ourselves a memcpy(). */ { Modified: trunk/ecore/src/lib/ecore/ecore_hash.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_hash.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_hash.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -218,7 +218,7 @@ * @return @c TRUE on success, @c FALSE on error. * @ingroup Ecore_Data_Hash_ADT_Destruction_Group */ -EAPI void +EAPI void ecore_hash_destroy(Ecore_Hash *hash) { unsigned int i = 0; @@ -281,7 +281,7 @@ * @return TRUE on success, FALSE otherwise. * @ingroup Ecore_Data_Hash_ADT_Traverse_Group */ -EAPI int +EAPI int ecore_hash_for_each_node(Ecore_Hash *hash, Ecore_For_Each for_each_func, void *user_data) { unsigned int i = 0; Modified: trunk/ecore/src/lib/ecore/ecore_idle_enterer.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_idle_enterer.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_idle_enterer.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -77,7 +77,7 @@ while (idle_enterers) { Ecore_Idle_Enterer *ie; - + ie = idle_enterers; idle_enterers = _ecore_list2_remove(idle_enterers, ie); ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE); @@ -90,11 +90,11 @@ _ecore_idle_enterer_call(void) { Ecore_List2 *l; - + for (l = (Ecore_List2 *)idle_enterers; l; l = l->next) { Ecore_Idle_Enterer *ie; - + ie = (Ecore_Idle_Enterer *)l; if (!ie->delete_me) { @@ -106,7 +106,7 @@ for (l = (Ecore_List2 *)idle_enterers; l;) { Ecore_Idle_Enterer *ie; - + ie = (Ecore_Idle_Enterer *)l; l = l->next; if (ie->delete_me) Modified: trunk/ecore/src/lib/ecore/ecore_idle_exiter.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_idle_exiter.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_idle_exiter.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -53,7 +53,7 @@ while (idle_exiters) { Ecore_Idle_Exiter *ie; - + ie = idle_exiters; idle_exiters = _ecore_list2_remove(idle_exiters, ie); ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE); @@ -66,11 +66,11 @@ _ecore_idle_exiter_call(void) { Ecore_List2 *l; - + for (l = (Ecore_List2 *)idle_exiters; l; l = l->next) { Ecore_Idle_Exiter *ie; - + ie = (Ecore_Idle_Exiter *)l; if (!ie->delete_me) { @@ -82,7 +82,7 @@ for (l = (Ecore_List2 *)idle_exiters; l;) { Ecore_Idle_Exiter *ie; - + ie = (Ecore_Idle_Exiter *)l; l = l->next; if (ie->delete_me) Modified: trunk/ecore/src/lib/ecore/ecore_idler.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_idler.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_idler.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -13,8 +13,8 @@ * * Add an idler handle to the event loop, returning a handle on success and * NULL otherwise. The function @p func will be called repeatedly while - * no other events are ready to be processed, as long as it returns 1 - * (or ECORE_CALLBACK_RENEW). A return of 0 (or ECORE_CALLBACK_CANCEL) deletes + * no other events are ready to be processed, as long as it returns 1 + * (or ECORE_CALLBACK_RENEW). A return of 0 (or ECORE_CALLBACK_CANCEL) deletes * the idler. * * Idlers are useful for progressively prossessing data without blocking. @@ -61,7 +61,7 @@ while (idlers) { Ecore_Idler *ie; - + ie = idlers; idlers = _ecore_list2_remove(idlers, ie); ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE); @@ -78,7 +78,7 @@ for (l = (Ecore_List2 *)idlers; l; l = l->next) { Ecore_Idler *ie; - + ie = (Ecore_Idler *)l; if (!ie->delete_me) { @@ -90,7 +90,7 @@ for (l = (Ecore_List2 *)idlers; l;) { Ecore_Idler *ie; - + ie = (Ecore_Idler *)l; l = l->next; if (ie->delete_me) Modified: trunk/ecore/src/lib/ecore/ecore_list.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_list.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_list.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -36,13 +36,13 @@ /* Sorting functions */ static Ecore_List_Node *_ecore_list_node_mergesort(Ecore_List_Node *first, int n, Ecore_Compare_Cb compare, int order); -static Ecore_List_Node *_ecore_list_node_merge(Ecore_List_Node *first, +static Ecore_List_Node *_ecore_list_node_merge(Ecore_List_Node *first, Ecore_List_Node *second, Ecore_Compare_Cb compare, int order); static Ecore_List_Node *_ecore_dlist_node_mergesort(Ecore_List_Node *first, int n, Ecore_Compare_Cb compare, int order); -static Ecore_List_Node *_ecore_dlist_node_merge(Ecore_List_Node *first, +static Ecore_List_Node *_ecore_dlist_node_merge(Ecore_List_Node *first, Ecore_List_Node *second, Ecore_Compare_Cb compare, int order); @@ -259,7 +259,7 @@ * @return @c TRUE if successful, @c FALSE if an error occurs. * @ingroup Ecore_Data_List_Creation_Group */ -EAPI int +EAPI int ecore_list_init(Ecore_List *list) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -274,7 +274,7 @@ * @param list The list to be freed. * @ingroup Ecore_Data_List_Creation_Group */ -EAPI void +EAPI void ecore_list_destroy(Ecore_List *list) { void *data; @@ -298,7 +298,7 @@ * @param free_func The function that will free the key data. * @return @c TRUE on successful set, @c FALSE otherwise. */ -EAPI int +EAPI int ecore_list_free_cb_set(Ecore_List *list, Ecore_Free_Cb free_func) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -313,7 +313,7 @@ * @param list The list to check for nodes * @return @c TRUE if no nodes in list, @c FALSE if the list contains nodes */ -EAPI int +EAPI int ecore_list_empty_is(Ecore_List *list) { int ret = TRUE; @@ -331,7 +331,7 @@ * @param list The list to return the number of the current node. * @return The number of the current node in the list. */ -EAPI int +EAPI int ecore_list_index(Ecore_List *list) { int ret; @@ -348,7 +348,7 @@ * @param list The list to find the number of nodes * @return The number of nodes in the list. */ -EAPI int +EAPI int ecore_list_count(Ecore_List *list) { int ret = 0; @@ -373,7 +373,7 @@ * @return @c FALSE if an error occurs, @c TRUE if appended successfully * @ingroup Ecore_Data_List_Add_Item_Group */ -EAPI inline int +EAPI inline int ecore_list_append(Ecore_List *list, void *data) { int ret; @@ -390,7 +390,7 @@ } /* For adding items to the end of the list */ -static int +static int _ecore_list_append_0(Ecore_List *list, Ecore_List_Node *end) { if (list->last) @@ -420,7 +420,7 @@ * @return @c FALSE if an error occurs, @c TRUE if prepended successfully. * @ingroup Ecore_Data_List_Add_Item_Group */ -EAPI inline int +EAPI inline int ecore_list_prepend(Ecore_List *list, void *data) { int ret; @@ -437,7 +437,7 @@ } /* For adding items to the beginning of the list */ -static int +static int _ecore_list_prepend_0(Ecore_List *list, Ecore_List_Node *start) { /* Put it at the beginning of the list */ @@ -462,7 +462,7 @@ * @return @c FALSE if there is an error, @c TRUE on success * @ingroup Ecore_Data_List_Add_Item_Group */ -EAPI inline int +EAPI inline int ecore_list_insert(Ecore_List *list, void *data) { int ret; @@ -479,7 +479,7 @@ } /* For adding items in front of the current position in the list */ -static int +static int _ecore_list_insert(Ecore_List *list, Ecore_List_Node *new_node) { /* @@ -521,7 +521,7 @@ * @ingroup Ecore_Data_List_Add_Item_Group */ -EAPI int +EAPI int ecore_list_append_list(Ecore_List *list, Ecore_List *append) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -553,7 +553,7 @@ * @return @c FALSE if an error occurs, @c TRUE if prepended successfully. * @ingroup Ecore_Data_List_Add_Item_Group */ -EAPI int +EAPI int ecore_list_prepend_list(Ecore_List *list, Ecore_List *prepend) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -648,7 +648,7 @@ * @return @c TRUE on success, @c FALSE on error * @ingroup Ecore_Data_List_Remove_Item_Group */ -EAPI int +EAPI int ecore_list_remove_destroy(Ecore_List *list) { void *data; @@ -808,7 +808,7 @@ if (index > ecore_list_count(list) || index < 0) return NULL; - if (index < list->index) + if (index < list->index) { _ecore_list_first_goto(list); i = 0; @@ -1053,7 +1053,7 @@ * @note The data for each item on the list is not freed by * @c ecore_list_clear(). */ -EAPI int +EAPI int ecore_list_clear(Ecore_List *list) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -1071,7 +1071,7 @@ * @return Returns @c TRUE on success, @c FALSE on failure. * @ingroup Ecore_Data_List_Traverse_Group */ -EAPI int +EAPI int ecore_list_for_each(Ecore_List *list, Ecore_For_Each function, void *user_data) { int ret; @@ -1084,7 +1084,7 @@ } /* The real meat of executing the function for each data node */ -static int +static int _ecore_list_for_each(Ecore_List *list, Ecore_For_Each function, void *user_data) { void *value; @@ -1147,14 +1147,14 @@ ecore_list_sort(Ecore_List *list, Ecore_Compare_Cb compare, char order) { CHECK_PARAM_POINTER_RETURN("list", list, 0); - + if (list->nodes < 2) return 1; if (list->nodes < ECORE_MERGESORT_LIMIT) return ecore_list_mergesort(list, compare, order); if (!ecore_list_heapsort(list, compare, order)) return ecore_list_mergesort(list, compare, order); - + return 1; } @@ -1166,7 +1166,7 @@ * ECORE_SORT_MAX * @return true on success * - * Mergesort is a stable, in-place sorting algorithm + * Mergesort is a stable, in-place sorting algorithm */ EAPI int ecore_list_mergesort(Ecore_List *list, Ecore_Compare_Cb compare, char order) @@ -1217,14 +1217,14 @@ ecore_list_append_list(list, l2); return; } - + if (order == ECORE_SORT_MIN) order = 1; else order = -1; list->first = _ecore_list_node_merge(list->first, l2->first, compare, order); - + if ((order * compare(list->last->data, l2->last->data)) < 0) list->last = l2->last; @@ -1371,7 +1371,7 @@ } /* Initialize a node to starting values */ -EAPI int +EAPI int ecore_list_node_init(Ecore_List_Node *node) { CHECK_PARAM_POINTER_RETURN("node", node, FALSE); @@ -1417,7 +1417,7 @@ * @return @c TRUE. * @ingroup Ecore_Data_List_Node_Group */ -EAPI int +EAPI int ecore_list_node_destroy(Ecore_List_Node *node, Ecore_Free_Cb free_func) { CHECK_PARAM_POINTER_RETURN("node", node, FALSE); @@ -1466,7 +1466,7 @@ * @return @c TRUE if successful, @c FALSE if an error occurs. * @ingroup Ecore_Data_DList_Creation_Group */ -EAPI int +EAPI int ecore_dlist_init(Ecore_DList *list) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -1481,7 +1481,7 @@ * @param list The doubly linked list to be freed. * @ingroup Ecore_Data_DList_Creation_Group */ -EAPI void +EAPI void ecore_dlist_destroy(Ecore_DList *list) { void *data; @@ -1505,7 +1505,7 @@ * @return @c TRUE on success, @c FALSE on failure. * @ingroup Ecore_Data_DList_Creation_Group */ -EAPI int +EAPI int ecore_dlist_free_cb_set(Ecore_DList *list, Ecore_Free_Cb free_func) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -1518,7 +1518,7 @@ * @param list The given doubly linked list. * @return @c TRUE if there are nodes, @c FALSE otherwise. */ -EAPI int +EAPI int ecore_dlist_empty_is(Ecore_DList *list) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -1531,7 +1531,7 @@ * @param list The given doubly linked list. * @return The index of the current node. */ -EAPI inline int +EAPI inline int ecore_dlist_index(Ecore_DList *list) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -1552,7 +1552,7 @@ * @return @c TRUE if the data is successfully appended, @c FALSE otherwise. * @ingroup Ecore_Data_DList_Add_Item_Group */ -EAPI int +EAPI int ecore_dlist_append(Ecore_DList *list, void *data) { int ret; @@ -1579,7 +1579,7 @@ * @return @c TRUE if the data is successfully prepended, @c FALSE otherwise. * @ingroup Ecore_Data_DList_Add_Item_Group */ -EAPI int +EAPI int ecore_dlist_prepend(Ecore_DList *list, void *data) { int ret; @@ -1606,7 +1606,7 @@ * @return @c TRUE on success, @c FALSE otherwise. * @ingroup Ecore_Data_DList_Add_Item_Group */ -EAPI int +EAPI int ecore_dlist_insert(Ecore_DList *list, void *data) { int ret = TRUE; @@ -1649,7 +1649,7 @@ * @return @c TRUE if the data is successfully appended, @c FALSE otherwise. * @ingroup Ecore_Data_DList_Add_Item_Group */ -EAPI int +EAPI int ecore_dlist_append_list(Ecore_DList *list, Ecore_DList *append) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -1682,7 +1682,7 @@ * @return @c TRUE if the data is successfully prepended, @c FALSE otherwise. * @ingroup Ecore_Data_DList_Add_Item_Group */ -EAPI int +EAPI int ecore_dlist_prepend_list(Ecore_DList *list, Ecore_DList *prepend) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -1766,7 +1766,7 @@ * @return @c TRUE on success, @c FALSE otherwise. * @ingroup Ecore_Data_DList_Remove_Item_Group */ -EAPI int +EAPI int ecore_dlist_remove_destroy(Ecore_DList *list) { void *data; @@ -2013,7 +2013,7 @@ * * @return Returns TRUE on success, FALSE on errors */ -EAPI int +EAPI int ecore_dlist_clear(Ecore_DList *list) { CHECK_PARAM_POINTER_RETURN("list", list, FALSE); @@ -2039,14 +2039,14 @@ ecore_dlist_sort(Ecore_List *list, Ecore_Compare_Cb compare, char order) { CHECK_PARAM_POINTER_RETURN("list", list, 0); - + if (list->nodes < 2) return 1; if (list->nodes < ECORE_MERGESORT_LIMIT) return ecore_dlist_mergesort(list, compare, order); if (!ecore_dlist_heapsort(list, compare, order)) return ecore_dlist_mergesort(list, compare, order); - + return 1; } @@ -2058,7 +2058,7 @@ * ECORE_SORT_MAX * @return true on success * - * Mergesort is a stable, in-place sorting algorithm + * Mergesort is a stable, in-place sorting algorithm */ EAPI int ecore_dlist_mergesort(Ecore_DList *list, Ecore_Compare_Cb compare, char order) @@ -2109,14 +2109,14 @@ ecore_dlist_append_list(list, l2); return; } - + if (order == ECORE_SORT_MIN) order = 1; else order = -1; list->first = _ecore_dlist_node_merge(list->first, l2->first, compare, order); - + if ((order * compare(list->last->data, l2->last->data)) < 0) list->last = l2->last; @@ -2206,14 +2206,14 @@ } /* append the rest or set it to NULL */ - if (first) + if (first) { ECORE_DLIST_NODE(first)->previous = ECORE_DLIST_NODE(l); l->next = first; } else if (second) { - ECORE_DLIST_NODE(second)->previous = ECORE_DLIST_NODE(l); + ECORE_DLIST_NODE(second)->previous = ECORE_DLIST_NODE(l); l->next = second; } else @@ -2227,7 +2227,7 @@ * @param node: the node to initialize * @return Returns TRUE on success, FALSE on errors */ -EAPI int +EAPI int ecore_dlist_node_init(Ecore_DList_Node *node) { int ret; @@ -2270,7 +2270,7 @@ * @param free_func: the callback function to execute on the data * @return Returns TRUE on success, FALSE on error */ -EAPI int +EAPI int ecore_dlist_node_destroy(Ecore_DList_Node * node, Ecore_Free_Cb free_func) { CHECK_PARAM_POINTER_RETURN("node", node, FALSE); Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -115,7 +115,7 @@ * * Normally the return value from the @p func is "zero means this handler is * finished and can be deleted" as is usual for handler callbacks. However, - * if the @p buf_func is supplied, then the return value from the @p func is + * if the @p buf_func is supplied, then the return value from the @p func is * "non zero means the handler should be called again in a tight loop". * * @p buf_func is called during event loop handling to check if data that has @@ -123,8 +123,8 @@ * read. Some systems (notably xlib) handle their own buffering, and would * otherwise not work with select(). These systems should use a @p buf_func. * This is a most annoying hack, only ecore_x uses it, so refer to that for - * an example. NOTE - @p func should probably return "one" always if - * @p buf_func is used, to avoid confusion with the other return value + * an example. NOTE - @p func should probably return "one" always if + * @p buf_func is used, to avoid confusion with the other return value * semantics. * * @param fd The file descriptor to watch. Modified: trunk/ecore/src/lib/ecore/ecore_path.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_path.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_path.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -59,8 +59,8 @@ CHECK_PARAM_POINTER("path", path); if (!group->paths) - { - group->paths = ecore_list_new(); + { + group->paths = ecore_list_new(); ecore_list_free_cb_set(group->paths, free); } @@ -206,4 +206,3 @@ return avail; } - Modified: trunk/ecore/src/lib/ecore/ecore_plugin.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_plugin.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_plugin.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -232,4 +232,3 @@ return avail; } - Modified: trunk/ecore/src/lib/ecore/ecore_poll.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_poll.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_poll.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -11,12 +11,12 @@ static double poll_interval = 0.125; static double poll_cur_interval = 0.0; static double last_tick = 0.0; -static Ecore_Poller *pollers[16] = +static Ecore_Poller *pollers[16] = { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL }; -static unsigned short poller_counters[16] = +static unsigned short poller_counters[16] = { 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0 @@ -30,7 +30,7 @@ { int i; double interval; - + min_interval = -1; for (i = 0; i < 15; i++) { @@ -64,7 +64,7 @@ else { double t; - + if (!timer) timer = ecore_timer_add(interval, _ecore_poller_cb_timer, NULL); else @@ -76,7 +76,7 @@ /* delete the timer and reset it to tick off in the new * time interval. at the tick this will be adjusted */ ecore_timer_del(timer); - timer = ecore_timer_add(interval - t, + timer = ecore_timer_add(interval - t, _ecore_poller_cb_timer, NULL); } } @@ -103,7 +103,7 @@ /* wrap back to 0 if we exceed out loop count for the counter */ if (poller_counters[i] >= (1 << i)) poller_counters[i] = 0; } - + just_added_poller = 0; /* walk the pollers now */ poller_walking++; @@ -131,7 +131,7 @@ } } poller_walking--; - + /* handle deletes afterwards */ if (poller_delete_count > 0) { @@ -161,11 +161,11 @@ just_added_poller = 0; poller_delete_count = 0; - + at_tick--; - + /* if the timer was deleted then there is no point returning 1 - ambiguous - * if we do as it im plies "keep running me" but we have been deleted + * if we do as it im plies "keep running me" but we have been deleted * anyway */ if (!timer) return 0; @@ -189,7 +189,7 @@ * @param type The ticker type to adjust * @param poll_time The time (in seconds) between ticks of the clock * @ingroup Ecore_Poller_Group - * + * * This will adjust the time between ticks of the given ticker type defined * by @p type to the time period defined by @p poll_time. */ @@ -205,7 +205,7 @@ * @param type The ticker type to query * @return The time in seconds between ticks of the ticker clock * @ingroup Ecore_Poller_Group - * + * * This will get the time between ticks of the specifider ticker clock. */ EAPI double @@ -233,7 +233,7 @@ * save power as the CPU has more of a chance to go into a low power state * the longer it is asleep for, so this should be used if you are at all * power conscious. - * + * * The @p type parameter defines the poller tick type (there is a virtual * clock ticking all the time - though ecore avoids making it tick when * there will not be any work to do at that tick point). There is only one @@ -241,7 +241,7 @@ * expansion if multiple clocks with different frequencies are really required. * The default time between ticks for the ECORE_POLLER_CORE ticker is 0.125 * seconds. - * + * * The @p interval is the number of ticker ticks that will pass by in between * invocations of the @p func callback. This must be between 1 and 32768 * inclusive, and must be a power of 2 (i.e. 1, 2, 4, 8, 16, ... 16384, 32768). @@ -250,13 +250,13 @@ * which tick is undefined, as only the interval between calls can be defined. * Ecore will endeavour to keep pollers synchronised and to call as many in * 1 wakeup event as possible. - * + * * This function adds a poller and returns its handle on success and NULL on * failure. The function @p func will be called at tick intervals described * above. The function will be passed the @p data pointer as its parameter. - * - * When the poller @p func is called, it must return a value of either - * 1 (or ECORE_CALLBACK_RENEW) or 0 (or ECORE_CALLBACK_CANCEL). If it + * + * When the poller @p func is called, it must return a value of either + * 1 (or ECORE_CALLBACK_RENEW) or 0 (or ECORE_CALLBACK_CANCEL). If it * returns 1, it will be called again at the next tick, or if it returns * 0 it will be deleted automatically making any references/handles for it * invalid. @@ -266,10 +266,10 @@ { Ecore_Poller *poller; int ibit; - + if (!func) return NULL; if (interval < 1) interval = 1; - + poller = calloc(1, sizeof(Ecore_Poller)); if (!poller) return NULL; ECORE_MAGIC_SET(poller, ECORE_MAGIC_POLLER); @@ -283,7 +283,7 @@ } /* only allow up to 32768 - i.e. ibit == 15, so limit it */ if (ibit > 15) ibit = 15; - + poller->ibit = ibit; poller->func = func; poller->data = (void *)data; @@ -309,7 +309,7 @@ ecore_poller_del(Ecore_Poller *poller) { void *data; - + if (!ECORE_MAGIC_CHECK(poller, ECORE_MAGIC_POLLER)) { ECORE_MAGIC_FAIL(poller, ECORE_MAGIC_POLLER, @@ -339,7 +339,7 @@ int i; Ecore_List2 *l; Ecore_Poller *poller; - + for (i = 0; i < 15; i++) { for (l = (Ecore_List2 *)pollers[i]; l;) Modified: trunk/ecore/src/lib/ecore/ecore_sheap.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_sheap.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_sheap.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -44,7 +44,7 @@ * @param size The number of elements to allow in the heap * @return TRUE on success, FALSE on failure */ -EAPI int +EAPI int ecore_sheap_init(Ecore_Sheap *heap, Ecore_Compare_Cb compare, int size) { CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE); @@ -72,7 +72,7 @@ * * @param heap The heap to be freed */ -EAPI void +EAPI void ecore_sheap_destroy(Ecore_Sheap *heap) { int i; @@ -98,7 +98,7 @@ * @param free_func The function that will free the key data. * @return @c TRUE on successful set, @c FALSE otherwise. */ -EAPI int +EAPI int ecore_sheap_free_cb_set(Ecore_Sheap *heap, Ecore_Free_Cb free_func) { CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE); @@ -115,7 +115,7 @@ * @return TRUE on success, NULL on failure. Increases the size of the heap if * it becomes larger than available space. */ -EAPI int +EAPI int ecore_sheap_insert(Ecore_Sheap *heap, void *data) { int i; @@ -251,7 +251,7 @@ * @note The heap does not free the old data since it must be passed * in, so the caller can perform the free if desired. */ -EAPI int +EAPI int ecore_sheap_change(Ecore_Sheap *heap, void *item, void *newval) { int i; @@ -282,7 +282,7 @@ * The comparison function is changed to @compare and the heap is heapified * by the new comparison. */ -EAPI int +EAPI int ecore_sheap_compare_set(Ecore_Sheap *heap, Ecore_Compare_Cb compare) { CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE); @@ -305,7 +305,7 @@ * Changes the heap order of @heap and re-heapifies the data to this new * order. The default order is a min heap. */ -EAPI void +EAPI void ecore_sheap_order_set(Ecore_Sheap *heap, char order) { CHECK_PARAM_POINTER("heap", heap); @@ -322,7 +322,7 @@ * Sorts the data in the heap into the order that is used for the heap's * data. */ -EAPI void +EAPI void ecore_sheap_sort(Ecore_Sheap *heap) { int i = 0; @@ -376,7 +376,7 @@ * @param heap The heap to regain heap properties * @param i The position to start heapifying */ -static void +static void _ecore_sheap_heapify(Ecore_Sheap *heap, int i) { int extreme; @@ -424,7 +424,7 @@ } } -static void +static void _ecore_sheap_update_data(Ecore_Sheap *heap) { int i, old_size; Modified: trunk/ecore/src/lib/ecore/ecore_signal.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_signal.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_signal.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -167,7 +167,7 @@ #endif volatile sig_atomic_t n; sigset_t oldset, newset; - + if (sig_count == 0) return; sigemptyset(&newset); sigaddset(&newset, SIGPIPE); @@ -185,7 +185,7 @@ #ifdef SIGRTMIN for (i = 0; i < num; i++) sigaddset(&newset, SIGRTMIN + i); -#endif +#endif sigprocmask(SIG_BLOCK, &newset, &oldset); if (sigchld_count > MAXSIGQ) printf("ECORE WARNING. %i SIGCHLD in queue. max queue size %i. losing " @@ -258,7 +258,7 @@ sig_count--; } sigchld_count = 0; - + if (sigusr1_count > MAXSIGQ) printf("ECORE WARNING. %i SIGUSR1 in queue. max queue size %i. losing " "siginfo for extra signals.\n", sigusr1_count, MAXSIGQ); @@ -279,7 +279,7 @@ sig_count--; } sigusr1_count = 0; - + if (sigusr2_count > MAXSIGQ) printf("ECORE WARNING. %i SIGUSR2 in queue. max queue size %i. losing " "siginfo for extra signals.\n", sigusr2_count, MAXSIGQ); @@ -300,7 +300,7 @@ sig_count--; } sigusr2_count = 0; - + if (sighup_count > MAXSIGQ) printf("ECORE WARNING. %i SIGHUP in queue. max queue size %i. losing " "siginfo for extra signals.\n", sighup_count, MAXSIGQ); @@ -319,7 +319,7 @@ sig_count--; } sighup_count = 0; - + if (sigquit_count > MAXSIGQ) printf("ECORE WARNING. %i SIGQUIT in queue. max queue size %i. losing " "siginfo for extra signals.\n", sigquit_count, MAXSIGQ); @@ -361,7 +361,7 @@ sig_count--; } sigint_count = 0; - + if (sigterm_count > MAXSIGQ) printf("ECORE WARNING. %i SIGTERM in queue. max queue size %i. losing " "siginfo for extra signals.\n", sigterm_count, MAXSIGQ); @@ -382,7 +382,7 @@ sig_count--; } sigterm_count = 0; - + #ifdef SIGPWR if (sigpwr_count > MAXSIGQ) printf("ECORE WARNING. %i SIGPWR in queue. max queue size %i. losing " Modified: trunk/ecore/src/lib/ecore/ecore_str.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_str.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_str.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -23,7 +23,7 @@ #include "ecore_private.h" #include "Ecore_Str.h" -static int ecore_str_has_suffix_helper(const char *str, const char *suffix, +static int ecore_str_has_suffix_helper(const char *str, const char *suffix, int (*cmp)(const char *, const char *)); /** * @param dst the destination @@ -73,7 +73,7 @@ * @param dst the destination * @param src the source * @param siz the size of the destination - * @return the length of the source string plus MIN(siz, strlen(initial dst)) + * @return the length of the source string plus MIN(siz, strlen(initial dst)) * @brief append a c-string * * Appends src to string dst of size siz (unlike strncat, siz is the @@ -144,7 +144,7 @@ { CHECK_PARAM_POINTER_RETURN("str", str, 0); CHECK_PARAM_POINTER_RETURN("suffix", suffix, 0); - + return ecore_str_has_suffix_helper(str, suffix, strcmp); } @@ -162,16 +162,16 @@ { CHECK_PARAM_POINTER_RETURN("str", str, 0); CHECK_PARAM_POINTER_RETURN("ext", ext, 0); - + return ecore_str_has_suffix_helper(str, ext, strcasecmp); } /* - * Internal helper function used by ecore_str_has_suffix() and + * Internal helper function used by ecore_str_has_suffix() and * ecore_str_has_extension() */ static int -ecore_str_has_suffix_helper(const char *str, const char *suffix, +ecore_str_has_suffix_helper(const char *str, const char *suffix, int (*cmp)(const char *, const char *)) { size_t str_len; @@ -191,10 +191,10 @@ * string array contains the remainder of string. * * @param str A string to split. - * @param delim A string which specifies the places at which to split the - * string. The delimiter is not included in any of the + * @param delim A string which specifies the places at which to split the + * string. The delimiter is not included in any of the * resulting strings, unless max_tokens is reached. - * @param max_tokens The maximum number of strings to split string into. + * @param max_tokens The maximum number of strings to split string into. * If this is less than 1, the string is split completely. * @return A newly-allocated NULL-terminated array of strings. * To free it: free the first element of the array @@ -218,7 +218,7 @@ dlen = strlen(delim); s = strdup(str); str_array = malloc(sizeof(char *) * (len + 1)); - for (i = 0; (i < max_tokens) && (sep = strstr(s, delim)); i++) + for (i = 0; (i < max_tokens) && (sep = strstr(s, delim)); i++) { str_array[i] = s; s = sep + dlen; @@ -228,7 +228,6 @@ str_array[i++] = s; str_array = realloc(str_array, sizeof(char *) * (i + 1)); str_array[i] = NULL; - + return str_array; } - Modified: trunk/ecore/src/lib/ecore/ecore_strbuf.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_strbuf.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_strbuf.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -45,7 +45,7 @@ EAPI void ecore_strbuf_free(Ecore_Strbuf *buf) { - CHECK_PARAM_POINTER("buf", buf); + CHECK_PARAM_POINTER("buf", buf); free(buf->buf); free(buf); } @@ -61,12 +61,12 @@ size_t l; size_t off = 0; - CHECK_PARAM_POINTER("buf", buf); - CHECK_PARAM_POINTER("str", str); + CHECK_PARAM_POINTER("buf", buf); + CHECK_PARAM_POINTER("str", str); l = ecore_strlcpy(buf->buf + buf->len, str, buf->size - buf->len); - while (l > buf->size - buf->len) + while (l > buf->size - buf->len) { /* we successfully appended this much */ off += buf->size - buf->len - 1; @@ -93,7 +93,7 @@ { size_t len; - CHECK_PARAM_POINTER("buf", buf); + CHECK_PARAM_POINTER("buf", buf); CHECK_PARAM_POINTER("str", str); if (pos >= buf->len) @@ -124,7 +124,7 @@ EAPI void ecore_strbuf_append_char(Ecore_Strbuf *buf, char c) { - CHECK_PARAM_POINTER("buf", buf); + CHECK_PARAM_POINTER("buf", buf); if (buf->len >= buf->size - 1) { buf->size += buf->step; @@ -147,7 +147,7 @@ EAPI const char * ecore_strbuf_string_get(Ecore_Strbuf *buf) { - CHECK_PARAM_POINTER_RETURN("buf", buf, NULL); + CHECK_PARAM_POINTER_RETURN("buf", buf, NULL); return buf->buf; } @@ -158,7 +158,7 @@ EAPI size_t ecore_strbuf_length_get(Ecore_Strbuf *buf) { - CHECK_PARAM_POINTER_RETURN("buf", buf, 0); + CHECK_PARAM_POINTER_RETURN("buf", buf, 0); return buf->len; } @@ -167,7 +167,7 @@ * @param buf the Ecore_Strbuf to work with * @param str the string to replace * @param with the replaceing string - * @param n the number of the fitting string + * @param n the number of the fitting string * * @return true on success */ @@ -179,7 +179,7 @@ char *spos; size_t pos; - CHECK_PARAM_POINTER_RETURN("buf", buf, 0); + CHECK_PARAM_POINTER_RETURN("buf", buf, 0); CHECK_PARAM_POINTER_RETURN("str", str, 0); CHECK_PARAM_POINTER_RETURN("with", with, 0); @@ -190,21 +190,21 @@ while (n--) { spos = strstr(spos, str); - if (!spos || *spos == '\0') + if (!spos || *spos == '\0') return 0; if (n) spos++; } pos = spos - buf->buf; - len1 = strlen(str); + len1 = strlen(str); len2 = strlen(with); if (len1 != len2) { /* resize the buffer if necessary */ if (!_ecore_strbuf_resize(buf, buf->len - len1 + len2)) return 0; - /* move the existing text */ - memmove(buf->buf + pos + len2, buf->buf + pos + len1, + /* move the existing text */ + memmove(buf->buf + pos + len2, buf->buf + pos + len1, buf->len - pos - len1); } /* and now insert the given string */ @@ -233,7 +233,7 @@ size_t pos_tmp, start_tmp; int n = 0; - CHECK_PARAM_POINTER_RETURN("buf", buf, 0); + CHECK_PARAM_POINTER_RETURN("buf", buf, 0); CHECK_PARAM_POINTER_RETURN("str", str, 0); CHECK_PARAM_POINTER_RETURN("with", with, 0); @@ -241,7 +241,7 @@ if (!spos || *spos == '\0') return 0; - len1 = strlen(str); + len1 = strlen(str); len2 = strlen(with); /* if the size of the two string is equal, it is fairly easy to replace them @@ -256,7 +256,7 @@ } return n; } - + pos = pos_tmp = spos - buf->buf; tmp_buf = buf->buf; buf->buf = malloc(buf->size); @@ -280,9 +280,9 @@ len = (len + len1) - len2; break; } - - /* copy the untouched text */ - memcpy(buf->buf + start, tmp_buf + start_tmp, pos - start); + + /* copy the untouched text */ + memcpy(buf->buf + start, tmp_buf + start_tmp, pos - start); /* copy the new string */ memcpy(buf->buf + pos, with, len2); @@ -312,7 +312,7 @@ * @param buf the buffer to resize * @param size the minimum size of the buffer */ -static int +static int _ecore_strbuf_resize(Ecore_Strbuf *buf, size_t size) { char *buffer; @@ -338,7 +338,7 @@ new_step *= 2; } } - else + else { /* shrink the buffer */ /* @@ -351,10 +351,9 @@ buffer = realloc(buf->buf, new_size); if (!buffer) return 0; - + buf->buf = buffer; buf->size = new_size; buf->step = new_step; return 1; } - Modified: trunk/ecore/src/lib/ecore/ecore_strings.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_strings.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_strings.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -30,7 +30,7 @@ * Initialize the ecore string internal structure. * @return Zero on failure, non-zero on successful initialization. */ -EAPI int +EAPI int ecore_string_init() { /* @@ -100,7 +100,7 @@ * @param string The given string. * @ingroup Ecore_String_Group */ -EAPI void +EAPI void ecore_string_release(const char *string) { Ecore_String *str; @@ -134,7 +134,7 @@ /** * Shutdown the ecore string internal structures */ -EAPI void +EAPI void ecore_string_shutdown() { --ecore_string_init_count; @@ -145,7 +145,7 @@ } } -static void +static void ecore_string_free_cb(void *data) { Ecore_String *str; Modified: trunk/ecore/src/lib/ecore/ecore_time.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_time.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_time.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -19,9 +19,9 @@ /** * 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 */ @@ -42,7 +42,7 @@ /** * 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 @@ -51,7 +51,7 @@ * 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 */ Modified: trunk/ecore/src/lib/ecore/ecore_timer.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_timer.c 2008-11-29 11:09:40 UTC (rev 37850) +++ trunk/ecore/src/lib/ecore/ecore_timer.c 2008-11-29 11:23:17 UTC (rev 37851) @@ -75,9 +75,9 @@ * 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 * 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 - * (or ECORE_CALLBACK_RENEW) or 0 (or ECORE_CALLBACK_CANCEL). + * + * When the timer @p func is called, it must return a value of either 1 + * (or ECORE_CALLBACK_RENEW) or 0 (or ECORE_CALLBACK_CANCEL). * If it returns 1, it will be called again at the next tick, or if it returns * 0 it will be deleted automatically making any references/handles for it * invalid. @@ -255,7 +255,7 @@ while (timers) { Ecore_Timer *timer; - + timer = timers; timers = _ecore_list2_remove(timers, timer); ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE); @@ -282,7 +282,7 @@ for (l = (Ecore_List2 *)timers; l;) { Ecore_Timer *timer; - + timer = (Ecore_Timer *)l; l = l->next; if (timer->delete_me) @@ -297,7 +297,7 @@ for (l = (Ecore_List2 *)suspended; l;) { Ecore_Timer *timer; - + timer = (Ecore_Timer *)l; l = l->next; if (timer->delete_me) @@ -315,14 +315,14 @@ void _ecore_timer_enable_new(void) { - Ecore_List2 *l; + Ecore_List2 *l; if (!timers_added) return; timers_added = 0; for (l = (Ecore_List2 *)timers; l; l = l->next) { Ecore_Timer *timer; - + timer = (Ecore_Timer *)l; timer->just_added = 0; } @@ -377,7 +377,7 @@ int _ecore_timer_call(double when) { - Ecore_List2 *l; + Ecore_List2 *l; Ecore_Timer *timer; if (!timers) return 0; @@ -427,13 +427,13 @@ } } return 0; -} +} static void _ecore_timer_set(Ecore_Timer *timer, double at, double in, int (*func) (void *data), void *data)... [truncated message content] |
From: Enlightenment S. <no-...@en...> - 2009-01-19 21:08:49
|
Log: the versioning of shared lib is different on windows than on linux (name-version.dll wrt name.so.version) Author: caro Date: 2009-01-19 13:08:39 -0800 (Mon, 19 Jan 2009) New Revision: 38654 Modified: trunk/ecore/src/lib/ecore/ecore_plugin.c Modified: trunk/ecore/src/lib/ecore/ecore_plugin.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_plugin.c 2009-01-19 20:30:56 UTC (rev 38653) +++ trunk/ecore/src/lib/ecore/ecore_plugin.c 2009-01-19 21:08:39 UTC (rev 38654) @@ -58,7 +58,11 @@ if (!version || *version == '\0') snprintf(temp, sizeof(temp), "%s" SHARED_LIB_SUFFIX, plugin_name); else +#ifndef _WIN32 snprintf(temp, sizeof(temp), "%s" SHARED_LIB_SUFFIX ".%s", plugin_name, version); +#else + snprintf(temp, sizeof(temp), "%s-%s" SHARED_LIB_SUFFIX, plugin_name, version); +#endif path = ecore_path_group_find(group, temp); |
From: Enlightenment S. <no-...@en...> - 2009-02-13 23:09:19
|
Log: use Evil's gettimeofday() function instead of the fake one in mingw. Fix animations on Windows XP and CE. Author: caro Date: 2009-02-13 15:09:15 -0800 (Fri, 13 Feb 2009) New Revision: 39013 Modified: trunk/ecore/src/lib/ecore/ecore_time.c Modified: trunk/ecore/src/lib/ecore/ecore_time.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_time.c 2009-02-13 21:36:21 UTC (rev 39012) +++ trunk/ecore/src/lib/ecore/ecore_time.c 2009-02-13 23:09:15 UTC (rev 39013) @@ -12,6 +12,10 @@ # include <sys/time.h> #endif +#ifdef HAVE_EVIL +# include <Evil.h> /* for gettimeofday */ +#endif + #include "Ecore.h" #include "ecore_private.h" |
From: Enlightenment S. <no-...@en...> - 2009-02-22 19:21:40
|
Log: use evil_time_get() instead of gettimeofday() when using Evil. It's more precise and involves fewer computations Author: caro Date: 2009-02-22 11:21:36 -0800 (Sun, 22 Feb 2009) New Revision: 39149 Modified: trunk/ecore/src/lib/ecore/ecore_time.c Modified: trunk/ecore/src/lib/ecore/ecore_time.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_time.c 2009-02-22 19:20:23 UTC (rev 39148) +++ trunk/ecore/src/lib/ecore/ecore_time.c 2009-02-22 19:21:36 UTC (rev 39149) @@ -13,7 +13,7 @@ #endif #ifdef HAVE_EVIL -# include <Evil.h> /* for gettimeofday */ +# include <Evil.h> #endif #include "Ecore.h" @@ -34,13 +34,17 @@ EAPI double ecore_time_get(void) { -#ifdef HAVE_GETTIMEOFDAY +#ifdef HAVE_EVIL + return evil_time_get(); +#else +# ifdef HAVE_GETTIMEOFDAY struct timeval timev; gettimeofday(&timev, NULL); return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); -#else -# error "Your platform isn't supported yet" +# else +# error "Your platform isn't supported yet" +# endif #endif } |
From: Enlightenment S. <no-...@en...> - 2009-02-24 17:26:36
|
Log: initialize next_time to -1.0 by default. this fix a problem on Windows: the ecore main loop hanged because of GetMessage() if next_time had a random value. patch by Lars Munch Author: caro Date: 2009-02-24 09:26:26 -0800 (Tue, 24 Feb 2009) New Revision: 39178 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-24 13:08:21 UTC (rev 39177) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2009-02-24 17:26:26 UTC (rev 39178) @@ -470,7 +470,7 @@ static void _ecore_main_loop_iterate_internal(int once_only) { - double next_time; + double next_time = -1.0; int have_event = 0; int have_signal; @@ -623,7 +623,8 @@ MSG msg; BOOL ret; UINT_PTR TmrID = 0; - if ((UINT) (next_time * 1000.0) > USER_TIMER_MINIMUM) + if ((next_time > 0) && ((UINT) (next_time * 1000.0) > USER_TIMER_MINIMUM)) + { TmrID = SetTimer(NULL, 0, (UINT) (next_time * 1000.0), NULL); ret = GetMessage(&msg, NULL, 0, 0); @@ -644,7 +645,10 @@ } if (TmrID) - KillTimer(NULL, TmrID); + { + KillTimer(NULL, TmrID); + TmrID = 0; + } } #endif |
From: Enlightenment S. <no-...@en...> - 2009-02-26 07:08:22
|
Log: fix warning with mingw32ce (getenv not declared) fix compilation with mingw32ce (EAPI not correctly defined) Author: caro Date: 2009-02-25 23:08:12 -0800 (Wed, 25 Feb 2009) New Revision: 39237 Modified: trunk/ecore/src/lib/ecore/Ecore_Data.h trunk/ecore/src/lib/ecore/ecore_getopt.c trunk/ecore/src/lib/ecore/ecore_value.c Modified: trunk/ecore/src/lib/ecore/Ecore_Data.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore_Data.h 2009-02-26 06:50:36 UTC (rev 39236) +++ trunk/ecore/src/lib/ecore/Ecore_Data.h 2009-02-26 07:08:12 UTC (rev 39237) @@ -1,6 +1,11 @@ #ifndef _ECORE_DATA_H # define _ECORE_DATA_H +/* we need this for size_t */ +#include <stddef.h> + +#include <Eina.h> + #ifdef EAPI # undef EAPI #endif @@ -27,11 +32,6 @@ # endif #endif /* ! _WIN32 */ -/* we need this for size_t */ -#include <stddef.h> - -#include <Eina.h> - /** * @file Ecore_Data.h * @brief Contains threading, list, hash, debugging and tree functions. Modified: trunk/ecore/src/lib/ecore/ecore_getopt.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_getopt.c 2009-02-26 06:50:36 UTC (rev 39236) +++ trunk/ecore/src/lib/ecore/ecore_getopt.c 2009-02-26 07:08:12 UTC (rev 39237) @@ -11,6 +11,10 @@ #include <stdarg.h> #include <ctype.h> +#ifdef _WIN32_WCE +# include <Evil.h> +#endif + #include "Ecore.h" #include "Ecore_Getopt.h" Modified: trunk/ecore/src/lib/ecore/ecore_value.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_value.c 2009-02-26 06:50:36 UTC (rev 39236) +++ trunk/ecore/src/lib/ecore/ecore_value.c 2009-02-26 07:08:12 UTC (rev 39237) @@ -35,6 +35,10 @@ #include <stdio.h> #include <string.h> +#ifdef _WIN32_WCE +# include <Evil.h> +#endif + #include "Ecore.h" #include "Ecore_Data.h" #include "ecore_private.h" |
From: Enlightenment S. <no-...@en...> - 2009-04-11 13:46:19
|
Log: fix compilation on Windows Author: caro Date: 2009-04-11 06:46:09 -0700 (Sat, 11 Apr 2009) New Revision: 39984 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-11 13:27:58 UTC (rev 39983) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2009-04-11 13:46:09 UTC (rev 39984) @@ -29,6 +29,10 @@ # endif #endif +#ifdef HAVE_EVIL +# include <Evil.h> +#endif + #include "ecore_private.h" #include "Ecore.h" |
From: Enlightenment S. <no-...@en...> - 2009-04-16 17:12:53
|
Log: fix compilation on Windows Author: caro Date: 2009-04-16 10:12:40 -0700 (Thu, 16 Apr 2009) New Revision: 40111 Modified: trunk/ecore/src/lib/ecore/Ecore.h Modified: trunk/ecore/src/lib/ecore/Ecore.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore.h 2009-04-16 15:44:26 UTC (rev 40110) +++ trunk/ecore/src/lib/ecore/Ecore.h 2009-04-16 17:12:40 UTC (rev 40111) @@ -49,11 +49,11 @@ * more details. */ -#ifndef _ECORE_PRIVATE_H +#ifdef _WIN32 +# include <winsock2.h> +#else # include <sys/types.h> -# ifndef _WIN32 -# include <signal.h> -# endif +# include <signal.h> #endif #ifndef TRUE |
From: Enlightenment S. <no-...@en...> - 2009-05-29 14:33:12
|
Log: * on Windows, pipe() creates sockets and not file descriptoes, hence we must use closesocket() to close a socket instead of close(). In addition, we should improve the closing of the socket (see http://tangentsoft.net/wskfaq/newbie.html#howclose) * use PIPE_FD_INVALID for invalid fd / socket * use PIPE_FD_ERROR for invalid result when sending / receiving data on fd / sockets next step is to manage correctly errno on Windows with WSAGetLastError() (see http://tangentsoft.net/wskfaq/articles/bsd-compatibility.html) Author: caro Date: 2009-05-29 07:32:57 -0700 (Fri, 29 May 2009) New Revision: 40846 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-05-28 21:56:48 UTC (rev 40845) +++ trunk/ecore/src/lib/ecore/ecore_pipe.c 2009-05-29 14:32:57 UTC (rev 40846) @@ -35,6 +35,9 @@ # define pipe_write(fd, buffer, size) send((fd), (char *)(buffer), size, 0) # define pipe_read(fd, buffer, size) recv((fd), (char *)(buffer), size, 0) +# define pipe_close(fd) closesocket(fd) +# define PIPE_FD_INVALID INVALID_SOCKET +# define PIPE_FD_ERROR SOCKET_ERROR #else @@ -43,6 +46,9 @@ # define pipe_write(fd, buffer, size) write((fd), buffer, size) # define pipe_read(fd, buffer, size) read((fd), buffer, size) +# define pipe_close(fd) close(fd) +# define pipe_fd_invalid -1 +# define PIPE_FD_ERROR -1 #endif /* ! _WIN32 */ @@ -334,10 +340,10 @@ } 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); + 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); return data; @@ -360,8 +366,8 @@ } ecore_main_fd_handler_del(p->fd_handler); p->fd_handler = NULL; - close(p->fd_read); - p->fd_read = -1; + pipe_close(p->fd_read); + p->fd_read = PIPE_FD_INVALID; } /** @@ -379,8 +385,8 @@ "ecore_pipe_write_close"); return; } - close(p->fd_write); - p->fd_write = -1; + pipe_close(p->fd_write); + p->fd_write = PIPE_FD_INVALID; } /** @@ -406,7 +412,7 @@ return FALSE; } - if(p->fd_write == -1) + if(p->fd_write == PIPE_FD_INVALID) return FALSE; /* First write the len into the pipe */ @@ -425,13 +431,13 @@ " to the pipe\n"); return FALSE; } - else if (ret == -1 && errno == EPIPE) + else if (ret == PIPE_FD_ERROR && errno == EPIPE) { - close(p->fd_write); - p->fd_write = -1; + pipe_close(p->fd_write); + p->fd_write = PIPE_FD_INVALID; return FALSE; } - else if (ret == -1 && errno == EINTR) + else if (ret == PIPE_FD_ERROR && errno == EINTR) /* try it again */ ; else @@ -460,13 +466,13 @@ already_written -= ret; continue; } - else if (ret == -1 && errno == EPIPE) + else if (ret == PIPE_FD_ERROR && errno == EPIPE) { - close(p->fd_write); - p->fd_write = -1; + pipe_close(p->fd_write); + p->fd_write = PIPE_FD_INVALID; return FALSE; } - else if (ret == -1 && errno == EINTR) + else if (ret == PIPE_FD_ERROR && errno == EINTR) /* try it again */ ; else @@ -516,12 +522,12 @@ else if (ret == 0) { p->handler((void *)p->data, NULL, 0); - close(p->fd_read); - p->fd_read = -1; + pipe_close(p->fd_read); + p->fd_read = PIPE_FD_INVALID; p->fd_handler = NULL; return ECORE_CALLBACK_CANCEL; } - else if ((ret == -1) && ((errno == EINTR) || (errno == EAGAIN))) + else if ((ret == PIPE_FD_ERROR) && ((errno == EINTR) || (errno == EAGAIN))) return ECORE_CALLBACK_RENEW; else { @@ -558,12 +564,12 @@ else if (ret == 0) { p->handler((void *)p->data, NULL, 0); - close(p->fd_read); - p->fd_read = -1; + pipe_close(p->fd_read); + p->fd_read = PIPE_FD_INVALID; p->fd_handler = NULL; return ECORE_CALLBACK_CANCEL; } - else if (ret == -1 && (errno == EINTR || errno == EAGAIN)) + else if (ret == PIPE_FD_ERROR && (errno == EINTR || errno == EAGAIN)) return ECORE_CALLBACK_RENEW; else { |
From: Enlightenment S. <no-...@en...> - 2009-06-24 06:15:22
|
Log: Rework the Windows message loop and the managing of sockets sent by ecore_pipe. The programs based on Ecore on Windows do not take 100% of the cpu power anymore. Patch by Lars Munch, modified by me (formatting + guards) Author: caro Date: 2009-06-23 23:14:07 -0700 (Tue, 23 Jun 2009) New Revision: 41179 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-06-23 20:56:48 UTC (rev 41178) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2009-06-24 06:14:07 UTC (rev 41179) @@ -43,11 +43,21 @@ static int _ecore_main_fd_handlers_buf_call(void); static void _ecore_main_loop_iterate_internal(int once_only); +#ifdef _WIN32 +static int _ecore_main_win32_select(int nfds, fd_set *readfds, fd_set *writefds, + fd_set *exceptfds, struct timeval *timeout); +#endif + static int in_main_loop = 0; static int do_quit = 0; static Ecore_Fd_Handler *fd_handlers = NULL; static int fd_handlers_delete_me = 0; + +#ifdef _WIN32 +static int (*main_loop_select)(int , fd_set *, fd_set *, fd_set *, struct timeval *) = _ecore_main_win32_select; +#else static int (*main_loop_select)(int , fd_set *, fd_set *, fd_set *, struct timeval *) = select; +#endif static double t1 = 0.0; static double t2 = 0.0; @@ -347,11 +357,6 @@ { int sec, usec; -#if _WIN32 - if (timeout > 0.05) - timeout = 0.05; -#endif - #ifdef FIX_HZ timeout += (0.5 / HZ); sec = (int)timeout; @@ -394,12 +399,18 @@ if (_ecore_signal_count_get()) return -1; ret = main_loop_select(max_fd + 1, &rfds, &wfds, &exfds, t); + _ecore_loop_time = ecore_time_get(); if (ret < 0) { +#ifdef _WIN32 + fprintf(stderr, "main_loop_select error %d\n", WSAGetLastError()); + if (WSAEINTR == WSAGetLastError()) return -1; +#else if (errno == EINTR) return -1; else if (errno == EBADF) _ecore_main_fd_handlers_bads_rem(); +#endif } if (ret > 0) { @@ -680,41 +691,7 @@ _ecore_main_fd_handlers_cleanup(); } while (_ecore_main_fd_handlers_buf_call()); -#if _WIN32 - { - MSG msg; - BOOL ret; - UINT_PTR TmrID = 0; - if ((next_time > 0) && ((UINT) (next_time * 1000.0) > USER_TIMER_MINIMUM)) - { - TmrID = SetTimer(NULL, 0, (UINT) (next_time * 1000.0), NULL); - ret = GetMessage(&msg, NULL, 0, 0); - } - else - { - ret = PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); - } - - if (ret) - { - do - { - TranslateMessage(&msg); - DispatchMessageW(&msg); - Sleep(0); /* Give other threads a chance to run */ - } while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)); - } - - if (TmrID) - { - KillTimer(NULL, TmrID); - TmrID = 0; - } - } -#endif - - /* 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 @@ -723,3 +700,105 @@ _ecore_idle_enterer_call(); in_main_loop--; } + +#ifdef _WIN32 +static int +_ecore_main_win32_select(int nfds, fd_set *readfds, fd_set *writefds, + fd_set *exceptfds, struct timeval *tv) +{ + HANDLE* events[MAXIMUM_WAIT_OBJECTS]; + int sockets[MAXIMUM_WAIT_OBJECTS]; + int events_nbr = 0; + DWORD result; + DWORD timeout; + MSG msg; + int i; + int res; + + /* Create an event object per socket */ + for(i = 0; i < nfds; i++) + { + WSAEVENT event; + long network_event; + + network_event = 0; + if(FD_ISSET(i, readfds)) + network_event |= FD_READ; + if(FD_ISSET(i, writefds)) + network_event |= FD_WRITE; + if(FD_ISSET(i, exceptfds)) + network_event |= FD_OOB; + + if(network_event) + { + event = WSACreateEvent(); + WSAEventSelect(i, event, network_event); + events[events_nbr] = event; + sockets[events_nbr] = i; + events_nbr++; + } + } + + /* Empty the queue before waiting */ + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + /* Wait for any message sent or posted to this queue */ + /* or for one of the passed handles be set to signaled. */ + if(tv == NULL) + timeout = INFINITE; + else + timeout = (DWORD)(tv->tv_sec * 1000.0 + tv->tv_usec / 1000.0); + + result = MsgWaitForMultipleObjects(events_nbr, events, FALSE, + timeout, QS_ALLINPUT); + + FD_ZERO(readfds); + FD_ZERO(writefds); + FD_ZERO(exceptfds); + + /* The result tells us the type of event we have. */ + if (result == WAIT_TIMEOUT) + { + res = 0; + } + else if (result == (WAIT_OBJECT_0 + events_nbr)) + { + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + res = 0; + } + else if ((result >= 0) && (result < WAIT_OBJECT_0 + events_nbr)) + { + WSANETWORKEVENTS network_event; + + WSAEnumNetworkEvents(sockets[result], events[result], &network_event); + + if(network_event.lNetworkEvents & FD_READ) + FD_SET(sockets[result], readfds); + if(network_event.lNetworkEvents & FD_WRITE) + FD_SET(sockets[result], writefds); + if(network_event.lNetworkEvents & FD_OOB) + FD_SET(sockets[result], exceptfds); + + res = 1; + } + else + { + fprintf(stderr, "unknown result...\n"); + } + + /* Remove event objects again */ + for(i = 0; i < events_nbr; i++) + WSACloseEvent(events[i]); + + return res; +} +#endif |
From: Enlightenment S. <no-...@en...> - 2009-07-28 09:57:30
|
Log: fix compilation of programs using ecore on FreeBSD Author: caro Date: 2009-07-28 02:57:24 -0700 (Tue, 28 Jul 2009) New Revision: 41524 Modified: trunk/ecore/src/lib/ecore/Ecore.h Modified: trunk/ecore/src/lib/ecore/Ecore.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore.h 2009-07-28 09:55:08 UTC (rev 41523) +++ trunk/ecore/src/lib/ecore/Ecore.h 2009-07-28 09:57:24 UTC (rev 41524) @@ -51,6 +51,8 @@ #ifdef _WIN32 # include <winsock2.h> +#elif defined (__FreeBSD__) && (__FreeBSD_version >= 420001) +# include <select.h> #else # include <sys/types.h> # include <sys/time.h> |
From: Enlightenment S. <no-...@en...> - 2009-07-28 09:58:25
|
Log: oups, missing sys/ Author: caro Date: 2009-07-28 02:58:12 -0700 (Tue, 28 Jul 2009) New Revision: 41525 Modified: trunk/ecore/src/lib/ecore/Ecore.h Modified: trunk/ecore/src/lib/ecore/Ecore.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore.h 2009-07-28 09:57:24 UTC (rev 41524) +++ trunk/ecore/src/lib/ecore/Ecore.h 2009-07-28 09:58:12 UTC (rev 41525) @@ -52,7 +52,7 @@ #ifdef _WIN32 # include <winsock2.h> #elif defined (__FreeBSD__) && (__FreeBSD_version >= 420001) -# include <select.h> +# include <sys/select.h> #else # include <sys/types.h> # include <sys/time.h> |
From: Enlightenment S. <no-...@en...> - 2009-08-26 15:43:59
|
Log: warnings-- Author: caro Date: 2009-08-26 08:43:45 -0700 (Wed, 26 Aug 2009) New Revision: 42018 Modified: trunk/ecore/src/lib/ecore/ecore_getopt.c trunk/ecore/src/lib/ecore/ecore_main.c trunk/ecore/src/lib/ecore/ecore_path.c Modified: trunk/ecore/src/lib/ecore/ecore_getopt.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_getopt.c 2009-08-26 15:38:13 UTC (rev 42017) +++ trunk/ecore/src/lib/ecore/ecore_getopt.c 2009-08-26 15:43:45 UTC (rev 42018) @@ -1677,7 +1677,7 @@ * @c callback_data value is ignored, you can safely use @c NULL. */ unsigned char -ecore_getopt_callback_size_parse(const Ecore_Getopt *parser, const Ecore_Getopt_Desc *desc, const char *str, void *data, Ecore_Getopt_Value *storage) +ecore_getopt_callback_size_parse(const Ecore_Getopt *parser __UNUSED__, const Ecore_Getopt_Desc *desc __UNUSED__, const char *str, void *data __UNUSED__, Ecore_Getopt_Value *storage) { Eina_Rectangle *v = (Eina_Rectangle *)storage->ptrp; Modified: trunk/ecore/src/lib/ecore/ecore_main.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_main.c 2009-08-26 15:38:13 UTC (rev 42017) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2009-08-26 15:43:45 UTC (rev 42018) @@ -753,7 +753,7 @@ else timeout = (DWORD)(tv->tv_sec * 1000.0 + tv->tv_usec / 1000.0); - result = MsgWaitForMultipleObjects(events_nbr, events, FALSE, + result = MsgWaitForMultipleObjects(events_nbr, (const HANDLE *)events, FALSE, timeout, QS_ALLINPUT); FD_ZERO(readfds); Modified: trunk/ecore/src/lib/ecore/ecore_path.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_path.c 2009-08-26 15:38:13 UTC (rev 42017) +++ trunk/ecore/src/lib/ecore/ecore_path.c 2009-08-26 15:43:45 UTC (rev 42018) @@ -89,7 +89,7 @@ /* * Find the path in the list of available paths */ - found = eina_list_search_unsorted(group->paths, strcmp, path); + found = eina_list_search_unsorted(group->paths, EINA_COMPARE_CB(strcmp), path); /* * If the path is found, remove and free it |
From: Enlightenment S. <no-...@en...> - 2009-09-04 05:50:07
|
Log: rename ecore_thread_init and ecore_thread_shutdown to fit usual private function names Author: caro Date: 2009-09-03 22:49:54 -0700 (Thu, 03 Sep 2009) New Revision: 42240 Modified: trunk/ecore/src/lib/ecore/ecore.c trunk/ecore/src/lib/ecore/ecore_private.h trunk/ecore/src/lib/ecore/ecore_thread.c Modified: trunk/ecore/src/lib/ecore/ecore.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore.c 2009-09-04 05:41:20 UTC (rev 42239) +++ trunk/ecore/src/lib/ecore/ecore.c 2009-09-04 05:49:54 UTC (rev 42240) @@ -89,7 +89,7 @@ if (_ecore_fps_debug) _ecore_fps_debug_init(); _ecore_signal_init(); _ecore_exe_init(); - ecore_thread_init(); + _ecore_thread_init(); _ecore_loop_time = ecore_time_get(); } @@ -115,7 +115,7 @@ if (_ecore_fps_debug) _ecore_fps_debug_shutdown(); _ecore_poller_shutdown(); _ecore_animator_shutdown(); - ecore_thread_shutdown(); + _ecore_thread_shutdown(); _ecore_exe_shutdown(); _ecore_idle_enterer_shutdown(); _ecore_idle_exiter_shutdown(); Modified: trunk/ecore/src/lib/ecore/ecore_private.h =================================================================== --- trunk/ecore/src/lib/ecore/ecore_private.h 2009-09-04 05:41:20 UTC (rev 42239) +++ trunk/ecore/src/lib/ecore/ecore_private.h 2009-09-04 05:49:54 UTC (rev 42240) @@ -444,8 +444,8 @@ void _ecore_fps_debug_shutdown(void); void _ecore_fps_debug_runtime_add(double t); -int ecore_thread_init(void); -int ecore_thread_shutdown(void); +int _ecore_thread_init(void); +int _ecore_thread_shutdown(void); extern int _ecore_fps_debug; extern double _ecore_loop_time; Modified: trunk/ecore/src/lib/ecore/ecore_thread.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_thread.c 2009-09-04 05:41:20 UTC (rev 42239) +++ trunk/ecore/src/lib/ecore/ecore_thread.c 2009-09-04 05:49:54 UTC (rev 42240) @@ -27,7 +27,7 @@ static int _ecore_thread_count_max = 0; static int _ecore_thread_count = 0; -static int _ecore_thread_init = 0; +static int _ecore_thread_initcount = 0; static Eina_List *_ecore_thread = NULL; static int ECORE_THREAD_PIPE_DEL = 0; static Ecore_Event_Handler *del_handler = NULL; @@ -134,11 +134,11 @@ #endif int -ecore_thread_init(void) +_ecore_thread_init(void) { - _ecore_thread_init++; + _ecore_thread_initcount++; - if (_ecore_thread_init > 1) return _ecore_thread_init; + if (_ecore_thread_initcount > 1) return _ecore_thread_initcount; _ecore_thread_count_max = eina_cpu_count(); if (_ecore_thread_count_max <= 0) @@ -148,15 +148,15 @@ #ifdef BUILD_PTHREAD del_handler = ecore_event_handler_add(ECORE_THREAD_PIPE_DEL, _ecore_thread_pipe_del, NULL); #endif - return _ecore_thread_init; + return _ecore_thread_initcount; } int -ecore_thread_shutdown(void) +_ecore_thread_shutdown(void) { - _ecore_thread_init--; + _ecore_thread_initcount--; - if (!_ecore_thread_init) + if (!_ecore_thread_initcount) { /* FIXME: If function are still running in the background, should we kill them ? */ #ifdef BUILD_PTHREAD @@ -165,7 +165,7 @@ #endif } - return _ecore_thread_init; + return _ecore_thread_initcount; } /* |
From: Enlightenment S. <no-...@en...> - 2009-09-26 13:05:30
|
Log: Use LTLIBINTL instead of LIBINTL Author: caro Date: 2009-09-26 06:05:20 -0700 (Sat, 26 Sep 2009) New Revision: 42711 Modified: trunk/ecore/src/lib/ecore/Makefile.am Modified: trunk/ecore/src/lib/ecore/Makefile.am =================================================================== --- trunk/ecore/src/lib/ecore/Makefile.am 2009-09-26 12:25:34 UTC (rev 42710) +++ trunk/ecore/src/lib/ecore/Makefile.am 2009-09-26 13:05:20 UTC (rev 42711) @@ -37,7 +37,7 @@ ecore_value.c \ ecore_thread.c -libecore_la_LIBADD = @dlopen_libs@ @EINA_LIBS@ @EVIL_LIBS@ @WIN32_LIBS@ @LIBINTL@ -lm +libecore_la_LIBADD = @dlopen_libs@ @EINA_LIBS@ @EVIL_LIBS@ @WIN32_LIBS@ @LTLIBINTL@ -lm libecore_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @ecore_release_info@ EXTRA_DIST = ecore_private.h |
From: Enlightenment S. <no-...@en...> - 2009-10-10 03:25:11
|
Log: no need for ref count in ecore_thread init/shutdown functions Author: caro Date: 2009-10-09 20:24:56 -0700 (Fri, 09 Oct 2009) New Revision: 42991 Modified: trunk/ecore/src/lib/ecore/ecore_private.h trunk/ecore/src/lib/ecore/ecore_thread.c Modified: trunk/ecore/src/lib/ecore/ecore_private.h =================================================================== --- trunk/ecore/src/lib/ecore/ecore_private.h 2009-10-10 02:53:22 UTC (rev 42990) +++ trunk/ecore/src/lib/ecore/ecore_private.h 2009-10-10 03:24:56 UTC (rev 42991) @@ -444,8 +444,8 @@ void _ecore_fps_debug_shutdown(void); void _ecore_fps_debug_runtime_add(double t); -int _ecore_thread_init(void); -int _ecore_thread_shutdown(void); +void _ecore_thread_init(void); +void _ecore_thread_shutdown(void); void _ecore_glib_init(void); void _ecore_glib_shutdown(void); Modified: trunk/ecore/src/lib/ecore/ecore_thread.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_thread.c 2009-10-10 02:53:22 UTC (rev 42990) +++ trunk/ecore/src/lib/ecore/ecore_thread.c 2009-10-10 03:24:56 UTC (rev 42991) @@ -27,7 +27,6 @@ static int _ecore_thread_count_max = 0; static int _ecore_thread_count = 0; -static int _ecore_thread_initcount = 0; static Eina_List *_ecore_thread = NULL; static int ECORE_THREAD_PIPE_DEL = 0; static Ecore_Event_Handler *del_handler = NULL; @@ -133,13 +132,9 @@ } #endif -int +void _ecore_thread_init(void) { - _ecore_thread_initcount++; - - if (_ecore_thread_initcount > 1) return _ecore_thread_initcount; - _ecore_thread_count_max = eina_cpu_count(); if (_ecore_thread_count_max <= 0) _ecore_thread_count_max = 1; @@ -148,24 +143,16 @@ #ifdef BUILD_PTHREAD del_handler = ecore_event_handler_add(ECORE_THREAD_PIPE_DEL, _ecore_thread_pipe_del, NULL); #endif - return _ecore_thread_initcount; } -int +void _ecore_thread_shutdown(void) { - _ecore_thread_initcount--; - - if (!_ecore_thread_initcount) - { - /* FIXME: If function are still running in the background, should we kill them ? */ + /* FIXME: If function are still running in the background, should we kill them ? */ #ifdef BUILD_PTHREAD - ecore_event_handler_del(del_handler); - del_handler = NULL; + ecore_event_handler_del(del_handler); + del_handler = NULL; #endif - } - - return _ecore_thread_initcount; } /* |
From: Enlightenment S. <no-...@en...> - 2009-10-15 06:26:13
|
Log: * add vi header * include Ecore.h after stdlib.h so that pid_t is defined on windows Author: caro Date: 2009-10-14 23:26:01 -0700 (Wed, 14 Oct 2009) New Revision: 43092 Modified: trunk/ecore/src/lib/ecore/ecore_glib.c Modified: trunk/ecore/src/lib/ecore/ecore_glib.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_glib.c 2009-10-15 03:25:22 UTC (rev 43091) +++ trunk/ecore/src/lib/ecore/ecore_glib.c 2009-10-15 06:26:01 UTC (rev 43092) @@ -1,3 +1,7 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ + #ifdef HAVE_CONFIG_H # include <config.h> #endif @@ -2,5 +6,6 @@ -#include "Ecore.h" #include <stdio.h> +#include "Ecore.h" + #ifdef HAVE_GLIB |
From: Enlightenment S. <no-...@en...> - 2009-10-16 08:30:09
|
Log: formatting Author: caro Date: 2009-10-16 01:29:55 -0700 (Fri, 16 Oct 2009) New Revision: 43111 Modified: trunk/ecore/src/lib/ecore/ecore_exe.c Modified: trunk/ecore/src/lib/ecore/ecore_exe.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_exe.c 2009-10-15 23:13:26 UTC (rev 43110) +++ trunk/ecore/src/lib/ecore/ecore_exe.c 2009-10-16 08:29:55 UTC (rev 43111) @@ -7,8 +7,8 @@ #endif #if defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__) -#include <sys/time.h> -#include <sys/resource.h> +# include <sys/time.h> +# include <sys/resource.h> #endif #include <stdlib.h> |
From: Enlightenment S. <no-...@en...> - 2009-10-16 09:17:36
|
Log: ecore_exe for Windows. Not complete yet but it executes a command and kills it TODO: pipes Author: caro Date: 2009-10-16 02:17:26 -0700 (Fri, 16 Oct 2009) New Revision: 43112 Added: trunk/ecore/src/lib/ecore/ecore_exe_win32.c Modified: trunk/ecore/src/lib/ecore/Ecore.h trunk/ecore/src/lib/ecore/Makefile.am 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-16 08:29:55 UTC (rev 43111) +++ trunk/ecore/src/lib/ecore/Ecore.h 2009-10-16 09:17:26 UTC (rev 43112) @@ -120,9 +120,7 @@ }; typedef enum _Ecore_Poller_Type Ecore_Poller_Type; -#ifndef _WIN32 typedef void Ecore_Exe; /**< A handle for spawned processes */ -#endif typedef void Ecore_Timer; /**< A handle for timers */ typedef void Ecore_Idler; /**< A handle for idlers */ typedef void Ecore_Idle_Enterer; /**< A handle for idle enterers */ @@ -246,7 +244,6 @@ EAPI void *ecore_event_current_event_get(void); -#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); @@ -270,7 +267,6 @@ EAPI void ecore_exe_kill(Ecore_Exe *exe); EAPI void ecore_exe_signal(Ecore_Exe *exe, int num); EAPI void ecore_exe_hup(Ecore_Exe *exe); -#endif EAPI Ecore_Idler *ecore_idler_add(int (*func) (void *data), const void *data); EAPI void *ecore_idler_del(Ecore_Idler *idler); Modified: trunk/ecore/src/lib/ecore/Makefile.am =================================================================== --- trunk/ecore/src/lib/ecore/Makefile.am 2009-10-16 08:29:55 UTC (rev 43111) +++ trunk/ecore/src/lib/ecore/Makefile.am 2009-10-16 09:17:26 UTC (rev 43112) @@ -16,6 +16,7 @@ ecore_app.c \ ecore_events.c \ ecore_exe.c \ +ecore_exe_win32.c \ ecore_getopt.c \ ecore_hash.c \ ecore_idle_enterer.c \ Modified: trunk/ecore/src/lib/ecore/ecore_private.h =================================================================== --- trunk/ecore/src/lib/ecore/ecore_private.h 2009-10-16 08:29:55 UTC (rev 43111) +++ trunk/ecore/src/lib/ecore/ecore_private.h 2009-10-16 09:17:26 UTC (rev 43112) @@ -207,9 +207,7 @@ }; typedef enum _Ecore_Poller_Type Ecore_Poller_Type; -#ifndef _WIN32 typedef struct _Ecore_Exe Ecore_Exe; -#endif typedef struct _Ecore_Timer Ecore_Timer; typedef struct _Ecore_Idler Ecore_Idler; typedef struct _Ecore_Idle_Enterer Ecore_Idle_Enterer; @@ -418,12 +416,9 @@ void _ecore_signal_call(void); #endif -#ifdef _WIN32 -static inline void _ecore_exe_init(void) { } -static inline void _ecore_exe_shutdown(void) { } -#else void _ecore_exe_init(void); void _ecore_exe_shutdown(void); +#ifndef _WIN32 Ecore_Exe *_ecore_exe_find(pid_t pid); void *_ecore_exe_event_del_new(void); void _ecore_exe_event_del_free(void *data, void *ev); |
From: Enlightenment S. <no-...@en...> - 2009-10-16 09:23:52
|
Log: put windows.h inside _WIN32 guards... Author: caro Date: 2009-10-16 02:23:34 -0700 (Fri, 16 Oct 2009) New Revision: 43113 Modified: trunk/ecore/src/lib/ecore/ecore_exe_win32.c Modified: trunk/ecore/src/lib/ecore/ecore_exe_win32.c =================================================================== --- trunk/ecore/src/lib/ecore/ecore_exe_win32.c 2009-10-16 09:17:26 UTC (rev 43112) +++ trunk/ecore/src/lib/ecore/ecore_exe_win32.c 2009-10-16 09:23:34 UTC (rev 43113) @@ -6,15 +6,15 @@ # include <config.h> #endif -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#undef WIN32_LEAN_AND_MEAN - #include "ecore_private.h" #include "Ecore.h" #ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#undef WIN32_LEAN_AND_MEAN + #define ECORE_EXE_WIN32_TIMEOUT 3000 typedef enum |
From: Enlightenment S. <no-...@en...> - 2009-10-20 10:46:18
|
Log: events is an array of HANDLE's, not an array of pointers of HANDLE's Author: caro Date: 2009-10-20 03:46:05 -0700 (Tue, 20 Oct 2009) New Revision: 43162 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-10-19 22:06:53 UTC (rev 43161) +++ trunk/ecore/src/lib/ecore/ecore_main.c 2009-10-20 10:46:05 UTC (rev 43162) @@ -706,14 +706,14 @@ _ecore_main_win32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *tv) { - HANDLE* events[MAXIMUM_WAIT_OBJECTS]; - int sockets[MAXIMUM_WAIT_OBJECTS]; - int events_nbr = 0; - DWORD result; - DWORD timeout; - MSG msg; - int i; - int res; + HANDLE events[MAXIMUM_WAIT_OBJECTS]; + int sockets[MAXIMUM_WAIT_OBJECTS]; + int events_nbr = 0; + DWORD result; + DWORD timeout; + MSG msg; + int i; + int res; /* Create an event object per socket */ for(i = 0; i < nfds; i++) |
From: Enlightenment S. <no-...@en...> - 2009-10-25 07:02:15
|
Log: on Windows, pipe_read (recv) and pipe_write (send) does not use errno, and the returned result is managed a bit differently than on unix Author: caro Date: 2009-10-25 00:02:03 -0700 (Sun, 25 Oct 2009) New Revision: 43252 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-10-25 06:46:49 UTC (rev 43251) +++ trunk/ecore/src/lib/ecore/ecore_pipe.c 2009-10-25 07:02:03 UTC (rev 43252) @@ -514,6 +514,7 @@ p->fd_handler = NULL; return ECORE_CALLBACK_CANCEL; } +#ifndef _WIN32 else if ((ret == PIPE_FD_ERROR) && ((errno == EINTR) || (errno == EAGAIN))) return ECORE_CALLBACK_RENEW; else @@ -521,10 +522,26 @@ fprintf(stderr, "An unhandled error (ret: %d errno: %d)" "occured while reading from the pipe the length\n", ret, errno); - return ECORE_CALLBACK_RENEW; + return ECORE_CALLBACK_RENEW; } +#else + else /* ret == PIPE_FD_ERROR is the only other case on Windows */ + { + if (WSAGetLastError() != WSAEWOULDBLOCK) + { + p->handler((void *)p->data, NULL, 0); + pipe_close(p->fd_read); + p->fd_read = PIPE_FD_INVALID; + p->fd_handler = NULL; + return ECORE_CALLBACK_CANCEL; + } + else + goto _win32_done; + } +#endif } + _win32_done: if (!p->passed_data) p->passed_data = malloc(p->len); @@ -556,6 +573,7 @@ p->fd_handler = NULL; return ECORE_CALLBACK_CANCEL; } +#ifndef _WIN32 else if (ret == PIPE_FD_ERROR && (errno == EINTR || errno == EAGAIN)) return ECORE_CALLBACK_RENEW; else @@ -565,6 +583,21 @@ ret, errno); return ECORE_CALLBACK_RENEW; } +#else + else /* ret == PIPE_FD_ERROR is the only other case on Windows */ + { + if (WSAGetLastError() != WSAEWOULDBLOCK) + { + p->handler((void *)p->data, NULL, 0); + pipe_close(p->fd_read); + p->fd_read = PIPE_FD_INVALID; + p->fd_handler = NULL; + return ECORE_CALLBACK_CANCEL; + } + else + break; + } +#endif } while (ecore_time_get() - start_time < ecore_animator_frametime_get()); |