From 2ca990b801e091941b2e828207313e4612f69283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 18 Jul 2005 09:24:08 +0000 Subject: [PATCH] Moved the RootLayer::LayerRemoved() call from the ServerWindow destructor to RootLayer::RemoveWinBorder(). ServerWindow printed the title in its destructor after freeing it (with debug output turned on). Calmed it down a bit, too (disabled "listening on port..."). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13741 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/Layer.cpp | 1 + src/servers/app/RootLayer.cpp | 6 +++++- src/servers/app/ServerWindow.cpp | 15 ++++----------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/servers/app/Layer.cpp b/src/servers/app/Layer.cpp index 24ddc942a6..2b2864faf7 100644 --- a/src/servers/app/Layer.cpp +++ b/src/servers/app/Layer.cpp @@ -406,6 +406,7 @@ Layer::FindLayer(const int32 token) Layer* Layer::LayerAt(const BPoint &pt) { + //printf("%p:%s:LayerAt(x = %g, y = %g)\n", this, Name(), pt.x, pt.y); #ifndef NEW_CLIPPING if (fVisible.Contains(pt)) return this; diff --git a/src/servers/app/RootLayer.cpp b/src/servers/app/RootLayer.cpp index 818c78186c..7c31a33418 100644 --- a/src/servers/app/RootLayer.cpp +++ b/src/servers/app/RootLayer.cpp @@ -592,17 +592,21 @@ RootLayer::RemoveWinBorder(WinBorder* winBorder) // security measure: in case of windows whose workspace count is 0(current workspace), // we don't know the exact workspaces to remove it from. And how all modal and floating // windows have 0 as a workspace index, this action is fully justified. - for (int32 i = 0; i < fWsCount; i++) + for (int32 i = 0; i < fWsCount; i++) { if (fWorkspace[i]) fWorkspace[i]->RemoveWinBorder(winBorder); + } // we _DO_NOT_ need to invalidate here. At this point our WinBorder is hidden! + LayerRemoved(winBorder); + // set some internals winBorder->SetRootLayer(NULL); winBorder->fParent = NULL; } + void RootLayer::AddSubsetWinBorder(WinBorder *winBorder, WinBorder *toWinBorder) { diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 7c8c8703d4..e772e42ef5 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -98,18 +98,11 @@ ServerWindow::ServerWindow(const char *title, ServerApp *app, //!Tears down all connections the main app_server objects, and deletes some internals. ServerWindow::~ServerWindow() { - STRACE(("*ServerWindow (%s):~ServerWindow()\n", fTitle)); + STRACE(("*ServerWindow(%s@%p):~ServerWindow()\n", fTitle, this)); if (!fWinBorder->IsOffscreenWindow()) gDesktop->RemoveWinBorder(fWinBorder); - // just to be safe - RootLayer* rootLayer = fWinBorder->GetRootLayer(); - if (rootLayer && rootLayer->Lock()) { - rootLayer->LayerRemoved(fWinBorder); - rootLayer->Unlock(); - } - delete fWinBorder; free(const_cast(fTitle)); @@ -117,7 +110,7 @@ ServerWindow::~ServerWindow() BPrivate::gDefaultTokens.RemoveToken(fServerToken); - STRACE(("#ServerWindow(%s) will exit NOW\n", fTitle)); + STRACE(("#ServerWindow(%p) will exit NOW\n", this)); } @@ -2165,8 +2158,8 @@ ServerWindow::_MessageLooper() bool quitLoop = false; while (!quitLoop) { - STRACE(("info: ServerWindow::MonitorWin listening on port %ld.\n", - fMessagePort)); + //STRACE(("info: ServerWindow::MonitorWin listening on port %ld.\n", + // fMessagePort)); int32 code; status_t status = receiver.GetNextMessage(code);