From: <tj...@us...> - 2008-09-20 23:54:56
|
Revision: 10897 http://alleg.svn.sourceforge.net/alleg/?rev=10897&view=rev Author: tjaden Date: 2008-09-20 23:54:53 +0000 (Sat, 20 Sep 2008) Log Message: ----------- Fail gracefully if we can't open connections to an X server. Modified Paths: -------------- allegro/branches/4.9/src/x/xsystem.c Modified: allegro/branches/4.9/src/x/xsystem.c =================================================================== --- allegro/branches/4.9/src/x/xsystem.c 2008-09-20 23:54:11 UTC (rev 10896) +++ allegro/branches/4.9/src/x/xsystem.c 2008-09-20 23:54:53 UTC (rev 10897) @@ -136,31 +136,47 @@ /* Create a new system object for the dummy X11 driver. */ static ALLEGRO_SYSTEM *xglx_initialize(int flags) { - ALLEGRO_SYSTEM_XGLX *s = _AL_MALLOC(sizeof *s); - memset(s, 0, sizeof *s); + Display *x11display; + Display *gfxdisplay; + ALLEGRO_SYSTEM_XGLX *s; #ifdef DEBUG_X11 _Xdebug = 1; #endif + XInitThreads(); + + /* Get an X11 display handle. */ + x11display = XOpenDisplay(0); + if (!x11display) { + TRACE("xsystem: XOpenDisplay failed.\n"); + return NULL; + } + + /* Never ask. */ + gfxdisplay = XOpenDisplay(0); + if (!gfxdisplay) { + TRACE("xsystem: XOpenDisplay failed.\n"); + XCloseDisplay(gfxdisplay); + return NULL; + } + _al_unix_init_time(); + s = _AL_MALLOC(sizeof *s); + memset(s, 0, sizeof *s); + _al_mutex_init_recursive(&s->lock); _al_cond_init(&s->mapped); _al_cond_init(&s->resized); _al_vector_init(&s->system.displays, sizeof (ALLEGRO_SYSTEM_XGLX *)); - XInitThreads(); + s->gfxdisplay = gfxdisplay; + s->x11display = x11display; s->system.vt = xglx_vt; - /* Get an X11 display handle. */ - s->x11display = XOpenDisplay(0); - - /* Never ask. */ - s->gfxdisplay = XOpenDisplay(0); - TRACE("xsystem: XGLX driver connected to X11 (%sys %d).\n", ServerVendor(s->x11display), VendorRelease(s->x11display)); TRACE("xsystem: X11 protocol version %d.%d.\n", @@ -308,3 +324,5 @@ *add = _al_system_xglx_driver(); #endif } + +/* vim: set sts=3 sw=3 et: */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |