I'm trying to eliminate some rather nasty looking on/off blinking that's bothering my video overlays.
The xfree86 xv code hooks into ClipNotify, WindowExposures and AdjustFrame and does something a little different in each of them. I tried to decipher the intention of the original code, but even after trawling through the xfree86 cvs, I was unable to find any explanation for most of the differences. I suspect the code reached it's current state simply due to some ad-hoc copy pasting in an effort to fix some specific issues. So I just gave up on the history and tried to think what would make the most sense for each case and did that. The end result is that Reput/Reget is done in most cases if the window is visible, StopVideo is done if the window is invisible, and if ReputImage isn't supported the port is removed from the window. With these changes most of the blinking is gone. There is still at least one case left though. Window (un)redirection does an internal UnmapWindow+MapWindow cycle which causes ClipNotify to get called with visibility = NotViewable. If anyone has a suggestion how to eliminate that problem without a majore rewrite, I'd be happy to try it. I'd also like the overlays to track RandR state properly so I added a new hook 'ModeSet' that gets called when something interesting happens. I just realized that I should probably call it from xf86DisableUnusedFunctions() as well. Hmm, actually it looks like xf86DisableUnusedFunctions() already has this crtc_notify hook I could maybe use. Would there be objections to adding more calls to that hook from set_origin (and perhaps some other mode setting functions)? Also CCing Luc since he did something for xf86XVAdjustFrame at some point in the past... _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
