Index: android_webview/browser/shared_renderer_state.cc |
diff --git a/android_webview/browser/shared_renderer_state.cc b/android_webview/browser/shared_renderer_state.cc |
index e81ab1261ec7d19e7a71cfb406070b3a7afa314d..7652217a54b7694da0c4100bd4d3e7d5eac10361 100644 |
--- a/android_webview/browser/shared_renderer_state.cc |
+++ b/android_webview/browser/shared_renderer_state.cc |
@@ -213,18 +213,26 @@ bool SharedRendererState::IsInsideHardwareRelease() const { |
return inside_hardware_release_; |
} |
+SharedRendererState::ReturnedResources::ReturnedResources() |
+ : output_surface_id(0u) {} |
+ |
void SharedRendererState::InsertReturnedResourcesOnRT( |
const cc::ReturnedResourceArray& resources, |
- uint32_t compositor_id) { |
+ uint32_t compositor_id, |
+ uint32_t output_surface_id) { |
base::AutoLock lock(lock_); |
- cc::ReturnedResourceArray& returned_resources = |
+ ReturnedResources& returned_resources = |
returned_resources_map_[compositor_id]; |
- returned_resources.insert(returned_resources.end(), resources.begin(), |
- resources.end()); |
+ if (returned_resources.output_surface_id != output_surface_id) { |
+ returned_resources.resources.clear(); |
+ } |
+ returned_resources.resources.insert(returned_resources.resources.end(), |
+ resources.begin(), resources.end()); |
+ returned_resources.output_surface_id = output_surface_id; |
} |
void SharedRendererState::SwapReturnedResourcesOnUI( |
- std::map<uint32_t, cc::ReturnedResourceArray>* returned_resource_map) { |
+ ReturnedResourcesMap* returned_resource_map) { |
DCHECK(returned_resource_map->empty()); |
base::AutoLock lock(lock_); |
returned_resource_map->swap(returned_resources_map_); |