From 8092647027b0251b9fedf3e27b4a2807828c0c7c Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Mon, 12 Aug 2019 14:20:06 -0400 Subject: [PATCH] Disable full screen video if no vehicle or connection lost --- src/FlightDisplay/VideoManager.cc | 29 +++++++++++++++++++++++++++++ src/FlightDisplay/VideoManager.h | 3 ++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/FlightDisplay/VideoManager.cc b/src/FlightDisplay/VideoManager.cc index 23db60363..ee1ac37e7 100644 --- a/src/FlightDisplay/VideoManager.cc +++ b/src/FlightDisplay/VideoManager.cc @@ -271,6 +271,20 @@ VideoManager::uvcEnabled() } #endif +//----------------------------------------------------------------------------- +void +VideoManager::setfullScreen(bool f) +{ + if(f) { + //-- No can do if no vehicle or connection lost + if(!_activeVehicle || _activeVehicle->connectionLost()) { + f = false; + } + } + _fullScreen = f; + emit fullScreenChanged(); +} + //----------------------------------------------------------------------------- void VideoManager::_updateSettings() @@ -357,6 +371,7 @@ void VideoManager::_setActiveVehicle(Vehicle* vehicle) { if(_activeVehicle) { + disconnect(_activeVehicle, &Vehicle::connectionLostChanged, this, &VideoManager::_connectionLostChanged); if(_activeVehicle->dynamicCameras()) { QGCCameraControl* pCamera = _activeVehicle->dynamicCameras()->currentCameraInstance(); if(pCamera) { @@ -367,6 +382,7 @@ VideoManager::_setActiveVehicle(Vehicle* vehicle) } _activeVehicle = vehicle; if(_activeVehicle) { + connect(_activeVehicle, &Vehicle::connectionLostChanged, this, &VideoManager::_connectionLostChanged); if(_activeVehicle->dynamicCameras()) { connect(_activeVehicle->dynamicCameras(), &QGCCameraManager::streamChanged, this, &VideoManager::restartVideo); QGCCameraControl* pCamera = _activeVehicle->dynamicCameras()->currentCameraInstance(); @@ -374,11 +390,24 @@ VideoManager::_setActiveVehicle(Vehicle* vehicle) pCamera->resumeStream(); } } + } else { + //-- Disable full screen video if vehicle is gone + setfullScreen(false); } emit autoStreamConfiguredChanged(); restartVideo(); } +//---------------------------------------------------------------------------------------- +void +VideoManager::_connectionLostChanged(bool connectionLost) +{ + if(connectionLost) { + //-- Disable full screen video if connection is lost + setfullScreen(false); + } +} + //---------------------------------------------------------------------------------------- void VideoManager::_aspectRatioChanged() diff --git a/src/FlightDisplay/VideoManager.h b/src/FlightDisplay/VideoManager.h index dfeafdcde..fcd8707f4 100644 --- a/src/FlightDisplay/VideoManager.h +++ b/src/FlightDisplay/VideoManager.h @@ -73,7 +73,7 @@ public: virtual bool uvcEnabled (); #endif - virtual void setfullScreen (bool f) { _fullScreen = f; emit fullScreenChanged(); } + virtual void setfullScreen (bool f); virtual void setIsTaisync (bool t) { _isTaisync = t; emit isTaisyncChanged(); } // Override from QGCTool @@ -100,6 +100,7 @@ protected slots: void _updateUVC (); void _setActiveVehicle (Vehicle* vehicle); void _aspectRatioChanged (); + void _connectionLostChanged (bool connectionLost); protected: void _updateSettings (); -- 2.22.0