From 8050721de77a64c7b53467c5959f0ea38d80cab3 Mon Sep 17 00:00:00 2001 From: Ruben Brunk Date: Thu, 14 May 2015 13:50:57 -0700 Subject: camera2: Fix empty set handling for eviction. Bug: 20304829 Change-Id: I120ed6e41ca592c3770797a5fb1e5ce556543949 --- .../camera/libcameraservice/utils/ClientManager.h | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'services/camera/libcameraservice/utils') diff --git a/services/camera/libcameraservice/utils/ClientManager.h b/services/camera/libcameraservice/utils/ClientManager.h index aa40a2d..5afb7a3 100644 --- a/services/camera/libcameraservice/utils/ClientManager.h +++ b/services/camera/libcameraservice/utils/ClientManager.h @@ -432,15 +432,17 @@ std::vector>> ClientManager>& curClientPtr) { - if (curClientPtr->getKey() == (*iter)->getKey()) { - iter++; - return true; - } - return false; - }), mClients.end()); + if (iter != evicted.cend()) { + // Remove evicted clients from list + mClients.erase(std::remove_if(mClients.begin(), mClients.end(), + [&iter] (std::shared_ptr>& curClientPtr) { + if (curClientPtr->getKey() == (*iter)->getKey()) { + iter++; + return true; + } + return false; + }), mClients.end()); + } mClients.push_back(client); mRemovedCondition.broadcast(); -- cgit v1.1