summaryrefslogtreecommitdiff
authorDanny Baumann <dannybaumann@web.de>2010-02-07 13:24:54 (GMT)
committer Danny Baumann <dannybaumann@web.de>2010-02-07 13:24:54 (GMT)
commit3aa39452a7352dc11305f47bbf4745b2123c8649 (patch) (side-by-side diff)
tree57bdfd1cab7a23a47d02808a67c66b6251f4973a
parentdf26dd623405591f9d68fbcccaa4bb67eb89371f (diff)
parente4dc8af4707246548d6a5ceb2e83beccc614a1bf (diff)
downloadgroup-3aa39452a7352dc11305f47bbf4745b2123c8649.tar.gz
group-3aa39452a7352dc11305f47bbf4745b2123c8649.tar.bz2
Merge branch 'master' of git+ssh://git.compiz.org/git/compiz/plugins/group
-rw-r--r--src/group.cpp5
-rw-r--r--src/init.cpp17
-rw-r--r--src/window.cpp1
3 files changed, 9 insertions, 14 deletions
diff --git a/src/group.cpp b/src/group.cpp
index c7c9d63..df26710 100644
--- a/src/group.cpp
+++ b/src/group.cpp
@@ -224,7 +224,10 @@ Group::destroy (bool immediate)
if (this == gs->lastRestackedGroup)
gs->lastRestackedGroup = NULL;
- gs->groups.remove (this);
+ /* we clear the stack afterwards */
+
+ if (!immediate)
+ gs->groups.remove (this);
delete this;
}
diff --git a/src/init.cpp b/src/init.cpp
index 3bcfb64..6a7a6a3 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -313,16 +313,7 @@ GroupScreen::GroupScreen (CompScreen *screen) :
GroupScreen::~GroupScreen ()
{
- std::list <Group *>::iterator it = groups.begin ();
-
- while (it != groups.end ())
- {
- Group *group = *it;
-
- it++;
-
- group->destroy (true);
- }
+ groups.clear ();
if (grabIndex)
grabScreen (ScreenGrabNone);
@@ -384,9 +375,6 @@ GroupWindow::~GroupWindow ()
setVisibility (true);
readOnlyProperty = true;
-
- if (glowQuads)
- delete[] glowQuads;
/* FIXME: this implicitly calls the wrapped function activateWindow
(via groupDeleteTabBarSlot -> groupUnhookTabBarSlot -> groupChangeTab)
@@ -395,6 +383,9 @@ GroupWindow::~GroupWindow ()
if (group)
deleteGroupWindow ();
+
+ if (glowQuads)
+ delete[] glowQuads;
}
bool
diff --git a/src/window.cpp b/src/window.cpp
index 46a79cf..5361d3e 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -784,6 +784,7 @@ GroupWindow::deleteGroupWindow ()
}
else
{
+ fprintf (stderr, "destroying group\n");
group->destroy (false);
group = NULL;
}