From 281d6fac1edd4a5b06692b850c00db6a5a9bbb46 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Sun, 1 Nov 2015 01:55:22 -0300 Subject: [PATCH] -some fixes to audio --- scene/audio/stream_player.cpp | 10 ++++++---- servers/audio/audio_rb_resampler.h | 5 +++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/scene/audio/stream_player.cpp b/scene/audio/stream_player.cpp index bffb2de4d49..4cfca0492a9 100644 --- a/scene/audio/stream_player.cpp +++ b/scene/audio/stream_player.cpp @@ -141,8 +141,8 @@ void StreamPlayer::play(float p_from_offset) { ERR_FAIL_COND(!is_inside_tree()); if (playback.is_null()) return; - if (playback->is_playing()) - stop(); + //if (is_playing()) + stop(); //_THREAD_SAFE_METHOD_ playback->play(p_from_offset); @@ -175,7 +175,7 @@ bool StreamPlayer::is_playing() const { if (playback.is_null()) return false; - return playback->is_playing(); + return playback->is_playing() || resampler.has_data(); } void StreamPlayer::set_loop(bool p_enable) { @@ -267,7 +267,9 @@ void StreamPlayer::seek_pos(float p_time) { if (playback.is_null()) return; - return playback->seek_pos(p_time); + //works better... + stop(); + playback->play(p_time); } diff --git a/servers/audio/audio_rb_resampler.h b/servers/audio/audio_rb_resampler.h index 3c686374f45..3c08c797975 100644 --- a/servers/audio/audio_rb_resampler.h +++ b/servers/audio/audio_rb_resampler.h @@ -67,6 +67,11 @@ public: return todo; } + + _FORCE_INLINE_ bool has_data() const { + return rb && rb_read_pos!=rb_write_pos; + } + _FORCE_INLINE_ int16_t *get_write_buffer() { return read_buf; } _FORCE_INLINE_ void write(uint32_t p_frames) {