BACKENDS: Modify the null mixer manager to not require SDL

This commit is contained in:
Cameron Cawley 2019-11-30 16:03:46 +00:00 committed by Eugene Sandulenko
parent 697d1a8672
commit d1bfa2c4ec
5 changed files with 19 additions and 33 deletions

View file

@ -20,10 +20,10 @@
*
*/
#include "backends/mixer/nullmixer/nullsdl-mixer.h"
#include "backends/mixer/null/null-mixer.h"
#include "common/savefile.h"
NullSdlMixerManager::NullSdlMixerManager() : SdlMixerManager() {
NullMixerManager::NullMixerManager() : MixerManager() {
_outputRate = 22050;
_callsCounter = 0;
_callbackPeriod = 10;
@ -33,21 +33,21 @@ NullSdlMixerManager::NullSdlMixerManager() : SdlMixerManager() {
_samplesBuf = new uint8[_samples * 4];
}
NullSdlMixerManager::~NullSdlMixerManager() {
NullMixerManager::~NullMixerManager() {
delete _samplesBuf;
}
void NullSdlMixerManager::init() {
void NullMixerManager::init() {
_mixer = new Audio::MixerImpl(_outputRate);
assert(_mixer);
_mixer->setReady(true);
}
void NullSdlMixerManager::suspendAudio() {
void NullMixerManager::suspendAudio() {
_audioSuspended = true;
}
int NullSdlMixerManager::resumeAudio() {
int NullMixerManager::resumeAudio() {
if (!_audioSuspended) {
return -2;
}
@ -55,21 +55,13 @@ int NullSdlMixerManager::resumeAudio() {
return 0;
}
void NullSdlMixerManager::startAudio() {
}
void NullSdlMixerManager::callbackHandler(byte *samples, int len) {
assert(_mixer);
_mixer->mixCallback(samples, len);
}
void NullSdlMixerManager::update() {
void NullMixerManager::update() {
if (_audioSuspended) {
return;
}
_callsCounter++;
if ((_callsCounter % _callbackPeriod) == 0) {
callbackHandler(_samplesBuf, _samples);
assert(_mixer);
_mixer->mixCallback(_samplesBuf, _samples);
}
}

View file

@ -20,11 +20,10 @@
*
*/
#ifndef BACKENDS_MIXER_NULLSDL_H
#define BACKENDS_MIXER_NULLSDL_H
#ifndef BACKENDS_MIXER_NULL_H
#define BACKENDS_MIXER_NULL_H
#include "backends/mixer/sdl/sdl-mixer.h"
#include "common/str.h"
#include "backends/mixer/mixer.h"
/** Audio mixer which in fact does not output audio.
*
@ -35,10 +34,10 @@
* users could work without modifications.
*/
class NullSdlMixerManager : public SdlMixerManager {
class NullMixerManager : public MixerManager {
public:
NullSdlMixerManager();
virtual ~NullSdlMixerManager();
NullMixerManager();
virtual ~NullMixerManager();
virtual void init();
void update();
@ -46,11 +45,6 @@ public:
virtual void suspendAudio();
virtual int resumeAudio();
protected:
virtual void startAudio();
virtual void callbackHandler(byte *samples, int len);
private:
uint32 _outputRate;
uint32 _callsCounter;

View file

@ -344,7 +344,7 @@ endif
ifdef ENABLE_EVENTRECORDER
MODULE_OBJS += \
mixer/nullmixer/nullsdl-mixer.o \
mixer/null/null-mixer.o \
saves/recorder/recorder-saves.o
endif

View file

@ -260,7 +260,7 @@ Common::String EventRecorder::generateRecordFileName(const Common::String &targe
void EventRecorder::init(Common::String recordFileName, RecordMode mode) {
_fakeMixerManager = new NullSdlMixerManager();
_fakeMixerManager = new NullMixerManager();
_fakeMixerManager->init();
_fakeMixerManager->suspendAudio();
_fakeTimer = 0;

View file

@ -43,7 +43,7 @@
#include "common/config-manager.h"
#include "common/recorderfile.h"
#include "backends/saves/recorder/recorder-saves.h"
#include "backends/mixer/nullmixer/nullsdl-mixer.h"
#include "backends/mixer/null/null-mixer.h"
#include "backends/saves/default/default-saves.h"
@ -190,7 +190,7 @@ private:
MixerManager *_realMixerManager;
DefaultTimerManager *_timerManager;
RecorderSaveFileManager _fakeSaveManager;
NullSdlMixerManager *_fakeMixerManager;
NullMixerManager *_fakeMixerManager;
GUI::OnScreenDialog *_controlPanel;
Common::RecorderEvent _nextEvent;