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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs