fix(conference) fix Spot wireless screen sharing
Make sure we use the same screen-sharing flow which takes multi-stream into consideration.
This commit is contained in:
parent
6c3206e4d4
commit
e218c0d3af
|
@ -127,6 +127,7 @@ import {
|
|||
isLocalTrackMuted,
|
||||
isUserInteractionRequiredForUnmute,
|
||||
replaceLocalTrack,
|
||||
toggleScreensharing as toggleScreensharingA,
|
||||
trackAdded,
|
||||
trackRemoved
|
||||
} from './react/features/base/tracks';
|
||||
|
@ -1733,6 +1734,8 @@ export default {
|
|||
* is not specified and starts the procedure for obtaining new screen
|
||||
* sharing/video track otherwise.
|
||||
*
|
||||
* NOTE: this is currently ONLY used in the non-multi-stream case.
|
||||
*
|
||||
* @param {boolean} [toggle] - If true - new screen sharing track will be
|
||||
* obtained. If false - new video track will be obtain. If not specified -
|
||||
* toggles between screen sharing and camera video.
|
||||
|
@ -2658,9 +2661,14 @@ export default {
|
|||
}
|
||||
});
|
||||
|
||||
// Used in non-multi-stream.
|
||||
APP.UI.addListener(
|
||||
UIEvents.TOGGLE_SCREENSHARING, ({ enabled, audioOnly, ignoreDidHaveVideo }) => {
|
||||
this.toggleScreenSharing(enabled, { audioOnly }, ignoreDidHaveVideo);
|
||||
UIEvents.TOGGLE_SCREENSHARING, ({ enabled, audioOnly, ignoreDidHaveVideo, desktopStream }) => {
|
||||
this.toggleScreenSharing(enabled,
|
||||
{
|
||||
audioOnly,
|
||||
desktopStream
|
||||
}, ignoreDidHaveVideo);
|
||||
}
|
||||
);
|
||||
},
|
||||
|
@ -3216,7 +3224,7 @@ export default {
|
|||
return;
|
||||
}
|
||||
|
||||
this.toggleScreenSharing(undefined, { desktopStream });
|
||||
APP.store.dispatch(toggleScreensharingA(undefined, false, false, { desktopStream }));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ MiddlewareRegistry.register(store => next => action => {
|
|||
return;
|
||||
}
|
||||
|
||||
const { enabled, audioOnly, ignoreDidHaveVideo } = action;
|
||||
const { enabled, audioOnly, ignoreDidHaveVideo, shareOptions } = action;
|
||||
|
||||
if (getMultipleVideoSendingSupportFeatureFlag(store.getState())) {
|
||||
_toggleScreenSharing(action, store);
|
||||
|
@ -90,7 +90,8 @@ MiddlewareRegistry.register(store => next => action => {
|
|||
{
|
||||
enabled,
|
||||
audioOnly,
|
||||
ignoreDidHaveVideo
|
||||
ignoreDidHaveVideo,
|
||||
desktopStream: shareOptions?.desktopStream
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -186,23 +187,30 @@ async function _toggleScreenSharing({ enabled, audioOnly = false, shareOptions =
|
|||
|
||||
if (enable) {
|
||||
let tracks;
|
||||
const { _desktopSharingSourceDevice } = state['features/base/config'];
|
||||
|
||||
if (!shareOptions.desktopSharingSources && _desktopSharingSourceDevice) {
|
||||
shareOptions.desktopSharingSourceDevice = _desktopSharingSourceDevice;
|
||||
// Spot proxy stream.
|
||||
if (shareOptions.desktopStream) {
|
||||
tracks = [ shareOptions.desktopStream ];
|
||||
} else {
|
||||
const { _desktopSharingSourceDevice } = state['features/base/config'];
|
||||
|
||||
if (!shareOptions.desktopSharingSources && _desktopSharingSourceDevice) {
|
||||
shareOptions.desktopSharingSourceDevice = _desktopSharingSourceDevice;
|
||||
}
|
||||
const options = {
|
||||
devices: [ VIDEO_TYPE.DESKTOP ],
|
||||
...shareOptions
|
||||
};
|
||||
|
||||
try {
|
||||
tracks = await createLocalTracksF(options);
|
||||
} catch (error) {
|
||||
_handleScreensharingError(error, store);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
const options = {
|
||||
devices: [ VIDEO_TYPE.DESKTOP ],
|
||||
...shareOptions
|
||||
};
|
||||
|
||||
try {
|
||||
tracks = await createLocalTracksF(options);
|
||||
} catch (error) {
|
||||
_handleScreensharingError(error, store);
|
||||
|
||||
return;
|
||||
}
|
||||
const desktopAudioTrack = tracks.find(track => track.getType() === MEDIA_TYPE.AUDIO);
|
||||
const desktopVideoTrack = tracks.find(track => track.getType() === MEDIA_TYPE.VIDEO);
|
||||
|
||||
|
|
Loading…
Reference in New Issue