Parcourir la source

Make OS::delay_usec() more reliable on UNIX

Implemented with `nanosleep()`. `usleep()` is deprecated.
Also loops to ensure that __at least__ the requested time is waited, accounting for spurious interruptions.

May help in situations like reattempting to connect to the debugger.
Pedro J. Estébanez il y a 8 ans
Parent
commit
a560a62118
1 fichiers modifiés avec 3 ajouts et 1 suppressions
  1. 3 1
      drivers/unix/os_unix.cpp

+ 3 - 1
drivers/unix/os_unix.cpp

@@ -315,7 +315,9 @@ OS::TimeZoneInfo OS_Unix::get_time_zone_info() const {
 
 void OS_Unix::delay_usec(uint32_t p_usec) const {
 
-	usleep(p_usec);
+	struct timespec rem = { p_usec / 1000000, (p_usec % 1000000) * 1000 };
+	while (nanosleep(&rem, &rem) == EINTR) {
+	}
 }
 uint64_t OS_Unix::get_ticks_usec() const {