Showing the changes to libraries/networking/src/ResourceCache.cpp (1 of 3 files). Show all
Unified · Split
| @@ -112,27 +112,31 @@ void ResourceCache::reserveUnusedResource(qint64 resourceSize) { · 111 unmodified lines | ||
| 112 | 112 | } |
| 113 | 113 | |
| 114 | 114 | void ResourceCache::attemptRequest(Resource* resource) { |
| 115 | + auto sharedItems = DependencyManager::get<ResouceCacheSharedItems>(); | |
| 115 | 116 | if (_requestLimit <= 0) { |
| 116 | 117 | // wait until a slot becomes available |
| 117 | − _pendingRequests.append(resource); | |
| 118 | + sharedItems->_pendingRequests.append(resource); | |
| 118 | 119 | return; |
| 119 | 120 | } |
| 120 | 121 | _requestLimit--; |
| 121 | − _loadingRequests.append(resource); | |
| 122 | + sharedItems->_loadingRequests.append(resource); | |
| 122 | 123 | resource->makeRequest(); |
| 123 | 124 | } |
| 124 | 125 | |
| 125 | 126 | void ResourceCache::requestCompleted(Resource* resource) { |
| 126 | − _loadingRequests.removeOne(resource); | |
| 127 | + | |
| 128 | + auto sharedItems = DependencyManager::get<ResouceCacheSharedItems>(); | |
| 129 | + sharedItems->_loadingRequests.removeOne(resource); | |
| 127 | 130 | _requestLimit++; |
| 128 | 131 | |
| 129 | 132 | // look for the highest priority pending request |
| 130 | 133 | int highestIndex = -1; |
| 131 | 134 | float highestPriority = -FLT_MAX; |
| 132 | − for (int i = 0; i < _pendingRequests.size(); ) { | |
| 133 | − Resource* resource = _pendingRequests.at(i).data(); | |
| 135 | + int pendingRequests = sharedItems->_pendingRequests.size(); | |
| 136 | + for (int i = 0; i < pendingRequests; ) { | |
| 137 | + Resource* resource = sharedItems->_pendingRequests.at(i).data(); | |
| 134 | 138 | if (!resource) { |
| 135 | − _pendingRequests.removeAt(i); | |
| 139 | + sharedItems->_pendingRequests.removeAt(i); | |
| 136 | 140 | continue; |
| 137 | 141 | } |
| 138 | 142 | float priority = resource->getLoadPriority(); |
| @@ -143,16 +147,13 @@ void ResourceCache::requestCompleted(Resource* resource) { · 4 unmodified lines | ||
| 143 | 147 | i++; |
| 144 | 148 | } |
| 145 | 149 | if (highestIndex >= 0) { |
| 146 | − attemptRequest(_pendingRequests.takeAt(highestIndex)); | |
| 150 | + attemptRequest(sharedItems->_pendingRequests.takeAt(highestIndex)); | |
| 147 | 151 | } |
| 148 | 152 | } |
| 149 | 153 | |
| 150 | 154 | const int DEFAULT_REQUEST_LIMIT = 10; |
| 151 | 155 | int ResourceCache::_requestLimit = DEFAULT_REQUEST_LIMIT; |
| 152 | 156 | |
| 153 | −QList<QPointer<Resource> > ResourceCache::_pendingRequests; | |
| 154 | −QList<Resource*> ResourceCache::_loadingRequests; | |
| 155 | − | |
| 156 | 157 | Resource::Resource(const QUrl& url, bool delayLoad) : |
| 157 | 158 | _url(url), |
| 158 | 159 | _request(url) { |