diff options
Diffstat (limited to 'servers/audio_server.cpp')
-rw-r--r-- | servers/audio_server.cpp | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp index f9fdd9432d..3139c6bb7a 100644 --- a/servers/audio_server.cpp +++ b/servers/audio_server.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */ @@ -155,6 +155,29 @@ void AudioServer::_driver_process(int p_frames, int32_t *p_buffer) { todo -= to_copy; to_mix -= to_copy; } + +#ifdef DEBUG_ENABLED + if (OS::get_singleton() && OS::get_singleton()->is_stdout_verbose()) { + static uint64_t first_ticks = 0; + static uint64_t last_ticks = 0; + static uint64_t ticks = 0; + static int count = 0; + static int total = 0; + + ticks = OS::get_singleton()->get_ticks_msec(); + if ((ticks - first_ticks) > 10 * 1000) { + print_line("Audio Driver " + String(AudioDriver::get_singleton()->get_name()) + " average latency: " + itos(total / count) + "ms (frame=" + itos(p_frames) + ")"); + first_ticks = ticks; + total = 0; + count = 0; + } + + total += ticks - last_ticks; + count++; + + last_ticks = ticks; + } +#endif } void AudioServer::_mix_step() { @@ -654,8 +677,8 @@ void AudioServer::_update_bus_effects(int p_bus) { buses[p_bus]->channels[i].effect_instances.resize(buses[p_bus]->effects.size()); for (int j = 0; j < buses[p_bus]->effects.size(); j++) { Ref<AudioEffectInstance> fx = buses[p_bus]->effects[j].effect->instance(); - if (fx->cast_to<AudioEffectCompressorInstance>()) { - fx->cast_to<AudioEffectCompressorInstance>()->set_current_channel(i); + if (Object::cast_to<AudioEffectCompressorInstance>(*fx)) { + Object::cast_to<AudioEffectCompressorInstance>(*fx)->set_current_channel(i); } buses[p_bus]->channels[i].effect_instances[j] = fx; } |