| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/accelerated_widget_mac/ca_renderer_layer_tree.h" | 5 #include "ui/accelerated_widget_mac/ca_renderer_layer_tree.h" |
| 6 | 6 |
| 7 #include <AVFoundation/AVFoundation.h> | 7 #include <AVFoundation/AVFoundation.h> |
| 8 #include <CoreMedia/CoreMedia.h> | 8 #include <CoreMedia/CoreMedia.h> |
| 9 #include <CoreVideo/CoreVideo.h> | 9 #include <CoreVideo/CoreVideo.h> |
| 10 #include <GLES2/gl2extchromium.h> | 10 #include <GLES2/gl2extchromium.h> |
| 11 | 11 |
| 12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
| 13 #include "base/mac/mac_util.h" |
| 13 #include "base/mac/sdk_forward_declarations.h" | 14 #include "base/mac/sdk_forward_declarations.h" |
| 14 #include "base/trace_event/trace_event.h" | 15 #include "base/trace_event/trace_event.h" |
| 15 #include "third_party/skia/include/core/SkColor.h" | 16 #include "third_party/skia/include/core/SkColor.h" |
| 16 #include "ui/base/cocoa/animation_utils.h" | 17 #include "ui/base/cocoa/animation_utils.h" |
| 17 #include "ui/base/ui_base_switches.h" | 18 #include "ui/base/ui_base_switches.h" |
| 18 #include "ui/gfx/geometry/dip_util.h" | 19 #include "ui/gfx/geometry/dip_util.h" |
| 19 | 20 |
| 20 #if !defined(MAC_OS_X_VERSION_10_8) || \ | 21 #if !defined(MAC_OS_X_VERSION_10_8) || \ |
| 21 MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8 | 22 MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8 |
| 22 extern NSString* const AVLayerVideoGravityResize; | 23 extern NSString* const AVLayerVideoGravityResize; |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 ca_edge_aa_mask |= kCALayerTopEdge; | 321 ca_edge_aa_mask |= kCALayerTopEdge; |
| 321 if (edge_aa_mask & GL_CA_LAYER_EDGE_BOTTOM_CHROMIUM) | 322 if (edge_aa_mask & GL_CA_LAYER_EDGE_BOTTOM_CHROMIUM) |
| 322 ca_edge_aa_mask |= kCALayerBottomEdge; | 323 ca_edge_aa_mask |= kCALayerBottomEdge; |
| 323 } | 324 } |
| 324 | 325 |
| 325 // Only allow 4:2:0 frames which fill the layer's contents to be promoted to | 326 // Only allow 4:2:0 frames which fill the layer's contents to be promoted to |
| 326 // AV layers. | 327 // AV layers. |
| 327 if (IOSurfaceGetPixelFormat(io_surface) == | 328 if (IOSurfaceGetPixelFormat(io_surface) == |
| 328 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange && | 329 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange && |
| 329 contents_rect == gfx::RectF(0, 0, 1, 1)) { | 330 contents_rect == gfx::RectF(0, 0, 1, 1)) { |
| 330 use_av_layer = true; | 331 // Disable AVSampleBufferDisplayLayer on <10.11 due to reports of memory |
| 332 // leaks on 10.9. |
| 333 // https://crbug.com/631485 |
| 334 if (base::mac::IsOSElCapitanOrLater()) |
| 335 use_av_layer = true; |
| 331 } | 336 } |
| 332 } | 337 } |
| 333 | 338 |
| 334 CARendererLayerTree::ContentLayer::ContentLayer(ContentLayer&& layer) | 339 CARendererLayerTree::ContentLayer::ContentLayer(ContentLayer&& layer) |
| 335 : io_surface(layer.io_surface), | 340 : io_surface(layer.io_surface), |
| 336 cv_pixel_buffer(layer.cv_pixel_buffer), | 341 cv_pixel_buffer(layer.cv_pixel_buffer), |
| 337 contents_rect(layer.contents_rect), | 342 contents_rect(layer.contents_rect), |
| 338 rect(layer.rect), | 343 rect(layer.rect), |
| 339 background_color(layer.background_color), | 344 background_color(layer.background_color), |
| 340 ca_edge_aa_mask(layer.ca_edge_aa_mask), | 345 ca_edge_aa_mask(layer.ca_edge_aa_mask), |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 657 } else { | 662 } else { |
| 658 // Grey represents a CALayer that has not changed. | 663 // Grey represents a CALayer that has not changed. |
| 659 color.reset(CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1)); | 664 color.reset(CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1)); |
| 660 } | 665 } |
| 661 [ca_layer setBorderWidth:1]; | 666 [ca_layer setBorderWidth:1]; |
| 662 [ca_layer setBorderColor:color]; | 667 [ca_layer setBorderColor:color]; |
| 663 } | 668 } |
| 664 } | 669 } |
| 665 | 670 |
| 666 } // namespace ui | 671 } // namespace ui |
| OLD | NEW |