mirror of
https://github.com/NoelFB/blah.git
synced 2024-11-25 16:18:57 +08:00
added audio enabled flag
This commit is contained in:
parent
b161457c66
commit
4d7f7a993a
|
@ -18,6 +18,7 @@ namespace Blah
|
|||
constexpr u32 VSync = 1 << 1;
|
||||
constexpr u32 Fullscreen = 1 << 2;
|
||||
constexpr u32 Resizable = 1 << 3;
|
||||
constexpr u32 AudioEnabled = 1 << 4;
|
||||
}
|
||||
|
||||
// Application Configuration
|
||||
|
@ -51,7 +52,7 @@ namespace Blah
|
|||
int audio_frequency_in_Hz = 44100;
|
||||
|
||||
// default starting flags
|
||||
u32 flags = Flags::VSync | Flags::Resizable | Flags::FixedTimestep;
|
||||
u32 flags = Flags::VSync | Flags::Resizable | Flags::FixedTimestep | Flags::AudioEnabled;
|
||||
|
||||
// Callback on application startup
|
||||
AppEventFn on_startup = nullptr;
|
||||
|
|
|
@ -12,15 +12,13 @@
|
|||
|
||||
using namespace Blah;
|
||||
|
||||
// Internal Audio bool
|
||||
bool Internal::audio_is_init = false;
|
||||
|
||||
namespace
|
||||
{
|
||||
// Global App State
|
||||
Config app_config;
|
||||
bool app_is_running = false;
|
||||
bool app_is_exiting = false;
|
||||
bool app_is_audio_running = false;
|
||||
u64 app_time_last;
|
||||
u64 app_time_accumulator = 0;
|
||||
u32 app_flags = 0;
|
||||
|
@ -37,6 +35,23 @@ namespace
|
|||
Platform::get_draw_size(w, h);
|
||||
}
|
||||
|
||||
void set_audio_system(bool on)
|
||||
{
|
||||
if (on && !app_is_audio_running)
|
||||
{
|
||||
int more_on_emscripten = 1;
|
||||
#ifdef __EMSCRIPTEN__
|
||||
more_on_emscripten = 4;
|
||||
#endif
|
||||
app_is_audio_running = Internal::audio_init(app_config.audio_frequency_in_Hz, 1024 * more_on_emscripten);
|
||||
}
|
||||
else if (!on && app_is_audio_running)
|
||||
{
|
||||
Internal::audio_shutdown();
|
||||
app_is_audio_running = false;
|
||||
}
|
||||
}
|
||||
|
||||
// A dummy Target that represents the Back Buffer.
|
||||
// It doesn't contain any data, rather it forwards calls along to the actual BackBuffer.
|
||||
class BackBuffer final : public Target
|
||||
|
@ -101,15 +116,8 @@ bool App::run(const Config* c)
|
|||
}
|
||||
|
||||
// initialize audio
|
||||
{
|
||||
if (!Internal::audio_is_init) {
|
||||
int more_on_emscripten = 1;
|
||||
#ifdef __EMSCRIPTEN__
|
||||
more_on_emscripten = 4;
|
||||
#endif
|
||||
Internal::audio_is_init = Internal::audio_init(c->audio_frequency_in_Hz, 1024 * more_on_emscripten);
|
||||
}
|
||||
}
|
||||
if (get_flag(Flags::AudioEnabled))
|
||||
set_audio_system(true);
|
||||
|
||||
// initialize graphics
|
||||
{
|
||||
|
@ -267,27 +275,21 @@ void Internal::app_step()
|
|||
}
|
||||
|
||||
// Update audio
|
||||
if (Internal::audio_is_init)
|
||||
if (app_is_audio_running)
|
||||
Blah::Internal::audio_update();
|
||||
}
|
||||
|
||||
void Internal::app_shutdown()
|
||||
{
|
||||
// shutdown systems
|
||||
Internal::input_shutdown();
|
||||
|
||||
if (app_renderer_api)
|
||||
{
|
||||
app_renderer_api->shutdown();
|
||||
delete app_renderer_api;
|
||||
}
|
||||
app_renderer_api = nullptr;
|
||||
|
||||
if (Internal::audio_is_init)
|
||||
{
|
||||
Internal::audio_shutdown();
|
||||
Internal::audio_is_init = false;
|
||||
}
|
||||
|
||||
set_audio_system(false);
|
||||
Platform::shutdown();
|
||||
|
||||
// clear static App state
|
||||
|
@ -410,9 +412,13 @@ void App::set_flag(u32 flag, bool enabled)
|
|||
|
||||
if (was != app_flags)
|
||||
{
|
||||
// tell platform & renderer
|
||||
Platform::set_app_flags(app_flags);
|
||||
if (app_renderer_api)
|
||||
app_renderer_api->set_app_flags(app_flags);
|
||||
|
||||
// potentially toggle audio system
|
||||
set_audio_system(get_flag(Flags::AudioEnabled));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,16 +19,16 @@ namespace Blah
|
|||
bool audio_init(unsigned play_frequency_in_Hz, int buffered_samples)
|
||||
{
|
||||
cs_error_t err = cs_init(Platform::d3d11_get_hwnd(), play_frequency_in_Hz, buffered_samples, NULL);
|
||||
if (err != CUTE_SOUND_ERROR_NONE) {
|
||||
if (err != CUTE_SOUND_ERROR_NONE)
|
||||
{
|
||||
Log::error(cs_error_as_string(err));
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifndef BLAH_NO_THREADING
|
||||
cs_spawn_mix_thread();
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
void audio_shutdown()
|
||||
|
|
|
@ -9,8 +9,6 @@ namespace Blah
|
|||
{
|
||||
namespace Internal
|
||||
{
|
||||
extern bool audio_is_init;
|
||||
|
||||
void app_step();
|
||||
void app_shutdown();
|
||||
Renderer* app_renderer();
|
||||
|
|
Loading…
Reference in New Issue
Block a user