summaryrefslogtreecommitdiff
path: root/subprojects
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects')
-rw-r--r--subprojects/libev.wrap2
-rw-r--r--subprojects/packagefiles/libev/libev_aki_sleep.diff37
-rw-r--r--subprojects/packagefiles/libev/libev_aki_sleep_no_monotonic.diff60
3 files changed, 61 insertions, 38 deletions
diff --git a/subprojects/libev.wrap b/subprojects/libev.wrap
index 22fed20..0cde03e 100644
--- a/subprojects/libev.wrap
+++ b/subprojects/libev.wrap
@@ -6,7 +6,7 @@ source_filename = libev-4.33.tar.gz
source_hash = 507eb7b8d1015fbec5b935f34ebed15bf346bed04a11ab82b8eee848c4205aea
patch_directory = libev
-diff_files = libev/libev_aki_sleep.diff
+diff_files = libev/libev_aki_sleep_no_monotonic.diff
[provide]
dependency_names = libev
diff --git a/subprojects/packagefiles/libev/libev_aki_sleep.diff b/subprojects/packagefiles/libev/libev_aki_sleep.diff
deleted file mode 100644
index f41b96d..0000000
--- a/subprojects/packagefiles/libev/libev_aki_sleep.diff
+++ /dev/null
@@ -1,37 +0,0 @@
---- ev.c 2020-03-18 08:27:32.000000000 -0400
-+++ ../ev.c 2023-09-21 16:15:10.219097499 -0400
-@@ -216,6 +216,8 @@
-
- #include <signal.h>
-
-+#include <aki/thread.h>
-+
- #ifdef EV_H
- # include EV_H
- #else
-@@ -2216,24 +2218,7 @@
- {
- if (delay > EV_TS_CONST (0.))
- {
--#if EV_USE_NANOSLEEP
-- struct timespec ts;
--
-- EV_TS_SET (ts, delay);
-- nanosleep (&ts, 0);
--#elif defined _WIN32
-- /* maybe this should round up, as ms is very low resolution */
-- /* compared to select (µs) or nanosleep (ns) */
-- Sleep ((unsigned long)(EV_TS_TO_MSEC (delay)));
--#else
-- struct timeval tv;
--
-- /* here we rely on sys/time.h + sys/types.h + unistd.h providing select */
-- /* something not guaranteed by newer posix versions, but guaranteed */
-- /* by older ones */
-- EV_TV_SET (tv, delay);
-- select (0, 0, 0, 0, &tv);
--#endif
-+ aki_thread_sleep (delay);
- }
- }
-
diff --git a/subprojects/packagefiles/libev/libev_aki_sleep_no_monotonic.diff b/subprojects/packagefiles/libev/libev_aki_sleep_no_monotonic.diff
new file mode 100644
index 0000000..2080116
--- /dev/null
+++ b/subprojects/packagefiles/libev/libev_aki_sleep_no_monotonic.diff
@@ -0,0 +1,60 @@
+--- a/ev.c 2020-03-18 08:27:32.000000000 -0400
++++ b/ev.c 2024-01-16 15:42:39.360703755 -0400
+@@ -216,6 +216,8 @@
+
+ #include <signal.h>
+
++#include <aki/thread.h>
++
+ #ifdef EV_H
+ # include EV_H
+ #else
+@@ -437,7 +439,7 @@
+ /* on linux, we can use a (slow) syscall to avoid a dependency on pthread, */
+ /* which makes programs even slower. might work on other unices, too. */
+ #if EV_USE_CLOCK_SYSCALL
+-# include <sys/syscall.h>
++# include <unistd.h>
+ # ifdef SYS_clock_gettime
+ # define clock_gettime(id, ts) syscall (SYS_clock_gettime, (id), (ts))
+ # undef EV_USE_MONOTONIC
+@@ -2216,24 +2218,7 @@
+ {
+ if (delay > EV_TS_CONST (0.))
+ {
+-#if EV_USE_NANOSLEEP
+- struct timespec ts;
+-
+- EV_TS_SET (ts, delay);
+- nanosleep (&ts, 0);
+-#elif defined _WIN32
+- /* maybe this should round up, as ms is very low resolution */
+- /* compared to select (µs) or nanosleep (ns) */
+- Sleep ((unsigned long)(EV_TS_TO_MSEC (delay)));
+-#else
+- struct timeval tv;
+-
+- /* here we rely on sys/time.h + sys/types.h + unistd.h providing select */
+- /* something not guaranteed by newer posix versions, but guaranteed */
+- /* by older ones */
+- EV_TV_SET (tv, delay);
+- select (0, 0, 0, 0, &tv);
+-#endif
++ aki_thread_sleep (delay);
+ }
+ }
+
+@@ -4100,11 +4085,13 @@
+ waittime = EV_TS_CONST (MAX_BLOCKTIME2);
+ #endif
+ #if !EV_PERIODIC_ENABLE
++#if EV_USE_MONOTONIC
+ /* without periodics but with monotonic clock there is no need */
+ /* for any time jump detection, so sleep longer */
+ if (ecb_expect_true (have_monotonic))
+ waittime = EV_TS_CONST (MAX_BLOCKTIME2);
+ #endif
++#endif
+
+ if (timercnt)
+ {