From a8f8d1881b06b8bc35e7d7dc7a638ca1a55c1ac6 Mon Sep 17 00:00:00 2001
From: kkostiuk <kateryna.kostiuk@savoirfairelinux.com>
Date: Tue, 12 Oct 2021 12:54:39 -0400
Subject: [PATCH] fix: video resolution changed

This patch updates renderer info for an existing render
instead of registering a new renderer.

Change-Id: If087dff0b58072ef00f0dc1e704139aee7f08ed6
---
 Ring/Ring/Bridging/VideoAdapter.mm | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/Ring/Ring/Bridging/VideoAdapter.mm b/Ring/Ring/Bridging/VideoAdapter.mm
index 8e511b36f..528474bd3 100644
--- a/Ring/Ring/Bridging/VideoAdapter.mm
+++ b/Ring/Ring/Bridging/VideoAdapter.mm
@@ -184,13 +184,19 @@ static id <VideoAdapterDelegate> _delegate;
           withWidth:(NSInteger)w
          withHeight:(NSInteger)h{
     auto _sinkId = std::string([sinkId UTF8String]);
-    auto renderer = std::make_shared<Renderer>();
-    renderer->width = static_cast<int>(w);
-    renderer->height = static_cast<int>(h);
-    renderer->rendererId = sinkId;
-    renderer->bindAVSinkFunctions();
-    DRing::registerAVSinkTarget(_sinkId, renderer->avtarget);
-    renderers.insert(std::make_pair(_sinkId, renderer));
+    auto renderer = renderers.find(_sinkId);
+    if (renderer != renderers.end()) {
+        renderer->second->width = static_cast<int>(w);
+        renderer->second->height = static_cast<int>(h);
+        return;
+    }
+    auto newRenderer = std::make_shared<Renderer>();
+    newRenderer->width = static_cast<int>(w);
+    newRenderer->height = static_cast<int>(h);
+    newRenderer->rendererId = sinkId;
+    newRenderer->bindAVSinkFunctions();
+    DRing::registerAVSinkTarget(_sinkId, newRenderer->avtarget);
+    renderers.insert(std::make_pair(_sinkId, newRenderer));
 }
 
 - (void)removeSinkTargetWithSinkId:(NSString*)sinkId {
-- 
GitLab