add exp flag for loading audio device in controller
This commit is contained in:
@@ -66,6 +66,9 @@ class ExperimentFlags {
|
|||||||
// Log to the console.
|
// Log to the console.
|
||||||
bool kLogToConsole = false;
|
bool kLogToConsole = false;
|
||||||
|
|
||||||
|
// Load audio device for emulator
|
||||||
|
bool kLoadAudioDevice = false;
|
||||||
|
|
||||||
// Overworld flags
|
// Overworld flags
|
||||||
struct Overworld {
|
struct Overworld {
|
||||||
// Load and render overworld sprites to the screen. Unstable.
|
// Load and render overworld sprites to the screen. Unstable.
|
||||||
|
|||||||
@@ -194,9 +194,11 @@ absl::Status Controller::OnEntry() {
|
|||||||
RETURN_IF_ERROR(CreateSDL_Window())
|
RETURN_IF_ERROR(CreateSDL_Window())
|
||||||
RETURN_IF_ERROR(CreateRenderer())
|
RETURN_IF_ERROR(CreateRenderer())
|
||||||
RETURN_IF_ERROR(CreateGuiContext())
|
RETURN_IF_ERROR(CreateGuiContext())
|
||||||
RETURN_IF_ERROR(LoadAudioDevice())
|
if (flags()->kLoadAudioDevice) {
|
||||||
master_editor_.emulator().set_audio_buffer(audio_buffer_);
|
RETURN_IF_ERROR(LoadAudioDevice())
|
||||||
master_editor_.emulator().set_audio_device_id(audio_device_);
|
master_editor_.emulator().set_audio_buffer(audio_buffer_);
|
||||||
|
master_editor_.emulator().set_audio_device_id(audio_device_);
|
||||||
|
}
|
||||||
InitializeKeymap();
|
InitializeKeymap();
|
||||||
master_editor_.SetupScreen(renderer_);
|
master_editor_.SetupScreen(renderer_);
|
||||||
active_ = true;
|
active_ = true;
|
||||||
@@ -253,9 +255,11 @@ void Controller::DoRender() const {
|
|||||||
|
|
||||||
void Controller::OnExit() {
|
void Controller::OnExit() {
|
||||||
master_editor_.Shutdown();
|
master_editor_.Shutdown();
|
||||||
SDL_PauseAudioDevice(audio_device_, 1);
|
if (flags()->kLoadAudioDevice) {
|
||||||
SDL_CloseAudioDevice(audio_device_);
|
SDL_PauseAudioDevice(audio_device_, 1);
|
||||||
delete audio_buffer_;
|
SDL_CloseAudioDevice(audio_device_);
|
||||||
|
delete audio_buffer_;
|
||||||
|
}
|
||||||
ImGui_ImplSDLRenderer2_Shutdown();
|
ImGui_ImplSDLRenderer2_Shutdown();
|
||||||
ImGui_ImplSDL2_Shutdown();
|
ImGui_ImplSDL2_Shutdown();
|
||||||
ImGui::DestroyContext();
|
ImGui::DestroyContext();
|
||||||
@@ -263,7 +267,16 @@ void Controller::OnExit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
absl::Status Controller::CreateSDL_Window() {
|
absl::Status Controller::CreateSDL_Window() {
|
||||||
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
|
auto sdl_flags = SDL_INIT_VIDEO | SDL_INIT_TIMER;
|
||||||
|
if (flags()->kUseNewImGuiInput) {
|
||||||
|
sdl_flags |= SDL_INIT_GAMECONTROLLER;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags()->kLoadAudioDevice) {
|
||||||
|
sdl_flags |= SDL_INIT_AUDIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SDL_Init(sdl_flags) != 0) {
|
||||||
return absl::InternalError(
|
return absl::InternalError(
|
||||||
absl::StrFormat("SDL_Init: %s\n", SDL_GetError()));
|
absl::StrFormat("SDL_Init: %s\n", SDL_GetError()));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -382,6 +382,11 @@ void MasterEditor::DrawFileMenu() {
|
|||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (BeginMenu("Emulator Flags")) {
|
||||||
|
Checkbox("Load Audio Device", &mutable_flags()->kLoadAudioDevice);
|
||||||
|
ImGui::EndMenu();
|
||||||
|
}
|
||||||
|
|
||||||
Checkbox("Use built-in file dialog",
|
Checkbox("Use built-in file dialog",
|
||||||
&mutable_flags()->kNewFileDialogWrapper);
|
&mutable_flags()->kNewFileDialogWrapper);
|
||||||
Checkbox("Enable Console Logging", &mutable_flags()->kLogToConsole);
|
Checkbox("Enable Console Logging", &mutable_flags()->kLogToConsole);
|
||||||
|
|||||||
Reference in New Issue
Block a user