Skip to content

Commit a117d51

Browse files
authored
Merge pull request #112170 from lawnjelly/disallow_muting_android
[3.x] Disallow muting on Android
2 parents 0a90117 + 9eae653 commit a117d51

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

servers/audio_server.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@
5050
// #define GODOT_AUDIO_DRIVER_MANAGER_LOGGING_ENABLED
5151
#endif
5252

53+
#ifdef ANDROID_ENABLED
54+
#define GODOT_AUDIO_DRIVER_DISALLOW_MUTING
55+
#endif
56+
5357
AudioDriver *AudioDriver::singleton = nullptr;
5458
AudioDriver *AudioDriver::get_singleton() {
5559
return singleton;
@@ -182,10 +186,16 @@ int AudioDriverManager::driver_count = 1;
182186
int AudioDriverManager::desired_driver_id = -2;
183187
int AudioDriverManager::actual_driver_id = -2;
184188

189+
#ifdef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
190+
uint32_t AudioDriverManager::_mute_state = 0;
191+
uint32_t AudioDriverManager::_mute_state_final = 0;
192+
uint32_t AudioDriverManager::_mute_state_mask = 0;
193+
#else
185194
// Defaults are for the editor, outside the editor will be overridden.
186195
uint32_t AudioDriverManager::_mute_state = AudioDriverManager::MuteFlags::MUTE_FLAG_DISABLED;
187196
uint32_t AudioDriverManager::_mute_state_final = AudioDriverManager::MuteFlags::MUTE_FLAG_DISABLED;
188197
uint32_t AudioDriverManager::_mute_state_mask = UINT32_MAX;
198+
#endif
189199

190200
void AudioDriverManager::add_driver(AudioDriver *p_driver) {
191201
ERR_FAIL_COND(driver_count >= MAX_DRIVERS);
@@ -301,12 +311,22 @@ void AudioDriverManager::initialize(int p_driver) {
301311
bool mute_on_silence = GLOBAL_DEF("audio/muting/mute_on_silence", false);
302312
bool mute_on_focus_loss = GLOBAL_DEF("audio/muting/mute_on_focus_loss", false);
303313

314+
#ifdef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
315+
// This is just to silence warnings.
316+
(void)mute_driver;
317+
(void)mute_on_pause;
318+
(void)mute_on_silence;
319+
(void)mute_on_focus_loss;
320+
#endif
321+
304322
// Defaults for outside the editor.
305323
#ifdef TOOLS_ENABLED
306324
if (!(Engine::get_singleton()->is_editor_hint() || Main::is_project_manager())) {
307325
#else
308326
{
309327
#endif
328+
329+
#ifndef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
310330
// Note that these can be set differently on different platforms if desired.
311331
// e.g. Android may want to ensure mute when app paused etc.
312332
_mute_state = mute_driver ? MuteFlags::MUTE_FLAG_DISABLED : 0;
@@ -324,6 +344,7 @@ void AudioDriverManager::initialize(int p_driver) {
324344
}
325345

326346
_update_mute_state();
347+
#endif
327348
}
328349

329350
_set_driver(p_driver);
@@ -335,20 +356,26 @@ AudioDriver *AudioDriverManager::get_driver(int p_driver) {
335356
}
336357

337358
void AudioDriverManager::_update_mute_state() {
359+
#ifndef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
338360
_mute_state_final = _mute_state & _mute_state_mask;
361+
#endif
339362
}
340363

341364
void AudioDriverManager::set_mute_sensitivity(MuteFlags p_flag, bool p_enabled) {
365+
#ifndef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
342366
if (p_enabled) {
343367
_mute_state_mask |= p_flag;
344368
} else {
345369
_mute_state_mask &= ~p_flag;
346370
}
347371
_update_mute_state();
348372
_set_driver(desired_driver_id);
373+
#endif
349374
}
350375

351376
void AudioDriverManager::set_mute_flag(MuteFlags p_flag, bool p_enabled) {
377+
#ifndef GODOT_AUDIO_DRIVER_DISALLOW_MUTING
378+
352379
#ifdef GODOT_AUDIO_DRIVER_MANAGER_LOGGING_ENABLED
353380
_log("set_mute_flag " + itos(p_flag) + " " + String(Variant(p_enabled)) + ", flags was " + itos(_mute_state) + " (final flags " + itos(_mute_state_final) + ")");
354381
#endif
@@ -370,6 +397,8 @@ void AudioDriverManager::set_mute_flag(MuteFlags p_flag, bool p_enabled) {
370397
_log("\tflags now " + itos(_mute_state) + " (final flags " + itos(_mute_state_final) + ")");
371398
#endif
372399
_set_driver(desired_driver_id);
400+
401+
#endif
373402
}
374403

375404
//////////////////////////////////////////////

0 commit comments

Comments
 (0)