Skip to content

Commit 894fdf4

Browse files
committed
Fix audio playback thread spawning logic
1 parent 46c24e0 commit 894fdf4

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

crates/editor/src/playback.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ impl Playback {
352352
let (audio_playhead_tx, audio_playhead_rx) =
353353
watch::channel(self.start_frame_number as f64 / fps as f64);
354354

355-
AudioPlayback {
355+
let has_audio = AudioPlayback {
356356
segments: get_audio_segments(&self.segment_medias),
357357
stop_rx: stop_rx.clone(),
358358
start_frame_number: self.start_frame_number,
@@ -661,9 +661,10 @@ impl Playback {
661661

662662
frame_number = frame_number.saturating_add(1);
663663
let _ = playback_position_tx.send(frame_number);
664-
if audio_playhead_tx
665-
.send(frame_number as f64 / fps_f64)
666-
.is_err()
664+
if has_audio
665+
&& audio_playhead_tx
666+
.send(frame_number as f64 / fps_f64)
667+
.is_err()
667668
{
668669
break 'playback;
669670
}
@@ -686,9 +687,10 @@ impl Playback {
686687
prefetch_buffer.retain(|p| p.frame_number >= frame_number);
687688
let _ = frame_request_tx.send(frame_number);
688689
let _ = playback_position_tx.send(frame_number);
689-
if audio_playhead_tx
690-
.send(frame_number as f64 / fps_f64)
691-
.is_err()
690+
if has_audio
691+
&& audio_playhead_tx
692+
.send(frame_number as f64 / fps_f64)
693+
.is_err()
692694
{
693695
break 'playback;
694696
}
@@ -727,12 +729,12 @@ struct AudioPlayback {
727729
}
728730

729731
impl AudioPlayback {
730-
fn spawn(self) {
732+
fn spawn(self) -> bool {
731733
let handle = tokio::runtime::Handle::current();
732734

733735
if self.segments.is_empty() || self.segments[0].tracks.is_empty() {
734736
info!("No audio segments found, skipping audio playback thread.");
735-
return;
737+
return false;
736738
}
737739

738740
std::thread::spawn(move || {
@@ -807,6 +809,8 @@ impl AudioPlayback {
807809
let _ = handle.block_on(stop_rx.changed());
808810
info!("Audio playback thread finished.");
809811
});
812+
813+
true
810814
}
811815

812816
#[cfg(not(target_os = "windows"))]

0 commit comments

Comments
 (0)