XRender/Xcomposite semantics (issues?)
Carsten Haitzler (The Rasterman)
raster at rasterman.com
Wed Mar 8 18:17:10 PST 2006
OK... a little discussed topic... XComposite. no one talks about this these days :)
I just implemented Xcomposite "support" in E17 so if u run xcompmgr and clients that create ARGB windows (32bit ... u know what i mean - ie fdclock -t for example)... anyway. what it requires in the wm is to check the visual of a client window and if its an ARGB window - make the parent ARBB too (the frame window) and interceeding parents etc. in between them. ok - all good. but now the wm frame is screwed as its in a different child window (a child of the frame but stacked below the client window)... ok - now i need to make this window argb too - make sure it has dst alpha and it gets filled right. ok. fun.
now this brings up a big fat ugly problem... what IF the wm wants to have an argb FRAME (a window border design with alpha) but a CLIENT is old-school and non ARGB. all "child" windows of an ARGB window have their alpha channel basically not filled in solid automatically - this leads to some problems if a wm ever wants to do this. it REQUIRES the client to realise its frame is ARGB before mapping - in fact creating its window, so it can also be ARGB and fill dst alpha right.
something smells wrong here. should the rendering not track parent window visuals and if a parent is ARGB but the child being rendered to is not, should x not just fill in the dst alpha in as solid automatically? it seems this isn't happening, but logcially SHOULD be happening.
now of course you could simply xcomposite each child separately from the frame (wm needs xcomposite manager built in to specially handle it) - but the above auto-fill-in to me sounds much more logical/correct.
either i have erred badly in my groking of all these evil little interactions (so tell me i have) or i have stumbled on a mis-handled corner case?
let the flames begin. :)
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler) raster at rasterman.com
Tokyo, Japan (東京 日本)
More information about the xorg