[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