@@ -1067,6 +1067,7 @@ typedef struct {
1067
1067
/* sokol-audio state */
1068
1068
typedef struct {
1069
1069
bool valid ;
1070
+ bool setup_called ;
1070
1071
void (* stream_cb )(float * buffer , int num_frames , int num_channels );
1071
1072
void (* stream_userdata_cb )(float * buffer , int num_frames , int num_channels , void * user_data );
1072
1073
void * user_data ;
@@ -2486,9 +2487,11 @@ void _saudio_backend_shutdown(void) {
2486
2487
// >>public
2487
2488
SOKOL_API_IMPL void saudio_setup (const saudio_desc * desc ) {
2488
2489
SOKOL_ASSERT (!_saudio .valid );
2490
+ SOKOL_ASSERT (!_saudio .setup_called );
2489
2491
SOKOL_ASSERT (desc );
2490
2492
SOKOL_ASSERT ((desc -> allocator .alloc_fn && desc -> allocator .free_fn ) || (!desc -> allocator .alloc_fn && !desc -> allocator .free_fn ));
2491
2493
_saudio_clear (& _saudio , sizeof (_saudio ));
2494
+ _saudio .setup_called = true;
2492
2495
_saudio .desc = * desc ;
2493
2496
_saudio .stream_cb = desc -> stream_cb ;
2494
2497
_saudio .stream_userdata_cb = desc -> stream_userdata_cb ;
@@ -2519,6 +2522,8 @@ SOKOL_API_IMPL void saudio_setup(const saudio_desc* desc) {
2519
2522
}
2520
2523
2521
2524
SOKOL_API_IMPL void saudio_shutdown (void ) {
2525
+ SOKOL_ASSERT (_saudio .setup_called );
2526
+ _saudio .setup_called = false;
2522
2527
if (_saudio .valid ) {
2523
2528
_saudio_backend_shutdown ();
2524
2529
_saudio_fifo_shutdown (& _saudio .fifo );
@@ -2532,26 +2537,32 @@ SOKOL_API_IMPL bool saudio_isvalid(void) {
2532
2537
}
2533
2538
2534
2539
SOKOL_API_IMPL void * saudio_userdata (void ) {
2540
+ SOKOL_ASSERT (_saudio .setup_called );
2535
2541
return _saudio .desc .user_data ;
2536
2542
}
2537
2543
2538
2544
SOKOL_API_IMPL saudio_desc saudio_query_desc (void ) {
2545
+ SOKOL_ASSERT (_saudio .setup_called );
2539
2546
return _saudio .desc ;
2540
2547
}
2541
2548
2542
2549
SOKOL_API_IMPL int saudio_sample_rate (void ) {
2550
+ SOKOL_ASSERT (_saudio .setup_called );
2543
2551
return _saudio .sample_rate ;
2544
2552
}
2545
2553
2546
2554
SOKOL_API_IMPL int saudio_buffer_frames (void ) {
2555
+ SOKOL_ASSERT (_saudio .setup_called );
2547
2556
return _saudio .buffer_frames ;
2548
2557
}
2549
2558
2550
2559
SOKOL_API_IMPL int saudio_channels (void ) {
2560
+ SOKOL_ASSERT (_saudio .setup_called );
2551
2561
return _saudio .num_channels ;
2552
2562
}
2553
2563
2554
2564
SOKOL_API_IMPL bool saudio_suspended (void ) {
2565
+ SOKOL_ASSERT (_saudio .setup_called );
2555
2566
#if defined(_SAUDIO_EMSCRIPTEN )
2556
2567
if (_saudio .valid ) {
2557
2568
return 1 == saudio_js_suspended ();
@@ -2565,6 +2576,7 @@ SOKOL_API_IMPL bool saudio_suspended(void) {
2565
2576
}
2566
2577
2567
2578
SOKOL_API_IMPL int saudio_expect (void ) {
2579
+ SOKOL_ASSERT (_saudio .setup_called );
2568
2580
if (_saudio .valid ) {
2569
2581
const int num_frames = _saudio_fifo_writable_bytes (& _saudio .fifo ) / _saudio .bytes_per_frame ;
2570
2582
return num_frames ;
@@ -2575,6 +2587,7 @@ SOKOL_API_IMPL int saudio_expect(void) {
2575
2587
}
2576
2588
2577
2589
SOKOL_API_IMPL int saudio_push (const float * frames , int num_frames ) {
2590
+ SOKOL_ASSERT (_saudio .setup_called );
2578
2591
SOKOL_ASSERT (frames && (num_frames > 0 ));
2579
2592
if (_saudio .valid ) {
2580
2593
const int num_bytes = num_frames * _saudio .bytes_per_frame ;
0 commit comments