diff --git a/stepmania/src/arch/Sound/DSoundHelpers.cpp b/stepmania/src/arch/Sound/DSoundHelpers.cpp index ba747eaa1e..52bdcafd19 100644 --- a/stepmania/src/arch/Sound/DSoundHelpers.cpp +++ b/stepmania/src/arch/Sound/DSoundHelpers.cpp @@ -178,7 +178,7 @@ DSoundBuf::DSoundBuf( DSound &ds, DSoundBuf::hw hardware, writeahead = writeahead_ * bytes_per_frame(); volume = -1; /* unset */ buffer_locked = false; - last_cursor_pos = write_cursor = buffer_bytes_filled = 0; + write_cursor_pos = write_cursor = buffer_bytes_filled = 0; LastPosition = 0; playing = false; @@ -620,10 +620,8 @@ bool DSoundBuf::get_output_buf( char **buffer, unsigned *bufsiz, int chunksize ) write_cursor -= buffersize; buffer_bytes_filled += num_bytes_empty; + write_cursor_pos += num_bytes_empty / bytes_per_frame(); - /* Increment last_cursor_pos to point at where the data we're about to - * ask for will actually be played. */ - last_cursor_pos += num_bytes_empty / bytes_per_frame(); buffer_locked = true; return true; @@ -651,7 +649,7 @@ int64_t DSoundBuf::GetPosition() const if( frames_behind < 0 ) frames_behind += buffersize_frames(); /* unwrap */ - int64_t ret = last_cursor_pos - frames_behind; + int64_t ret = write_cursor_pos - frames_behind; /* Failsafe: never return a value smaller than we've already returned. * This can happen once in a while in underrun conditions. */ @@ -677,7 +675,7 @@ void DSoundBuf::Stop() buf->Stop(); buf->SetCurrentPosition(0); - last_cursor_pos = write_cursor = buffer_bytes_filled = 0; + write_cursor_pos = write_cursor = buffer_bytes_filled = 0; LastPosition = 0; /* When stopped and rewound, the play and write cursors should both be 0. */ diff --git a/stepmania/src/arch/Sound/DSoundHelpers.h b/stepmania/src/arch/Sound/DSoundHelpers.h index 26bb3cca55..c12f7bd6b6 100644 --- a/stepmania/src/arch/Sound/DSoundHelpers.h +++ b/stepmania/src/arch/Sound/DSoundHelpers.h @@ -47,7 +47,7 @@ public: ~DSoundBuf(); int64_t GetPosition() const; - int64_t GetOutputPosition() const { return last_cursor_pos; } + int64_t GetOutputPosition() const { return write_cursor_pos; } private: int buffersize_frames() const { return buffersize / bytes_per_frame(); } @@ -63,7 +63,7 @@ private: int buffersize; int write_cursor, buffer_bytes_filled; /* bytes */ - int64_t last_cursor_pos; /* frames */ + int64_t write_cursor_pos; /* frames */ mutable int64_t LastPosition; bool playing;