| Index: cc/output/gl_renderer.cc
|
| diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
|
| index 903805b2775a7a6292f77c5d10a22c09669884e0..e40a4fc44fff24906cbb6c4a71f2e9385cf7cdc5 100644
|
| --- a/cc/output/gl_renderer.cc
|
| +++ b/cc/output/gl_renderer.cc
|
| @@ -26,6 +26,7 @@
|
| #include "cc/quads/stream_video_draw_quad.h"
|
| #include "cc/quads/texture_draw_quad.h"
|
| #include "cc/resources/layer_quad.h"
|
| +#include "cc/resources/scoped_gpu_raster.h"
|
| #include "cc/resources/scoped_resource.h"
|
| #include "cc/resources/texture_mailbox_deleter.h"
|
| #include "gpu/GLES2/gl2extchromium.h"
|
| @@ -157,7 +158,12 @@ class GLRenderer::ScopedUseGrContext {
|
| return make_scoped_ptr(new ScopedUseGrContext(renderer, frame));
|
| }
|
|
|
| - ~ScopedUseGrContext() { PassControlToGLRenderer(); }
|
| + ~ScopedUseGrContext() {
|
| + // Pass context control back to GLrenderer.
|
| + scoped_gpu_raster_ = nullptr;
|
| + renderer_->RestoreGLState();
|
| + renderer_->RestoreFramebuffer(frame_);
|
| + }
|
|
|
| GrContext* context() const {
|
| return renderer_->output_surface_->context_provider()->GrContext();
|
| @@ -165,17 +171,14 @@ class GLRenderer::ScopedUseGrContext {
|
|
|
| private:
|
| ScopedUseGrContext(GLRenderer* renderer, DrawingFrame* frame)
|
| - : renderer_(renderer), frame_(frame) {
|
| - PassControlToSkia();
|
| - }
|
| -
|
| - void PassControlToSkia() { context()->resetContext(); }
|
| -
|
| - void PassControlToGLRenderer() {
|
| - renderer_->RestoreGLState();
|
| - renderer_->RestoreFramebuffer(frame_);
|
| + : scoped_gpu_raster_(
|
| + new ScopedGpuRaster(renderer->output_surface_->context_provider())),
|
| + renderer_(renderer),
|
| + frame_(frame) {
|
| + // scoped_gpu_raster_ passes context control to Skia.
|
| }
|
|
|
| + scoped_ptr<ScopedGpuRaster> scoped_gpu_raster_;
|
| GLRenderer* renderer_;
|
| DrawingFrame* frame_;
|
|
|
|
|