VideoPlayer: Fix reloading translation remapped stream

Fixes #43917.
This commit is contained in:
Rémi Verschelde
2023-11-12 15:22:04 +01:00
parent 5abeb043d0
commit 7d0c561e02
3 changed files with 11 additions and 1 deletions

View File

@ -237,6 +237,12 @@ bool VideoStreamPlayer::has_loop() const {
void VideoStreamPlayer::set_stream(const Ref<VideoStream> &p_stream) {
stop();
// Make sure to handle stream changes seamlessly, e.g. when done via
// translation remapping.
if (stream.is_valid()) {
stream->disconnect_changed(callable_mp(this, &VideoStreamPlayer::set_stream));
}
AudioServer::get_singleton()->lock();
mix_buffer.resize(AudioServer::get_singleton()->thread_get_mix_buffer_size());
stream = p_stream;
@ -248,6 +254,10 @@ void VideoStreamPlayer::set_stream(const Ref<VideoStream> &p_stream) {
}
AudioServer::get_singleton()->unlock();
if (stream.is_valid()) {
stream->connect_changed(callable_mp(this, &VideoStreamPlayer::set_stream).bind(stream));
}
if (!playback.is_null()) {
playback->set_paused(paused);
texture = playback->get_texture();