while trying to speed up OSD updates in my vdr-xine plugin for VDR, I
realized that an OSD update can only happen in xine when a frame is drawn.
But there are some situations where a frame is buffered and is available
for immediate redrawing, once the wait-loop and/or sleep() could be
Therefore, I've replaced the sleeps by timed waits on a conditional
variable and implemented a function called "trigger_redraw" which
signals this conditional variable.
I call this new function when VDR has finished it's OSD painting
operations and get most often an immediate update on screen ;-)
But I must admit, that redrawing can only work, if a backup frame is
available. For now, I didn't try to always take a copy of the current
frame as this might be a performance issue.
A partial solution could be achieved -- without taking a copy -- when
using unscaled OSD, as in this case, the OSD is not blended into the
video frame. But that's still to investigate ;-)
Dipl.-Inform. (FH) Reinhard Nissl