diff --git a/src/FlightDisplay/VideoManager.h b/src/FlightDisplay/VideoManager.h index f419af9..a63d683 100644 --- a/src/FlightDisplay/VideoManager.h +++ b/src/FlightDisplay/VideoManager.h @@ -56,7 +56,7 @@ public: // Override from QGCTool void setToolbox (QGCToolbox *toolbox); - Q_INVOKABLE void startVideo() {_videoReceiver->stop();}; + Q_INVOKABLE void startVideo() {_videoReceiver->start();}; Q_INVOKABLE void stopVideo() {_videoReceiver->stop();}; signals: diff --git a/src/VideoStreaming/VideoReceiver.cc b/src/VideoStreaming/VideoReceiver.cc index 633688e..a51638d 100644 --- a/src/VideoStreaming/VideoReceiver.cc +++ b/src/VideoStreaming/VideoReceiver.cc @@ -218,6 +218,7 @@ VideoReceiver::start() return; } #if defined(QGC_GST_STREAMING) + _stop = false; qCDebug(VideoReceiverLog) << "start()"; if (_uri.isEmpty()) { @@ -433,6 +434,7 @@ void VideoReceiver::stop() { #if defined(QGC_GST_STREAMING) + _stop = true; qCDebug(VideoReceiverLog) << "stop()"; if(!_streaming) { _shutdownPipeline(); @@ -870,9 +872,11 @@ VideoReceiver::_updateTimer() } if(elapsed > (time_t)timeout && _videoSurface) { stop(); + // We want to start it back again with _updateTimer + _stop = false; } } else { - if(!running() && !_uri.isEmpty() && _videoSettings->streamEnabled()->rawValue().toBool()) { + if(!_stop && !running() && !_uri.isEmpty() && _videoSettings->streamEnabled()->rawValue().toBool()) { start(); } } diff --git a/src/VideoStreaming/VideoReceiver.h b/src/VideoStreaming/VideoReceiver.h index 76aa304..7739b23 100644 --- a/src/VideoStreaming/VideoReceiver.h +++ b/src/VideoStreaming/VideoReceiver.h @@ -114,6 +114,7 @@ private: bool _streaming; bool _starting; bool _stopping; + bool _stop; Sink* _sink; GstElement* _tee;