X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fopenbox.cc;h=80622c1c426aee4bc80796c818994dea3b081ff7;hb=a77f0fb344978bb4dafd2ad4639f3de3e090bf7b;hp=5e0bff0cb67b2a61ef2e777d6fc40e98c9914ba1;hpb=e503323dcf36c7b4c173ddc0cd302b8642361f48;p=chaz%2Fopenbox diff --git a/src/openbox.cc b/src/openbox.cc index 5e0bff0c..80622c1c 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -74,6 +74,8 @@ void Openbox::signalHandler(int signal) Openbox::Openbox(int argc, char **argv) + : otk::OtkEventDispatcher(), + otk::OtkEventHandler() { struct sigaction action; @@ -128,9 +130,19 @@ Openbox::Openbox(int argc, char **argv) _cursors.ur_angle = XCreateFontCursor(otk::OBDisplay::display, XC_ur_angle); // initialize all the screens - _screens.push_back(new OBScreen(0, _config)); - _screens[0]->manageExisting(); - // XXX: "change to" the first workspace on the screen to initialize stuff + OBScreen *screen; + screen = new OBScreen(0, _config); + if (screen->managed()) { + _screens.push_back(screen); + _screens[0]->manageExisting(); + // XXX: "change to" the first workspace on the screen to initialize stuff + } else + delete screen; + + if (_screens.empty()) { + printf(_("No screens were found without a window manager. Exiting.\n")); + ::exit(1); + } _state = State_Normal; // done starting } @@ -234,14 +246,8 @@ void Openbox::showHelp() void Openbox::eventLoop() { while (!_doshutdown) { - if (XPending(otk::OBDisplay::display)) { - XEvent e; - XNextEvent(otk::OBDisplay::display, &e); - //process_event(&e); - _xeventhandler.handle(e); - } else { - _timermanager.fire(); - } + dispatchEvents(); // from OtkEventDispatcher + _timermanager.fire(); } } @@ -274,5 +280,6 @@ OBClient *Openbox::findClient(Window window) return (OBClient*) 0; } + }