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

Reply via email to