@@ -435,24 +435,21 @@ static size_t FAUDIOCALL FAudio_INTERNAL_ioread(
435
435
size_t size ,
436
436
size_t count
437
437
) {
438
- FAudioIOStream * io = (FAudioIOStream * ) data ;
439
- return SDL_ReadIO ((SDL_IOStream * ) io -> data , dst , size * count );
438
+ return SDL_ReadIO ((SDL_IOStream * ) data , dst , size * count );
440
439
}
441
440
442
441
static int64_t FAUDIOCALL FAudio_INTERNAL_ioseek (
443
442
void * data ,
444
443
int64_t offset ,
445
444
int whence
446
445
) {
447
- FAudioIOStream * io = (FAudioIOStream * ) data ;
448
- return SDL_SeekIO ((SDL_IOStream * ) io -> data , offset , whence );
446
+ return SDL_SeekIO ((SDL_IOStream * ) data , offset , whence );
449
447
}
450
448
451
449
static int FAUDIOCALL FAudio_INTERNAL_ioclose (
452
450
void * data
453
451
) {
454
- FAudioIOStream * io = (FAudioIOStream * ) data ;
455
- return SDL_CloseIO ((SDL_IOStream * ) io -> data );
452
+ return SDL_CloseIO ((SDL_IOStream * ) data );
456
453
}
457
454
458
455
FAudioIOStream * FAudio_fopen (const char * path )
@@ -483,11 +480,26 @@ FAudioIOStream* FAudio_memopen(void *mem, int len)
483
480
return io ;
484
481
}
485
482
483
+ /* FIXME: Expose IOStreamMemData as a property! */
484
+ struct SDL_IOStream
485
+ {
486
+ SDL_IOStreamInterface iface ;
487
+ void * userdata ;
488
+ SDL_IOStatus status ;
489
+ SDL_PropertiesID props ;
490
+ };
491
+ typedef struct IOStreamMemData
492
+ {
493
+ Uint8 * base ;
494
+ Uint8 * here ;
495
+ Uint8 * stop ;
496
+ } IOStreamMemData ;
497
+
486
498
uint8_t * FAudio_memptr (FAudioIOStream * io , size_t offset )
487
499
{
488
- SDL_PropertiesID props = SDL_GetIOProperties (( SDL_IOStream * ) io -> data ) ;
489
- FAudio_assert ( SDL_HasProperty ( props , SDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER )) ;
490
- return ( uint8_t * ) SDL_GetPointerProperty ( props , SDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER , NULL ) ;
500
+ SDL_IOStream * stream = ( SDL_IOStream * ) io -> data ;
501
+ IOStreamMemData * memdata = ( IOStreamMemData * ) stream -> userdata ;
502
+ return memdata -> base + offset ;
491
503
}
492
504
493
505
void FAudio_close (FAudioIOStream * io )
@@ -504,15 +516,13 @@ static size_t FAUDIOCALL FAudio_INTERNAL_iowrite(
504
516
size_t size ,
505
517
size_t count
506
518
) {
507
- FAudioIOStream * io = (FAudioIOStream * ) data ;
508
- SDL_WriteIO ((SDL_IOStream * ) io -> data , src , size * count );
519
+ SDL_WriteIO ((SDL_IOStream * ) data , src , size * count );
509
520
}
510
521
511
522
static size_t FAUDIOCALL FAudio_INTERNAL_iosize (
512
523
void * data
513
524
) {
514
- FAudioIOStream * io = (FAudioIOStream * ) data ;
515
- return SDL_GetIOSize ((SDL_IOStream * ) io -> data ;
525
+ return SDL_GetIOSize ((SDL_IOStream * ) data );
516
526
}
517
527
518
528
FAudioIOStreamOut * FAudio_fopen_out (const char * path , const char * mode )
0 commit comments