@@ -592,7 +592,6 @@ class CallSession {
592592 await addLocalStream (stream, SDPStreamMetadataPurpose .Screenshare );
593593 return true ;
594594 } catch (err) {
595- fireCallEvent (CallStateChange .kError);
596595 return false ;
597596 }
598597 } else {
@@ -1315,16 +1314,16 @@ class CallSession {
13151314 return await voip.delegate.mediaDevices.getUserMedia (mediaConstraints);
13161315 } catch (e) {
13171316 await _getUserMediaFailed (e);
1318- rethrow ;
13191317 }
1318+ return null ;
13201319 }
13211320
13221321 Future <MediaStream ?> _getDisplayMedia () async {
13231322 try {
13241323 return await voip.delegate.mediaDevices
13251324 .getDisplayMedia (UserMediaConstraints .screenMediaConstraints);
13261325 } catch (e) {
1327- await _getUserMediaFailed (e);
1326+ await _getDisplayMediaFailed (e);
13281327 }
13291328 return null ;
13301329 }
@@ -1493,6 +1492,18 @@ class CallSession {
14931492 );
14941493 }
14951494
1495+ Future <void > _getDisplayMediaFailed (dynamic err) async {
1496+ Logs ().w ('Failed to get display media - ending call ${err .toString ()}' );
1497+ fireCallEvent (CallStateChange .kError);
1498+ // We don't terminate the call here because the user might still want to stay
1499+ // on the call and try again later.
1500+ throw CallError (
1501+ CallErrorCode .displayMediaFailed,
1502+ 'Failed to get display media' ,
1503+ err,
1504+ );
1505+ }
1506+
14961507 Future <void > onSelectAnswerReceived (String ? selectedPartyId) async {
14971508 if (direction != CallDirection .kIncoming) {
14981509 Logs ().w ('Got select_answer for an outbound call: ignoring' );
0 commit comments