From 99ca49947936207276e4c97dd21201027e0ad182 Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Thu, 2 Nov 2023 22:13:17 +0100 Subject: Add logging functions --- comet.c | 3 +++ log.c | 26 ++++++++++++++++++++++++++ log.h | 27 +++++++++++++++++++++++++++ x11.c | 4 +++- 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 log.c create mode 100644 log.h diff --git a/comet.c b/comet.c index 5a64235..b125d78 100644 --- a/comet.c +++ b/comet.c @@ -2,10 +2,13 @@ #include #include "x11.h" +#include "log.h" #include "draw.h" int main(int argc, char **argv) { + log_init(G_LOG_LEVEL_DEBUG); + Window *win = window_create(); draw(win); diff --git a/log.c b/log.c new file mode 100644 index 0000000..f4c529f --- /dev/null +++ b/log.c @@ -0,0 +1,26 @@ +#include + +#include "log.h" + +static void log_handler(const char *log_domain, + GLogLevelFlags level, + const char *message, + gpointer log_level) +{ + GLogLevelFlags message_level = level & G_LOG_LEVEL_MASK; + + if ((GLogLevelFlags)log_level < message_level) + return; + + if (message_level <= G_LOG_LEVEL_WARNING) + g_printerr("%s\n", message); + else + g_print("%s\n", message); +} + +void log_init(GLogLevelFlags level) +{ + g_log_set_default_handler(log_handler, (void *)level); +} + +// vim: ts=4 sw=4 et diff --git a/log.h b/log.h new file mode 100644 index 0000000..28dbf14 --- /dev/null +++ b/log.h @@ -0,0 +1,27 @@ +#ifndef COMET_LOG_H +#define COMET_LOG_H + +#include + +#define DEBUG_FORMAT(format, ...) \ + "[%s] \x1b[1mdebug\x1b[0m: " format, __func__, ## __VA_ARGS__ + +#define INFO_FORMAT(format, ...) \ + "[%s] \x1b[1;96minfo\x1b[0m: " format, __func__, ## __VA_ARGS__ + +#define WARNING_FORMAT(format, ...) \ + "[%s] \x1b[1;33mwarning\x1b[0m: " format, __func__, ## __VA_ARGS__ + +#define ERROR_FORMAT(format, ...) \ + "[%s] \x1b[1;31merror\x1b[0m: " format, __func__, ## __VA_ARGS__ + +#define log_debug(...) g_debug(DEBUG_FORMAT(__VA_ARGS__)) +#define log_info(...) g_info(INFO_FORMAT(__VA_ARGS__)) +#define log_warning(...) g_warning(WARNING_FORMAT(__VA_ARGS__)) +#define log_error(...) g_error(ERROR_FORMAT(__VA_ARGS__)) + +void log_init(GLogLevelFlags level); + +#endif + +// vim: ts=4 sw=4 et diff --git a/x11.c b/x11.c index 26ae535..032b6d4 100644 --- a/x11.c +++ b/x11.c @@ -60,7 +60,7 @@ Window *window_create(void) y, x, h, w, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, win->screen->root_visual, - XCB_CW_BACK_PIXEL, + XCB_CW_BACK_PIXEL, //XCB_CW_BACK_PIXEL | XCB_CW_BACK_PIXMAP | XCB_CW_OVERRIDE_REDIRECT | // XCB_CW_BORDER_PIXEL | XCB_CW_EVENT_MASK | XCB_CW_COLORMAP, &win->screen->white_pixel); @@ -89,6 +89,8 @@ done: win->surface = cairo_xcb_surface_create(win->connection, win->window, win->visual_type, w, h); win->cr = cairo_create(win->surface); + log_debug("Cairo initialized"); + return win; } -- cgit v1.2.3