From 3837952418c85af456831a4ad62c9faed3fa9e6a Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Wed, 20 Jun 2018 18:29:04 -0300 Subject: [PATCH] Android - Add a clear method on pending downloads and use it when going background --- interface/src/Application.cpp | 4 ++++ libraries/networking/src/ResourceCache.cpp | 9 +++++++++ libraries/networking/src/ResourceCache.h | 2 ++ 3 files changed, 15 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e0e2075ffc..f2d0f0fd94 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -8271,6 +8271,10 @@ void Application::enterBackground() { if (getActiveDisplayPlugin()->isActive()) { getActiveDisplayPlugin()->deactivate(); } + // Clear caches + clearDomainOctreeDetails(); + // Clear the pending request list to avoid extra downloads to happen + ResourceCache::clearPendingRequests(); } void Application::enterForeground() { diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index 0b1334daba..2d90ef1188 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -95,6 +95,11 @@ void ResourceCacheSharedItems::removeRequest(QWeakPointer resource) { } } +void ResourceCacheSharedItems::clearPendingRequests() { + Lock lock(_mutex); + _pendingRequests.clear(); +} + QSharedPointer ResourceCacheSharedItems::getHighestPendingRequest() { // look for the highest priority pending request int highestIndex = -1; @@ -467,6 +472,10 @@ int ResourceCache::getPendingRequestCount() { return DependencyManager::get()->getPendingRequestsCount(); } +void ResourceCache::clearPendingRequests() { + return DependencyManager::get()->clearPendingRequests(); +} + int ResourceCache::getLoadingRequestCount() { return DependencyManager::get()->getLoadingRequestsCount(); } diff --git a/libraries/networking/src/ResourceCache.h b/libraries/networking/src/ResourceCache.h index a4bd352563..d878d0356b 100644 --- a/libraries/networking/src/ResourceCache.h +++ b/libraries/networking/src/ResourceCache.h @@ -71,6 +71,7 @@ public: void removeRequest(QWeakPointer doneRequest); QList> getPendingRequests(); uint32_t getPendingRequestsCount() const; + void clearPendingRequests(); QList> getLoadingRequests(); QSharedPointer getHighestPendingRequest(); uint32_t getLoadingRequestsCount() const; @@ -225,6 +226,7 @@ public: static QList> getLoadingRequests(); static int getPendingRequestCount(); + static void clearPendingRequests(); static int getLoadingRequestCount();