removed unnecessary screensharing portal on wayland

This commit is contained in:
Kaitlyn 2023-09-28 16:20:06 -04:00
parent c4f6941ea6
commit 2b79ad8389
2 changed files with 30 additions and 18 deletions

View file

@ -10,6 +10,9 @@ import { IpcEvents } from "shared/IpcEvents";
import { handle } from "./utils/ipcWrappers"; import { handle } from "./utils/ipcWrappers";
const isWayland =
process.platform === "linux" && (process.env.XDG_SESSION_TYPE === "wayland" || !!process.env.WAYLAND_DISPLAY);
export function registerScreenShareHandler() { export function registerScreenShareHandler() {
handle(IpcEvents.CAPTURER_GET_LARGE_THUMBNAIL, async (_, id: string) => { handle(IpcEvents.CAPTURER_GET_LARGE_THUMBNAIL, async (_, id: string) => {
const sources = await desktopCapturer.getSources({ const sources = await desktopCapturer.getSources({
@ -23,19 +26,22 @@ export function registerScreenShareHandler() {
}); });
session.defaultSession.setDisplayMediaRequestHandler(async (request, callback) => { session.defaultSession.setDisplayMediaRequestHandler(async (request, callback) => {
const sources = await desktopCapturer.getSources({ const sources = await desktopCapturer
types: ["window", "screen"], .getSources({
thumbnailSize: { types: ["window", "screen"],
width: 176, thumbnailSize: isWayland
height: 99 ? {
} width: 1920,
}).catch(() => null); height: 1080
}
: {
width: 176,
height: 99
}
})
.catch(() => null);
if (sources === null) return callback({}); if (sources === null) return callback({});
const isWayland =
process.platform === "linux" &&
(process.env.XDG_SESSION_TYPE === "wayland" || !!process.env.WAYLAND_DISPLAY);
const data = sources.map(({ id, name, thumbnail }) => ({ const data = sources.map(({ id, name, thumbnail }) => ({
id, id,

View file

@ -116,19 +116,24 @@ function ScreenPicker({ screens, chooseScreen }: { screens: Source[]; chooseScre
); );
} }
export function StreamSettings({ function StreamSettings({
source, source,
settings, settings,
setSettings setSettings,
skipPicker
}: { }: {
source: Source; source: Source;
settings: StreamSettings; settings: StreamSettings;
setSettings: Dispatch<SetStateAction<StreamSettings>>; setSettings: Dispatch<SetStateAction<StreamSettings>>;
skipPicker: boolean;
}) { }) {
const [thumb] = useAwaiter(() => VesktopNative.capturer.getLargeThumbnail(source.id), { const [thumb] = useAwaiter(
fallbackValue: source.url, () => (skipPicker ? Promise.resolve(source.url) : VesktopNative.capturer.getLargeThumbnail(source.id)),
deps: [source.id] {
}); fallbackValue: source.url,
deps: [source.id]
}
);
return ( return (
<div> <div>
@ -269,6 +274,7 @@ function ModalComponent({
source={screens.find(s => s.id === selected)!} source={screens.find(s => s.id === selected)!}
settings={settings} settings={settings}
setSettings={setSettings} setSettings={setSettings}
skipPicker={skipPicker}
/> />
)} )}
</Modals.ModalContent> </Modals.ModalContent>