Implement layer visibility toggle; log export color range

- Wire MenuAction::ToggleLayerVisibility (was a stub) to flip the active
  layer's `visible` flag via SetLayerPropertiesAction (undoable). This is
  what the SVG-export visibility fix depends on, and the "Hide/Show Layer"
  menu item now works.
- Log the resolved color range in the zero-copy H.264 path to diagnose
  whether `full_range` reaches the encoder (the VAAPI driver may still omit
  the SPS VUI full_range flag).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Skyler Lehmkuhl 2026-06-26 21:38:07 -04:00
parent b301c63387
commit 9717289271
2 changed files with 17 additions and 2 deletions

View File

@ -921,6 +921,8 @@ impl ExportOrchestrator {
let bitrate = settings.quality.bitrate_kbps(); let bitrate = settings.quality.bitrate_kbps();
let fr = framerate.round() as i32; let fr = framerate.round() as i32;
let full = settings.color_range.is_full(); let full = settings.color_range.is_full();
println!("🎬 [EXPORT] zero-copy H.264 color range: {} (full_range={})",
settings.color_range.name(), full);
let on_shared_device = shared_device.is_some(); let on_shared_device = shared_device.is_some();
// Prefer the shared device → decode→composite→encode stay GPU-resident on one device. // Prefer the shared device → decode→composite→encode stay GPU-resident on one device.
// Without it, the encoder builds its own device (decode still downloads to CPU per Step 1's // Without it, the encoder builds its own device (decode still downloads to CPU per Step 1's

View File

@ -3727,8 +3727,21 @@ impl EditorApp {
// TODO: Implement delete layer // TODO: Implement delete layer
} }
MenuAction::ToggleLayerVisibility => { MenuAction::ToggleLayerVisibility => {
println!("Menu: Toggle Layer Visibility"); use lightningbeam_core::actions::{SetLayerPropertiesAction, set_layer_properties::LayerProperty};
// TODO: Implement toggle layer visibility use lightningbeam_core::layer::LayerTrait;
if let Some(layer_id) = self.active_layer_id {
let cur = self.action_executor.document()
.get_layer(&layer_id)
.map(|l| l.visible());
if let Some(cur) = cur {
let action = SetLayerPropertiesAction::new(layer_id, LayerProperty::Visible(!cur));
if let Err(e) = self.action_executor.execute(Box::new(action)) {
eprintln!("Toggle layer visibility: {}", e);
}
}
} else {
println!("Toggle Layer Visibility: no active layer");
}
} }
MenuAction::ShowMasterTrack => { MenuAction::ShowMasterTrack => {
// Toggle show_master_track on all Timeline pane instances // Toggle show_master_track on all Timeline pane instances