diff options
| author | Federico Angelilli <code@fedang.net> | 2023-11-02 22:13:17 +0100 |
|---|---|---|
| committer | Federico Angelilli <code@fedang.net> | 2023-11-02 22:13:17 +0100 |
| commit | 99ca49947936207276e4c97dd21201027e0ad182 (patch) | |
| tree | ea0b6e56e9a50010131bcc44bdaec1ea2cdda0a3 | |
| parent | 31bff49ef9c5e9ee6079e369e3b4d90c447f8d0b (diff) | |
Add logging functions
| -rw-r--r-- | comet.c | 3 | ||||
| -rw-r--r-- | log.c | 26 | ||||
| -rw-r--r-- | log.h | 27 | ||||
| -rw-r--r-- | x11.c | 4 |
4 files changed, 59 insertions, 1 deletions
@@ -2,10 +2,13 @@ #include <glib-unix.h> #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); @@ -0,0 +1,26 @@ +#include <glib.h> + +#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 @@ -0,0 +1,27 @@ +#ifndef COMET_LOG_H +#define COMET_LOG_H + +#include <stdio.h> + +#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 @@ -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; } |
