[Xorg] ARGB visuals from Composite extension
Jim Gettys
Jim.Gettys at hp.com
Thu Aug 12 05:24:16 PDT 2004
Yeah, I had a nagging feeling that this would happen, on our
last call. Sigh...
I think the environment variable kludge is the least evil
under the circumstances, and working with vendors to fix
broken applications. Oh well.
Please add a bugzilla entry that blocks the documentation
bug so we make sure to release note this.
Anyone happen to know the flash developer(s)? We should give
them a heads up in any case.
- Jim
On Thu, 2004-08-12 at 03:19, Keith Packard wrote:
> The Composite extension creates an ARGB visual for applications to use in
> constructing translucent windows. In the current implementation, that
> visual is a part of the normal connection setup information, making it
> possible for applications to discover the visual through the normal Xlib
> methods.
>
> However, this new visual is known to confuse the Flash plugin for Mozilla
> (it assumes the Mozilla window uses this visual and crashes as a result).
> So, to avoid this problem, I proposed that the Composite specific visuals
> be hidden from the normal connection setup information and only made
> available through an extension request.
>
> So far, so good. Applications using core requests won't see the new
> visuals, and applications using Composite will.
>
> Now comes the tricky part.
>
> Once an application has used the Composite extension to discover this shiny
> new visual, it has to pass that visual structure around to create windows,
> pictures and the like. Xlib is mostly happy to be handed some random
> visual structure and so it mostly works. However, Xlib does believe that
> it knows all of the available visuals, so extension functions like
> _XVIDtoVisual will *not* find a visual structure from the new visual ID.
>
> This turns out to be really bad -- the Render extension needs to locate
> PictFormats associated with visuals, and it does so by locating the visual
> based on the ID passed back by the X server. This means that applications
> cannot locate PictFormats for these new visuals, which makes it pretty
> hard to create Pictures for ARGB windows.
>
> I don't know what other parts of the system assume that every visual is
> stored in the Xlib visual structures.
>
> My current kludge in the xlibs project is to report the visuals in the core
> setup and then use a magic environment variable to hide these depth-32
> visuals from mozilla.
>
> I could hack Xcomposite to *modify* the list of Visuals held by Xlib so
> that all of the existing Xlib functions work correctly. This will only fix
> the Render problem if this Xcomposite function is called before the Render
> extension is initialized. I could further hack Xcomposite to go mash the
> Xrender structures as well. Yuck.
>
> Right now, I'm leaning towards just leaving things as they are and
> expecting that the Flash plugin will get fixed at some point, or that
> we'll kludge Mozilla to handle the problem automatically.
>
> -keith
>
>
>
> ______________________________________________________________________
> _______________________________________________
> xorg mailing list
> xorg at freedesktop.org
> http://freedesktop.org/mailman/listinfo/xorg
More information about the xorg
mailing list