67 lines
2.6 KiB
Diff
67 lines
2.6 KiB
Diff
--- a/src/renderer/components/ScreenSharePicker.tsx
|
|
+++ b/src/renderer/components/ScreenSharePicker.tsx
|
|
@@ -31,7 +31,14 @@
|
|
useForceUpdater
|
|
} from "@vencord/types/utils";
|
|
import { onceReady } from "@vencord/types/webpack";
|
|
-import { FluxDispatcher, MediaEngineStore, Select, UserStore, useState } from "@vencord/types/webpack/common";
|
|
+import {
|
|
+ FluxDispatcher,
|
|
+ MediaEngineStore,
|
|
+ Select,
|
|
+ useEffect,
|
|
+ UserStore,
|
|
+ useState
|
|
+} from "@vencord/types/webpack/common";
|
|
import { Node } from "@vencord/venmic";
|
|
import type { Dispatch, SetStateAction } from "react";
|
|
import { addPatch } from "renderer/patches/shared";
|
|
@@ -590,6 +597,21 @@
|
|
const hasPipewirePulse = sources.ok ? sources.hasPipewirePulse : true;
|
|
const [ignorePulseWarning, setIgnorePulseWarning] = useState(false);
|
|
|
|
+ // Once the first source list arrives, preselect whichever of the last
|
|
+ // stream's audio sources are running again (e.g. the same game).
|
|
+ const [restored, setRestored] = useState(false);
|
|
+ useEffect(() => {
|
|
+ if (restored || loading || !sources.ok) return;
|
|
+ setRestored(true);
|
|
+
|
|
+ const last = State.store.screenshareAudio;
|
|
+ if (includeSources !== "None" || !last || last === "None") return;
|
|
+ if (last === "Entire System") return setIncludeSources(last);
|
|
+
|
|
+ const running = last.filter(l => sources.targets.some(t => hasMatchingProps(l, t)));
|
|
+ if (running.length) setIncludeSources(running);
|
|
+ }, [loading]);
|
|
+
|
|
if (!sources.ok && sources.isGlibCxxOutdated) {
|
|
return (
|
|
<Paragraph>
|
|
@@ -746,6 +768,7 @@
|
|
disabled={!selected}
|
|
onClick={() => {
|
|
currentSettings = settings;
|
|
+ if (isLinux) State.store.screenshareAudio = settings.includeSources;
|
|
try {
|
|
const frameRate = Number(qualitySettings.frameRate);
|
|
const height = Number(qualitySettings.resolution);
|
|
--- a/src/renderer/settings.ts
|
|
+++ b/src/renderer/settings.ts
|
|
@@ -4,6 +4,7 @@
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*/
|
|
|
|
+import type { Node } from "@vencord/venmic";
|
|
import { useEffect, useReducer } from "@vencord/types/webpack/common";
|
|
import { SettingsStore } from "shared/utils/SettingsStore";
|
|
|
|
@@ -37,6 +38,8 @@
|
|
resolution: string;
|
|
frameRate: string;
|
|
};
|
|
+ // audio sources picked for the last stream, preselected when running again
|
|
+ screenshareAudio?: "None" | "Entire System" | Node[];
|
|
}
|
|
|
|
const stateKey = "VesktopState";
|