core: store old config values per-monitor

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ieb3a272935892c874339b13e63b998fd6a6a6964
This commit is contained in:
raf 2025-11-02 00:03:49 +03:00
commit 1a366d2445
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF

View file

@ -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);