Index: cc/surfaces/surface_aggregator.cc |
diff --git a/cc/surfaces/surface_aggregator.cc b/cc/surfaces/surface_aggregator.cc |
index e3574e552e55154d35be3db1eb365101b5b8c080..ae0fce01a6fd7470afb973b9210ffdb41727ccbf 100644 |
--- a/cc/surfaces/surface_aggregator.cc |
+++ b/cc/surfaces/surface_aggregator.cc |
@@ -91,8 +91,8 @@ int SurfaceAggregator::ChildIdForSurface(Surface* surface) { |
SurfaceToResourceChildIdMap::iterator it = |
surface_id_to_resource_child_id_.find(surface->surface_id()); |
if (it == surface_id_to_resource_child_id_.end()) { |
- int child_id = provider_->CreateChild( |
- base::Bind(&UnrefHelper, surface->factory()->AsWeakPtr())); |
+ int child_id = |
+ provider_->CreateChild(base::Bind(&UnrefHelper, surface->factory())); |
surface_id_to_resource_child_id_[surface->surface_id()] = child_id; |
return child_id; |
} else { |
@@ -127,7 +127,8 @@ bool SurfaceAggregator::TakeResources(Surface* surface, |
int child_id = ChildIdForSurface(surface); |
provider_->ReceiveFromChild(child_id, frame_data->resource_list); |
- surface->factory()->RefResources(frame_data->resource_list); |
+ if (surface->factory()) |
+ surface->factory()->RefResources(frame_data->resource_list); |
typedef ResourceProvider::ResourceIdArray IdArray; |
IdArray referenced_resources; |