[SDL] SDL application crash when using Mix_CloseAudio

Jacek Dylak dylak at gazeta.pl
Thu Nov 16 05:45:48 PST 2006


Hi all,

I'm using the SDL to produce some visual and audio stimulation in our 
experiments. For audio I am using SDL_Mixer. And I've got quite strange 
problem with it. When using the Mix_CloseAudio in my code to cleanup at the 
end of the SDL related part, the application crash when returning from the run 
method which actually perform the experiment. But when the Mix_CloseAudio is 
commented out the application works smoothly without any problems.

I can't let it be as it because the SDL part is executed on the top of the 
normal setup window - the idea is to allow the user to run experiment several 
times without exiting the application. And without Mix_CloseAudio, when the 
experiment is executed for the second time there is no audio at all.

The experiment executing method is provided below with all SDL related code. 
The SDL_Mixer has been added to the working correctly code, so I am quite sure 
that the problem is somehow related to the SDL_Mixer.

Does anyone has any idea of how to solve it or maybe has similar problems?

Best regards
Jacek

void run()
{
   ::SetEnvironmentVariableA( "SDL_VIDEODRIVER" , "directx" );
   SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO|SDL_INIT_AUDIO);
   const SDL_VideoInfo* vi = SDL_GetVideoInfo();
   SDL_Surface* pScreen = SDL_SetVideoMode( pm.in_nScreenWidthPix , 
pm.in_nScreenHeightPix , vi->vfmt->BitsPerPixel , SDL_FULLSCREEN | 
SDL_HWSURFACE | SDL_DOUBLEBUF );
   TTF_Init();

   Mix_OpenAudio( MIX_DEFAULT_FREQUENCY , MIX_DEFAULT_FORMAT , 2 , 512 );
   Mix_AllocateChannels( 16 );

   //running experiment here - the code here does not call any
   //SDL_Mixer related methods

   Mix_CloseAudio(); //commenting this line prevents app from crashing
   TTF_Quit();
   SDL_Quit();

   //actually the application crash occurs here, when returning from this method
}





More information about the SDL mailing list