[vlc-devel] [PATCHES] -- various GUI interface improvements (to be discussed)

Laurent Aimar fenrir at via.ecp.fr
Tue Dec 22 11:47:13 CET 2009


Hi,

On Mon, Dec 21, 2009, brezhoneg1 wrote:
>    patch1:
>    ------
>    Unlike vlc1.0, vlc1.1 (new vout design) now takes into account the
> return value of a vout_window_SetSize.
>    The problem is that GUI interfaces don't belong to the same thread as
> the vout thread, and therefore returning
>    a relevant ack/nack means blocking the vout thread, performing
> resizing (can be a heavy operation) and then only returning.
> 
>    In vlc1.0, VLC_SUCCESS was returned right away, and resizing then did
> or didn't occur asynchronously, depending on the GUI configuration. This
> was not a problem, because the vout output was an observer of any change
> in size and ended up reporting the real change anyway.
> 
>    The new design shows problem especially when zooming in/out with
> is_display_filled enabled. A change in size is forced and taken for
> granted whereas the GUI interfaces may not accept this change. This
> results in the inner video no longer centered in the container. This can
> be reproduced using 'o', alt-'o' and alt-shift-'o' keys.
>     - in fullscreen mode (both qt4 and skins)
>     - with qt4 if -no-qt-video-autoresize is set
>     - with skins if autoresize="false" or min/max width/height are set
> on layouts.
> 
>   The patch simply reverts to the vlc1.0 way of doing things for this
> matter. Any objections to it ?
 I don't like that patch because it actually breaks the semantic of
vout_display_t::cfg as it does not match anymore what have been accepted by
VOUT_DISPLAY_CHANGE_DISPLAY_SIZE.

 Why don't you simply return VLC_EGENERIC in the qt4 window provider but still
issue the resize ? I think it may do what you want (there is just one
error message to remove probably).

>   patch2:
>   ------
> 
>   The intf-show variable is present in a ugly hack, which seems no
> longer needed (I could not reproduce the problem it is meant to solve).
> On the other hand, it makes fullscreen controller behave a bit
> erratically. Any reason to keep this hack that I am not aware of ?
 Seems fine by me.

>   patch3:
>   -------
> 
>   A vout window provider is given width/height hints at open time. Why
> not also pass on the fullscreen flag. This could help GUI interfaces
> start right away in fullscreen mode if needed, rather than start in
> windowed mode and then switch  (often meaning visible and unpleasant
> transitions).
 Well, I agree it would be nice, but for the moment there is no way
to know if the vout windows provider has actually performed the fullscreen
or not, and that's needed.

>   patch4 :
>   ------
> 
>   One event that seems to be cruelly missing is the Playlist stop event.
> With patch3 applied, one could implement smooth fullscreen transitions.
> The only missing thing is to know when the playlist terminates to
> automatically return to windowed mode. patch4 exports the playlist
> status (actually, only Playlist_Stopped is really needed)
 No comment yet, I haven't looked at it.

-- 
fenrir




More information about the vlc-devel mailing list