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