X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fopenbox.cc;h=b3dc5b28284dfc8087a5afe33c2a4a7f8d81e78d;hb=d2c380fb54a29a586b97ab6421370e7acdcf28e5;hp=1af59c25fbce1ea575adb84a06050a55a5a32f22;hpb=373de009f7e98b0c6f3a78f31c1e5c120cd722ed;p=chaz%2Fopenbox diff --git a/src/openbox.cc b/src/openbox.cc index 1af59c25..b3dc5b28 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -44,22 +44,6 @@ namespace ob { Openbox *Openbox::instance = (Openbox *) 0; -int Openbox::xerrorHandler(Display *d, XErrorEvent *e) -{ -#ifdef DEBUG - char errtxt[128]; - - XGetErrorText(d, e->error_code, errtxt, 128); - printf("X Error: %s\n", errtxt); -#else - (void)d; - (void)e; -#endif - - return false; -} - - void Openbox::signalHandler(int signal) { switch (signal) { @@ -71,7 +55,8 @@ void Openbox::signalHandler(int signal) case SIGTERM: case SIGPIPE: printf("Caught signal %d. Exiting.", signal); - // XXX: Make Openbox exit + instance->shutdown(); + break; case SIGFPE: case SIGSEGV: @@ -85,12 +70,13 @@ Openbox::Openbox(int argc, char **argv) { struct sigaction action; - _state = State_Starting; + _state = State_Starting; // initializing everything Openbox::instance = this; _displayreq = (char*) 0; _argv0 = argv[0]; + _doshutdown = false; parseCommandLine(argc, argv); @@ -117,6 +103,8 @@ Openbox::Openbox(int argc, char **argv) Openbox::~Openbox() { + _state = State_Exiting; // time to kill everything + // close the X display otk::OBDisplay::destroy(); } @@ -208,11 +196,12 @@ void Openbox::showHelp() void Openbox::eventLoop() { - while (_state == State_Normal) { + while (!_doshutdown) { if (XPending(otk::OBDisplay::display)) { XEvent e; XNextEvent(otk::OBDisplay::display, &e); - process_event(&e); + //process_event(&e); + _xeventhandler.handle(e); } else { _timermanager.fire(); }