Updated with the new 'ek' kernel API
diff --git a/contiki/apps/processes.c b/contiki/apps/processes.c
index 0539a9c..2bfe287 100644
--- a/contiki/apps/processes.c
+++ b/contiki/apps/processes.c
@@ -29,12 +29,12 @@
  *
  * This file is part of the Contiki desktop environment
  *
- * $Id: processes.c,v 1.9 2004/06/06 05:59:21 adamdunkels Exp $
+ * $Id: processes.c,v 1.10 2004/07/04 11:35:07 adamdunkels Exp $
  *
  */
 
+#include "ek.h"
 #include "ctk.h"
-#include "dispatcher.h"
 #include "loader.h"
 
 #define MAX_PROCESSLABELS 13
@@ -55,22 +55,30 @@
 static struct ctk_button processclosebutton =
   {CTK_BUTTON(16, 15, 5, "Close")};
 
-static DISPATCHER_SIGHANDLER(processes_sighandler, s, data);
+/*static DISPATCHER_SIGHANDLER(processes_sighandler, s, data);
 static struct dispatcher_proc p =
   {DISPATCHER_PROC("Process listing", NULL, processes_sighandler, NULL)};
-static ek_id_t id;
+  static ek_id_t id;*/
+EK_EVENTHANDLER(processes_eventhandler, ev, data);
+EK_PROCESS(p, "Process listing", EK_PRIO_NORMAL,
+	   processes_eventhandler, NULL, NULL);
+static ek_id_t id = EK_ID_NONE;
+
+enum {
+  EVENT_UPDATE
+};
 
 /*-----------------------------------------------------------------------------------*/
 static void
 update_processwindow(void)
 {
   unsigned char i, j, *idsptr;
-  struct dispatcher_proc *p;
+  struct ek_proc *p;
 
   /* Step through each possible process ID and see if there is a
      matching process. */
   j = 0;
-  for(p = DISPATCHER_PROCS(); p != NULL; p = p->next) {
+  for(p = EK_PROCS(); p != NULL; p = p->next) {
     idsptr = ids[j];
     i = p->id;
     idsptr[0] = '0' + i / 100;
@@ -85,7 +93,7 @@
     CTK_WIDGET_ADD(&processwindow, &processidlabels[j]);
     
     CTK_LABEL_NEW(&processnamelabels[j],
-		  4, j + 1, 19, 1, p->name);
+		  4, j + 1, 19, 1, (char *)p->name);
     CTK_WIDGET_ADD(&processwindow, &processnamelabels[j]);
 
     ++j;
@@ -106,21 +114,14 @@
   arg_free(arg);
     
   if(id == EK_ID_NONE) {
-    id = dispatcher_start(&p);
-    
-    ctk_window_new(&processwindow, 23, 16, "Processes");
-    update_processwindow();
-    
-    dispatcher_listen(ctk_signal_button_activate);
-    dispatcher_listen(ctk_signal_window_close);
-  }
-  ctk_window_open(&processwindow);
+    id = ek_start(&p);
+  }    
 }
 /*-----------------------------------------------------------------------------------*/
 static void
 processes_quit(void)
 {
-  dispatcher_exit(&p);
+  ek_exit();
   id = EK_ID_NONE;
   LOADER_UNLOAD();
 }
@@ -129,8 +130,9 @@
 killproc(void)
 {
   int procnum;
-  u8_t i, j;
-
+  unsigned char i, j;
+  struct ek_proc *p;
+  
   /* Find first zero char in killprocnum string. */
   for(i = 0; killprocnum[i] != 0 &&
 	i < sizeof(killprocnum); ++i);
@@ -146,18 +148,41 @@
     killprocnum[j] = 0;
   }
 
-  dispatcher_emit(dispatcher_signal_quit, NULL, procnum);
-  CTK_WIDGET_REDRAW(&killtextentry);
-  CTK_WIDGET_FOCUS(&processwindow, &processupdatebutton);
-  CTK_WIDGET_REDRAW(&killbutton);
-  CTK_WIDGET_REDRAW(&processupdatebutton);
+  /* Make sure the process ID exists. */
+  for(p = EK_PROCS(); p != NULL; p = p->next) {
+    if(EK_PROC_ID(p) == procnum) {
+      break;
+    }
+  }
+
+  if(p != NULL) {
+    ek_post(procnum, EK_EVENT_REQUEST_EXIT, NULL);
+    ek_post(id, EVENT_UPDATE, NULL);
+    CTK_WIDGET_REDRAW(&killtextentry);
+    CTK_WIDGET_FOCUS(&processwindow, &processupdatebutton);
+    CTK_WIDGET_REDRAW(&killbutton);
+    CTK_WIDGET_REDRAW(&processupdatebutton);
+  }
 }
 /*-----------------------------------------------------------------------------------*/
-static
-DISPATCHER_SIGHANDLER(processes_sighandler, s, data)
+/*static
+  DISPATCHER_SIGHANDLER(processes_sighandler, s, data)*/
+EK_EVENTHANDLER(processes_eventhandler, ev, data)
 {
-  DISPATCHER_SIGHANDLER_ARGS(s, data);
-  if(s == ctk_signal_button_activate) {
+/*  DISPATCHER_SIGHANDLER_ARGS(s, data);*/
+  EK_EVENTHANDLER_ARGS(ev, data);
+
+  
+  if(ev == EK_EVENT_INIT) {
+    ctk_window_new(&processwindow, 23, 16, "Processes");
+    update_processwindow();
+    
+    ctk_window_open(&processwindow);
+  } else if(ev == EVENT_UPDATE) {
+    ctk_window_clear(&processwindow);
+    update_processwindow();
+    ctk_window_open(&processwindow);
+  } else if(ev == ctk_signal_button_activate) {
     if(data == (ek_data_t)&processupdatebutton) {
       ctk_window_clear(&processwindow);
       update_processwindow();
@@ -169,8 +194,8 @@
     } else if(data == (ek_data_t)&killbutton) {
       killproc();
     }
-  } else if(s == dispatcher_signal_quit ||
-	    (s == ctk_signal_window_close &&
+  } else if(ev == EK_EVENT_REQUEST_EXIT ||
+	    (ev == ctk_signal_window_close &&
 	     data == (ek_data_t)&processwindow)) {
     ctk_window_close(&processwindow);
     processes_quit();