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

This commit is contained in:
David Reid
2020-06-14 12:54:14 +10:00
parent 9be52c7075
commit c3e2038c3a
2 changed files with 9 additions and 4 deletions
+4 -4
View File
@@ -34,13 +34,13 @@ int main(int argc, char** argv)
#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) {
ma_engine_uninit(&engine);
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_pitch(&engine, &sound, 1.0f);
@@ -51,8 +51,8 @@ int main(int argc, char** argv)
#if 1
/*ma_engine_play_sound(&engine, argv[1], NULL);*/
ma_engine_play_sound(&engine, argv[2], NULL);
ma_engine_play_sound(&engine, argv[3], NULL);
/*ma_engine_play_sound(&engine, argv[2], NULL);
ma_engine_play_sound(&engine, argv[3], NULL);*/
#endif
#if 0
+5
View File
@@ -3143,6 +3143,11 @@ static ma_result ma_resource_manager_handle_message__seek_data_stream(ma_resourc
MA_ASSERT(pResourceManager != 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
instead of initializing the decoder, we seek to a frame.