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,
|
isLocalTrackMuted,
|
||||||
isUserInteractionRequiredForUnmute,
|
isUserInteractionRequiredForUnmute,
|
||||||
replaceLocalTrack,
|
replaceLocalTrack,
|
||||||
|
toggleScreensharing as toggleScreensharingA,
|
||||||
trackAdded,
|
trackAdded,
|
||||||
trackRemoved
|
trackRemoved
|
||||||
} from './react/features/base/tracks';
|
} from './react/features/base/tracks';
|
||||||
|
@ -1733,6 +1734,8 @@ export default {
|
||||||
* is not specified and starts the procedure for obtaining new screen
|
* is not specified and starts the procedure for obtaining new screen
|
||||||
* sharing/video track otherwise.
|
* 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
|
* @param {boolean} [toggle] - If true - new screen sharing track will be
|
||||||
* obtained. If false - new video track will be obtain. If not specified -
|
* obtained. If false - new video track will be obtain. If not specified -
|
||||||
* toggles between screen sharing and camera video.
|
* toggles between screen sharing and camera video.
|
||||||
|
@ -2658,9 +2661,14 @@ export default {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Used in non-multi-stream.
|
||||||
APP.UI.addListener(
|
APP.UI.addListener(
|
||||||
UIEvents.TOGGLE_SCREENSHARING, ({ enabled, audioOnly, ignoreDidHaveVideo }) => {
|
UIEvents.TOGGLE_SCREENSHARING, ({ enabled, audioOnly, ignoreDidHaveVideo, desktopStream }) => {
|
||||||
this.toggleScreenSharing(enabled, { audioOnly }, ignoreDidHaveVideo);
|
this.toggleScreenSharing(enabled,
|
||||||
|
{
|
||||||
|
audioOnly,
|
||||||
|
desktopStream
|
||||||
|
}, ignoreDidHaveVideo);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -3216,7 +3224,7 @@ export default {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.toggleScreenSharing(undefined, { desktopStream });
|
APP.store.dispatch(toggleScreensharingA(undefined, false, false, { desktopStream }));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,7 +81,7 @@ MiddlewareRegistry.register(store => next => action => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { enabled, audioOnly, ignoreDidHaveVideo } = action;
|
const { enabled, audioOnly, ignoreDidHaveVideo, shareOptions } = action;
|
||||||
|
|
||||||
if (getMultipleVideoSendingSupportFeatureFlag(store.getState())) {
|
if (getMultipleVideoSendingSupportFeatureFlag(store.getState())) {
|
||||||
_toggleScreenSharing(action, store);
|
_toggleScreenSharing(action, store);
|
||||||
|
@ -90,7 +90,8 @@ MiddlewareRegistry.register(store => next => action => {
|
||||||
{
|
{
|
||||||
enabled,
|
enabled,
|
||||||
audioOnly,
|
audioOnly,
|
||||||
ignoreDidHaveVideo
|
ignoreDidHaveVideo,
|
||||||
|
desktopStream: shareOptions?.desktopStream
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -186,23 +187,30 @@ async function _toggleScreenSharing({ enabled, audioOnly = false, shareOptions =
|
||||||
|
|
||||||
if (enable) {
|
if (enable) {
|
||||||
let tracks;
|
let tracks;
|
||||||
const { _desktopSharingSourceDevice } = state['features/base/config'];
|
|
||||||
|
|
||||||
if (!shareOptions.desktopSharingSources && _desktopSharingSourceDevice) {
|
// Spot proxy stream.
|
||||||
shareOptions.desktopSharingSourceDevice = _desktopSharingSourceDevice;
|
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 desktopAudioTrack = tracks.find(track => track.getType() === MEDIA_TYPE.AUDIO);
|
||||||
const desktopVideoTrack = tracks.find(track => track.getType() === MEDIA_TYPE.VIDEO);
|
const desktopVideoTrack = tracks.find(track => track.getType() === MEDIA_TYPE.VIDEO);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue