Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Unified Diff: content/browser/renderer_host/compositing_iosurface_mac.mm

Issue 147493011: Use base::ScopedTypeRef for CGL types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase again Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/compositing_iosurface_mac.mm
diff --git a/content/browser/renderer_host/compositing_iosurface_mac.mm b/content/browser/renderer_host/compositing_iosurface_mac.mm
index b7b6e861318aeb83fdd4f26608ed71883f510ac5..31e4f229212290d4e1099ad01ba5612050cae46a 100644
--- a/content/browser/renderer_host/compositing_iosurface_mac.mm
+++ b/content/browser/renderer_host/compositing_iosurface_mac.mm
@@ -257,10 +257,12 @@ CompositingIOSurfaceMac::CompositingIOSurfaceMac(
CompositingIOSurfaceMac::~CompositingIOSurfaceMac() {
FailAllCopies();
- CGLSetCurrentContext(offscreen_context_->cgl_context());
- DestroyAllCopyContextsWithinContext();
- UnrefIOSurfaceWithContextCurrent();
- CGLSetCurrentContext(0);
+ {
+ gfx::ScopedCGLSetCurrentContext scoped_set_current_context(
+ offscreen_context_->cgl_context());
+ DestroyAllCopyContextsWithinContext();
+ UnrefIOSurfaceWithContextCurrent();
+ }
offscreen_context_ = NULL;
}
@@ -440,12 +442,15 @@ void CompositingIOSurfaceMac::CopyTo(
DCHECK_EQ(output->rowBytesAsPixels(), dst_pixel_size.width())
<< "Stride is required to be equal to width for GPU readback.";
- CGLSetCurrentContext(offscreen_context_->cgl_context());
- const base::Closure copy_done_callback = CopyToSelectedOutputWithinContext(
- src_pixel_subrect, gfx::Rect(dst_pixel_size), false,
- output.get(), NULL,
- base::Bind(&ReverseArgumentOrder, callback, base::Passed(&output)));
- CGLSetCurrentContext(0);
+ base::Closure copy_done_callback;
+ {
+ gfx::ScopedCGLSetCurrentContext scoped_set_current_context(
+ offscreen_context_->cgl_context());
+ copy_done_callback = CopyToSelectedOutputWithinContext(
+ src_pixel_subrect, gfx::Rect(dst_pixel_size), false,
+ output.get(), NULL,
+ base::Bind(&ReverseArgumentOrder, callback, base::Passed(&output)));
+ }
if (!copy_done_callback.is_null())
copy_done_callback.Run();
}
@@ -454,10 +459,13 @@ void CompositingIOSurfaceMac::CopyToVideoFrame(
const gfx::Rect& src_pixel_subrect,
const scoped_refptr<media::VideoFrame>& target,
const base::Callback<void(bool)>& callback) {
- CGLSetCurrentContext(offscreen_context_->cgl_context());
- const base::Closure copy_done_callback = CopyToVideoFrameWithinContext(
- src_pixel_subrect, false, target, callback);
- CGLSetCurrentContext(0);
+ base::Closure copy_done_callback;
+ {
+ gfx::ScopedCGLSetCurrentContext scoped_set_current_context(
+ offscreen_context_->cgl_context());
+ copy_done_callback = CopyToVideoFrameWithinContext(
+ src_pixel_subrect, false, target, callback);
+ }
if (!copy_done_callback.is_null())
copy_done_callback.Run();
}
@@ -542,9 +550,9 @@ bool CompositingIOSurfaceMac::MapIOSurfaceToTextureWithContextCurrent(
}
void CompositingIOSurfaceMac::UnrefIOSurface() {
- CGLSetCurrentContext(offscreen_context_->cgl_context());
+ gfx::ScopedCGLSetCurrentContext scoped_set_current_context(
+ offscreen_context_->cgl_context());
UnrefIOSurfaceWithContextCurrent();
- CGLSetCurrentContext(0);
}
void CompositingIOSurfaceMac::DrawQuad(const SurfaceQuad& quad) {
@@ -747,11 +755,12 @@ void CompositingIOSurfaceMac::CheckIfAllCopiesAreFinished(
return;
std::vector<base::Closure> done_callbacks;
- CGLContextObj previous_context = CGLGetCurrentContext();
- CGLSetCurrentContext(offscreen_context_->cgl_context());
- CheckIfAllCopiesAreFinishedWithinContext(
- block_until_finished, &done_callbacks);
- CGLSetCurrentContext(previous_context);
+ {
+ gfx::ScopedCGLSetCurrentContext scoped_set_current_context(
+ offscreen_context_->cgl_context());
+ CheckIfAllCopiesAreFinishedWithinContext(
+ block_until_finished, &done_callbacks);
+ }
for (size_t i = 0; i < done_callbacks.size(); ++i)
done_callbacks[i].Run();
}
« no previous file with comments | « content/browser/renderer_host/compositing_iosurface_layer_mac.mm ('k') | content/browser/renderer_host/display_link_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698