Index: ui/gl/gl_image_io_surface.mm |
diff --git a/ui/gl/gl_image_io_surface.mm b/ui/gl/gl_image_io_surface.mm |
index b488c533cc49c2a3295e48836499f125dc3d2830..2044f3775a16590370ee323eac853eb007aaf98f 100644 |
--- a/ui/gl/gl_image_io_surface.mm |
+++ b/ui/gl/gl_image_io_surface.mm |
@@ -199,12 +199,22 @@ |
OverlayTransform transform, |
const Rect& bounds_rect, |
const RectF& crop_rect) { |
- NOTREACHED(); |
- return false; |
-} |
- |
-base::ScopedCFTypeRef<IOSurfaceRef> GLImageIOSurface::io_surface() { |
- return io_surface_; |
+ // Only simple overlay planes are currently supported. |
+ DCHECK_EQ(0, z_order); |
+ DCHECK_EQ(gfx::RectF(0, 0, 1, 1).ToString(), crop_rect.ToString()); |
+ DCHECK_EQ(gfx::OVERLAY_TRANSFORM_NONE, transform); |
+ |
+ // Convert the phony widget to the appropriate CALayer. |
+ auto found = g_widget_to_layer_map.Pointer()->find(widget); |
+ if (found == g_widget_to_layer_map.Pointer()->end()) |
+ return false; |
+ CALayer* layer = found->second; |
+ |
+ // Also note that transactions are not disabled. The caller must ensure that |
+ // all changes to the CALayer tree happen atomically. |
+ [layer setContents:static_cast<id>(io_surface_.get())]; |
+ [layer setFrame:bounds_rect.ToCGRect()]; |
+ return true; |
} |
// static |