Comment 46 for bug 931967

Revision history for this message
Chris Halse Rogers (raof) wrote :

Ok. Investigating the unity-greeter code, I've found two problems:

1) The X connection marked as RetainPermanent for the background pixmap is closed almost immediately. This would not ordinarily be a problem, but the GTK connection is marked as DestroyAll (the default) and is the only X client connected. When the greeter quits, it closes the final X connection, and this triggers a different behaviour in the server - all resources, even those from RetainPermanent clients, are destroyed.

This turns out not to be the actual problem, because
2) The greeter only sets the backing pixmap of the root window once, on creation, and before it's actually been drawn to. This invokes undefined behaviour - the X server makes no guarantees that drawing to the pixmap will be reflected in the backing pixmap. This would seem to be why on !intel you get random VRAM contents during login - the pixmap used as the backing store is uninitialised. It only accidentally works on intel.

Now, my attempts at fixing 2) so far don't seem to work - for some reason I get a black transition rather than a seamless background transition on all (except maybe the first?) login?