Ticket #37 (closed defect: fixed)

Opened 2 months ago

Last modified 2 months ago

Weird 'ghost' windows appear after upgrading

Reported by: njs Owned by:
Type: defect Priority: major
Component: xpra Keywords:
Cc:

Description

For instance, matlab's splash screen somehow shows up if one 'upgrade's an xpra server and then attaches to it.

Change History

Changed 2 months ago by njs

  • owner deleted
  • component changed from whole-tree to xpra

Changed 2 months ago by njs

It turns out this is because when a client window is withdrawn (rather than destroyed), we correctly reparent it back to the root and forget about it -- but we do not XRemoveSaveSet on it. This was intentional, because it didn't seem to make any difference -- the save set only matters for windows that you have reparented under your own windows.

Mostly. The spec says:

When a client’s resources are destroyed, for each window in the client’s save-set, if the window is an inferior of a window created by the client, the save-set window is reparented to the closest ancestor such that the save-set window is not an inferior of a window created by the client. If the save-set window is unmapped, a MapWindow? request is performed on it (even if it was not an inferior of a window created by the client).

Emphasis added.

So what was happening was that the withdrawn windows were sitting around as children of the root window, and then when you ran 'xpra upgrade', the old server exited to make way for the new one, and when it exited all of the windows in its save set were automagically mapped, including the withdrawn windows, and then the new xpra could not tell which windows were supposed to be visible and which were withdrawn -- they all appeared as visible.

Changed 2 months ago by njs

  • status changed from new to closed
  • resolution set to fixed
Note: See TracTickets for help on using tickets.