fix: optimize performance by wrapping trace logs, adding captured drag event subscriptions, and adding regression tests for adjustment compositing.

This commit is contained in:
Your Name
2026-07-24 02:04:35 +03:00
parent f2cca7e6a1
commit fba10b753c
9 changed files with 364 additions and 50 deletions
+19 -15
View File
@@ -145,25 +145,29 @@ impl Engine {
"[render_composite_region] BEFORE composite: active_idx={}, cache_valid={}, below_cache={}, below_cache_active_idx={:?}, tile_layers_len={}, dirty_rect=[{},{},{},{}]",
active_idx, cache_valid, self.below_cache.is_some(), self.below_cache_active_idx, self.tile_layers.len(), x0, y0, x1, y1
);
for (i, l) in self.document.layers.iter().enumerate() {
let tc = self
.tile_layers
.get(i)
.and_then(|t| t.as_ref().map(|tl| tl.tile_count()))
.unwrap_or(0);
log::trace!(
"[render_composite_region] layer[{}] id={} visible={} dirty={} opacity={} blend={:?} tile_count={}",
i, l.id, l.visible, l.dirty, l.opacity, l.blend_mode, tc
);
if log::log_enabled!(log::Level::Trace) {
for (i, l) in self.document.layers.iter().enumerate() {
let tc = self
.tile_layers
.get(i)
.and_then(|t| t.as_ref().map(|tl| tl.tile_count()))
.unwrap_or(0);
log::trace!(
"[render_composite_region] layer[{}] id={} visible={} dirty={} opacity={} blend={:?} tile_count={}",
i, l.id, l.visible, l.dirty, l.opacity, l.blend_mode, tc
);
}
}
if cache_valid {
let cache = self.below_cache.as_ref().unwrap();
let below_non_zero = cache.iter().filter(|&&b| b != 0).count();
log::trace!(
"[render_composite_region] CACHE HIT: using below_cache ({} non-zero bytes), compositing layers[{}..{}] on top",
below_non_zero, active_idx, self.document.layers.len()
);
if log::log_enabled!(log::Level::Trace) {
let below_non_zero = cache.iter().filter(|&&b| b != 0).count();
log::trace!(
"[render_composite_region] CACHE HIT: using below_cache ({} non-zero bytes), compositing layers[{}..{}] on top",
below_non_zero, active_idx, self.document.layers.len()
);
}
for y in y0..y1 {
let start = (y as usize * wu + x0u) * 4;
let end = start + ((x1 - x0) as usize) * 4;
+9 -7
View File
@@ -470,13 +470,15 @@ impl Engine {
ch,
&mut cache,
);
let non_zero = cache.iter().filter(|&&b| b != 0).count();
log::trace!(
"[begin_stroke] below_cache built: {} bytes, non-zero bytes={}, active_idx={}",
cache.len(),
non_zero,
active_idx
);
if log::log_enabled!(log::Level::Trace) {
let non_zero = cache.iter().filter(|&&b| b != 0).count();
log::trace!(
"[begin_stroke] below_cache built: {} bytes, non-zero bytes={}, active_idx={}",
cache.len(),
non_zero,
active_idx
);
}
self.below_cache = Some(cache);
self.below_cache_active_idx = Some(active_idx);
self.below_cache_dirty = false;