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

View file

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

View file

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

View file

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

View file

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