Juggle a weird control structure to be more regular.
Originally committed to SVN as r4086.
This commit is contained in:
parent
6fe0eb96be
commit
48e321f8ef
1 changed files with 8 additions and 9 deletions
|
@ -354,22 +354,21 @@ void DirectSoundPlayer2Thread::Run()
|
||||||
REPORT_ERROR("Could not reset playback buffer cursor before filling first buffer.")
|
REPORT_ERROR("Could not reset playback buffer cursor before filling first buffer.")
|
||||||
|
|
||||||
HRESULT res = bfr->Lock(buffer_offset, 0, &buf, &buf_size, 0, 0, DSBLOCK_ENTIREBUFFER);
|
HRESULT res = bfr->Lock(buffer_offset, 0, &buf, &buf_size, 0, 0, DSBLOCK_ENTIREBUFFER);
|
||||||
while (FAILED(res)) // yes, while, so I can break out of it without a goto!
|
if (FAILED(res))
|
||||||
{
|
{
|
||||||
if (res == DSERR_BUFFERLOST)
|
if (res == DSERR_BUFFERLOST)
|
||||||
{
|
{
|
||||||
// Try to regain the buffer
|
// Try to regain the buffer
|
||||||
if (SUCCEEDED(bfr->Restore()) &&
|
if (FAILED(bfr->Restore()) ||
|
||||||
SUCCEEDED(bfr->Lock(buffer_offset, 0, &buf, &buf_size, 0, 0, DSBLOCK_ENTIREBUFFER)))
|
FAILED(bfr->Lock(buffer_offset, 0, &buf, &buf_size, 0, 0, DSBLOCK_ENTIREBUFFER)))
|
||||||
{
|
{
|
||||||
//wxLogDebug(_T("DirectSoundPlayer2: Lost and restored buffer"));
|
REPORT_ERROR("Lost buffer and could not restore it.")
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
REPORT_ERROR("Lost buffer and could not restore it.")
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
REPORT_ERROR("Could not lock buffer for playback.")
|
{
|
||||||
|
REPORT_ERROR("Could not lock buffer for playback.")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear the buffer in case we can't fill it completely
|
// Clear the buffer in case we can't fill it completely
|
||||||
|
|
Loading…
Reference in a new issue