From: Pekka Paalanen <p...@iki.fi>

This registers a new weston-debug scope "log" through which one can get
live log output interspersed with possible other debugging prints.

Signed-off-by: Pekka Paalanen <p...@iki.fi>

pass the log_scope to weston_debug_scope_timestamp API to append
the scope name to the timestamp

Signed-off-by: Maniraj Devadoss <maniraj.devad...@in.bosch.com>
Reviewed-by: Pekka Paalanen <pekka.paala...@collabora.co.uk>
Reviewed-by: Daniel Stone <dani...@collabora.com>
---
 compositor/main.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/compositor/main.c b/compositor/main.c
index 2f34e1115..eaf4cf381 100644
--- a/compositor/main.c
+++ b/compositor/main.c
@@ -119,6 +119,7 @@ struct wet_compositor {
 };
 
 static FILE *weston_logfile = NULL;
+static struct weston_debug_scope *log_scope;
 
 static int cached_tm_mday = -1;
 
@@ -149,9 +150,16 @@ static int weston_log_timestamp(void)
 static void
 custom_handler(const char *fmt, va_list arg)
 {
+       char timestr[128];
+
        weston_log_timestamp();
        fprintf(weston_logfile, "libwayland: ");
        vfprintf(weston_logfile, fmt, arg);
+
+       weston_debug_scope_printf(log_scope, "%s libwayland: ",
+                       weston_debug_scope_timestamp(log_scope,
+                       timestr, sizeof timestr));
+       weston_debug_scope_vprintf(log_scope, fmt, arg);
 }
 
 static void
@@ -183,6 +191,14 @@ static int
 vlog(const char *fmt, va_list ap)
 {
        int l;
+       char timestr[128];
+
+       if (weston_debug_scope_is_enabled(log_scope)) {
+               weston_debug_scope_printf(log_scope, "%s ",
+                               weston_debug_scope_timestamp(log_scope,
+                               timestr, sizeof timestr));
+               weston_debug_scope_vprintf(log_scope, fmt, ap);
+       }
 
        l = weston_log_timestamp();
        l += vfprintf(weston_logfile, fmt, ap);
@@ -193,6 +209,8 @@ vlog(const char *fmt, va_list ap)
 static int
 vlog_continue(const char *fmt, va_list argp)
 {
+       weston_debug_scope_vprintf(log_scope, fmt, argp);
+
        return vfprintf(weston_logfile, fmt, argp);
 }
 
@@ -2490,6 +2508,9 @@ int main(int argc, char *argv[])
        }
        segv_compositor = wet.compositor;
 
+       log_scope = weston_compositor_add_debug_scope(wet.compositor, "log",
+                       "Weston and Wayland log\n", NULL, NULL);
+
        if (debug_protocol)
                weston_compositor_enable_debug_protocol(wet.compositor);
 
@@ -2602,6 +2623,7 @@ out:
        /* free(NULL) is valid, and it won't be NULL if it's used */
        free(wet.parsed_options);
 
+       weston_debug_scope_destroy(log_scope);
        weston_compositor_destroy(wet.compositor);
 
 out_signals:
-- 
2.17.1

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to