Skip to content

Commit 514e662

Browse files
committed
Coderabbit fixes
1 parent 31fdef6 commit 514e662

File tree

7 files changed

+84
-96
lines changed

7 files changed

+84
-96
lines changed

apps/desktop/src/routes/editor/ConfigSidebar.tsx

Lines changed: 59 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1532,66 +1532,64 @@ function BackgroundConfig(props: { scrollRef: HTMLDivElement }) {
15321532
/>
15331533
}
15341534
/>
1535-
{project.background.border?.enabled && (
1536-
<>
1537-
<Field name="Border Width" icon={<IconCapEnlarge class="size-4" />}>
1538-
<Slider
1539-
value={[project.background.border?.width ?? 5.0]}
1540-
onChange={(v) =>
1541-
setProject("background", "border", {
1542-
...(project.background.border ?? {
1543-
enabled: true,
1544-
width: 5.0,
1545-
color: [255, 255, 255],
1546-
opacity: 80.0,
1547-
}),
1548-
width: v[0],
1549-
})
1550-
}
1551-
minValue={1}
1552-
maxValue={20}
1553-
step={0.1}
1554-
formatTooltip="px"
1555-
/>
1556-
</Field>
1557-
<Field name="Border Color" icon={<IconCapImage class="size-4" />}>
1558-
<RgbInput
1559-
value={project.background.border?.color ?? [255, 255, 255]}
1560-
onChange={(color) =>
1561-
setProject("background", "border", {
1562-
...(project.background.border ?? {
1563-
enabled: true,
1564-
width: 5.0,
1565-
color: [255, 255, 255],
1566-
opacity: 80.0,
1567-
}),
1568-
color,
1569-
})
1570-
}
1571-
/>
1572-
</Field>
1573-
<Field name="Border Opacity" icon={<IconCapShadow class="size-4" />}>
1574-
<Slider
1575-
value={[project.background.border?.opacity ?? 80.0]}
1576-
onChange={(v) =>
1577-
setProject("background", "border", {
1578-
...(project.background.border ?? {
1579-
enabled: true,
1580-
width: 5.0,
1581-
color: [255, 255, 255],
1582-
opacity: 80.0,
1583-
}),
1584-
opacity: v[0],
1585-
})
1586-
}
1587-
minValue={0}
1588-
maxValue={100}
1589-
step={0.1}
1590-
formatTooltip="%"
1591-
/>
1592-
</Field>
1593-
</>
1594-
)}
1535+
<Show when={project.background.border?.enabled}>
1536+
<Field name="Border Width" icon={<IconCapEnlarge class="size-4" />}>
1537+
<Slider
1538+
value={[project.background.border?.width ?? 5.0]}
1539+
onChange={(v) =>
1540+
setProject("background", "border", {
1541+
...(project.background.border ?? {
1542+
enabled: true,
1543+
width: 5.0,
1544+
color: [255, 255, 255],
1545+
opacity: 80.0,
1546+
}),
1547+
width: v[0],
1548+
})
1549+
}
1550+
minValue={1}
1551+
maxValue={20}
1552+
step={0.1}
1553+
formatTooltip="px"
1554+
/>
1555+
</Field>
1556+
<Field name="Border Color" icon={<IconCapImage class="size-4" />}>
1557+
<RgbInput
1558+
value={project.background.border?.color ?? [255, 255, 255]}
1559+
onChange={(color) =>
1560+
setProject("background", "border", {
1561+
...(project.background.border ?? {
1562+
enabled: true,
1563+
width: 5.0,
1564+
color: [255, 255, 255],
1565+
opacity: 80.0,
1566+
}),
1567+
color,
1568+
})
1569+
}
1570+
/>
1571+
</Field>
1572+
<Field name="Border Opacity" icon={<IconCapShadow class="size-4" />}>
1573+
<Slider
1574+
value={[project.background.border?.opacity ?? 80.0]}
1575+
onChange={(v) =>
1576+
setProject("background", "border", {
1577+
...(project.background.border ?? {
1578+
enabled: true,
1579+
width: 5.0,
1580+
color: [255, 255, 255],
1581+
opacity: 80.0,
1582+
}),
1583+
opacity: v[0],
1584+
})
1585+
}
1586+
minValue={0}
1587+
maxValue={100}
1588+
step={0.1}
1589+
formatTooltip="%"
1590+
/>
1591+
</Field>
1592+
</Show>
15951593
<Field name="Shadow" icon={<IconCapShadow class="size-4" />}>
15961594
<Slider
15971595
value={[project.background.shadow!]}
@@ -1921,9 +1919,7 @@ function ZoomSegmentPreview(props: {
19211919
const video = document.createElement("video");
19221920
createEffect(() => {
19231921
const path = convertFileSrc(
1924-
`${
1925-
editorInstance.path
1926-
}/content/segments/segment-${segmentIndex()}/display.mp4`,
1922+
`${editorInstance.path}/content/segments/segment-${segmentIndex()}/display.mp4`,
19271923
);
19281924
video.src = path;
19291925
video.preload = "auto";

apps/desktop/src/utils/tauri.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,8 +331,9 @@ start_time?: number | null }
331331
export type AuthSecret = { api_key: string } | { token: string; expires: number }
332332
export type AuthStore = { secret: AuthSecret; user_id: string | null; plan: Plan | null; intercom_hash: string | null }
333333
export type AuthenticationInvalid = null
334-
export type BackgroundConfiguration = { source: BackgroundSource; blur: number; padding: number; rounding: number; inset: number; crop: Crop | null; shadow?: number; advancedShadow?: ShadowConfiguration | null }
334+
export type BackgroundConfiguration = { source: BackgroundSource; blur: number; padding: number; rounding: number; inset: number; crop: Crop | null; shadow?: number; advancedShadow?: ShadowConfiguration | null; border?: BorderConfiguration | null }
335335
export type BackgroundSource = { type: "wallpaper"; path: string | null } | { type: "image"; path: string | null } | { type: "color"; value: [number, number, number] } | { type: "gradient"; from: [number, number, number]; to: [number, number, number]; angle?: number }
336+
export type BorderConfiguration = { enabled: boolean; width: number; color: [number, number, number]; opacity: number }
336337
export type Camera = { hide: boolean; mirror: boolean; position: CameraPosition; size: number; zoom_size: number | null; rounding?: number; shadow?: number; advanced_shadow?: ShadowConfiguration | null; shape?: CameraShape }
337338
export type CameraInfo = { device_id: string; model_id: ModelIDType | null; display_name: string }
338339
export type CameraPosition = { x: CameraXPosition; y: CameraYPosition }

crates/rendering-skia/src/bin/test_background.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ fn test_color_background(
7070
let uniforms = SkiaProjectUniforms {
7171
output_size: (width, height),
7272
background: BackgroundSource::Color { value: color },
73+
border: None,
7374
};
7475

7576
let frame_data = FrameData {
@@ -133,6 +134,7 @@ fn test_gradient_background(
133134
to: [0, 0, 65535], // Blue
134135
angle: 45,
135136
},
137+
border: None,
136138
};
137139

138140
let frame_data = FrameData {
@@ -197,6 +199,7 @@ fn test_gradient_angles(
197199
to: [32768, 0, 65535], // Purple
198200
angle,
199201
},
202+
border: None,
200203
};
201204

202205
let frame_data = FrameData {
@@ -261,6 +264,7 @@ fn test_caching(
261264
to: [0, 0, 65535],
262265
angle: 90,
263266
},
267+
border: None,
264268
};
265269

266270
let frame_data = FrameData {
@@ -306,6 +310,7 @@ fn test_caching(
306310
to: [65535, 65535, 0],
307311
angle: 45,
308312
},
313+
border: None,
309314
};
310315

311316
let new_frame_data = FrameData {

crates/rendering-skia/src/layers/background.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ impl BackgroundLayer {
134134
let border_rect = Rect::from_xywh(
135135
bounds.left() + inset,
136136
bounds.top() + inset,
137-
bounds.width() - border.width,
138-
bounds.height() - border.width,
137+
(bounds.width() - border.width).max(0.0),
138+
(bounds.height() - border.width).max(0.0),
139139
);
140140

141141
canvas.draw_rect(border_rect, &paint);

crates/rendering/src/composite_frame.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ impl CompositeVideoFrameUniforms {
7474
}),
7575
)
7676
}
77+
78+
pub fn write_to_buffer(&self, queue: &wgpu::Queue, buffer: &wgpu::Buffer) {
79+
queue.write_buffer(buffer, 0, bytemuck::bytes_of(self));
80+
}
7781
}
7882

7983
// pub struct CompositeFrameResources {

crates/rendering/src/layers/display.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,8 @@ impl DisplayLayer {
7575
},
7676
);
7777

78-
self.uniforms_buffer = uniforms.to_buffer(device);
79-
80-
self.bind_group = Some(self.pipeline.bind_group(
81-
device,
82-
&self.uniforms_buffer,
83-
&self.frame_texture_view,
84-
));
78+
// Update existing uniform buffer in place; bind group remains valid.
79+
uniforms.write_to_buffer(queue, &self.uniforms_buffer);
8580
}
8681

8782
pub fn render(&self, pass: &mut wgpu::RenderPass<'_>) {

crates/rendering/src/lib.rs

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,7 @@ impl ProjectUniforms {
635635
.advanced_shadow
636636
.as_ref()
637637
.map_or(50.0, |s| s.blur),
638-
opacity: layout.screen_opacity as f32,
638+
opacity: scene.screen_opacity as f32,
639639
border_enabled: if project
640640
.background
641641
.border
@@ -650,26 +650,17 @@ impl ProjectUniforms {
650650
_padding0: 0.0,
651651
_padding1: [0.0; 2],
652652
_padding1b: [0.0; 2],
653-
border_color: {
654-
let border = project.background.border.as_ref().unwrap_or(
655-
&cap_project::BorderConfiguration {
656-
enabled: false,
657-
width: 5.0,
658-
color: [255, 255, 255],
659-
opacity: 80.0,
660-
},
661-
);
662-
653+
border_color: if let Some(b) = project.background.border.as_ref() {
663654
[
664-
border.color[0] as f32 / 255.0,
665-
border.color[1] as f32 / 255.0,
666-
border.color[2] as f32 / 255.0,
667-
(border.opacity / 100.0).clamp(0.0, 1.0),
655+
b.color[0] as f32 / 255.0,
656+
b.color[1] as f32 / 255.0,
657+
b.color[2] as f32 / 255.0,
658+
(b.opacity / 100.0).clamp(0.0, 1.0),
668659
]
660+
} else {
661+
[1.0, 1.0, 1.0, 0.8]
669662
},
670663
_padding2: [0.0; 4],
671-
opacity: scene.screen_opacity as f32,
672-
_padding: [0.0; 3],
673664
}
674665
};
675666

@@ -777,16 +768,14 @@ impl ProjectUniforms {
777768
.advanced_shadow
778769
.as_ref()
779770
.map_or(50.0, |s| s.blur),
780-
opacity: layout.regular_camera_transition_opacity() as f32,
771+
opacity: scene.regular_camera_transition_opacity() as f32,
781772
border_enabled: 0.0,
782773
border_width: 0.0,
783774
_padding0: 0.0,
784775
_padding1: [0.0; 2],
785776
_padding1b: [0.0; 2],
786777
border_color: [0.0, 0.0, 0.0, 0.0],
787778
_padding2: [0.0; 4],
788-
opacity: scene.regular_camera_transition_opacity() as f32,
789-
_padding: [0.0; 3],
790779
}
791780
});
792781

@@ -848,16 +837,14 @@ impl ProjectUniforms {
848837
shadow_size: 0.0,
849838
shadow_opacity: 0.0,
850839
shadow_blur: 0.0,
851-
opacity: layout.camera_only_transition_opacity() as f32,
840+
opacity: scene.camera_only_transition_opacity() as f32,
852841
border_enabled: 0.0,
853842
border_width: 0.0,
854843
_padding0: 0.0,
855844
_padding1: [0.0; 2],
856845
_padding1b: [0.0; 2],
857846
border_color: [0.0, 0.0, 0.0, 0.0],
858847
_padding2: [0.0; 4],
859-
opacity: scene.camera_only_transition_opacity() as f32,
860-
_padding: [0.0; 3],
861848
}
862849
});
863850

0 commit comments

Comments
 (0)