Fixed issues when changing CPU speed

This commit is contained in:
tudnai 2022-07-02 11:16:13 -07:00
parent c5171e30c9
commit cd699df850
2 changed files with 18 additions and 2 deletions

View File

@ -907,7 +907,7 @@ void spkr_update() {
// Fix: Unqueue was not working properly some cases, so we need to monitor
// queued elements and if there are too many, let's just wait
#define SPKR_MAX_QUEUED 100
#define SPKR_MAX_QUEUED 10
ALint queued = 0;
alGetSourcei ( spkr_src[SPKR_SRC_GAME_SFX], AL_BUFFERS_QUEUED, &queued );
al_check_error();
@ -1113,6 +1113,8 @@ void spkr_stop_sfx( ALuint src ) {
case AL_PAUSED:
case AL_PLAYING:
alSourceStop( src );
spkr_unqueue(src);
alSourcei(src, AL_BUFFER, 0);
break;
default:
@ -1163,6 +1165,18 @@ void spkr_stopAll() {
}
void spkr_stop_game_sfx() {
spkr_stop_sfx( spkr_src[SPKR_SRC_GAME_SFX] );
}
void spkr_stop_disk_sfx() {
spkr_stop_sfx( spkr_src[SPKR_SRC_DISK_ARM_SFX] );
spkr_stop_sfx( spkr_src[SPKR_SRC_DISK_MOTOR_SFX] );
spkr_stop_sfx( spkr_src[SPKR_SRC_DISK_IOERR_SFX] );
}
void update_disk_sfx( unsigned * time, ALuint src ) {
if ( *time ) {
if ( --*time == 0 ) {
@ -1183,8 +1197,8 @@ void spkr_update_disk_sfx() {
}
}
update_disk_sfx( &spkr_play_disk_motor_time, spkr_src[SPKR_SRC_DISK_MOTOR_SFX] );
update_disk_sfx( &spkr_play_disk_arm_time, spkr_src[SPKR_SRC_DISK_ARM_SFX] );
update_disk_sfx( &spkr_play_disk_motor_time, spkr_src[SPKR_SRC_DISK_MOTOR_SFX] );
update_disk_sfx( &spkr_play_disk_ioerr_time, spkr_src[SPKR_SRC_DISK_IOERR_SFX] );
}

View File

@ -111,6 +111,8 @@ extern void spkr_play_disk_motor(void);
extern void spkr_stop_disk_motor( int time );
extern void spkr_update_disk_sfx(void);
extern void spkr_stop_sfx( ALuint src );
extern void spkr_stop_game_sfx();
extern void spkr_stop_disk_sfx();
extern void spkr_stopAll(void);
extern void spkr_play_disk_arm(void);