diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-11-10 08:34:46 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-11-10 08:34:46 +0000 |
| commit | 0b17bd83c7d09ee364913f5e5f6b214f996b3a83 (patch) | |
| tree | 05d2ebacfa30a53e0fcebd09b87f569bb1b4213e /src/openbox.cc | |
| parent | 365791838f2523869b565dbc5b79555c9d82e1a1 (diff) | |
add \n's to the signal printfs
make the hash of all clients destroy properly
Diffstat (limited to 'src/openbox.cc')
| -rw-r--r-- | src/openbox.cc | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/openbox.cc b/src/openbox.cc index 757a6984..ee2fffb5 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -54,13 +54,13 @@ void Openbox::signalHandler(int signal) case SIGINT: case SIGTERM: case SIGPIPE: - printf("Caught signal %d. Exiting.", signal); + printf("Caught signal %d. Exiting.\n", signal); instance->shutdown(); break; case SIGFPE: case SIGSEGV: - printf("Caught signal %d. Aborting and dumping core.", signal); + printf("Caught signal %d. Aborting and dumping core.\n", signal); abort(); } } @@ -107,10 +107,8 @@ Openbox::~Openbox() _state = State_Exiting; // time to kill everything // unmanage all windows - ClientMap::iterator it, end; - for (it = _clients.begin(), end = _clients.end(); it != end; ++it) { - _xeventhandler.unmanageWindow(it->second); - } + while (!_clients.empty()) + _xeventhandler.unmanageWindow(_clients.begin()->second); // close the X display otk::OBDisplay::destroy(); @@ -224,13 +222,24 @@ void Openbox::addClient(Window window, OBClient *client) void Openbox::removeClient(Window window) { - _clients[window] = (OBClient *) 0; + ClientMap::iterator it = _clients.find(window); + if (it != _clients.end()) + _clients.erase(it); } OBClient *Openbox::findClient(Window window) { - return _clients[window]; + /* + NOTE: we dont use _clients[] to find the value because that will insert + a new null into the hash, which really sucks when we want to clean up the + hash at shutdown! + */ + ClientMap::iterator it = _clients.find(window); + if (it != _clients.end()) + return it->second; + else + return (OBClient*) 0; } } |
