From: Enlightenment S. <no-...@en...> - 2008-11-03 05:42:34
|
Log: add patch to add a pipe handler for glueing threads to the core main loop via pipes - makes it save for a thread to send a message to the main loop and not need lots of thread locks etc. Author: raster Date: 2008-11-02 21:42:27 -0800 (Sun, 02 Nov 2008) New Revision: 37429 Added: trunk/ecore/src/lib/ecore/ecore_pipe.c Modified: trunk/ecore/AUTHORS 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/AUTHORS =================================================================== --- trunk/ecore/AUTHORS 2008-11-03 05:25:56 UTC (rev 37428) +++ trunk/ecore/AUTHORS 2008-11-03 05:42:27 UTC (rev 37429) @@ -22,3 +22,4 @@ Tim Horton <hor...@gm...> Arnaud de Turckheim 'quarium' <qu...@gm...> Matt Barclay <mba...@gm...> +Peter Wehrfritz <pet...@we...> Modified: trunk/ecore/src/lib/ecore/Ecore.h =================================================================== --- trunk/ecore/src/lib/ecore/Ecore.h 2008-11-03 05:25:56 UTC (rev 37428) +++ trunk/ecore/src/lib/ecore/Ecore.h 2008-11-03 05:42:27 UTC (rev 37429) @@ -127,6 +127,7 @@ typedef void Ecore_Event_Filter; /**< A handle for an event filter */ typedef void Ecore_Event; /**< A handle for an event */ typedef void Ecore_Animator; /**< A handle for animators */ + typedef void Ecore_Pipe; /**< A handle for pipes */ typedef void Ecore_Poller; /**< A handle for pollers */ #endif typedef struct _Ecore_Event_Signal_User Ecore_Event_Signal_User; /**< User signal event */ @@ -286,6 +287,10 @@ EAPI int ecore_main_fd_handler_active_get(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_Flags flags); EAPI void ecore_main_fd_handler_active_set(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_Flags flags); + EAPI Ecore_Pipe *ecore_pipe_add(void (*handler) (void *data, void *buffer, int nbyte), const void *data); + EAPI void *ecore_pipe_del(Ecore_Pipe *p); + EAPI void ecore_pipe_write(Ecore_Pipe *p, const void *buffer, int nbytes); + EAPI double ecore_time_get(void); EAPI double ecore_loop_time_get(void); Modified: trunk/ecore/src/lib/ecore/Makefile.am =================================================================== --- trunk/ecore/src/lib/ecore/Makefile.am 2008-11-03 05:25:56 UTC (rev 37428) +++ trunk/ecore/src/lib/ecore/Makefile.am 2008-11-03 05:42:27 UTC (rev 37429) @@ -22,6 +22,7 @@ ecore_list.c \ ecore_main.c \ ecore_path.c \ +ecore_pipe.c \ ecore_plugin.c \ ecore_sheap.c \ ecore_signal.c \ Added: trunk/ecore/src/lib/ecore/ecore_pipe.c Modified: trunk/ecore/src/lib/ecore/ecore_private.h =================================================================== --- trunk/ecore/src/lib/ecore/ecore_private.h 2008-11-03 05:25:56 UTC (rev 37428) +++ trunk/ecore/src/lib/ecore/ecore_private.h 2008-11-03 05:42:27 UTC (rev 37429) @@ -95,7 +95,9 @@ #define ECORE_MAGIC_EVENT 0xf77119fe #define ECORE_MAGIC_ANIMATOR 0xf7643ea5 #define ECORE_MAGIC_POLLER 0xf7568127 +#define ECORE_MAGIC_PIPE 0xf7458226 + #define ECORE_MAGIC Ecore_Magic __magic #define ECORE_MAGIC_SET(d, m) (d)->__magic = (m) @@ -247,6 +249,7 @@ typedef struct _Ecore_Event_Filter Ecore_Event_Filter; typedef struct _Ecore_Event Ecore_Event; typedef struct _Ecore_Animator Ecore_Animator; +typedef struct _Ecore_Pipe Ecore_Pipe; typedef struct _Ecore_Poller Ecore_Poller; #ifndef _WIN32 |