--- a/types/scene/wlr_scene.c +++ b/types/scene/wlr_scene.c @@ -2117,6 +2117,21 @@ }; scene_node_get_size(node, &dst_box.width, &dst_box.height); transform_output_box(&dst_box, data); + + // WHY: prove real effect-node presence separately from accepted IPC. + // CONTRACT: trace only a private copy; identities are process-local. + // INVARIANT: read-only logging changes no render or cache decision. + if (node->type == WLR_SCENE_NODE_SHADOW || node->type == WLR_SCENE_NODE_BLUR + || node->type == WLR_SCENE_NODE_OPTIMIZED_BLUR) { + const pixman_box32_t *box = pixman_region32_extents(&render_region); + int dirty = node->type == WLR_SCENE_NODE_OPTIMIZED_BLUR + ? wlr_scene_optimized_blur_from_node(node)->dirty : -1; + wlr_log(WLR_INFO, "FX_TRACE output=%s type=%d node=%p enabled=%d " + "dst=%d,%d %dx%d draw=%d,%d..%d,%d dirty=%d", + data->output->output->name, node->type, (void *)node, node->enabled, + dst_box.x, dst_box.y, dst_box.width, dst_box.height, + box->x1, box->y1, box->x2, box->y2, dirty); + } pixman_region32_t opaque; pixman_region32_init(&opaque);