aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Janousek <tomi@nomi.cz>2010-03-27 22:42:43 +0100
committerTomas Janousek <tomi@nomi.cz>2010-03-27 22:42:43 +0100
commit80b835ac57c7dba6d86ac803baa784814b3c300b (patch)
tree43d1a661473a68607780290cc92d12dd51d7500f
parente5240c8fc41f45b6b71252ffb6de4c3fdacf9892 (diff)
downloadxmonad-80b835ac57c7dba6d86ac803baa784814b3c300b.tar.gz
xmonad-80b835ac57c7dba6d86ac803baa784814b3c300b.tar.xz
xmonad-80b835ac57c7dba6d86ac803baa784814b3c300b.zip
reveal: don't insert non-clients into the set of mapped windows
Ignore-this: 68c0a43d761e626cb9544ca386f4846d In xmonad-core, this fixes a small bug that caused doIgnored windows to get into `mapped' and never being removed from there. In the context of xmonad-contrib, this fixes a tremendous memory leak that could be triggered by using MouseResizableTile and UrgencyHook at the same time. MRT would create dummy windows that would get added to `mapped' by the reveal call in `windows'. As these were not removed (removal from `mapped' is filtered by `isClient'), they'd stay there forever and due to an inefficiency in UrgencyHook would eat up all memory sooner or later. darcs-hash:20100327214243-c9ff5-295429351d7a76e3fe82766bed70cb6951f5862e.gz
-rw-r--r--XMonad/Operations.hs2
1 files changed, 1 insertions, 1 deletions
diff --git a/XMonad/Operations.hs b/XMonad/Operations.hs
index f0391bc..e26d733 100644
--- a/XMonad/Operations.hs
+++ b/XMonad/Operations.hs
@@ -200,7 +200,7 @@ reveal :: Window -> X ()
reveal w = withDisplay $ \d -> do
setWMState w normalState
io $ mapWindow d w
- modify (\s -> s { mapped = S.insert w (mapped s) })
+ whenX (isClient w) $ modify (\s -> s { mapped = S.insert w (mapped s) })
-- | The client events that xmonad is interested in
clientMask :: EventMask