Mercurial > almixer_isolated
changeset 10:c808684660a7
Bug fix: Moved Invoke_Callback before CleanChannel because I was trying to get the ALmixer_Data pointer, but it was cleared:
Behavior change: Decided to make finishedNaturally return false if ending was due to expired ticks.
author | Eric Wing <ewing . public |-at-| gmail . com> |
---|---|
date | Sun, 31 Oct 2010 05:49:44 -0700 |
parents | c8282222421c |
children | eca6f008fad0 |
files | ALmixer.c |
diffstat | 1 files changed, 17 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/ALmixer.c Thu Oct 28 02:43:50 2010 -0700 +++ b/ALmixer.c Sun Oct 31 05:49:44 2010 -0700 @@ -1751,10 +1751,11 @@ ALmixer_Channel_List[channel].almixer_data->num_buffers_in_use = 0; + /* Launch callback for consistency? */ + Invoke_Channel_Done_Callback(channel, did_finish_naturally); + Clean_Channel(channel); Is_Playing_global--; - /* Launch callback for consistency? */ - Invoke_Channel_Done_Callback(channel, did_finish_naturally); counter++; } } @@ -1830,10 +1831,11 @@ ALmixer_Channel_List[i].almixer_data->num_buffers_in_use = 0; + /* Launch callback for consistency? */ + Invoke_Channel_Done_Callback(i, did_finish_naturally); + Clean_Channel(i); Is_Playing_global--; - /* Launch callback for consistency? */ - Invoke_Channel_Done_Callback(i, did_finish_naturally); /* Increment the counter */ counter++; @@ -3369,7 +3371,7 @@ */ if(0 == ticks) { - return Internal_HaltChannel(channel, AL_TRUE); + return Internal_HaltChannel(channel, AL_FALSE); } @@ -4208,7 +4210,7 @@ */ if(0 == ticks) { - return Internal_HaltChannel(channel, AL_TRUE); + return Internal_HaltChannel(channel, AL_FALSE); } if(ticks < -1) { @@ -4608,7 +4610,7 @@ && (state != AL_PAUSED) ) { /* Stop the playback */ - Internal_HaltChannel(i, AL_TRUE); + Internal_HaltChannel(i, AL_FALSE); if((error = alGetError()) != AL_NO_ERROR) { fprintf(stderr, "07Testing errpr before unqueue because getting stuff, for OS X this is expected: %s\n", @@ -4877,12 +4879,13 @@ } + /* Launch callback */ + Invoke_Channel_Done_Callback(i, AL_TRUE); + Clean_Channel(i); /* Subtract counter */ Is_Playing_global--; - /* Launch callback */ - Invoke_Channel_Done_Callback(i, AL_TRUE); /* We're done for this loop. * Go to next channel @@ -5809,13 +5812,16 @@ * Loop if necessary, or launch callback * and clear channel (or clear channel and * then launch callback?) + * Update: Need to do callback first because I reference the mixer_data and source */ + + /* Launch callback */ + Invoke_Channel_Done_Callback(i, AL_TRUE); + Clean_Channel(i); /* Subtract counter */ Is_Playing_global--; - /* Launch callback */ - Invoke_Channel_Done_Callback(i, AL_TRUE); /* We're done for this loop. * Go to next channel