From 86b83798f79428824b633399bb3fca67f844d607 Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Sun, 7 Aug 2016 13:17:17 +0100 Subject: [PATCH] More graceful exit when X11 is not available on Linux --- src/PowderToySDL.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/PowderToySDL.cpp b/src/PowderToySDL.cpp index 3d88ecefd0..e42af14415 100644 --- a/src/PowderToySDL.cpp +++ b/src/PowderToySDL.cpp @@ -1059,12 +1059,19 @@ int main(int argc, char * argv[]) #if defined (USE_SDL) && defined(LIN) && defined(SDL_VIDEO_DRIVER_X11) SDL_EventState(SDL_SYSWMEVENT, SDL_ENABLE); SDL_VERSION(&sdl_wminfo.version); - SDL_GetWMInfo(&sdl_wminfo); - sdl_wminfo.info.x11.lock_func(); - XA_CLIPBOARD = XInternAtom(sdl_wminfo.info.x11.display, "CLIPBOARD", 1); - XA_TARGETS = XInternAtom(sdl_wminfo.info.x11.display, "TARGETS", 1); - XA_UTF8_STRING = XInternAtom(sdl_wminfo.info.x11.display, "UTF8_STRING", 1); - sdl_wminfo.info.x11.unlock_func(); + if(SDL_GetWMInfo(&sdl_wminfo) > 0) + { + sdl_wminfo.info.x11.lock_func(); + XA_CLIPBOARD = XInternAtom(sdl_wminfo.info.x11.display, "CLIPBOARD", 1); + XA_TARGETS = XInternAtom(sdl_wminfo.info.x11.display, "TARGETS", 1); + XA_UTF8_STRING = XInternAtom(sdl_wminfo.info.x11.display, "UTF8_STRING", 1); + sdl_wminfo.info.x11.unlock_func(); + } + else + { + fprintf(stderr, "X11 setup failed, X11 window info not found"); + exit(-1); + } #endif ui::Engine::Ref().g = new Graphics(); ui::Engine::Ref().Scale = scale;