Re: About Compositing



Soeren Sandmann wrote:

>Bill Haneman wrote:
>
>  
>
>>No, the magnifier needs to do the actual compositing, in order to
>>control the way the windows are displayed onscreen.
>>    
>>
>
>Why does the magnifier need to control the way windows are displayed
>onscreen?
>  
>
That's not the role of the compositing manager (at least, not
placement), that's up to the window manager. But fullscreen
magnification is ALL ABOUT displaying the windows onscreen in a
different way - larger, different colors, maybe inverse video, maybe
with text smoothing algorithms, with transparent overlays, etc. etc.

>>I didn't think a random client could access the uncomposited pixmap
>>contents of the window tree. Anyhow, for performance reasons we
>>wouldn't want to, it should be the compositing manager itself.
>>    
>>
>
>What performance reasons, and why don't they apply to the compositing
>manager itself?
>  
>
Because of the way the compositing system is designed, you don't have to
do as many roundtrips to report DAMAGE, etc. etc. Ideally you only put
stuff onscreen ONCE, and you do this at the desired size i.e. the size
that the magnification service requires. You don't want to have to get
notification of an expose via DAMAGE, in the magnifier client, then pull
the pixels from the source via XCopyArea on the root window (which you
can't do, since it's not posted to the root window....), then rescale
the pixels, then paint them into the target...

You should have a look at a commercial Windows magnifier like ZoomText
8.0 to see what I am talking about. The only way we can even begin to
provide those features is by controlling the compositing process, and
magnification accessibility was a major part of the design
process/criteria for the COMPOSITE extension. Unless there is such a
think as chaining of compositing managers, the magnifier needs to be it.
Keith and I talked about this at length in the past, this has been the
plan and the known requirement for a long time.

regards,

Bill

>
>Soren
>
>  
>




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