In light of ReputImage(), which I was unaware of. I think the first proposal was best. I can make ReputImage() work without copying all the data all the time. Rather than copy the visible part of the XvImage to the offscreen memory starting as the top left of the offscreen buffer, I'll copy the visible region to the same x,y coordinates in the offscreen memory. When the window moves triggering a Reput() either I can show the newly exposed region as zero'd or clip the overlay to the area that I actually have data for. Either way it is better than leaving the overlay in the wrong screen location.
Here is the proposal again, if there are on complaints I'll implement it this way. #define XV_HOLD 0x0 #define XV_TOP_FIELD 0x1 #define XV_BOTTOM_FIELD 0x2 #define XV_FRAME (XV_TOP_FIELD | XV_BOTTOM_FIELD) The atom XV_FRAME_TYPE can be set to one of the above values. XvShmPutImage takes either an interlaced or progressive image and copies both fields to the offscreen area. If XV_FRAME_TYPE is not XV_HOLD the overlay is updated with the new data right away. When it is XV_HOLD the overlay is not updated. At any time the atom can be set to XV_TOP_FIELD or XV_BOTTOM_FIELD or XV_FRAME to display the result of the last XvShmPutImage. Mark, if we make use of Reput() couldn't you then make Blitted video work? Reput() would just update the position during XV_HOLD but not make a copy. Then when XV_TOP_FIELD was set the coordinates would always be correct. Reput() could either do nothing or just update the valid area when XV_FRAME_TYPE != XV_HOLD. -Matt _______________________________________________ Xpert mailing list [EMAIL PROTECTED] http://XFree86.Org/mailman/listinfo/xpert
