Index: cc/raster/gpu_tile_task_worker_pool.cc |
diff --git a/cc/raster/gpu_tile_task_worker_pool.cc b/cc/raster/gpu_tile_task_worker_pool.cc |
index 3567308fcdc70d01c810bd6963fddb714c5e2fef..23804550122319aaf08eff05b70121cc15fdccee 100644 |
--- a/cc/raster/gpu_tile_task_worker_pool.cc |
+++ b/cc/raster/gpu_tile_task_worker_pool.cc |
@@ -46,13 +46,9 @@ class RasterBufferImpl : public RasterBuffer { |
ContextProvider* context_provider = rasterizer_->resource_provider() |
->output_surface() |
->worker_context_provider(); |
+ DCHECK(context_provider); |
- // The context lock must be held while accessing the context on a |
- // worker thread. |
- base::AutoLock context_lock(*context_provider->GetLock()); |
- |
- // Allow this worker thread to bind to context_provider. |
- context_provider->DetachFromThread(); |
+ ContextProvider::ScopedContextLock scoped_context(context_provider); |
gfx::Rect playback_rect = raster_full_rect; |
if (resource_has_previous_content_) { |
@@ -67,10 +63,7 @@ class RasterBufferImpl : public RasterBuffer { |
playback_rect, scale); |
// Barrier to sync worker context output to cc context. |
- context_provider->ContextGL()->OrderingBarrierCHROMIUM(); |
- |
- // Allow compositor thread to bind to context_provider. |
- context_provider->DetachFromThread(); |
+ scoped_context.ContextGL()->OrderingBarrierCHROMIUM(); |
} |
private: |