|
@@ -11,7 +11,11 @@ import {
|
11
|
11
|
} from '../media';
|
12
|
12
|
import { MiddlewareRegistry } from '../redux';
|
13
|
13
|
|
14
|
|
-import { createLocalTracks, destroyLocalTracks } from './actions';
|
|
14
|
+import {
|
|
15
|
+ _disposeAndRemoveTracks,
|
|
16
|
+ createLocalTracks,
|
|
17
|
+ destroyLocalTracks
|
|
18
|
+} from './actions';
|
15
|
19
|
import { TRACK_UPDATED } from './actionTypes';
|
16
|
20
|
import { getLocalTrack, setTrackMuted } from './functions';
|
17
|
21
|
|
|
@@ -37,7 +41,16 @@ MiddlewareRegistry.register(store => next => action => {
|
37
|
41
|
_setMuted(store, action, MEDIA_TYPE.AUDIO);
|
38
|
42
|
break;
|
39
|
43
|
|
40
|
|
- case SET_CAMERA_FACING_MODE:
|
|
44
|
+ case SET_CAMERA_FACING_MODE: {
|
|
45
|
+ // XXX Destroy the local video track before creating a new one or
|
|
46
|
+ // react-native-webrtc may be slow or get stuck when opening a (video)
|
|
47
|
+ // capturer twice.
|
|
48
|
+ const localTrack = _getLocalTrack(store, MEDIA_TYPE.VIDEO);
|
|
49
|
+
|
|
50
|
+ if (localTrack) {
|
|
51
|
+ store.dispatch(_disposeAndRemoveTracks([ localTrack.jitsiTrack ]));
|
|
52
|
+ }
|
|
53
|
+
|
41
|
54
|
store.dispatch(
|
42
|
55
|
createLocalTracks({
|
43
|
56
|
devices: [ MEDIA_TYPE.VIDEO ],
|
|
@@ -45,6 +58,7 @@ MiddlewareRegistry.register(store => next => action => {
|
45
|
58
|
})
|
46
|
59
|
);
|
47
|
60
|
break;
|
|
61
|
+ }
|
48
|
62
|
|
49
|
63
|
case SET_VIDEO_MUTED:
|
50
|
64
|
_setMuted(store, action, MEDIA_TYPE.VIDEO);
|