X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fopenbox.cc;h=dda528483f15630460b60474e71730a8838ac7f1;hb=f11bd1b0cc5973590d1ee547736ac00f50447efa;hp=6b5251b5b8f38e92efe2c439993582f96c01d108;hpb=15d3efa69c40c93ae609a791e4b57c3d793e646f;p=chaz%2Fopenbox diff --git a/src/openbox.cc b/src/openbox.cc index 6b5251b5..dda52848 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -58,17 +58,19 @@ Openbox *Openbox::instance = (Openbox *) 0; void Openbox::signalHandler(int signal) { switch (signal) { + case SIGUSR1: + printf("Caught SIGUSR1 signal. Restarting.\n"); + instance->restart(); + break; + case SIGHUP: - // XXX: Do something with HUP? Really shouldn't, we get this when X shuts - // down and hangs-up on us. - case SIGINT: case SIGTERM: case SIGPIPE: printf("Caught signal %d. Exiting.\n", signal); instance->shutdown(); - break; + case SIGFPE: case SIGSEGV: printf("Caught signal %d. Aborting and dumping core.\n", signal); @@ -108,6 +110,7 @@ Openbox::Openbox(int argc, char **argv) action.sa_handler = Openbox::signalHandler; action.sa_mask = sigset_t(); action.sa_flags = SA_NOCLDSTOP | SA_NODEFER; + sigaction(SIGUSR1, &action, (struct sigaction *) 0); sigaction(SIGPIPE, &action, (struct sigaction *) 0); sigaction(SIGSEGV, &action, (struct sigaction *) 0); sigaction(SIGFPE, &action, (struct sigaction *) 0); @@ -303,7 +306,7 @@ void Openbox::showHelp() void Openbox::eventLoop() { while (!_shutdown) { - _timermanager.fire(); + _timermanager.fire(!_sync); // wait if not in sync mode dispatchEvents(); // from OtkEventDispatcher XFlush(otk::OBDisplay::display); // flush here before we go wait for timers } @@ -356,6 +359,13 @@ void Openbox::setFocusedClient(OBClient *c) otk::OBProperty::Atom_Window, (c && _focused_screen == *it) ? c->window() : None); } + + // call the python Focus callbacks + EventData *data = new_event_data(_focused_screen->number(), + c ? c->window() : 0, + EventFocus, 0); + Openbox::instance->bindings()->fireEvent(data); + Py_XDECREF((PyObject*)data); } void Openbox::execute(int screen, const std::string &bin)