You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Merge pull request #112170 from lawnjelly/disallow_muting_android
[3.x] Disallow muting on Android
This commit is contained in:
@@ -50,6 +50,10 @@
|
|||||||
// #define GODOT_AUDIO_DRIVER_MANAGER_LOGGING_ENABLED
|
// #define GODOT_AUDIO_DRIVER_MANAGER_LOGGING_ENABLED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ANDROID_ENABLED
|
||||||
|
#define GODOT_AUDIO_DRIVER_DISALLOW_MUTING
|
||||||
|
#endif
|
||||||
|
|
||||||
AudioDriver *AudioDriver::singleton = nullptr;
|
AudioDriver *AudioDriver::singleton = nullptr;
|
||||||
AudioDriver *AudioDriver::get_singleton() {
|
AudioDriver *AudioDriver::get_singleton() {
|
||||||
return singleton;
|
return singleton;
|
||||||
@@ -182,10 +186,16 @@ int AudioDriverManager::driver_count = 1;
|
|||||||
int AudioDriverManager::desired_driver_id = -2;
|
int AudioDriverManager::desired_driver_id = -2;
|
||||||
int AudioDriverManager::actual_driver_id = -2;
|
int AudioDriverManager::actual_driver_id = -2;
|
||||||
|
|
||||||
|
#ifdef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
|
||||||
|
uint32_t AudioDriverManager::_mute_state = 0;
|
||||||
|
uint32_t AudioDriverManager::_mute_state_final = 0;
|
||||||
|
uint32_t AudioDriverManager::_mute_state_mask = 0;
|
||||||
|
#else
|
||||||
// Defaults are for the editor, outside the editor will be overridden.
|
// Defaults are for the editor, outside the editor will be overridden.
|
||||||
uint32_t AudioDriverManager::_mute_state = AudioDriverManager::MuteFlags::MUTE_FLAG_DISABLED;
|
uint32_t AudioDriverManager::_mute_state = AudioDriverManager::MuteFlags::MUTE_FLAG_DISABLED;
|
||||||
uint32_t AudioDriverManager::_mute_state_final = AudioDriverManager::MuteFlags::MUTE_FLAG_DISABLED;
|
uint32_t AudioDriverManager::_mute_state_final = AudioDriverManager::MuteFlags::MUTE_FLAG_DISABLED;
|
||||||
uint32_t AudioDriverManager::_mute_state_mask = UINT32_MAX;
|
uint32_t AudioDriverManager::_mute_state_mask = UINT32_MAX;
|
||||||
|
#endif
|
||||||
|
|
||||||
void AudioDriverManager::add_driver(AudioDriver *p_driver) {
|
void AudioDriverManager::add_driver(AudioDriver *p_driver) {
|
||||||
ERR_FAIL_COND(driver_count >= MAX_DRIVERS);
|
ERR_FAIL_COND(driver_count >= MAX_DRIVERS);
|
||||||
@@ -301,12 +311,22 @@ void AudioDriverManager::initialize(int p_driver) {
|
|||||||
bool mute_on_silence = GLOBAL_DEF("audio/muting/mute_on_silence", false);
|
bool mute_on_silence = GLOBAL_DEF("audio/muting/mute_on_silence", false);
|
||||||
bool mute_on_focus_loss = GLOBAL_DEF("audio/muting/mute_on_focus_loss", false);
|
bool mute_on_focus_loss = GLOBAL_DEF("audio/muting/mute_on_focus_loss", false);
|
||||||
|
|
||||||
|
#ifdef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
|
||||||
|
// This is just to silence warnings.
|
||||||
|
(void)mute_driver;
|
||||||
|
(void)mute_on_pause;
|
||||||
|
(void)mute_on_silence;
|
||||||
|
(void)mute_on_focus_loss;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Defaults for outside the editor.
|
// Defaults for outside the editor.
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
if (!(Engine::get_singleton()->is_editor_hint() || Main::is_project_manager())) {
|
if (!(Engine::get_singleton()->is_editor_hint() || Main::is_project_manager())) {
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
|
||||||
// Note that these can be set differently on different platforms if desired.
|
// Note that these can be set differently on different platforms if desired.
|
||||||
// e.g. Android may want to ensure mute when app paused etc.
|
// e.g. Android may want to ensure mute when app paused etc.
|
||||||
_mute_state = mute_driver ? MuteFlags::MUTE_FLAG_DISABLED : 0;
|
_mute_state = mute_driver ? MuteFlags::MUTE_FLAG_DISABLED : 0;
|
||||||
@@ -324,6 +344,7 @@ void AudioDriverManager::initialize(int p_driver) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_update_mute_state();
|
_update_mute_state();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
_set_driver(p_driver);
|
_set_driver(p_driver);
|
||||||
@@ -335,10 +356,13 @@ AudioDriver *AudioDriverManager::get_driver(int p_driver) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AudioDriverManager::_update_mute_state() {
|
void AudioDriverManager::_update_mute_state() {
|
||||||
|
#ifndef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
|
||||||
_mute_state_final = _mute_state & _mute_state_mask;
|
_mute_state_final = _mute_state & _mute_state_mask;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioDriverManager::set_mute_sensitivity(MuteFlags p_flag, bool p_enabled) {
|
void AudioDriverManager::set_mute_sensitivity(MuteFlags p_flag, bool p_enabled) {
|
||||||
|
#ifndef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
|
||||||
if (p_enabled) {
|
if (p_enabled) {
|
||||||
_mute_state_mask |= p_flag;
|
_mute_state_mask |= p_flag;
|
||||||
} else {
|
} else {
|
||||||
@@ -346,9 +370,12 @@ void AudioDriverManager::set_mute_sensitivity(MuteFlags p_flag, bool p_enabled)
|
|||||||
}
|
}
|
||||||
_update_mute_state();
|
_update_mute_state();
|
||||||
_set_driver(desired_driver_id);
|
_set_driver(desired_driver_id);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioDriverManager::set_mute_flag(MuteFlags p_flag, bool p_enabled) {
|
void AudioDriverManager::set_mute_flag(MuteFlags p_flag, bool p_enabled) {
|
||||||
|
#ifndef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
|
||||||
|
|
||||||
#ifdef GODOT_AUDIO_DRIVER_MANAGER_LOGGING_ENABLED
|
#ifdef GODOT_AUDIO_DRIVER_MANAGER_LOGGING_ENABLED
|
||||||
_log("set_mute_flag " + itos(p_flag) + " " + String(Variant(p_enabled)) + ", flags was " + itos(_mute_state) + " (final flags " + itos(_mute_state_final) + ")");
|
_log("set_mute_flag " + itos(p_flag) + " " + String(Variant(p_enabled)) + ", flags was " + itos(_mute_state) + " (final flags " + itos(_mute_state_final) + ")");
|
||||||
#endif
|
#endif
|
||||||
@@ -370,6 +397,8 @@ void AudioDriverManager::set_mute_flag(MuteFlags p_flag, bool p_enabled) {
|
|||||||
_log("\tflags now " + itos(_mute_state) + " (final flags " + itos(_mute_state_final) + ")");
|
_log("\tflags now " + itos(_mute_state) + " (final flags " + itos(_mute_state_final) + ")");
|
||||||
#endif
|
#endif
|
||||||
_set_driver(desired_driver_id);
|
_set_driver(desired_driver_id);
|
||||||
|
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|||||||
Reference in New Issue
Block a user