Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        alert.c 


Log Message:
Simplify alert (GSOD) code. Less intensive use of macros.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/alert.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -3 -r1.31 -r1.32
--- alert.c     21 Mar 2004 01:39:39 -0000      1.31
+++ alert.c     31 Mar 2004 19:04:23 -0000      1.32
@@ -24,7 +24,6 @@
 #include "E.h"
 
 static void         ShowAlert(char *text);
-static void         AlertHandleClick(int button);
 
 static int          (*IgnoreFunction) (const void *) = NULL;
 static const void  *IgnoreParams = NULL;
@@ -176,6 +175,106 @@
    EDBUG_RETURN_;
 }
 
+#define DRAW_BOX_OUT(mdd, mgc, mwin, mx, my, mw, mh) \
+        AlertDrawBox(mdd, mgc, mwin, mx, my, mw, mh, \
+        colorful, cols[0], cols[2], cols[3])
+#define DRAW_BOX_IN(mdd, mgc, mwin, mx, my, mw, mh) \
+        AlertDrawBox(mdd, mgc, mwin, mx, my, mw, mh, \
+        colorful, cols[2], cols[0], cols[3])
+static void
+AlertDrawBox(Display * mdd, GC mgc, Window mwin, int mx, int my, int mw, int mh,
+            int colorful, unsigned long c1, unsigned long c2, unsigned long cb)
+{
+   if (colorful)
+     {
+       XSetForeground(mdd, mgc, cb);
+       XDrawRectangle(mdd, mwin, mgc, mx, my, mw - 1, mh - 1);
+       XSetForeground(mdd, mgc, c1);
+       XDrawLine(mdd, mwin, mgc, mx + 1, my + 1, mx + mw - 3, my + 1);
+       XDrawLine(mdd, mwin, mgc, mx + 1, my + 1, mx + 1, my + mh - 3);
+       XSetForeground(mdd, mgc, c2);
+       XDrawLine(mdd, mwin, mgc, mx + 2, my + mh - 2, mx + mw - 2,
+                 my + mh - 2);
+       XDrawLine(mdd, mwin, mgc, mx + mw - 2, my + 2, mx + mw - 2,
+                 my + mh - 2);
+     }
+   else
+     {
+       XDrawRectangle(mdd, mwin, mgc, mx, my, mw - 1, mh - 1);
+     }
+}
+
+#define DRAW_THIN_BOX_IN(mdd, mgc, mwin, mx, my, mw, mh) \
+        AlertDrawThinBoxIn(mdd, mgc, mwin, mx, my, mw, mh, \
+        colorful, cols[2], cols[0])
+static void
+AlertDrawThinBoxIn(Display * mdd, GC mgc, Window mwin, int mx, int my, int mw,
+                  int mh, int colorful, unsigned long c1, unsigned long c2)
+{
+   if (colorful)
+     {
+       XSetForeground(mdd, mgc, c1);
+       XDrawLine(mdd, mwin, mgc, mx + 1, my + 1, mx + mw - 3, my + 1);
+       XDrawLine(mdd, mwin, mgc, mx + 1, my + 1, mx + 1, my + mh - 3);
+       XSetForeground(mdd, mgc, c2);
+       XDrawLine(mdd, mwin, mgc, mx + 2, my + mh - 2, mx + mw - 2,
+                 my + mh - 2);
+       XDrawLine(mdd, mwin, mgc, mx + mw - 2, my + 2, mx + mw - 2,
+                 my + mh - 2);
+     }
+}
+
+#define DRAW_HEADER(mdd, mgc, mwin, mx, my, mstr) \
+        AlertDrawHeader(mdd, mgc, mwin, mx, my, mstr, \
+        colorful, cols[2], cols[3], cols[4])
+static void
+AlertDrawHeader(Display * mdd, GC mgc, Window mwin, int mx, int my,
+               const char *mstr, int colorful, unsigned long cb,
+               unsigned long ct1, unsigned long ct2)
+{
+   int                 len = strlen(mstr);
+
+   if (colorful)
+     {
+       XSetForeground(mdd, mgc, cb);
+       XDrawString(mdd, mwin, mgc, mx + 1, my + 1, mstr, len);
+       XDrawString(mdd, mwin, mgc, mx + 2, my + 1, mstr, len);
+       XDrawString(mdd, mwin, mgc, mx + 2, my + 2, mstr, len);
+       XDrawString(mdd, mwin, mgc, mx + 1, my + 2, mstr, len);
+       XSetForeground(mdd, mgc, ct1);
+       XDrawString(mdd, mwin, mgc, mx - 1, my, mstr, len);
+       XDrawString(mdd, mwin, mgc, mx, my - 1, mstr, len);
+       XDrawString(mdd, mwin, mgc, mx + 1, my, mstr, len);
+       XDrawString(mdd, mwin, mgc, mx, my + 1, mstr, len);
+       XSetForeground(mdd, mgc, ct2);
+       XDrawString(mdd, mwin, mgc, mx, my, mstr, len);
+     }
+   else
+     {
+       XDrawString(mdd, mwin, mgc, mx, my, mstr, len);
+     }
+}
+
+#define DRAW_STRING(mdd, mgc, mwin, mx, my, mstr) \
+        AlertDrawString(mdd, mgc, mwin, mx, my, mstr, \
+        colorful, cols[3])
+static void
+AlertDrawString(Display * mdd, GC mgc, Window mwin, int mx, int my,
+               const char *mstr, int colorful, unsigned long ct1)
+{
+   int                 len = strlen(mstr);
+
+   if (colorful)
+     {
+       XSetForeground(mdd, mgc, ct1);
+       XDrawString(mdd, mwin, mgc, mx, my, mstr, len);
+     }
+   else
+     {
+       XDrawString(mdd, mwin, mgc, mx, my, mstr, len);
+     }
+}
+
 static void
 ShowAlert(char *text)
 {
@@ -190,16 +289,22 @@
    Font                font;
    XSetWindowAttributes att;
    char                colorful;
+   unsigned long       cols[256];
    XColor              xcl;
    Colormap            cmap;
-   int                 cols[256];
    int                 cnum, fh, x, y, ww, hh, mh;
    static char        *title = NULL, *str1 = NULL, *str2 = NULL, *str3 = NULL;
    KeyCode             key;
+   int                 button;
 
    EDBUG(8, "ShowAlert");
    if (!text)
       EDBUG_RETURN_;
+
+   /*
+    * We may get here from obscure places like an X-error or signal handler
+    * and things seem to work properly only if we do a new XOpenDisplay().
+    */
    dd = XOpenDisplay(NULL);
    if (!dd)
      {
@@ -207,6 +312,8 @@
        fflush(stderr);
        EDBUG_RETURN_;
      }
+   cmap = DefaultColormap(dd, DefaultScreen(dd));
+
    title = TitleText;
    str1 = IgnoreText;
    str2 = RestartText;
@@ -220,109 +327,39 @@
    if (!str3)
       str3 = _("Exit");
 
-#define DRAW_BOX_OUT(mdd, mgc, mwin, mx, my, mw, mh) \
-if (colorful) { \
-XSetForeground(mdd, mgc, cols[3]); \
-XDrawRectangle(mdd, mwin, mgc, mx, my, mw - 1, mh - 1); \
-XSetForeground(mdd, mgc, cols[0]); \
-XDrawLine(mdd, mwin, mgc, mx + 1, my + 1, mx + mw - 3, my + 1); \
-XDrawLine(mdd, mwin, mgc, mx + 1, my + 1, mx + 1, my + mh - 3); \
-XSetForeground(mdd, mgc, cols[2]); \
-XDrawLine(mdd, mwin, mgc, mx + 2, my + mh - 2, mx + mw - 2, my + mh - 2); \
-XDrawLine(mdd, mwin, mgc, mx + mw - 2, my + 2, mx + mw - 2, my + mh - 2); \
-} else { \
-XDrawRectangle(mdd, mwin, mgc, mx, my, mw - 1, mh - 1); \
-}
-
-#define DRAW_BOX_IN(mdd, mgc, mwin, mx, my, mw, mh) \
-if (colorful) { \
-XSetForeground(mdd, mgc, cols[3]); \
-XDrawRectangle(mdd, mwin, mgc, mx, my, mw - 1, mh - 1); \
-XSetForeground(mdd, mgc, cols[2]); \
-XDrawLine(mdd, mwin, mgc, mx + 1, my + 1, mx + mw - 3, my + 1); \
-XDrawLine(mdd, mwin, mgc, mx + 1, my + 1, mx + 1, my + mh - 3); \
-XSetForeground(mdd, mgc, cols[0]); \
-XDrawLine(mdd, mwin, mgc, mx + 2, my + mh - 2, mx + mw - 2, my + mh - 2); \
-XDrawLine(mdd, mwin, mgc, mx + mw - 2, my + 2, mx + mw - 2, my + mh - 2); \
-} else { \
-XDrawRectangle(mdd, mwin, mgc, mx, my, mw - 1, mh - 1); \
-}
-
-#define DRAW_THIN_BOX_IN(mdd, mgc, mwin, mx, my, mw, mh) \
-if (colorful) { \
-XSetForeground(mdd, mgc, cols[2]); \
-XDrawLine(mdd, mwin, mgc, mx + 1, my + 1, mx + mw - 3, my + 1); \
-XDrawLine(mdd, mwin, mgc, mx + 1, my + 1, mx + 1, my + mh - 3); \
-XSetForeground(mdd, mgc, cols[0]); \
-XDrawLine(mdd, mwin, mgc, mx + 2, my + mh - 2, mx + mw - 2, my + mh - 2); \
-XDrawLine(mdd, mwin, mgc, mx + mw - 2, my + 2, mx + mw - 2, my + mh - 2); \
-}
-
-#define DRAW_HEADER(mdd, mgc, mwin, mx, my, mstr) \
-if (colorful) { \
-XSetForeground(mdd, mgc, cols[2]); \
-XDrawString(mdd, mwin, mgc, mx + 1, my + 1, mstr, strlen(mstr)); \
-XDrawString(mdd, mwin, mgc, mx + 2, my + 1, mstr, strlen(mstr)); \
-XDrawString(mdd, mwin, mgc, mx + 2, my + 2, mstr, strlen(mstr)); \
-XDrawString(mdd, mwin, mgc, mx + 1, my + 2, mstr, strlen(mstr)); \
-XSetForeground(mdd, mgc, cols[3]); \
-XDrawString(mdd, mwin, mgc, mx - 1, my, mstr, strlen(mstr)); \
-XDrawString(mdd, mwin, mgc, mx, my - 1, mstr, strlen(mstr)); \
-XDrawString(mdd, mwin, mgc, mx + 1, my, mstr, strlen(mstr)); \
-XDrawString(mdd, mwin, mgc, mx, my + 1, mstr, strlen(mstr)); \
-XSetForeground(mdd, mgc, cols[4]); \
-XDrawString(mdd, mwin, mgc, mx, my, mstr, strlen(mstr)); \
-} else { \
-XDrawString(mdd, mwin, mgc, mx, my, mstr, strlen(mstr)); \
-}
-
-#define DRAW_STRING(mdd, mgc, mwin, mx, my, mstr) \
-if (colorful) { \
-XSetForeground(mdd, mgc, cols[3]); \
-XDrawString(mdd, mwin, mgc, mx, my, mstr, strlen(mstr)); \
-} else { \
-XDrawString(mdd, mwin, mgc, mx, my, mstr, strlen(mstr)); \
-}
-
-#define ALLOC_COLOR(d,m,c) \
-if (!XAllocColor(d, m, c)) \
-{ \
-colorful = 0; \
-goto CN; \
-}
-
    cnum = 0;
-   cmap = 0;
    colorful = 0;
    if (DefaultDepth(dd, DefaultScreen(dd)) > 4)
-      colorful = 1;
-   if (colorful)
      {
-       cmap = DefaultColormap(dd, DefaultScreen(dd));
        ESetColor(&xcl, 220, 220, 220);
-       ALLOC_COLOR(dd, cmap, &xcl);
+       if (!XAllocColor(dd, cmap, &xcl))
+          goto CN;
        cols[cnum++] = xcl.pixel;
        ESetColor(&xcl, 160, 160, 160);
-       ALLOC_COLOR(dd, cmap, &xcl);
+       if (!XAllocColor(dd, cmap, &xcl))
+          goto CN;
        cols[cnum++] = xcl.pixel;
        ESetColor(&xcl, 100, 100, 100);
-       ALLOC_COLOR(dd, cmap, &xcl);
+       if (!XAllocColor(dd, cmap, &xcl))
+          goto CN;
        cols[cnum++] = xcl.pixel;
        ESetColor(&xcl, 0, 0, 0);
-       ALLOC_COLOR(dd, cmap, &xcl);
+       if (!XAllocColor(dd, cmap, &xcl))
+          goto CN;
        cols[cnum++] = xcl.pixel;
        ESetColor(&xcl, 255, 255, 255);
-       ALLOC_COLOR(dd, cmap, &xcl);
+       if (!XAllocColor(dd, cmap, &xcl))
+          goto CN;
        cols[cnum++] = xcl.pixel;
+       colorful = 1;
      }
  CN:
+
    wid = DisplayWidth(dd, DefaultScreen(dd));
    hih = DisplayHeight(dd, DefaultScreen(dd));
    w = (wid - 600) / 2;
    h = (hih - 440) / 2;
-   mask =
-      CWBackPixel | CWBorderPixel | CWOverrideRedirect | CWSaveUnder |
-      CWBackingStore;
+
    if (colorful)
       att.background_pixel = cols[1];
    else
@@ -334,10 +371,11 @@
    att.backing_store = Always;
    att.save_under = True;
    att.override_redirect = True;
-   win =
-      XCreateWindow(dd, DefaultRootWindow(dd), -100, -100, 1, 1, 0,
-                   DefaultDepth(dd, DefaultScreen(dd)), InputOutput,
-                   DefaultVisual(dd, DefaultScreen(dd)), mask, &att);
+   mask = CWBackPixel | CWBorderPixel | CWOverrideRedirect | CWSaveUnder |
+      CWBackingStore;
+   win = XCreateWindow(dd, DefaultRootWindow(dd), -100, -100, 1, 1, 0,
+                      DefaultDepth(dd, DefaultScreen(dd)), InputOutput,
+                      DefaultVisual(dd, DefaultScreen(dd)), mask, &att);
 
    if (sscanf(str1, "%s", line) > 0)
      {
@@ -369,23 +407,23 @@
    fh = 0;
    xfs = NULL;
    if (!xfs)
-     {
-       xfs = XLoadQueryFont(dd, "-*-helvetica-*-r-*-*-12-*-*-*-*-*-*-*");
-     }
+      xfs = XLoadQueryFont(dd, "-*-helvetica-*-r-*-*-12-*-*-*-*-*-*-*");
    if (!xfs)
-     {
-       xfs = XLoadQueryFont(dd, "fixed");
-     }
+      xfs = XLoadQueryFont(dd, "fixed");
    font = xfs->fid;
    fh = xfs->ascent + xfs->descent;
    XSetFont(dd, gc, font);
+
+   XSelectInput(dd, win, KeyPressMask | KeyReleaseMask | ExposureMask);
    XMapWindow(dd, win);
    XGrabPointer(dd, win, True, ButtonPressMask | ButtonReleaseMask,
                GrabModeAsync, GrabModeAsync, None, None, CurrentTime);
    XGrabKeyboard(dd, win, True, GrabModeAsync, GrabModeAsync, CurrentTime);
    XSetInputFocus(dd, win, RevertToPointerRoot, CurrentTime);
+
    XGrabServer(dd);
    XSync(dd, False);
+
    for (i = 0; i < 600; i += 40)
      {
        ww = i;
@@ -436,56 +474,9 @@
                     ButtonPressMask | ButtonReleaseMask | ExposureMask);
      }
    XSync(dd, False);
-   XSelectInput(dd, win, KeyPressMask | KeyReleaseMask | ExposureMask);
 
-#define DRAW_ALERT \
-w = XTextWidth(xfs, title, strlen(title)); \
-DRAW_HEADER(dd, gc, win, (600 - w) / 2, 5 + xfs->ascent, title); \
-DRAW_BOX_OUT(dd, gc, win, 0, 0, ww, fh + 10); \
-DRAW_BOX_OUT(dd, gc, win, 0, fh + 10 - 1, ww, hh - fh - fh - 30 + 2); \
-DRAW_BOX_OUT(dd, gc, win, 0, 440 - fh - 20, ww, fh + 20); \
-i = 0; \
-j = 0; \
-k = fh + 10; \
-while (text[i]) { \
-line[j++] = text[i++]; \
-if (line[j - 1] == '\n') { \
-line[j - 1] = 0; \
-j = 0; \
-DRAW_STRING(dd, gc, win, 6, 6 + k + fh, line); \
-k += fh + 2; \
-} \
-} \
-if (sscanf(str1, "%s", line) > 0) \
-{ \
-h = XTextWidth(xfs, str1, strlen(str1)); \
-w = 10 + (((580 - mh) * 0) / 4); \
-DRAW_HEADER(dd, gc, b1, 5 + (mh - h) / 2, fh + 5 - xfs->descent, str1); \
-DRAW_BOX_OUT(dd, gc, b1, 0, 0, mh + 10, fh + 10); \
-DRAW_THIN_BOX_IN(dd, gc, win, w - 7, 440 - 17 - fh, mh + 14, fh + 14); \
-} \
-if (sscanf(str2, "%s", line) > 0) \
-{ \
-h = XTextWidth(xfs, str2, strlen(str2)); \
-w = 10 + (((580 - mh) * 1) / 2); \
-DRAW_HEADER(dd, gc, b2, 5 + (mh - h) / 2, fh + 5 - xfs->descent, str2); \
-DRAW_BOX_OUT(dd, gc, b2, 0, 0, mh + 10, fh + 10); \
-DRAW_THIN_BOX_IN(dd, gc, win, w - 7, 440 - 17 - fh, mh + 14, fh + 14); \
-} \
-if (sscanf(str3, "%s", line) > 0) \
-{ \
-h = XTextWidth(xfs, str3, strlen(str3)); \
-w = 10 + (((580 - mh) * 2) / 2); \
-DRAW_HEADER(dd, gc, b3, 5 + (mh - h) / 2, fh + 5 - xfs->descent, str3); \
-DRAW_BOX_OUT(dd, gc, b3, 0, 0, mh + 10, fh + 10); \
-DRAW_THIN_BOX_IN(dd, gc, win, w - 7, 440 - 17 - fh, mh + 14, fh + 14); \
-XSync(dd, False); \
-}
-
-   DRAW_ALERT;
-
-   w = 1;
-   while (w == 1)
+   button = 0;
+   for (; button == 0;)
      {
        XNextEvent(dd, &ev);
        switch (ev.type)
@@ -498,9 +489,8 @@
                  XSync(dd, False);
                  sleep(1);
                  DRAW_BOX_OUT(dd, gc, b1, 0, 0, mh + 10, fh + 10);
-                 XSync(dd, False);
-                 AlertHandleClick(1);
-                 w = 0;
+                 button = 1;
+                 break;
               }
             key = XKeysymToKeycode(dd, XStringToKeysym("F2"));
             if (key == ev.xkey.keycode)
@@ -509,9 +499,8 @@
                  XSync(dd, False);
                  sleep(1);
                  DRAW_BOX_OUT(dd, gc, b2, 0, 0, mh + 10, fh + 10);
-                 XSync(dd, False);
-                 AlertHandleClick(2);
-                 w = 0;
+                 button = 2;
+                 break;
               }
             key = XKeysymToKeycode(dd, XStringToKeysym("F3"));
             if (key == ev.xkey.keycode)
@@ -520,11 +509,12 @@
                  XSync(dd, False);
                  sleep(1);
                  DRAW_BOX_OUT(dd, gc, b3, 0, 0, mh + 10, fh + 10);
-                 XSync(dd, False);
-                 AlertHandleClick(3);
-                 w = 0;
+                 button = 3;
+                 break;
               }
+            XSync(dd, False);
             break;
+
          case ButtonPress:
             if (ev.xbutton.window == b1)
               {
@@ -538,70 +528,115 @@
               {
                  DRAW_BOX_IN(dd, gc, b3, 0, 0, mh + 10, fh + 10);
               }
-            w = 1;
             XSync(dd, False);
             break;
+
          case ButtonRelease:
             if (ev.xbutton.window == b1)
               {
                  DRAW_BOX_OUT(dd, gc, b1, 0, 0, mh + 10, fh + 10);
-                 XSync(dd, False);
-                 AlertHandleClick(1);
-                 w = 0;
+                 button = 1;
               }
             else if (ev.xbutton.window == b2)
               {
                  DRAW_BOX_OUT(dd, gc, b2, 0, 0, mh + 10, fh + 10);
-                 XSync(dd, False);
-                 AlertHandleClick(2);
-                 w = 0;
+                 button = 2;
               }
             else if (ev.xbutton.window == b3)
               {
                  DRAW_BOX_OUT(dd, gc, b3, 0, 0, mh + 10, fh + 10);
-                 XSync(dd, False);
-                 AlertHandleClick(3);
-                 w = 0;
+                 button = 3;
               }
+            XSync(dd, False);
             break;
+
          case Expose:
-            DRAW_ALERT;
-            w = 1;
+            /* Flush all other Expose events */
+            while (XCheckTypedWindowEvent(dd, ev.xexpose.window, Expose, &ev))
+               w = XTextWidth(xfs, title, strlen(title));
+
+            DRAW_HEADER(dd, gc, win, (600 - w) / 2, 5 + xfs->ascent, title);
+            DRAW_BOX_OUT(dd, gc, win, 0, 0, ww, fh + 10);
+            DRAW_BOX_OUT(dd, gc, win, 0, fh + 10 - 1, ww,
+                         hh - fh - fh - 30 + 2);
+            DRAW_BOX_OUT(dd, gc, win, 0, 440 - fh - 20, ww, fh + 20);
+            i = 0;
+            j = 0;
+            k = fh + 10;
+            while (text[i])
+              {
+                 line[j++] = text[i++];
+                 if (line[j - 1] == '\n')
+                   {
+                      line[j - 1] = 0;
+                      j = 0;
+                      DRAW_STRING(dd, gc, win, 6, 6 + k + fh, line);
+                      k += fh + 2;
+                   }
+              }
+            if (sscanf(str1, "%s", line) > 0)
+              {
+                 h = XTextWidth(xfs, str1, strlen(str1));
+                 w = 10 + (((580 - mh) * 0) / 4);
+                 DRAW_HEADER(dd, gc, b1, 5 + (mh - h) / 2,
+                             fh + 5 - xfs->descent, str1);
+                 DRAW_BOX_OUT(dd, gc, b1, 0, 0, mh + 10, fh + 10);
+                 DRAW_THIN_BOX_IN(dd, gc, win, w - 7, 440 - 17 - fh, mh + 14,
+                                  fh + 14);
+              }
+            if (sscanf(str2, "%s", line) > 0)
+              {
+                 h = XTextWidth(xfs, str2, strlen(str2));
+                 w = 10 + (((580 - mh) * 1) / 2);
+                 DRAW_HEADER(dd, gc, b2, 5 + (mh - h) / 2,
+                             fh + 5 - xfs->descent, str2);
+                 DRAW_BOX_OUT(dd, gc, b2, 0, 0, mh + 10, fh + 10);
+                 DRAW_THIN_BOX_IN(dd, gc, win, w - 7, 440 - 17 - fh, mh + 14,
+                                  fh + 14);
+              }
+            if (sscanf(str3, "%s", line) > 0)
+              {
+                 h = XTextWidth(xfs, str3, strlen(str3));
+                 w = 10 + (((580 - mh) * 2) / 2);
+                 DRAW_HEADER(dd, gc, b3, 5 + (mh - h) / 2,
+                             fh + 5 - xfs->descent, str3);
+                 DRAW_BOX_OUT(dd, gc, b3, 0, 0, mh + 10, fh + 10);
+                 DRAW_THIN_BOX_IN(dd, gc, win, w - 7, 440 - 17 - fh, mh + 14,
+                                  fh + 14);
+              }
+            XSync(dd, False);
             break;
+
          default:
             break;
          }
      }
-   XDestroyWindow(dd, win);
-   XFreeGC(dd, gc);
-   XFreeFont(dd, xfs);
-   XUnloadFont(dd, font);
-   if (cnum > 0)
-      XFreeColors(dd, cmap, (unsigned long *)cols, cnum, 0);
-   XCloseDisplay(dd);
-   EDBUG_RETURN_;
-}
 
-static void
-AlertHandleClick(int button)
-{
-   EDBUG(9, "AlertHandleClick");
    switch (button)
      {
      case 1:
        if (IgnoreFunction)
-          (*(IgnoreFunction)) (IgnoreParams);
+          IgnoreFunction(IgnoreParams);
        break;
      case 2:
        if (RestartFunction)
-          (*(RestartFunction)) (RestartParams);
+          RestartFunction(RestartParams);
        break;
      case 3:
        if (ExitFunction)
-          (*(ExitFunction)) (ExitParams);
+          ExitFunction(ExitParams);
        break;
      default:
        break;
      }
+
+   XDestroyWindow(dd, win);
+   XFreeGC(dd, gc);
+   XFreeFont(dd, xfs);
+   XUnloadFont(dd, font);
+   if (cnum > 0)
+      XFreeColors(dd, cmap, cols, cnum, 0);
+   XCloseDisplay(dd);
+
    EDBUG_RETURN_;
 }




-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to