|
|
@@ -2675,9 +2675,16 @@ outputting any audio data. To output audio data, use `ma_encoder_write_pcm_frame
|
|
|
example below:
|
|
|
|
|
|
```c
|
|
|
- framesWritten = ma_encoder_write_pcm_frames(&encoder, pPCMFramesToWrite, framesToWrite);
|
|
|
+ ma_uint64 framesWritten;
|
|
|
+ result = ma_encoder_write_pcm_frames(&encoder, pPCMFramesToWrite, framesToWrite, &framesWritten);
|
|
|
+ if (result != MA_SUCCESS) {
|
|
|
+ ... handle error ...
|
|
|
+ }
|
|
|
```
|
|
|
|
|
|
+The `framesWritten` variable will contain the number of PCM frames that were actually written. This
|
|
|
+is optionally and you can pass in `NULL` if you need this.
|
|
|
+
|
|
|
Encoders must be uninitialized with `ma_encoder_uninit()`.
|
|
|
|
|
|
|
|
|
@@ -40902,6 +40909,11 @@ static ma_thread_result MA_THREADCALL ma_worker_thread(void* pData)
|
|
|
ma_device__on_notification_stopped(pDevice);
|
|
|
}
|
|
|
|
|
|
+ /* If we stopped because the device has been uninitialized, abort now. */
|
|
|
+ if (ma_device_get_state(pDevice) == ma_device_state_uninitialized) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
/* A function somewhere is waiting for the device to have stopped for real so we need to signal an event to allow it to continue. */
|
|
|
ma_device__set_state(pDevice, ma_device_state_stopped);
|
|
|
ma_event_signal(&pDevice->stopEvent);
|
|
|
@@ -76804,6 +76816,7 @@ MA_API ma_result ma_sound_get_cursor_in_pcm_frames(ma_sound* pSound, ma_uint64*
|
|
|
seekTarget = ma_atomic_load_64(&pSound->seekTarget);
|
|
|
if (seekTarget != MA_SEEK_TARGET_NONE) {
|
|
|
*pCursor = seekTarget;
|
|
|
+ return MA_SUCCESS;
|
|
|
} else {
|
|
|
return ma_data_source_get_cursor_in_pcm_frames(pSound->pDataSource, pCursor);
|
|
|
}
|