Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h extinitwin.c handlers.c main.c setup.c x.c xwin.h 


Log Message:
Move some X stuff to x.c.

===================================================================
RCS file: /cvs/e/e16/e/src/E.h,v
retrieving revision 1.612
retrieving revision 1.613
diff -u -3 -r1.612 -r1.613
--- E.h 24 Mar 2008 11:12:39 -0000      1.612
+++ E.h 29 Mar 2008 10:48:45 -0000      1.613
@@ -570,8 +570,6 @@
 /* handlers.c */
 void                SignalsSetup(void);
 void                SignalsRestore(void);
-void                HandleXError(Display * d, XErrorEvent * ev);
-void                HandleXIOError(Display * d);
 
 /* main.c */
 void                EExit(int exitcode);
@@ -616,7 +614,6 @@
 extern const char   e_wm_name[];
 extern const char   e_wm_version[];
 extern const char   e_wm_date[];
-__EXPORT__ extern Display *disp;
 extern RealRoot     RRoot;
 __EXPORT__ extern VirtRoot VRoot;
 __EXPORT__ extern EConf Conf;
===================================================================
RCS file: /cvs/e/e16/e/src/extinitwin.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- extinitwin.c        24 Mar 2008 11:12:40 -0000      1.27
+++ extinitwin.c        29 Mar 2008 10:48:45 -0000      1.28
@@ -30,18 +30,20 @@
 static              Window
 ExtInitWinMain(void)
 {
+   int                 i, err;
    Ecore_X_Window      win;
    XGCValues           gcv;
    GC                  gc;
    Pixmap              pmap, mask;
    Atom                a;
-   int                 i;
    XSetWindowAttributes attr;
 
    if (EDebug(EDBUG_TYPE_SESSION))
       Eprintf("ExtInitWinMain enter\n");
 
-   disp = EDisplayOpen(NULL, -1);
+   err = EDisplayOpen(NULL, -1);
+   if (err)
+      return None;
 
    EGrabServer();
 
===================================================================
RCS file: /cvs/e/e16/e/src/handlers.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -3 -r1.61 -r1.62
--- handlers.c  1 Mar 2008 16:38:58 -0000       1.61
+++ handlers.c  29 Mar 2008 10:48:45 -0000      1.62
@@ -23,10 +23,8 @@
  */
 #include "E.h"
 #include "session.h"
-#include "xwin.h"
 #include <sys/wait.h>
 #include <signal.h>
-#include <X11/Xproto.h>
 
 static void
 SignalHandler(int sig)
@@ -174,27 +172,4 @@
 {
    /* This function will restore all the signal handlers for E */
    doSignalsSetup(0);
-}
-
-void
-HandleXError(Display * d __UNUSED__, XErrorEvent * ev)
-{
-   char                buf[64];
-
-   if (EDebug(1))
-     {
-       XGetErrorText(disp, ev->error_code, buf, 63);
-       Eprintf("*** ERROR: xid=%#lx error=%i req=%i/%i: %s\n",
-               ev->resourceid, ev->error_code,
-               ev->request_code, ev->minor_code, buf);
-     }
-
-   Mode.events.last_error_code = ev->error_code;
-}
-
-void
-HandleXIOError(Display * d __UNUSED__)
-{
-   disp = NULL;
-   SessionExit(EEXIT_ERROR, NULL);
 }
===================================================================
RCS file: /cvs/e/e16/e/src/main.c,v
retrieving revision 1.169
retrieving revision 1.170
diff -u -3 -r1.169 -r1.170
--- main.c      24 Mar 2008 11:12:40 -0000      1.169
+++ main.c      29 Mar 2008 10:48:45 -0000      1.170
@@ -47,7 +47,6 @@
 const char          e_wm_version[] = VERSION;
 const char          e_wm_date[] = E_CHECKOUT_DATE;
 
-Display            *disp;
 RealRoot            RRoot;
 VirtRoot            VRoot;
 EConf               Conf;
===================================================================
RCS file: /cvs/e/e16/e/src/setup.c,v
retrieving revision 1.191
retrieving revision 1.192
diff -u -3 -r1.191 -r1.192
--- setup.c     24 Mar 2008 11:12:40 -0000      1.191
+++ setup.c     29 Mar 2008 10:48:45 -0000      1.192
@@ -25,16 +25,24 @@
 #include "events.h"
 #include "ewins.h"
 #include "screen.h"
+#include "session.h"
 #include "xwin.h"
 #include <signal.h>
 #include <X11/keysym.h>
 
+static void
+HandleXIOError(void)
+{
+   SessionExit(EEXIT_ERROR, NULL);
+}
+
 /*
  * This function sets up all of our connections to X
  */
 void
 SetupX(const char *dstr)
 {
+   int                 err;
    char                buf[128];
    long                mask;
 
@@ -44,8 +52,8 @@
       dstr = ":0";
 
    /* Open a connection to the diplay nominated by the DISPLAY variable */
-   disp = EDisplayOpen(dstr, VRoot.scr);
-   if (!disp)
+   err = EDisplayOpen(dstr, VRoot.scr);
+   if (err)
      {
        Alert(_("Enlightenment cannot connect to the display nominated by\n"
                "your shell's DISPLAY environment variable. You may set this\n"
@@ -103,7 +111,7 @@
 #ifdef SIGSTOP
                  kill(getpid(), SIGSTOP);
 #endif
-                 disp = EDisplayOpen(dstr, i);
+                 EDisplayOpen(dstr, i);
                  /* Terminate the loop as I am the child process... */
                  break;
               }
@@ -113,10 +121,7 @@
    Mode.display.name = Estrdup(DisplayString(disp));
    Esetenv("DISPLAY", Mode.display.name);
 
-   /* set up an error handler for then E would normally have fatal X errors */
-   XSetErrorHandler((XErrorHandler) HandleXError);
-   /* set up a handler for when the X Connection goes down */
-   XSetIOErrorHandler((XIOErrorHandler) HandleXIOError);
+   EDisplaySetErrorHandlers(HandleXIOError);
 
    /* Root defaults */
    RROOT = ERegisterWindow(DefaultRootWindow(disp), NULL);
===================================================================
RCS file: /cvs/e/e16/e/src/x.c,v
retrieving revision 1.171
retrieving revision 1.172
diff -u -3 -r1.171 -r1.172
--- x.c 24 Mar 2008 11:12:40 -0000      1.171
+++ x.c 29 Mar 2008 10:48:45 -0000      1.172
@@ -40,6 +40,8 @@
 #define DEBUG_XWIN   0
 #define DEBUG_PIXMAP 0
 
+Display            *disp = NULL;
+
 #if USE_COMPOSITE
 static Visual      *argb_visual = NULL;
 static Colormap     argb_cmap = None;
@@ -1677,11 +1679,10 @@
  * Display
  */
 
-Display            *
+int
 EDisplayOpen(const char *dstr, int scr)
 {
    char                dbuf[256], *s;
-   Display            *dpy;
 
    if (scr >= 0)
      {
@@ -1700,12 +1701,12 @@
 
 #ifdef USE_ECORE_X
    ecore_x_init(dstr);
-   dpy = ecore_x_display_get();
+   disp = ecore_x_display_get();
 #else
-   dpy = XOpenDisplay(dstr);
+   disp = XOpenDisplay(dstr);
 #endif
 
-   return dpy;
+   return (disp) ? 0 : -1;
 }
 
 void
@@ -1737,6 +1738,48 @@
    XSetIOErrorHandler(NULL);
 
    disp = NULL;
+}
+
+static int
+HandleXError(Display * dpy, XErrorEvent * ev)
+{
+   char                buf[64];
+
+   if (EDebug(1))
+     {
+       XGetErrorText(dpy, ev->error_code, buf, 63);
+       Eprintf("*** ERROR: xid=%#lx error=%i req=%i/%i: %s\n",
+               ev->resourceid, ev->error_code,
+               ev->request_code, ev->minor_code, buf);
+     }
+
+   Mode.events.last_error_code = ev->error_code;
+
+   return 0;
+}
+
+static void         (*EXIOErrorFunc) (void) = NULL;
+
+static int
+HandleXIOError(Display * dpy __UNUSED__)
+{
+   disp = NULL;
+
+   if (EXIOErrorFunc)
+      EXIOErrorFunc();
+
+   return 0;
+}
+
+void
+EDisplaySetErrorHandlers(void (*fatal) (void))
+{
+   /* set up an error handler for then E would normally have fatal X errors */
+   XSetErrorHandler(HandleXError);
+
+   /* set up a handler for when the X Connection goes down */
+   EXIOErrorFunc = fatal;
+   XSetIOErrorHandler(HandleXIOError);
 }
 
 /*
===================================================================
RCS file: /cvs/e/e16/e/src/xwin.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -3 -r1.40 -r1.41
--- xwin.h      24 Mar 2008 08:57:50 -0000      1.40
+++ xwin.h      29 Mar 2008 10:48:45 -0000      1.41
@@ -26,10 +26,14 @@
 
 #include <X11/Xlib.h>
 #include <X11/extensions/shape.h>
+#include "util.h"
 
-Display            *EDisplayOpen(const char *dstr, int scr);
+__EXPORT__ extern Display *disp;
+
+int                 EDisplayOpen(const char *dstr, int scr);
 void                EDisplayClose(void);
 void                EDisplayDisconnect(void);
+void                EDisplaySetErrorHandlers(void (*fatal) (void));
 
 void                EGrabServer(void);
 void                EUngrabServer(void);



-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to