diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp
index 04e668049c4..c0406b738e8 100644
--- a/core/bind/core_bind.cpp
+++ b/core/bind/core_bind.cpp
@@ -942,13 +942,19 @@ uint64_t _OS::get_system_time_msecs() const {
return OS::get_singleton()->get_system_time_msecs();
}
-void _OS::delay_usec(uint32_t p_usec) const {
-
+/** This method uses a signed argument for better error reporting as it's used from the scripting API. */
+void _OS::delay_usec(int p_usec) const {
+ ERR_FAIL_COND_MSG(
+ p_usec < 0,
+ vformat("Can't sleep for %d microseconds. The delay provided must be greater than or equal to 0 microseconds.", p_usec));
OS::get_singleton()->delay_usec(p_usec);
}
-void _OS::delay_msec(uint32_t p_msec) const {
-
+/** This method uses a signed argument for better error reporting as it's used from the scripting API. */
+void _OS::delay_msec(int p_msec) const {
+ ERR_FAIL_COND_MSG(
+ p_msec < 0,
+ vformat("Can't sleep for %d milliseconds. The delay provided must be greater than or equal to 0 milliseconds.", p_msec));
OS::get_singleton()->delay_usec(int64_t(p_msec) * 1000);
}
diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h
index fb7a276e934..b62de003030 100644
--- a/core/bind/core_bind.h
+++ b/core/bind/core_bind.h
@@ -308,8 +308,8 @@ public:
uint64_t get_static_memory_peak_usage() const;
uint64_t get_dynamic_memory_usage() const;
- void delay_usec(uint32_t p_usec) const;
- void delay_msec(uint32_t p_msec) const;
+ void delay_usec(int p_usec) const;
+ void delay_msec(int p_msec) const;
uint32_t get_ticks_msec() const;
uint64_t get_ticks_usec() const;
uint32_t get_splash_tick_msec() const;
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index 74c22cbc8c2..ce01a1a3a0b 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -56,7 +56,7 @@
- Delay execution of the current thread by [code]msec[/code] milliseconds.
+ Delay execution of the current thread by [code]msec[/code] milliseconds. [code]usec[/code] must be greater than or equal to [code]0[/code]. Otherwise, [method delay_msec] will do nothing and will print an error message.
@@ -65,7 +65,7 @@
- Delay execution of the current thread by [code]usec[/code] microseconds.
+ Delay execution of the current thread by [code]usec[/code] microseconds. [code]usec[/code] must be greater than or equal to [code]0[/code]. Otherwise, [method delay_usec] will do nothing and will print an error message.