fix MPV visualizer on macOS and handle exclusive mode UX (#1930)

This commit is contained in:
York
2026-04-14 11:47:03 +08:00
committed by GitHub
parent f5839bf39c
commit b99899f128
7 changed files with 58 additions and 6 deletions
@@ -19,6 +19,7 @@ export function useVisualizerSystemAudio(options: {
onDeniedRef.current = onSystemAudioCaptureDenied;
onSuccessRef.current = onSystemAudioCaptureSuccess;
const playbackType = usePlaybackType();
const isMacOS = Boolean(window.api?.utils?.isMacOS?.());
const { setWebAudio, webAudio } = useWebAudio();
const webAudioRef = useRef(webAudio);
const streamRef = useRef<MediaStream | null>(null);
@@ -80,7 +81,7 @@ export function useVisualizerSystemAudio(options: {
try {
const stream = await navigator.mediaDevices.getDisplayMedia({
audio: true,
video: false,
video: isMacOS, // On macOS, getDisplayMedia requires video to be requested in order to capture system audio
});
const audioTracks = stream.getAudioTracks();
@@ -124,7 +125,7 @@ export function useVisualizerSystemAudio(options: {
} finally {
connectInFlightRef.current = false;
}
}, [disconnect, setWebAudio]);
}, [disconnect, isMacOS, setWebAudio]);
const connectRef = useRef(connect);
connectRef.current = connect;