# HG changeset patch # User Patrice Mandin # Date 1121881451 0 # Node ID c83fa1c650ddaaab730731df98a6d8a8b75978be # Parent 37b766becf3b6472daecf85092c985972208705b Move GSXB callback to C source diff -r 37b766becf3b -r c83fa1c650dd src/audio/mint/SDL_mintaudio_gsxb.c --- a/src/audio/mint/SDL_mintaudio_gsxb.c Wed Jul 20 17:40:58 2005 +0000 +++ b/src/audio/mint/SDL_mintaudio_gsxb.c Wed Jul 20 17:44:11 2005 +0000 @@ -77,6 +77,10 @@ static int Mint_CheckAudio(_THIS, SDL_AudioSpec *spec); static void Mint_InitAudio(_THIS, SDL_AudioSpec *spec); +/* GSXB callbacks */ +static void Mint_GsxbInterrupt(void); +static void Mint_GsxbNullInterrupt(void); + /*--- Audio driver bootstrap functions ---*/ static int Audio_Available(void) @@ -180,7 +184,7 @@ Buffoper(0); /* Uninstall interrupt */ - if (NSetinterrupt(2, SI_NONE, SDL_MintAudio_EmptyGsxbInterrupt)<0) { + if (NSetinterrupt(2, SI_NONE, Mint_GsxbNullInterrupt)<0) { DEBUG_PRINT((DEBUG_NAME "NSetinterrupt() failed in close\n")); } @@ -342,7 +346,7 @@ } /* Install interrupt */ - if (NSetinterrupt(2, SI_PLAY, SDL_MintAudio_GsxbInterrupt)<0) { + if (NSetinterrupt(2, SI_PLAY, Mint_GsxbInterrupt)<0) { DEBUG_PRINT((DEBUG_NAME "NSetinterrupt() failed\n")); } @@ -390,3 +394,24 @@ return(1); /* We don't use threaded audio */ } + +static void Mint_GsxbInterrupt(void) +{ + Uint8 *newbuf; + + if (SDL_MintAudio_mutex) + return; + + SDL_MintAudio_mutex=1; + + SDL_MintAudio_numbuf ^= 1; + SDL_MintAudio_Callback(); + newbuf = SDL_MintAudio_audiobuf[SDL_MintAudio_numbuf]; + Setbuffer(0, newbuf, newbuf + SDL_MintAudio_audiosize); + + SDL_MintAudio_mutex=0; +} + +static void Mint_GsxbNullInterrupt(void) +{ +} diff -r 37b766becf3b -r c83fa1c650dd src/audio/mint/SDL_mintaudio_it.S --- a/src/audio/mint/SDL_mintaudio_it.S Wed Jul 20 17:40:58 2005 +0000 +++ b/src/audio/mint/SDL_mintaudio_it.S Wed Jul 20 17:44:11 2005 +0000 @@ -30,8 +30,6 @@ .globl _SDL_MintAudio_Callback - .globl _SDL_MintAudio_GsxbInterrupt - .globl _SDL_MintAudio_EmptyGsxbInterrupt .globl _SDL_MintAudio_XbiosInterrupt .globl _SDL_MintAudio_XbiosInterruptMeasureClock .globl _SDL_MintAudio_Dma8Interrupt @@ -56,49 +54,6 @@ #define savptr 0x4a2 #define savamt 0x46 -/*--- GSXB interrupt vector ---*/ - - .text -_SDL_MintAudio_GsxbInterrupt: - - /* Check if we are not already running */ - tstw _SDL_MintAudio_mutex - bnes _SDL_MintAudio_EmptyGsxbInterrupt - notw _SDL_MintAudio_mutex - - /* Swap buffers */ - eorw #1,_SDL_MintAudio_numbuf - - moveml d0-d7/a0-a6,sp@- - - /* Callback */ - jsr _SDL_MintAudio_Callback - - /* Set new buffer */ - - moveq #0,d0 - movel _SDL_MintAudio_audiosize,d1 - - movew _SDL_MintAudio_numbuf,d0 - lsll #2,d0 - lea _SDL_MintAudio_audiobuf,a0 - movel a0@(d0:l),a1 - - lea a1@(d1:l),a2 - - movel a2,sp@- - movel a1,sp@- - clrw sp@- - movew #131,sp@- - trap #14 - lea sp@(12),sp - - moveml sp@+,d0-d7/a0-a6 - - clrw _SDL_MintAudio_mutex -_SDL_MintAudio_EmptyGsxbInterrupt: - rts - /*--- Xbios interrupt vector to measure Falcon external clock ---*/ _SDL_MintAudio_XbiosInterruptMeasureClock: /* 1 mS */