diff --git a/app/gui/StreamSegue.qml b/app/gui/StreamSegue.qml index ccb3bc1e..8a1eaa96 100644 --- a/app/gui/StreamSegue.qml +++ b/app/gui/StreamSegue.qml @@ -15,6 +15,11 @@ Item { anchors.fill: parent + // The StackView will trigger a visibility change when + // we're pushed onto it, causing our onVisibleChanged + // routine to run, but only if we start as invisible + visible: false + function stageStarting(stage) { // Update the spinner text @@ -100,34 +105,39 @@ Item { id: gamepadKeyNav } - StackView.onActivated: { - // Hide the toolbar before we start loading - toolBar.visible = false - - // Set the hint text. We do this here rather than - // in the hintText control itself to synchronize - // with Session.exec() which requires no concurrent - // gamepad usage. - hintText.text = gamepadKeyNav.getConnectedGamepads() > 0 ? - "Tip: Press Start+Select+L1+R1 to disconnect your session" : - "Tip: Press Ctrl+Alt+Shift+Q to disconnect your session" - - // Hook up our signals - session.stageStarting.connect(stageStarting) - session.stageFailed.connect(stageFailed) - session.connectionStarted.connect(connectionStarted) - session.displayLaunchError.connect(displayLaunchError) - session.displayLaunchWarning.connect(displayLaunchWarning) - session.quitStarting.connect(quitStarting) - session.sessionFinished.connect(sessionFinished) - - // Run the streaming session to completion - session.exec(Screen.virtualX, Screen.virtualY) + StackView.onDeactivating: { + // Show the toolbar again when popped off the stack + toolBar.visible = true } - StackView.onDeactivating: { - // Show the toolbar again - toolBar.visible = true + // !!! Changing this to use the StackView activation callbacks + // causes our mouse polling rate to drop significantly on + // Windows for some reason !!! + onVisibleChanged: { + if (visible) { + // Hide the toolbar before we start loading + toolBar.visible = false + + // Set the hint text. We do this here rather than + // in the hintText control itself to synchronize + // with Session.exec() which requires no concurrent + // gamepad usage. + hintText.text = gamepadKeyNav.getConnectedGamepads() > 0 ? + "Tip: Press Start+Select+L1+R1 to disconnect your session" : + "Tip: Press Ctrl+Alt+Shift+Q to disconnect your session" + + // Hook up our signals + session.stageStarting.connect(stageStarting) + session.stageFailed.connect(stageFailed) + session.connectionStarted.connect(connectionStarted) + session.displayLaunchError.connect(displayLaunchError) + session.displayLaunchWarning.connect(displayLaunchWarning) + session.quitStarting.connect(quitStarting) + session.sessionFinished.connect(sessionFinished) + + // Run the streaming session to completion + session.exec(Screen.virtualX, Screen.virtualY) + } } Row {