Fixing some shutdown code.
This commit is contained in:
@@ -28,11 +28,6 @@ AudioSystem::AudioSystem(Emulator* emulator) :
|
||||
}
|
||||
|
||||
AudioSystem::~AudioSystem() {
|
||||
// TODO(benvanik): thread join.
|
||||
running_ = false;
|
||||
xe_thread_release(thread_);
|
||||
|
||||
xe_run_loop_release(run_loop_);
|
||||
}
|
||||
|
||||
X_STATUS AudioSystem::Setup() {
|
||||
@@ -80,13 +75,15 @@ void AudioSystem::ThreadStart() {
|
||||
//worker_->Pump();
|
||||
Sleep(1000);
|
||||
|
||||
if (!running_) {
|
||||
break;
|
||||
}
|
||||
|
||||
// Pump audio system.
|
||||
Pump();
|
||||
}
|
||||
running_ = false;
|
||||
|
||||
Shutdown();
|
||||
|
||||
xe_run_loop_release(run_loop);
|
||||
|
||||
// TODO(benvanik): call module API to kill?
|
||||
@@ -96,6 +93,11 @@ void AudioSystem::Initialize() {
|
||||
}
|
||||
|
||||
void AudioSystem::Shutdown() {
|
||||
running_ = false;
|
||||
xe_thread_join(thread_);
|
||||
xe_thread_release(thread_);
|
||||
|
||||
xe_run_loop_release(run_loop_);
|
||||
}
|
||||
|
||||
bool AudioSystem::HandlesRegister(uint64_t addr) {
|
||||
|
||||
@@ -33,6 +33,7 @@ public:
|
||||
cpu::Processor* processor() const { return processor_; }
|
||||
|
||||
virtual X_STATUS Setup();
|
||||
virtual void Shutdown();
|
||||
|
||||
bool HandlesRegister(uint64_t addr);
|
||||
virtual uint64_t ReadRegister(uint64_t addr);
|
||||
@@ -41,7 +42,6 @@ public:
|
||||
protected:
|
||||
virtual void Initialize();
|
||||
virtual void Pump() = 0;
|
||||
virtual void Shutdown();
|
||||
|
||||
private:
|
||||
static void ThreadStartThunk(AudioSystem* this_ptr) {
|
||||
|
||||
@@ -26,10 +26,11 @@ public:
|
||||
NopAudioSystem(Emulator* emulator);
|
||||
virtual ~NopAudioSystem();
|
||||
|
||||
virtual void Shutdown();
|
||||
|
||||
protected:
|
||||
virtual void Initialize();
|
||||
virtual void Pump();
|
||||
virtual void Shutdown();
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user