Commit c3e2038c authored by David Reid's avatar David Reid

Fix a crash trying to seek on a failed async data stream.

parent 9be52c70
...@@ -34,13 +34,13 @@ int main(int argc, char** argv) ...@@ -34,13 +34,13 @@ int main(int argc, char** argv)
#if 1 #if 1
result = ma_engine_sound_init_from_file(&engine, argv[1], MA_DATA_SOURCE_FLAG_DECODE | MA_DATA_SOURCE_FLAG_ASYNC | MA_DATA_SOURCE_FLAG_STREAM, NULL, &sound); result = ma_engine_sound_init_from_file(&engine, /*argv[1]*/ "unknownfile.wav", MA_DATA_SOURCE_FLAG_DECODE | MA_DATA_SOURCE_FLAG_ASYNC | MA_DATA_SOURCE_FLAG_STREAM, NULL, &sound);
if (result != MA_SUCCESS) { if (result != MA_SUCCESS) {
ma_engine_uninit(&engine); ma_engine_uninit(&engine);
return -1; return -1;
} }
/*ma_data_source_seek_to_pcm_frame(sound.pDataSource, 5000000);*/ ma_data_source_seek_to_pcm_frame(sound.pDataSource, 5000000);
ma_engine_sound_set_volume(&engine, &sound, 0.25f); ma_engine_sound_set_volume(&engine, &sound, 0.25f);
ma_engine_sound_set_pitch(&engine, &sound, 1.0f); ma_engine_sound_set_pitch(&engine, &sound, 1.0f);
...@@ -51,8 +51,8 @@ int main(int argc, char** argv) ...@@ -51,8 +51,8 @@ int main(int argc, char** argv)
#if 1 #if 1
/*ma_engine_play_sound(&engine, argv[1], NULL);*/ /*ma_engine_play_sound(&engine, argv[1], NULL);*/
ma_engine_play_sound(&engine, argv[2], NULL); /*ma_engine_play_sound(&engine, argv[2], NULL);
ma_engine_play_sound(&engine, argv[3], NULL); ma_engine_play_sound(&engine, argv[3], NULL);*/
#endif #endif
#if 0 #if 0
......
...@@ -3143,6 +3143,11 @@ static ma_result ma_resource_manager_handle_message__seek_data_stream(ma_resourc ...@@ -3143,6 +3143,11 @@ static ma_result ma_resource_manager_handle_message__seek_data_stream(ma_resourc
MA_ASSERT(pResourceManager != NULL); MA_ASSERT(pResourceManager != NULL);
MA_ASSERT(pDataStream != NULL); MA_ASSERT(pDataStream != NULL);
/* For streams the status should be MA_SUCCESS for this to do anything. */
if (pDataStream->result != MA_SUCCESS || pDataStream->isDecoderInitialized == MA_FALSE) {
return MA_INVALID_OPERATION;
}
/* /*
With seeking we just assume both pages are invalid and the relative frame cursor at at position 0. This is basically exactly the same as loading, except With seeking we just assume both pages are invalid and the relative frame cursor at at position 0. This is basically exactly the same as loading, except
instead of initializing the decoder, we seek to a frame. instead of initializing the decoder, we seek to a frame.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment