One
more question - how can you tell what the chromakey value is? Do I need to
use XGetImage or is there a better way?
Sorry, I'm kind of new to Xv.That makes perfect sense. Is there a way to force the expose event at the server without actually changing what is viewed (mapping/unmapping, moving, etc)? I tried XSendEvent, but that didn't seem to work.
I am using XvShmPutImage to draw video via a YUV overlay into a window. Then I am using XDraw commands to draw "overlays" directly to the window (lines, arcs, text, etc.).
When I do this the video image appears correctly, but the overlays do not update properly. Each time the overlays move, the old XDraw data remains along with the new, until I do something to force an exposure on the drawable - such as drag a window over it. Then the window is redrawn with only the new XDraw data drawn over the video image ("new" meaning from XDraw calls made since the last XvShmPutImage call) which is what I wanted. I don't seem to be able to force the XServer to re-expose the window via software, or I would find that an acceptable workaround. Is there something I am not understanding?
I have seen this same behavior both on a Matrox G550 and an nVidia Quadro 4 card, so I don't believe it has anything to do with the particular graphics card drivers.
I'm not sure why this should be a surprise to you. When you use an overlay, the on-screen window gets solid filled with a chromakey color. If you draw something over the top of the chromakey fill, those somethings will be visible until either you erase them, by restoring the chromakey, or you force an expose event, which tells xvideo to fill with the chromakey again.
This is working by design. If the chromakey refilled with every overlay update, it would be impossible to draw anything over a running movie.--
- Tim Roberts, [EMAIL PROTECTED]
Providenza & Boekelheide, Inc.