Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/ecore
Dir : e17/libs/ecore/src
Modified Files:
Tag: SPLIT
Ecore.h ecore_events.c ecore_main.c ecore_private.h
ecore_signal.c ecore_test.c
Log Message:
more updates... the core stuff is pretty complete... now to debate how much
mroe goes into ecore... or do i make the other parts modules... like IPC
could be an ecore module... x11 could be an exore module. signals aren't
modules - i consider them a core basic to an executable. i could put a "job
queue" module in too (hellishly simple) and more...
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/Ecore.h,v
retrieving revision 1.45.2.9
retrieving revision 1.45.2.10
diff -u -3 -r1.45.2.9 -r1.45.2.10
--- Ecore.h 16 Jan 2003 01:44:30 -0000 1.45.2.9
+++ Ecore.h 16 Jan 2003 04:58:18 -0000 1.45.2.10
@@ -12,10 +12,10 @@
#define ECORE_EVENT_NONE 0
#define ECORE_EVENT_EXE_EXIT 1
-#define ECORE_EVENT_SINGAL_USER 2
-#define ECORE_EVENT_SINGAL_HUP 3
-#define ECORE_EVENT_SINGAL_EXIT 4
-#define ECORE_EVENT_SINGAL_POWER 5
+#define ECORE_EVENT_SIGNAL_USER 2
+#define ECORE_EVENT_SIGNAL_HUP 3
+#define ECORE_EVENT_SIGNAL_EXIT 4
+#define ECORE_EVENT_SIGNAL_POWER 5
#define ECORE_EVENT_COUNT 6
#ifndef _ECORE_PRIVATE_H
@@ -33,7 +33,7 @@
typedef void Ecore_Fd_Handler;
typedef void Ecore_Event_Handler;
typedef void Ecore_Event;
-#else
+#endif
typedef struct _Ecore_Event_Exe_Exit Ecore_Event_Exe_Exit;
typedef struct _Ecore_Event_Signal_User Ecore_Event_Signal_User;
typedef struct _Ecore_Event_Signal_Hup Ecore_Event_Signal_Hup;
@@ -71,7 +71,6 @@
{
void *ext_data;
};
-#endif
int ecore_init(void);
void ecore_shutdown(void);
@@ -79,7 +78,10 @@
void ecore_app_args_set(int argc, const char **argv);
void ecore_app_args_get(int *argc, char ***argv);
void ecore_app_restart(void);
-
+
+ Ecore_Event *ecore_event_add(int type, void *ev, void (*func_free) (void
+*ev, void *data), void *data);
+ void ecore_event_del(Ecore_Event *event);
+
Ecore_Event_Handler *ecore_event_handler_add(int type, int (*func) (int type, void
*event, void *data), const void *data);
void *ecore_event_handler_del(Ecore_Event_Handler *event_handler);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/Attic/ecore_events.c,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -3 -r1.1.2.5 -r1.1.2.6
--- ecore_events.c 16 Jan 2003 01:44:30 -0000 1.1.2.5
+++ ecore_events.c 16 Jan 2003 04:58:18 -0000 1.1.2.6
@@ -46,6 +46,45 @@
return event_handler->data;
}
+/**
+ * Add an event to the event queue
+ * @param type
+ * @param ev
+ * @param func_free
+ * @param data
+ * @return A Handle for that event
+ *
+ * This adds an event to the event queue/
+ */
+Ecore_Event *
+ecore_event_add(int type, void *ev, void (*func_free) (void *ev, void *data), void
+*data)
+{
+ if (!func_free) return NULL;
+ if (!ev) return NULL;
+ if (type <= ECORE_EVENT_NONE) return NULL;
+ return _ecore_event_add(type, ev, func_free, data);
+}
+
+/**
+ * Delete an event from the queue
+ * @param event
+ *
+ * Delete the specified event from the event queue
+ */
+void
+ecore_event_del(Ecore_Event *event)
+{
+ if (!event) return;
+ event->delete_me = 1;
+}
+
+int
+_ecore_event_exist(void)
+{
+ if (events) return 1;
+ return 0;
+}
+
Ecore_Event *
_ecore_event_add(int type, void *ev, void (*func_free) (void *ev, void *data), void
*data)
{
@@ -86,17 +125,20 @@
Ecore_Event *e;
e = l;
- for (ll = event_handlers; ll; ll = ll->next)
+ if (!e->delete_me)
{
- Ecore_Event_Handler *eh;
-
- eh = ll;
- if (!eh->delete_me)
+ for (ll = event_handlers; ll; ll = ll->next)
{
- if (eh->type == e->type)
+ Ecore_Event_Handler *eh;
+
+ eh = ll;
+ if (!eh->delete_me)
{
- if (!eh->func(e->type, e->event, eh->data))
- break;
+ if (eh->type == e->type)
+ {
+ if (!eh->func(e->type, e->event, eh->data))
+ break;
+ }
}
}
}
@@ -132,5 +174,77 @@
e = data;
if (e->exe) _ecore_exe_free(e->exe);
+ free(e);
+}
+
+void *
+_ecore_event_signal_user_new(void)
+{
+ Ecore_Event_Signal_User *e;
+
+ e = calloc(1, sizeof(Ecore_Event_Signal_User));
+ return e;
+}
+
+void
+_ecore_event_signal_user_free(void *ev, void *data)
+{
+ Ecore_Event_Signal_User *e;
+
+ e = data;
+ free(e);
+}
+
+void *
+_ecore_event_signal_hup_new(void)
+{
+ Ecore_Event_Signal_Hup *e;
+
+ e = calloc(1, sizeof(Ecore_Event_Signal_Hup));
+ return e;
+}
+
+void
+_ecore_event_signal_hup_free(void *ev, void *data)
+{
+ Ecore_Event_Signal_Hup *e;
+
+ e = data;
+ free(e);
+}
+
+void *
+_ecore_event_signal_exit_new(void)
+{
+ Ecore_Event_Signal_Exit *e;
+
+ e = calloc(1, sizeof(Ecore_Event_Signal_Exit));
+ return e;
+}
+
+void
+_ecore_event_signal_exit_free(void *ev, void *data)
+{
+ Ecore_Event_Signal_Exit *e;
+
+ e = data;
+ free(e);
+}
+
+void *
+_ecore_event_signal_power_new(void)
+{
+ Ecore_Event_Signal_Power *e;
+
+ e = calloc(1, sizeof(Ecore_Event_Signal_Power));
+ return e;
+}
+
+void
+_ecore_event_signal_power_free(void *ev, void *data)
+{
+ Ecore_Event_Signal_Power *e;
+
+ e = data;
free(e);
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/Attic/ecore_main.c,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -3 -r1.1.2.7 -r1.1.2.8
--- ecore_main.c 16 Jan 2003 01:44:30 -0000 1.1.2.7
+++ ecore_main.c 16 Jan 2003 04:58:18 -0000 1.1.2.8
@@ -37,8 +37,22 @@
now = ecore_time_get();
while (_ecore_timer_call(now));
}
+ /* process signals into events .... */
+ while (_ecore_signal_count_get()) _ecore_signal_call();
+ if (_ecore_event_exist())
+ {
+ have_event = 1;
+ have_signal = 1;
+ goto process_events;
+ }
/* call idle enterers ... */
_ecore_idle_enterer_call();
+ if (_ecore_event_exist())
+ {
+ have_event = 1;
+ have_signal = 1;
+ goto process_events;
+ }
start_loop:
/* init flags */
@@ -109,14 +123,12 @@
/* call the fd handler per fd that became alive... */
/* this should read or write any data to the monitored fd and then */
/* post events onto the ecore event pipe if necessary */
+ process_events:
if (have_event) _ecore_main_fd_handlers_call();
do
{
/* process signals into events .... */
- if (have_signal)
- {
- while (_ecore_signal_count_get()) _ecore_signal_call();
- }
+ while (_ecore_signal_count_get()) _ecore_signal_call();
/* filter events to remove useless ones etc. ... */
/* FIXME: implement some other day... */
@@ -124,7 +136,6 @@
/* handle events ... */
_ecore_event_call();
_ecore_main_fd_handlers_cleanup();
- have_signal = 1;
}
while (_ecore_main_fd_handlers_buf_call());
}
@@ -333,6 +344,8 @@
{
if (!fdh->func(fdh, fdh->data))
fdh->delete_me = 1;
+ fdh->read_active = 1;
+ fdh->write_active = 1;
}
}
}
@@ -357,6 +370,7 @@
if (fdh->buf_func(fdh, fdh->buf_data))
{
ret |= fdh->func(fdh, fdh->data);
+ fdh->read_active = 1;
}
}
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/Attic/ecore_private.h,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -3 -r1.1.2.7 -r1.1.2.8
--- ecore_private.h 14 Jan 2003 01:21:05 -0000 1.1.2.7
+++ ecore_private.h 16 Jan 2003 04:58:18 -0000 1.1.2.8
@@ -91,6 +91,7 @@
Ecore_List __list_data;
int type;
void *event;
+ int delete_me : 1;
void (*func_free) (Ecore_Event *ev, void *data);
void *data;
};
@@ -104,13 +105,22 @@
void _ecore_idle_enterer_call(void);
int _ecore_idle_enterer_exist(void);
+int _ecore_event_exist(void);
Ecore_Event *_ecore_event_add(int type, void *ev, void (*func_free) (void *ev, void
*data), void *data);
void *_ecore_event_del(Ecore_Event *event);
void _ecore_event_call(void);
void *_ecore_event_exe_exit_new(void);
void _ecore_event_exe_exit_free(void *ev, void *data);
-
+void *_ecore_event_signal_user_new(void);
+void _ecore_event_signal_user_free(void *ev, void *data);
+void *_ecore_event_signal_hup_new(void);
+void _ecore_event_signal_hup_free(void *ev, void *data);
+void *_ecore_event_signal_exit_new(void);
+void _ecore_event_signal_exit_free(void *ev, void *data);
+void *_ecore_event_signal_power_new(void);
+void _ecore_event_signal_power_free(void *ev, void *data);
+
void _ecore_signal_init(void);
int _ecore_signal_count_get(void);
void _ecore_signal_call(void);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/Attic/ecore_signal.c,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -3 -r1.1.2.2 -r1.1.2.3
--- ecore_signal.c 14 Jan 2003 01:21:05 -0000 1.1.2.2
+++ ecore_signal.c 16 Jan 2003 04:58:18 -0000 1.1.2.3
@@ -81,43 +81,97 @@
}
while (sigusr1_count > 0)
{
- /* FIXME: post event */
+ Ecore_Event_Signal_User *e;
+
+ e = _ecore_event_signal_user_new();
+ if (e)
+ {
+ e->number = 1;
+ _ecore_event_add(ECORE_EVENT_SIGNAL_USER, e,
+ _ecore_event_signal_user_free, NULL);
+ }
sigusr1_count--;
sig_count--;
}
while (sigusr2_count > 0)
{
- /* FIXME: post event */
+ Ecore_Event_Signal_User *e;
+
+ e = _ecore_event_signal_user_new();
+ if (e)
+ {
+ e->number = 2;
+ _ecore_event_add(ECORE_EVENT_SIGNAL_USER, e,
+ _ecore_event_signal_user_free, NULL);
+ }
sigusr2_count--;
sig_count--;
}
while (sighup_count > 0)
{
- /* FIXME: post event */
+ Ecore_Event_Signal_Hup *e;
+
+ e = _ecore_event_signal_hup_new();
+ if (e)
+ {
+ _ecore_event_add(ECORE_EVENT_SIGNAL_HUP, e,
+ _ecore_event_signal_hup_free, NULL);
+ }
sighup_count--;
sig_count--;
}
while (sigquit_count > 0)
{
- /* FIXME: post event */
+ Ecore_Event_Signal_Exit *e;
+
+ e = _ecore_event_signal_exit_new();
+ if (e)
+ {
+ e->quit = 1;
+ _ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e,
+ _ecore_event_signal_exit_free, NULL);
+ }
sigquit_count--;
sig_count--;
}
while (sigint_count > 0)
{
- /* FIXME: post event */
+ Ecore_Event_Signal_Exit *e;
+
+ e = _ecore_event_signal_exit_new();
+ if (e)
+ {
+ e->interrupt = 1;
+ _ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e,
+ _ecore_event_signal_exit_free, NULL);
+ }
sigint_count--;
sig_count--;
}
while (sigterm_count > 0)
{
- /* FIXME: post event */
+ Ecore_Event_Signal_Exit *e;
+
+ e = _ecore_event_signal_exit_new();
+ if (e)
+ {
+ e->terminate = 1;
+ _ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e,
+ _ecore_event_signal_exit_free, NULL);
+ }
sigterm_count--;
sig_count--;
}
while (sigpwr_count > 0)
{
- /* FIXME: post event */
+ Ecore_Event_Signal_Power *e;
+
+ e = _ecore_event_signal_power_new();
+ if (e)
+ {
+ _ecore_event_add(ECORE_EVENT_SIGNAL_POWER, e,
+ _ecore_event_signal_power_free, NULL);
+ }
sigpwr_count--;
sig_count--;
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/Attic/ecore_test.c,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -3 -r1.1.2.2 -r1.1.2.3
--- ecore_test.c 16 Jan 2003 02:11:36 -0000 1.1.2.2
+++ ecore_test.c 16 Jan 2003 04:58:18 -0000 1.1.2.3
@@ -30,6 +30,19 @@
}
int
+handler_signal_exit(int ev_type, void *ev, void *data)
+{
+ Ecore_Event_Signal_Exit *e;
+
+ e = ev;
+ if (e->interrupt) printf("exit: interrupt\n");
+ if (e->quit) printf("exit: quit\n");
+ if (e->terminate) printf("exit: terminate\n");
+ ecore_main_loop_quit();
+ return 1;
+}
+
+int
x_handler(Ecore_Fd_Handler *fd_handler, void *data)
{
Display *display;
@@ -117,6 +130,8 @@
ecore_idle_enterer_add(idle_enterer, NULL);
// ecore_idler_add(idler, NULL);
ecore_timer_add(1.0, timer, NULL);
+
+ ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, handler_signal_exit, NULL);
ecore_main_loop_begin();
ecore_shutdown();
-------------------------------------------------------
This SF.NET email is sponsored by: A Thawte Code Signing Certificate
is essential in establishing user confidence by providing assurance of
authenticity and code integrity. Download our Free Code Signing guide:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0028en
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs