qt: prevent spending time and resources for soon-to-be-obsolete current item
Currently, when the interface requests to play an item, it first
synchronously calls vlc_playlist_GoTo()
and vlc_playlist_Start()
.
After these calls are made, it potentially tries to update the UI with the current item that has not yet been updated. This is because the callback for playlist current index is itself asynchronously updates the interface's current index.
The update operation should be queued when the interface thread is different than the playlist's thread. In this case, main playlist belongs to the same thread (Qt's thread), so a direct connection is going to be used. This eliminates queue-ing, but directly calls the adjuster.
The interface should update its current index (item) before
proceeding with vlc_playlist_Start()
, so that the interface does
not spend resources and time on updating the soon-to-be-obsolete
current item. This can be only ensured with a blocking (queued) or
direct connection.
Request review @chub.