SW: Fix "MV_GetVoice(): bad handle" log spam

git-svn-id: https://svn.eduke32.com/eduke32@8311 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/draw.cpp
#	source/sw/src/menus.cpp
This commit is contained in:
hendricks266 2019-11-26 08:25:08 +00:00 committed by Christoph Oelckers
parent f411b72783
commit 510e737360
8 changed files with 65 additions and 46 deletions

View file

@ -109,6 +109,7 @@ static FORCE_INLINE int FX_Pan3D(int handle, int angle, int distance)
return FX_CheckMVErr(MV_Pan3D(handle, angle, distance)); return FX_CheckMVErr(MV_Pan3D(handle, angle, distance));
} }
static FORCE_INLINE int FX_SoundActive(int handle) { return MV_VoicePlaying(handle); } static FORCE_INLINE int FX_SoundActive(int handle) { return MV_VoicePlaying(handle); }
static FORCE_INLINE int FX_SoundValidAndActive(int handle) { return handle > 0 && MV_VoicePlaying(handle); }
static FORCE_INLINE int FX_SoundsPlaying(void) { return MV_VoicesPlaying(); } static FORCE_INLINE int FX_SoundsPlaying(void) { return MV_VoicesPlaying(); }
static FORCE_INLINE int FX_StopSound(int handle) { return FX_CheckMVErr(MV_Kill(handle)); } static FORCE_INLINE int FX_StopSound(int handle) { return FX_CheckMVErr(MV_Kill(handle)); }
static FORCE_INLINE int FX_StopAllSounds(void) { return FX_CheckMVErr(MV_KillAllVoices()); } static FORCE_INLINE int FX_StopAllSounds(void) { return FX_CheckMVErr(MV_KillAllVoices()); }

View file

@ -1311,9 +1311,9 @@ MNU_OrderCustom(UserCall call, MenuItem *item)
{ {
DidOrderSound = TRUE; DidOrderSound = TRUE;
choose_snd = STD_RANDOM_RANGE(1000); choose_snd = STD_RANDOM_RANGE(1000);
if (choose_snd > 500 && !FX_SoundActive(wanghandle)) if (choose_snd > 500 && !FX_SoundValidAndActive(wanghandle))
wanghandle = PlaySound(DIGI_WANGORDER1, &zero, &zero, &zero, v3df_dontpan); wanghandle = PlaySound(DIGI_WANGORDER1, &zero, &zero, &zero, v3df_dontpan);
else if (!FX_SoundActive(wanghandle)) else if (!FX_SoundValidAndActive(wanghandle))
wanghandle = PlaySound(DIGI_WANGORDER2, &zero, &zero, &zero, v3df_dontpan); wanghandle = PlaySound(DIGI_WANGORDER2, &zero, &zero, &zero, v3df_dontpan);
} }
@ -3761,11 +3761,11 @@ static void MNU_DownLevel(MenuGroup * group)
static void MNU_UpLevel(void) static void MNU_UpLevel(void)
{ {
int zero = 0; int zero = 0;
static int handle1=0; static int handle1;
// if run out of menus then EXIT // if run out of menus then EXIT
if (!menuarrayptr) if (!menuarrayptr)
{ {
if(!FX_SoundActive(handle1)) if (!FX_SoundValidAndActive(handle1))
handle1 = PlaySound(DIGI_STARCLINK,&zero,&zero,&zero,v3df_dontpan); handle1 = PlaySound(DIGI_STARCLINK,&zero,&zero,&zero,v3df_dontpan);
ExitMenus(); ExitMenus();
return; return;
@ -4106,7 +4106,7 @@ void MNU_DoMenu( CTLType type, PLAYERp pp )
SWBOOL resetitem; SWBOOL resetitem;
unsigned char key; unsigned char key;
int zero = 0; int zero = 0;
static int handle2 = 0; static int handle2;
static int limitmove=0; static int limitmove=0;
static SWBOOL select_held=FALSE; static SWBOOL select_held=FALSE;
@ -4140,7 +4140,7 @@ void MNU_DoMenu( CTLType type, PLAYERp pp )
{ {
static int handle5=0; static int handle5=0;
I_GeneralTriggerClear(); I_GeneralTriggerClear();
if (!FX_SoundActive(handle5)) if (!FX_SoundValidAndActive(handle5))
handle5 = PlaySound(DIGI_SWORDSWOOSH,&zero,&zero,&zero,v3df_dontpan); handle5 = PlaySound(DIGI_SWORDSWOOSH,&zero,&zero,&zero,v3df_dontpan);
inputState.ClearKeysDown(); inputState.ClearKeysDown();
MNU_DoItem(); MNU_DoItem();
@ -4163,16 +4163,16 @@ void MNU_DoMenu( CTLType type, PLAYERp pp )
else if (I_ReturnTrigger()) else if (I_ReturnTrigger())
{ {
I_ReturnTriggerClear(); I_ReturnTriggerClear();
static int handle3=0; static int handle3;
if (!FX_SoundActive(handle3)) if (!FX_SoundValidAndActive(handle3))
handle3 = PlaySound(DIGI_SWORDSWOOSH,&zero,&zero,&zero,v3df_dontpan); handle3 = PlaySound(DIGI_SWORDSWOOSH,&zero,&zero,&zero,v3df_dontpan);
MNU_UpLevel(); MNU_UpLevel();
resetitem = TRUE; resetitem = TRUE;
} }
else if (MNU_DoHotkey()) else if (MNU_DoHotkey())
{ {
static int handle4=0; static int handle4;
if (!FX_SoundActive(handle4)) if (!FX_SoundValidAndActive(handle4))
handle4 = PlaySound(DIGI_STAR,&zero,&zero,&zero,v3df_dontpan); handle4 = PlaySound(DIGI_STAR,&zero,&zero,&zero,v3df_dontpan);
resetitem = TRUE; resetitem = TRUE;
} }

View file

@ -173,7 +173,7 @@ int DoToiletGirl(short SpriteNum)
choose_snd = RANDOM_P2(1024<<4)>>4; choose_snd = RANDOM_P2(1024<<4)>>4;
if (!FX_SoundActive(handle)) if (!FX_SoundValidAndActive(handle))
{ {
if (choose_snd > 750) if (choose_snd > 750)
handle = PlaySound(DIGI_TOILETGIRLFART1,&sp->x,&sp->y,&sp->z,v3df_dontpan); handle = PlaySound(DIGI_TOILETGIRLFART1,&sp->x,&sp->y,&sp->z,v3df_dontpan);
@ -188,7 +188,7 @@ int DoToiletGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
if (RANDOM_RANGE(1000<<8)>>8 > 500) if (RANDOM_RANGE(1000<<8)>>8 > 500)
madhandle = PlaySound(DIGI_ANIMEMAD1,&sp->x,&sp->y,&sp->z,v3df_dontpan); madhandle = PlaySound(DIGI_ANIMEMAD1,&sp->x,&sp->y,&sp->z,v3df_dontpan);
@ -235,7 +235,7 @@ int NullToiletGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
if (RANDOM_RANGE(1000<<8)>>8 > 500) if (RANDOM_RANGE(1000<<8)>>8 > 500)
madhandle = PlaySound(DIGI_ANIMEMAD1,&sp->x,&sp->y,&sp->z,v3df_dontpan); madhandle = PlaySound(DIGI_ANIMEMAD1,&sp->x,&sp->y,&sp->z,v3df_dontpan);
@ -416,7 +416,7 @@ int DoWashGirl(short SpriteNum)
{ {
static int handle; static int handle;
if (!FX_SoundActive(handle)) if (!FX_SoundValidAndActive(handle))
{ {
if (RANDOM_P2(1024<<4)>>4 > 500) if (RANDOM_P2(1024<<4)>>4 > 500)
handle = PlaySound(DIGI_ANIMESING1,&sp->x,&sp->y,&sp->z,v3df_dontpan); handle = PlaySound(DIGI_ANIMESING1,&sp->x,&sp->y,&sp->z,v3df_dontpan);
@ -446,7 +446,7 @@ int DoWashGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
if (RANDOM_RANGE(1000<<8)>>8 > 500) if (RANDOM_RANGE(1000<<8)>>8 > 500)
madhandle = PlaySound(DIGI_ANIMEMAD1,&sp->x,&sp->y,&sp->z,v3df_dontpan); madhandle = PlaySound(DIGI_ANIMEMAD1,&sp->x,&sp->y,&sp->z,v3df_dontpan);
@ -490,7 +490,7 @@ int NullWashGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
if (RANDOM_RANGE(1000<<8)>>8 > 500) if (RANDOM_RANGE(1000<<8)>>8 > 500)
madhandle = PlaySound(DIGI_ANIMEMAD1,&sp->x,&sp->y,&sp->z,v3df_dontpan); madhandle = PlaySound(DIGI_ANIMEMAD1,&sp->x,&sp->y,&sp->z,v3df_dontpan);
@ -1305,7 +1305,7 @@ int DoCarGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
short choose; short choose;
choose = RANDOM_RANGE(1000); choose = RANDOM_RANGE(1000);
@ -1360,7 +1360,7 @@ int NullCarGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
short choose; short choose;
choose = RANDOM_RANGE(1000); choose = RANDOM_RANGE(1000);
@ -1532,7 +1532,7 @@ int DoMechanicGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
short choose; short choose;
choose = RANDOM_RANGE(1000); choose = RANDOM_RANGE(1000);
@ -1587,7 +1587,7 @@ int NullMechanicGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
short choose; short choose;
choose = RANDOM_RANGE(1000); choose = RANDOM_RANGE(1000);
@ -1760,7 +1760,7 @@ int DoSailorGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
short choose; short choose;
choose = RANDOM_RANGE(1000); choose = RANDOM_RANGE(1000);
@ -1820,7 +1820,7 @@ int NullSailorGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
short choose; short choose;
choose = RANDOM_RANGE(1000); choose = RANDOM_RANGE(1000);
@ -1968,7 +1968,7 @@ int DoPruneGirl(short SpriteNum)
USERp u = User[SpriteNum]; USERp u = User[SpriteNum];
SPRITEp sp = User[SpriteNum]->SpriteP; SPRITEp sp = User[SpriteNum]->SpriteP;
short rnd_range = 0; short rnd_range = 0;
static int madhandle=0,coyhandle=0; static int madhandle, coyhandle;
SWBOOL ICanSee = FALSE; SWBOOL ICanSee = FALSE;
DoActorPickClosePlayer(SpriteNum); DoActorPickClosePlayer(SpriteNum);
@ -1978,7 +1978,7 @@ int DoPruneGirl(short SpriteNum)
{ {
if ((u->WaitTics -= ACTORMOVETICS) <= 0 && ICanSee) if ((u->WaitTics -= ACTORMOVETICS) <= 0 && ICanSee)
{ {
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
short choose; short choose;
choose = STD_RANDOM_RANGE(1000); choose = STD_RANDOM_RANGE(1000);
@ -1998,7 +1998,7 @@ int DoPruneGirl(short SpriteNum)
} }
else else
{ {
if (!FX_SoundActive(coyhandle)) if (!FX_SoundValidAndActive(coyhandle))
{ {
short choose; short choose;
choose = STD_RANDOM_RANGE(1000); choose = STD_RANDOM_RANGE(1000);
@ -2049,7 +2049,7 @@ int NullPruneGirl(short SpriteNum)
{ {
static int madhandle; static int madhandle;
if (!FX_SoundActive(madhandle)) if (!FX_SoundValidAndActive(madhandle))
{ {
short choose; short choose;
choose = RANDOM_RANGE(1000); choose = RANDOM_RANGE(1000);

View file

@ -997,7 +997,11 @@ int WeaponOperate(PLAYERp pp)
if (pp->WpnRocketType != 2 || pp->CurWpn != pp->Wpn[WPN_MICRO]) if (pp->WpnRocketType != 2 || pp->CurWpn != pp->Wpn[WPN_MICRO])
{ {
pp->InitingNuke = FALSE; pp->InitingNuke = FALSE;
FX_StopSound(pp->nukevochandle); if (pp->nukevochandle > 0)
{
FX_StopSound(pp->nukevochandle);
pp->nukevochandle = 0;
}
} }
return 0; return 0;

View file

@ -3736,7 +3736,7 @@ DoPlayerFall(PLAYERp pp)
PlaySound(DIGI_HITGROUND, &pp->posx, &pp->posy, &pp->posz, v3df_follow|v3df_dontpan); PlaySound(DIGI_HITGROUND, &pp->posx, &pp->posy, &pp->posz, v3df_follow|v3df_dontpan);
} }
if (handle && FX_SoundActive(handle)) if (FX_SoundValidAndActive(handle))
{ {
// My sound code will detect the sound has stopped and clean up // My sound code will detect the sound has stopped and clean up
// for you. // for you.
@ -5166,9 +5166,10 @@ DoPlayerStopDiveNoWarp(PLAYERp pp)
if (!NoMeters) SetRedrawScreen(pp); if (!NoMeters) SetRedrawScreen(pp);
if (pp->TalkVocHandle && FX_SoundActive(pp->TalkVocHandle)) if (FX_SoundValidAndActive(pp->TalkVocHandle))
{ {
FX_StopSound(pp->TalkVocHandle); FX_StopSound(pp->TalkVocHandle);
pp->TalkVocHandle = 0;
pp->PlayerTalking = FALSE; pp->PlayerTalking = FALSE;
} }
@ -5201,9 +5202,10 @@ DoPlayerStopDive(PLAYERp pp)
if (!NoMeters) SetRedrawScreen(pp); if (!NoMeters) SetRedrawScreen(pp);
if (pp->TalkVocHandle && FX_SoundActive(pp->TalkVocHandle)) if (FX_SoundValidAndActive(pp->TalkVocHandle))
{ {
FX_StopSound(pp->TalkVocHandle); FX_StopSound(pp->TalkVocHandle);
pp->TalkVocHandle = 0;
pp->PlayerTalking = FALSE; pp->PlayerTalking = FALSE;
} }
@ -6503,7 +6505,7 @@ DoPlayerBeginDie(PLAYERp pp)
// Override any previous talking, death scream has precedance // Override any previous talking, death scream has precedance
if (pp->PlayerTalking) if (pp->PlayerTalking)
{ {
if (FX_SoundActive(pp->TalkVocHandle)) if (FX_SoundValidAndActive(pp->TalkVocHandle))
FX_StopSound(pp->TalkVocHandle); FX_StopSound(pp->TalkVocHandle);
pp->PlayerTalking = FALSE; pp->PlayerTalking = FALSE;
pp->TalkVocnum = -1; pp->TalkVocnum = -1;

View file

@ -1246,11 +1246,11 @@ int DoRipper2StandHeart(short SpriteNum)
{ {
SPRITEp sp = &sprite[SpriteNum]; SPRITEp sp = &sprite[SpriteNum];
USERp u = User[SpriteNum]; USERp u = User[SpriteNum];
static int riphearthandle=0; static int riphearthandle;
NullRipper2(SpriteNum); NullRipper2(SpriteNum);
if (!FX_SoundActive(riphearthandle)) if (!FX_SoundValidAndActive(riphearthandle))
riphearthandle = PlaySound(DIGI_RIPPER2HEARTOUT,&sp->x,&sp->y,&sp->z,v3df_none); riphearthandle = PlaySound(DIGI_RIPPER2HEARTOUT,&sp->x,&sp->y,&sp->z,v3df_none);
if ((u->WaitTics -= ACTORMOVETICS) <= 0) if ((u->WaitTics -= ACTORMOVETICS) <= 0)

View file

@ -527,9 +527,10 @@ StopSong(void)
if (DemoMode) if (DemoMode)
return; return;
if (SongType == SongTypeWave && SongVoice >= 0) if (SongType == SongTypeWave && SongVoice > 0)
{ {
FX_StopSound(SongVoice); FX_StopSound(SongVoice);
SongVoice = 0;
} }
else if (SongType == SongTypeMIDI) else if (SongType == SongTypeMIDI)
{ {
@ -553,7 +554,7 @@ PauseSong(SWBOOL pauseon)
{ {
if (!MusicEnabled()) return; if (!MusicEnabled()) return;
if (SongType == SongTypeWave && SongVoice >= 0) if (SongType == SongTypeWave && SongVoice > 0)
{ {
FX_PauseVoice(SongVoice, pauseon); FX_PauseVoice(SongVoice, pauseon);
} }
@ -1313,9 +1314,10 @@ DeleteNoSoundOwner(short spritenum)
// Make sure to stop active // Make sure to stop active
// sounds // sounds
if (FX_SoundActive(vp->handle)) if (FX_SoundValidAndActive(vp->handle))
{ {
FX_StopSound(vp->handle); FX_StopSound(vp->handle);
vp->handle = 0;
} }
#if 0 #if 0
@ -1372,9 +1374,10 @@ void DeleteNoFollowSoundOwner(short spritenum)
// If the follow flag is set, compare the x and y addresses. // If the follow flag is set, compare the x and y addresses.
if ((vp->flags & v3df_follow) && vp->x == &sp->x && vp->y == &sp->y) if ((vp->flags & v3df_follow) && vp->x == &sp->x && vp->y == &sp->y)
{ {
if (FX_SoundActive(vp->handle)) if (FX_SoundValidAndActive(vp->handle))
{ {
FX_StopSound(vp->handle); FX_StopSound(vp->handle);
vp->handle = 0;
} }
#if 0 #if 0
@ -1529,7 +1532,7 @@ DoTimedSound(VOC3D_INFOp p)
if (p->tics >= p->maxtics) if (p->tics >= p->maxtics)
{ {
if (!FX_SoundActive(p->handle)) if (!FX_SoundValidAndActive(p->handle))
{ {
// Check for special case ambient sounds // Check for special case ambient sounds
p->num = RandomizeAmbientSpecials(p->num); p->num = RandomizeAmbientSpecials(p->num);
@ -1549,7 +1552,7 @@ DoTimedSound(VOC3D_INFOp p)
p->deleted = TRUE; // Mark old sound for deletion p->deleted = TRUE; // Mark old sound for deletion
} }
} }
} // !FX_SoundActive }
p->tics = 0; p->tics = 0;
//while (p->tics >= p->maxtics) // Really stupid thing to do! //while (p->tics >= p->maxtics) // Really stupid thing to do!
@ -1577,8 +1580,11 @@ StopAmbientSound(void)
if (p->flags & v3df_kill) if (p->flags & v3df_kill)
{ {
if (FX_SoundActive(p->handle)) if (FX_SoundValidAndActive(p->handle))
{
FX_StopSound(p->handle); // Make sure to stop active sounds FX_StopSound(p->handle); // Make sure to stop active sounds
p->handle = 0;
}
p->deleted = TRUE; p->deleted = TRUE;
} }
@ -1668,8 +1674,11 @@ DoUpdateSounds3D(void)
// Is the sound slated for death? Kill it, otherwise play it. // Is the sound slated for death? Kill it, otherwise play it.
if (p->flags & v3df_kill) if (p->flags & v3df_kill)
{ {
if (FX_SoundActive(p->handle)) if (FX_SoundValidAndActive(p->handle))
{
FX_StopSound(p->handle); // Make sure to stop active sounds FX_StopSound(p->handle); // Make sure to stop active sounds
p->handle = 0;
}
//DSPRINTF(ds,"%d had v3df_kill.\n",p->num); //DSPRINTF(ds,"%d had v3df_kill.\n",p->num);
//MONO_PRINT(ds); //MONO_PRINT(ds);
@ -1677,7 +1686,7 @@ DoUpdateSounds3D(void)
} }
else else
{ {
if (!FX_SoundActive(p->handle) && !looping) if (!FX_SoundValidAndActive(p->handle) && !looping)
{ {
if (p->flags & v3df_intermit) if (p->flags & v3df_intermit)
{ {
@ -1691,7 +1700,7 @@ DoUpdateSounds3D(void)
p->deleted = TRUE; p->deleted = TRUE;
} }
} }
else if (FX_SoundActive(p->handle)) else if (FX_SoundValidAndActive(p->handle))
{ {
if (p->flags & v3df_follow) if (p->flags & v3df_follow)
{ {
@ -1732,6 +1741,7 @@ DoUpdateSounds3D(void)
if (dist >= 255 && p->vp->voc_distance == DIST_NORMAL) if (dist >= 255 && p->vp->voc_distance == DIST_NORMAL)
{ {
FX_StopSound(p->handle); // Make sure to stop active FX_StopSound(p->handle); // Make sure to stop active
p->handle = 0;
// sounds // sounds
} }
else else
@ -1770,7 +1780,7 @@ DoUpdateSounds3D(void)
} }
} }
} }
else if (!FX_SoundActive(p->handle) && looping) else if (!FX_SoundValidAndActive(p->handle) && looping)
{ {
if (p->flags & v3df_follow) if (p->flags & v3df_follow)
{ {
@ -1898,7 +1908,9 @@ Terminate3DSounds(void)
while (vp) while (vp)
{ {
FX_StopSound(vp->handle); // Make sure to stop active sounds if (vp->handle > 0)
FX_StopSound(vp->handle); // Make sure to stop active sounds
vp->handle = 0;
vp->deleted = TRUE; vp->deleted = TRUE;
vp = vp->next; vp = vp->next;
} }

View file

@ -725,7 +725,7 @@ int DoZillaMove(short SpriteNum)
//DoActorSlide(SpriteNum); //DoActorSlide(SpriteNum);
// Random Zilla taunts // Random Zilla taunts
if (!FX_SoundActive(handle)) if (!FX_SoundValidAndActive(handle))
{ {
choose = STD_RANDOM_RANGE(1000); choose = STD_RANDOM_RANGE(1000);
if (choose > 990) if (choose > 990)