From 002a5dd98065b7bbb32cdebefdc9dd88e38e2b1d Mon Sep 17 00:00:00 2001 From: Amar Takhar Date: Mon, 26 Oct 2009 23:37:47 +0000 Subject: [PATCH] Merge r3732 for jfs, fixes #915 Originally committed to SVN as r3734. --- aegisub/src/audio_player_dsound2.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/aegisub/src/audio_player_dsound2.cpp b/aegisub/src/audio_player_dsound2.cpp index 94911f6e8..ecfe701e9 100644 --- a/aegisub/src/audio_player_dsound2.cpp +++ b/aegisub/src/audio_player_dsound2.cpp @@ -412,6 +412,13 @@ void DirectSoundPlayer2Thread::Run() ResetEvent(is_playing); playback_should_be_running = false; } + else + { + // If the user is dragging the start or end point in the audio display + // the set end frame events might come in faster than the timeouts happen + // and then new data never get filled into the buffer. See bug #915. + goto do_fill_buffer; + } break; } @@ -421,7 +428,7 @@ void DirectSoundPlayer2Thread::Run() // We aren't thread safe right now, filling the buffers grabs volume directly // from the field set by the controlling thread, but it shouldn't be a major // problem if race conditions do occur, just some momentary distortion. - break; + goto do_fill_buffer; } case WAIT_OBJECT_0+4: @@ -435,6 +442,7 @@ void DirectSoundPlayer2Thread::Run() } case WAIT_TIMEOUT: +do_fill_buffer: { // Time to fill more into buffer