| @@ -373,7 +373,7 @@ public: | |||||
| totalBytesPerBuffer = (3 * bytesPerBuffer) & ~15; | totalBytesPerBuffer = (3 * bytesPerBuffer) & ~15; | ||||
| const int numChannels = 2; | const int numChannels = 2; | ||||
| hr = pDirectSound->SetCooperativeLevel (GetDesktopWindow(), 3 /* DSSCL_EXCLUSIVE */); | |||||
| hr = pDirectSound->SetCooperativeLevel (GetDesktopWindow(), 2 /* DSSCL_PRIORITY */); | |||||
| logError (hr); | logError (hr); | ||||
| if (hr == S_OK) | if (hr == S_OK) | ||||
| @@ -512,6 +512,16 @@ public: | |||||
| (void**) &lpbuf1, &dwSize1, | (void**) &lpbuf1, &dwSize1, | ||||
| (void**) &lpbuf2, &dwSize2, 0); | (void**) &lpbuf2, &dwSize2, 0); | ||||
| if (hr == MAKE_HRESULT (1, 0x878, 150)) // DSERR_BUFFERLOST | |||||
| { | |||||
| pOutputBuffer->Restore(); | |||||
| hr = pOutputBuffer->Lock (writeOffset, | |||||
| bytesPerBuffer, | |||||
| (void**) &lpbuf1, &dwSize1, | |||||
| (void**) &lpbuf2, &dwSize2, 0); | |||||
| } | |||||
| if (hr == S_OK) | if (hr == S_OK) | ||||
| { | { | ||||
| if (bitDepth == 16) | if (bitDepth == 16) | ||||
| @@ -991,7 +1001,8 @@ public: | |||||
| sampleRate (0.0), | sampleRate (0.0), | ||||
| inputBuffers (0), | inputBuffers (0), | ||||
| outputBuffers (0), | outputBuffers (0), | ||||
| callback (0) | |||||
| callback (0), | |||||
| bufferSizeSamples (0) | |||||
| { | { | ||||
| } | } | ||||