From 60d6bb946c1d8a81a92830e3da557c3b1bcb31a4 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 2 Jun 2026 07:29:37 +0200 Subject: [PATCH] WAYLAND_DEBUG: produce comparable timestamp values The previous way to print timestamps would overflow and produce numbers that didn't match any other system. The format was also somewhat unintuitive because it was milliseconds with the microseconds as fraction, which is a rarely used format. Instead, use a simple HH:MM:SS.xxxxxx format that is hopefully intuitively understandable as the POSIX/ISO8601 time format followed by the microseconds. Signed-off-by: Benjamin Otte --- src/connection.c | 9 +++++---- src/wayland-client.c | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/connection.c b/src/connection.c index 2d1e8d1..6ab20ab 100644 --- a/src/connection.c +++ b/src/connection.c @@ -1547,7 +1547,6 @@ wl_closure_print(struct wl_closure *closure, struct wl_object *target, struct argument_details arg; const char *signature = closure->message->signature; struct timespec tp; - unsigned int time; uint32_t nval; FILE *f; char *buffer; @@ -1558,10 +1557,12 @@ wl_closure_print(struct wl_closure *closure, struct wl_object *target, return; clock_gettime(CLOCK_REALTIME, &tp); - time = (tp.tv_sec * 1000000L) + (tp.tv_nsec / 1000); - fprintf(f, "%s[%7u.%03u] ", + fprintf(f, "%s[%02u:%02u:%02u.%06u] ", color ? WL_DEBUG_COLOR_GREEN : "", - time / 1000, time % 1000); + (unsigned) ((tp.tv_sec / 3600) % 24), + (unsigned) ((tp.tv_sec / 60) % 60), + (unsigned) (tp.tv_sec % 60), + (unsigned) (tp.tv_nsec / 1000)); #if defined(HAVE_GETTID) if (include_tid < 0) { diff --git a/src/wayland-client.c b/src/wayland-client.c index 50b3b4b..8e5539f 100644 --- a/src/wayland-client.c +++ b/src/wayland-client.c @@ -1577,7 +1577,6 @@ queue_event(struct wl_display *display, int len) const struct wl_message *message; struct wl_event_queue *queue; struct timespec tp; - unsigned int time; int num_zombie_fds; wl_connection_copy(display->connection, p, sizeof p); @@ -1619,11 +1618,13 @@ queue_event(struct wl_display *display, int len) if (debug_client) { clock_gettime(CLOCK_REALTIME, &tp); - time = (tp.tv_sec * 1000000L) + (tp.tv_nsec / 1000); - fprintf(stderr, "%s[%7u.%03u] %sdiscarded %s[%s]%s#%u%s.[event %d]%s" + fprintf(stderr, "%s[%02u:%02u:%02u.%06u] %sdiscarded %s[%s]%s#%u%s.[event %d]%s" "(%d fd, %d byte)\n", debug_color ? WL_DEBUG_COLOR_GREEN : "", - time / 1000, time % 1000, + (unsigned) ((tp.tv_sec / 3600) % 24), + (unsigned) ((tp.tv_sec / 60) % 60), + (unsigned) (tp.tv_sec % 60), + (unsigned) (tp.tv_nsec / 1000), debug_color ? WL_DEBUG_COLOR_RED : "", debug_color ? WL_DEBUG_COLOR_BLUE : "", zombie ? "zombie" : "unknown",