brewery
notashelf /
1a366d24451c9631348753d884da9d7636fa5996

chroma

public

Lightweight wallpaper daemon for Wayland

Star0tarball
clone
ssh://git@git.notashelf.dev:33/notashelf/chroma.git

Commit 1a366d24451c

tarball

NotAShelf <raf@notashelf.dev> · 2025-11-01 22:19 UTC

unverified1 files changed+26-0
core: store old config values per-monitor

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ieb3a272935892c874339b13e63b998fd6a6a6964
diff --git a/src/core.c b/src/core.cindex 8a13255..63d904d 100644--- a/src/core.c+++ b/src/core.c@@ -103,6 +103,32 @@ static int assign_wallpaper_to_output(chroma_state_t *state,   // Assign image to output   output->image = image; +  // Store old configuration values for comparison+  chroma_scale_mode_t old_scale_mode = output->scale_mode;+  chroma_filter_quality_t old_filter_quality = output->filter_quality;+  bool had_config = output->config_loaded;++  // Load configuration for this output (scale mode and filter quality)+  if (chroma_config_get_mapping_for_output(+          &state->config, output->name ? output->name : "unknown",+          &output->scale_mode, &output->filter_quality) == CHROMA_OK) {+    output->config_loaded = true;+    chroma_log("DEBUG", "Loaded config for output %u: scale=%d, filter=%d",+               output->id, output->scale_mode, output->filter_quality);++    // Check if configuration changed and invalidate texture if needed+    if (had_config && (old_scale_mode != output->scale_mode ||+                       old_filter_quality != output->filter_quality)) {+      chroma_output_invalidate_texture(output);+      chroma_log("DEBUG",+                 "Configuration changed for output %u, invalidated texture",+                 output->id);+    }+  } else {+    output->config_loaded = false;+    chroma_log("WARN", "Failed to load config for output %u", output->id);+  }+   // Create surface if it doesn't exist   if (!output->surface) {     int ret = chroma_surface_create(state, output);