diff --git a/src/distantrenderer.cpp b/src/distantrenderer.cpp index 7969b36ca85c500eaa4e5fa2d5653e8787276b95..87c1238fc7889c1d077af8ac0322d4d17d828513 100644 --- a/src/distantrenderer.cpp +++ b/src/distantrenderer.cpp @@ -30,13 +30,21 @@ DistantRenderer::DistantRenderer(QQuickItem* parent) setPerformanceHint(QQuickPaintedItem::FastFBOResizing); connect(this, &DistantRenderer::lrcInstanceChanged, [this] { - if (lrcInstance_) + if (lrcInstance_) { connect(lrcInstance_->renderer(), &RenderManager::distantFrameUpdated, [this](const QString& id) { if (distantRenderId_ == id) update(QRect(0, 0, width(), height())); }); + + connect(lrcInstance_->renderer(), + &RenderManager::distantRenderingStopped, + [this](const QString& id) { + if (distantRenderId_ == id) + update(QRect(0, 0, width(), height())); + }); + } }); } @@ -46,6 +54,8 @@ void DistantRenderer::setRendererId(const QString& id) { distantRenderId_ = id; + // Note: Force a paint to update frame as we change the renderer + update(QRect(0, 0, width(), height())); } int diff --git a/src/rendermanager.cpp b/src/rendermanager.cpp index 84646d32a446599628c6e4d0fa231f7e2148672a..22bff5db32ba62c055d9ab2d60f2f076ff3027d5 100644 --- a/src/rendermanager.cpp +++ b/src/rendermanager.cpp @@ -268,6 +268,11 @@ RenderManager::addDistantRenderer(const QString& id) [this](const QString& id) { Q_EMIT distantFrameUpdated(id); }); + distantConnectionMap_[id].stopped = QObject::connect(dfw.get(), + &FrameWrapper::renderingStopped, + [this](const QString& id) { + Q_EMIT distantRenderingStopped(id); + }); /* * Connect FrameWrapper to avmodel. @@ -301,6 +306,7 @@ RenderManager::removeDistantRenderer(const QString& id) if (dcIt != distantConnectionMap_.end()) { QObject::disconnect(dcIt->second.started); QObject::disconnect(dcIt->second.updated); + QObject::disconnect(dcIt->second.stopped); } /*