[vlc-devel] Misuses of vout_Control

Rémi Denis-Courmont rdenis at simphalempin.com
Sat Feb 14 20:47:11 CET 2009


	Hello all,

vout_Control() and vout_vaControl() are really just a convenience wrappers 
around vout_thread_t->pf_control. As such, it can only -safely- be used:
- after a succesful module_need(),
- before module_unneed(),
- from the video output thread.

Control requests chaining from some video filters is one valid (should be) use 
of vout_vaControl().

However, the following usages are invalid:

* Maemo and Skins interfaces are reparenting when quitting. They have to 
ensure it does not destroy the window too early instead. As of VLC 1.0, the 
core ensures video outputs are cleaned up before interfaces.

* WinCE interface is controlling the video window focus this way. This is the 
only use of VOUT_SET_FOCUS in the entire tree, and seems to be a hack.

* The zoom and video on top variable handlers in the core are not serialized 
properly. They should be synchronized with the video output thread.

* Libvlc provides a video redraw function. I find this request silly. The 
video output should redraw transparently as appropriate. The back-end is only 
implemented on OSX.

* Libvlc provides two (!!!) video resize functions. I wonder if they ever 
worked, as at least the X11 output will automatically resize according to 
changes to the parent window size. In any case, these functions should sync 
with the video output thread instead of calling vout_Control() directly.

* Libvlc provides a reparenting function. This is known not to work properly. 
Also, it will explode if there are several video outputs.

* Libvlc provides an OSX-only window-less output function, which is similarly 
broken.

I have already fixed snapshots, and removed the VOUT_CLOSE request.
Otherwise, all these bugs may result in crashes and need to be fixed/removed 
ASAP.

-- 
Rémi Denis-Courmont
http://www.remlab.net/



More information about the vlc-devel mailing list