[vlc-devel] [PATCH 05/16] qt: don't release vout window when the interface has already been destroyed
Pierre Lamot
pierre at videolabs.io
Fri Aug 7 10:53:04 CEST 2020
>>
>> +static bool WindowClose( vout_window_t *p_wnd )
>> +{
>> + MainInterface *p_mi = (MainInterface *)p_wnd->sys;
>> + vlc::threads::mutex_locker locker (lock);
>> +
>> + /* Normally, the interface terminates after the video. In the
>> contrary,
>> the
>> + * Qt main loop is gone, so we cannot send any event to the user
>> interface
>> + * widgets. Ideally, we would keep the Qt main loop running
>> until after
>> + * the video window is released. But it is far simpler to
>> just have the Qt
>> + * thread destroy the window early, and to turn this
>> function into a stub.
>> + *
>> + * That assumes the video output will behave sanely if it window
>> is
>> + * destroyed asynchronously.
>> + * XCB and Xlib-XCB are fine with that. Plain Xlib wouldn't, */
>
> It would certainly be far simpler, if it worked, but as the second
> paragraph
> states, it does *not* work. You _cannot_ do that. The window handle
> MUST be
> valid until the vout_twindow_t.disable callback is invoked. You MUST
> deal with
> that.
>
> Otherwise, nothing except XCB works: GL crashes or locks up, Xlib
> aborts, and
> Vulkan probably crashes or locks up like GL. I can only guess that DX
> and
> WinGL don't handle it well either. Nowadays, VLC rarely ever uses XCB,
> meaning
> XCB/RENDER or plain XCB outputs.
>
> -1
Hi, thanks for the review.
This was directly re-imported from the 3.0 code.
the real issue here is that we no longer have an equivalent of 3.0
playlist_Deactivate that would properly terminate the player/playlist.
More information about the vlc-devel
mailing list