Re: a window got lost, again.



So, for some reason Sawfish has removed the window from the managed 
window list but not destroyed the frame. The frame is unmapped, hence 
the client window is unviewable although mapped.

Windows are removed from window_list by setting w->id = 0. Garbage 
collection will free the data structures later, but the window will for 
most purposes appear gone as soon as w->id is zeroed. For instance get-
window-by-id and filter-windows will not find such windows.  w->id is 
only zeroed in remove_window. remove_window is called from half a dozen 
functions, but only error_handler calls it with from_error set, which 
prevents remove_window_frame and destroy_window_frame from being called 
(presumably because they would raise more errors).

So it seems to be the error handler again. For some reason you seem to 
be getting BadWindow or BadDrawable errors for existing windows. That is 
strange. There is some special case code in error_handler for 
ConfigureNotify events, but there is no reason why ConfigureNotify 
events should be special. Others do not seem to have these errors, so 
some unusual feature of your system or usage pattern (maybe long 
sessions or lots of windows?) appears to trigger them. On the other hand 
it remains unanswered whether this early detection of missing windows by 
the error handler is particularly useful, considering that other window 
managers seem to be doing fine by using only DestroyNotify events.

-- 
	Timo Korvola		<URL:http://www.iki.fi/tkorvola>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]