1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-16 14:00:40 +00:00

Do not start Timer upon manual switching of internal process

Prevents `Timer` to prematurely start and timeout immediately if internal
processing is enabled manually with `Timer.set_process_internal(true)` or
`Timer.set_physics_process_internal(true)`.

Even if the internal processing is enabled manually, the user still has to
actually start the timer with `start()` method explicitly.

(cherry picked from commit afcb6f38db)
This commit is contained in:
Andrii Doroshenko (Xrayez)
2020-11-20 01:28:40 +02:00
committed by Rémi Verschelde
parent eafb021015
commit e95e934d88

View File

@@ -48,8 +48,9 @@ void Timer::_notification(int p_what) {
} }
} break; } break;
case NOTIFICATION_INTERNAL_PROCESS: { case NOTIFICATION_INTERNAL_PROCESS: {
if (timer_process_mode == TIMER_PROCESS_PHYSICS || !is_processing_internal()) if (!processing || timer_process_mode == TIMER_PROCESS_PHYSICS || !is_processing_internal()) {
return; return;
}
time_left -= get_process_delta_time(); time_left -= get_process_delta_time();
if (time_left < 0) { if (time_left < 0) {
@@ -63,8 +64,9 @@ void Timer::_notification(int p_what) {
} break; } break;
case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: { case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: {
if (timer_process_mode == TIMER_PROCESS_IDLE || !is_physics_processing_internal()) if (!processing || timer_process_mode == TIMER_PROCESS_IDLE || !is_physics_processing_internal()) {
return; return;
}
time_left -= get_physics_process_delta_time(); time_left -= get_physics_process_delta_time();
if (time_left < 0) { if (time_left < 0) {