Attempt to fix music callback crash
This is a really old saturn fix
This commit is contained in:
parent
a6661fc2e6
commit
4c30979447
2 changed files with 25 additions and 8 deletions
|
|
@ -96,6 +96,7 @@ static UINT32 fading_timer;
|
|||
static UINT32 fading_duration;
|
||||
static INT32 fading_id;
|
||||
static void (*fading_callback)(void);
|
||||
static boolean fading_do_callback;
|
||||
static boolean fading_nocleanup;
|
||||
|
||||
// any access (read/write) to this struct MUST lock the mutex
|
||||
|
|
@ -263,6 +264,8 @@ static void var_cleanup(void)
|
|||
else
|
||||
fading_nocleanup = false; // use it once, set it back immediately
|
||||
|
||||
fading_do_callback = false;
|
||||
|
||||
internal_volume = 1.0f;
|
||||
}
|
||||
|
||||
|
|
@ -532,6 +535,14 @@ void I_UpdateSound(void)
|
|||
#ifndef HAVE_THREADS
|
||||
UpdateSound(&audio);
|
||||
#endif
|
||||
|
||||
if (fading_do_callback)
|
||||
{
|
||||
if (fading_callback)
|
||||
(*fading_callback)();
|
||||
fading_callback = NULL;
|
||||
fading_do_callback = false;
|
||||
}
|
||||
}
|
||||
|
||||
static void AudioThread(void *userdata)
|
||||
|
|
@ -929,10 +940,8 @@ void I_SetSfxVolume(UINT8 volume)
|
|||
|
||||
static void do_fading_callback(void)
|
||||
{
|
||||
if (fading_callback)
|
||||
(*fading_callback)();
|
||||
|
||||
fading_callback = NULL;
|
||||
// TODO: Should I use a mutex here or something?
|
||||
fading_do_callback = true;
|
||||
}
|
||||
|
||||
static UINT32 music_fade(UINT32 interval, void *param)
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ static UINT32 fading_timer;
|
|||
static UINT32 fading_duration;
|
||||
static INT32 fading_id;
|
||||
static void (*fading_callback)(void);
|
||||
static boolean fading_do_callback;
|
||||
static boolean fading_nocleanup;
|
||||
|
||||
#ifdef HAVE_GME
|
||||
|
|
@ -148,6 +149,8 @@ static void var_cleanup(void)
|
|||
else
|
||||
fading_nocleanup = false; // use it once, set it back immediately
|
||||
|
||||
fading_do_callback = false;
|
||||
|
||||
internal_volume = MAX_VOLUME;
|
||||
}
|
||||
|
||||
|
|
@ -259,6 +262,13 @@ void I_ShutdownSound(void)
|
|||
|
||||
void I_UpdateSound(void)
|
||||
{
|
||||
if (fading_do_callback)
|
||||
{
|
||||
if (fading_callback)
|
||||
(*fading_callback)();
|
||||
fading_callback = NULL;
|
||||
fading_do_callback = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// ------------------------
|
||||
|
|
@ -612,10 +622,8 @@ static UINT32 get_adjusted_position(UINT32 position)
|
|||
|
||||
static void do_fading_callback(void)
|
||||
{
|
||||
if (fading_callback)
|
||||
(*fading_callback)();
|
||||
|
||||
fading_callback = NULL;
|
||||
// TODO: Should I use a mutex here or something?
|
||||
fading_do_callback = true;
|
||||
}
|
||||
|
||||
/// ------------------------
|
||||
|
|
|
|||
Loading…
Reference in a new issue