diff --git a/extension/src/HomeView.vue b/extension/src/HomeView.vue
index ce6e28e..d9bafbb 100644
--- a/extension/src/HomeView.vue
+++ b/extension/src/HomeView.vue
@@ -15,18 +15,26 @@
@keydown.enter="startShare"
>
-
+
+
+
@@ -56,7 +64,7 @@ export default {
...mapState(["roomName", "roomNameValid", "roomNameInputErrorMessages"])
},
methods: {
- ...mapActions(["randomRoomName", "startShare", "toggleScreenShare", "toggleDistributedStreaming"]),
+ ...mapActions(["randomRoomName", "startShare", "toggleScreenShare", "toggleDistributedStreaming", "toggle60FpsVideo"]),
...mapMutations(["setRoomName"])
}
};
diff --git a/extension/src/app.js b/extension/src/app.js
index 845eb3e..1ba82df 100644
--- a/extension/src/app.js
+++ b/extension/src/app.js
@@ -157,6 +157,11 @@ const store = new Vuex.Store({
if(this.state.state === States.HOME) {
port.postMessage({ type: 'toggleDistributedStreaming', useDistributedStreaming: checked });
}
+ },
+ toggle60FpsVideo(context, value) {
+ if(this.state.state === States.HOME) {
+ port.postMessage({ type: "toggle60Fps", selected: value });
+ }
}
}
})
@@ -186,10 +191,13 @@ chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
store.commit("setState", request.data);
if(store.state.state === States.HOME) {
router.push({name: 'home'}).catch((err) => {});
+ // reset states of media variables to match state of selection controls
store.dispatch("toggleScreenShare", false);
+ store.dispatch("toggle60FpsVideo", false);
}
else if(store.state.state === States.SHARING) {
router.push({name: "sharing"}).catch((err) => {});
+ app.$el.getElementsByClassName('v-application--wrap')[0].style.minHeight = "50vH"
}
}
});
diff --git a/extension/src/js/background/index.js b/extension/src/js/background/index.js
index da5e624..5581ae7 100644
--- a/extension/src/js/background/index.js
+++ b/extension/src/js/background/index.js
@@ -1,6 +1,7 @@
// used by client.
import opus from './opus';
+var lastFPSSetting = 30;
// ATTN: Uncomment accordingly for local/remote dev
const ENDPOINT = "https://www.toonin.ml:8443/";
const socket = io(ENDPOINT, { secure: true });
@@ -11,7 +12,12 @@ var remoteDestination,
gainNode;
const constraints = {
video: false,
- audio: true
+ audio: true,
+ videoConstraints: {
+ mandatory: {
+ minFrameRate: 60
+ }
+ }
};
// keep track of tab on which the extension is active.
var state = "HOME";
@@ -75,10 +81,21 @@ chrome.runtime.onConnect.addListener(function (p) {
}
if(msg.type === "toggleScreenShare") {
constraints.video = msg.isSharing;
+ if(!msg.isSharing) {
+ lastFPSSetting = constraints.videoConstraints.mandatory.minFrameRate;
+ constraints.videoConstraints = null;
+ } else {
+ constraints.videoConstraints = { mandatory: { minFrameRate: lastFPSSetting } }
+ }
}
if(msg.type === "toggleDistributedStreaming") {
useDistributedStreaming = msg.useDistributedStreaming;
}
+ if(msg.type === "toggle60Fps") {
+ if(constraints.videoConstraints !== null) {
+ constraints.videoConstraints.mandatory.minFrameRate = msg.selected ? 60 : 30;
+ }
+ }
});
});
chrome.tabs.onRemoved.addListener(function (tabId, removed) {