Add Controller::PlayAudio for Emulator
This commit is contained in:
@@ -168,6 +168,15 @@ void Controller::OnInput() {
|
|||||||
|
|
||||||
void Controller::OnLoad() { PRINT_IF_ERROR(master_editor_.Update()); }
|
void Controller::OnLoad() { PRINT_IF_ERROR(master_editor_.Update()); }
|
||||||
|
|
||||||
|
void Controller::PlayAudio() {
|
||||||
|
if (master_editor_.emulator().running()) {
|
||||||
|
master_editor_.emulator().snes().SetSamples(audio_buffer_, wanted_samples_);
|
||||||
|
if (SDL_GetQueuedAudioSize(audio_device_) <= wanted_samples_ * 4 * 6) {
|
||||||
|
SDL_QueueAudio(audio_device_, audio_buffer_, wanted_samples_ * 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Controller::DoRender() const {
|
void Controller::DoRender() const {
|
||||||
ImGui::Render();
|
ImGui::Render();
|
||||||
SDL_RenderClear(renderer_.get());
|
SDL_RenderClear(renderer_.get());
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class Controller : public ExperimentFlags {
|
|||||||
absl::Status OnEntry();
|
absl::Status OnEntry();
|
||||||
void OnInput();
|
void OnInput();
|
||||||
void OnLoad();
|
void OnLoad();
|
||||||
|
void PlayAudio();
|
||||||
void DoRender() const;
|
void DoRender() const;
|
||||||
void OnExit();
|
void OnExit();
|
||||||
|
|
||||||
@@ -61,7 +62,10 @@ class Controller : public ExperimentFlags {
|
|||||||
friend int ::main(int argc, char **argv);
|
friend int ::main(int argc, char **argv);
|
||||||
|
|
||||||
bool active_;
|
bool active_;
|
||||||
|
int wanted_samples_;
|
||||||
|
int16_t *audio_buffer_;
|
||||||
editor::MasterEditor master_editor_;
|
editor::MasterEditor master_editor_;
|
||||||
|
SDL_AudioDeviceID audio_device_;
|
||||||
std::shared_ptr<SDL_Window> window_;
|
std::shared_ptr<SDL_Window> window_;
|
||||||
std::shared_ptr<SDL_Renderer> renderer_;
|
std::shared_ptr<SDL_Renderer> renderer_;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -63,6 +63,8 @@ class MasterEditor : public SharedRom,
|
|||||||
|
|
||||||
void Shutdown() { overworld_editor_.Shutdown(); }
|
void Shutdown() { overworld_editor_.Shutdown(); }
|
||||||
|
|
||||||
|
auto emulator() -> emu::Emulator& { return emulator_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void DrawFileDialog();
|
void DrawFileDialog();
|
||||||
void DrawStatusPopup();
|
void DrawStatusPopup();
|
||||||
@@ -101,7 +103,7 @@ class MasterEditor : public SharedRom,
|
|||||||
ScreenEditor screen_editor_;
|
ScreenEditor screen_editor_;
|
||||||
SpriteEditor sprite_editor_;
|
SpriteEditor sprite_editor_;
|
||||||
|
|
||||||
Editor *current_editor_ = nullptr;
|
Editor* current_editor_ = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace editor
|
} // namespace editor
|
||||||
|
|||||||
Reference in New Issue
Block a user