various: log memory events

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6a6a69643b6d00277bb9bcfeb4cd01dc78d7cd3d
This commit is contained in:
raf 2025-09-30 20:11:06 +03:00
commit bc77b887ad
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
7 changed files with 280 additions and 47 deletions

View file

@ -1,4 +1,3 @@
#include <errno.h>
#include <getopt.h>
#include <signal.h>
#include <stdio.h>
@ -9,7 +8,7 @@
#include "../include/chroma.h"
/* Global state for signal handling */
// Global state for signal handling
volatile sig_atomic_t chroma_should_quit = 0;
static void print_usage(const char *program_name) {
@ -18,7 +17,9 @@ static void print_usage(const char *program_name) {
printf("Options:\n");
printf(" -c, --config FILE Configuration file path\n");
printf(" -d, --daemon Run as daemon\n");
printf(" -v, --verbose Verbose logging\n");
printf(" -v, --verbose Increase verbosity (can be used multiple "
"times)\n");
printf(" -v: INFO, -vv: DEBUG, -vvv: TRACE\n");
printf(" -h, --help Show this help\n");
printf(" --version Show version information\n");
printf("\nExamples:\n");
@ -124,7 +125,7 @@ int main(int argc, char *argv[]) {
chroma_state_t state;
char *config_file = NULL;
bool daemon_mode = false;
bool verbose = false;
int verbose_level = 0;
int opt;
int ret = 0;
@ -143,7 +144,7 @@ int main(int argc, char *argv[]) {
daemon_mode = true;
break;
case 'v':
verbose = true;
verbose_level++;
break;
case 'h':
print_usage(argv[0]);
@ -161,10 +162,9 @@ int main(int argc, char *argv[]) {
memset(&state, 0, sizeof(state));
state.config.daemon_mode = daemon_mode;
// Set log level based on verbose flag
if (verbose) {
chroma_set_log_level(1); // Enable debug logging
}
// Set log level based on verbosity count
// 0: ERROR+WARN only, 1: +INFO, 2: +DEBUG, 3+: +TRACE
chroma_set_log_level(verbose_level);
// Set up signal handlers
if (setup_signals() != 0) {
@ -189,6 +189,8 @@ int main(int argc, char *argv[]) {
// Initialize chroma
chroma_log("INFO", "Initializing chroma wallpaper daemon v%s",
CHROMA_VERSION);
chroma_log_memory_stats("startup");
ret = chroma_init(&state);
if (ret != CHROMA_OK) {
chroma_log("ERROR", "Failed to initialize chroma: %s",
@ -196,6 +198,7 @@ int main(int argc, char *argv[]) {
chroma_cleanup(&state);
return 1;
}
chroma_log_memory_stats("post-init");
// Load configuration
chroma_log("INFO", "Loading configuration from: %s", config_file);
@ -203,6 +206,7 @@ int main(int argc, char *argv[]) {
chroma_log("WARN", "Failed to load config file, using defaults");
// Continue with default configuration
}
chroma_log_memory_stats("post-config-load");
// Connect to Wayland
ret = chroma_wayland_connect(&state);
@ -212,6 +216,7 @@ int main(int argc, char *argv[]) {
chroma_cleanup(&state);
return 1;
}
chroma_log_memory_stats("post-wayland-connect");
// Initialize EGL
ret = chroma_egl_init(&state);
@ -221,18 +226,23 @@ int main(int argc, char *argv[]) {
chroma_cleanup(&state);
return 1;
}
chroma_log_memory_stats("post-egl-init");
chroma_log("INFO", "Chroma daemon initialized successfully");
chroma_log_memory_stats("pre-main-loop");
// Main event loop
ret = chroma_run(&state);
if (ret != CHROMA_OK) {
chroma_log("ERROR", "Main loop failed: %s", chroma_error_string(ret));
}
chroma_log_memory_stats("post-main-loop");
// Cleanup
chroma_log("INFO", "Shutting down chroma daemon");
chroma_log_memory_stats("pre-cleanup");
chroma_cleanup(&state);
chroma_log_memory_stats("post-cleanup");
return (ret == CHROMA_OK) ? 0 : 1;
}
}