|
@@ -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();
|