| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/renderer_host/compositing_iosurface_layer_mac.h" | 5 #include "content/browser/renderer_host/compositing_iosurface_layer_mac.h" |
| 6 | 6 |
| 7 #include <CoreFoundation/CoreFoundation.h> | 7 #include <CoreFoundation/CoreFoundation.h> |
| 8 #include <OpenGL/gl.h> | 8 #include <OpenGL/gl.h> |
| 9 | 9 |
| 10 #include "base/mac/mac_util.h" | 10 #include "base/mac/mac_util.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 this, | 36 this, |
| 37 &CompositingIOSurfaceLayerHelper::TimerFired) {} | 37 &CompositingIOSurfaceLayerHelper::TimerFired) {} |
| 38 | 38 |
| 39 CompositingIOSurfaceLayerHelper::~CompositingIOSurfaceLayerHelper() { | 39 CompositingIOSurfaceLayerHelper::~CompositingIOSurfaceLayerHelper() { |
| 40 // Any acks that were waiting on this layer to draw will not occur, so ack | 40 // Any acks that were waiting on this layer to draw will not occur, so ack |
| 41 // them now to prevent blocking the renderer. | 41 // them now to prevent blocking the renderer. |
| 42 AckPendingFrame(true); | 42 AckPendingFrame(true); |
| 43 } | 43 } |
| 44 | 44 |
| 45 void CompositingIOSurfaceLayerHelper::GotNewFrame() { | 45 void CompositingIOSurfaceLayerHelper::GotNewFrame() { |
| 46 // A trace value of 2 indicates that there is a pending swap ack. See |
| 47 // canDrawInCGLContext for other value meanings. |
| 48 TRACE_COUNTER_ID1("browser", "PendingSwapAck", this, 2); |
| 49 |
| 46 has_pending_frame_ = true; | 50 has_pending_frame_ = true; |
| 47 needs_display_ = true; | 51 needs_display_ = true; |
| 48 timer_.Reset(); | 52 timer_.Reset(); |
| 49 | 53 |
| 50 if ([layer_ context] && [layer_ context]->is_vsync_disabled()) { | 54 // If reqested, draw immediately and don't bother trying to use the |
| 51 // If vsync is disabled, draw immediately and don't bother trying to use | 55 // isAsynchronous property to ensure smooth animation. |
| 52 // the isAsynchronous property to ensure smooth animation. | 56 if (client_->AcceleratedLayerShouldAckImmediately()) { |
| 53 ImmediatelyForceDisplayAndAck(); | 57 ImmediatelyForceDisplayAndAck(); |
| 54 } else { | 58 } else { |
| 55 needs_display_ = YES; | |
| 56 if (![layer_ isAsynchronous]) | 59 if (![layer_ isAsynchronous]) |
| 57 [layer_ setAsynchronous:YES]; | 60 [layer_ setAsynchronous:YES]; |
| 58 } | 61 } |
| 59 | |
| 60 // A trace value of 2 indicates that there is a pending swap ack. See | |
| 61 // canDrawInCGLContext for other value meanings. | |
| 62 TRACE_COUNTER_ID1("browser", "PendingSwapAck", this, 2); | |
| 63 } | 62 } |
| 64 | 63 |
| 65 void CompositingIOSurfaceLayerHelper::SetNeedsDisplay() { | 64 void CompositingIOSurfaceLayerHelper::SetNeedsDisplay() { |
| 66 needs_display_ = true; | 65 needs_display_ = true; |
| 67 } | 66 } |
| 68 | 67 |
| 69 bool CompositingIOSurfaceLayerHelper::CanDraw() { | 68 bool CompositingIOSurfaceLayerHelper::CanDraw() { |
| 70 // If we return NO 30 times in a row, switch to being synchronous to avoid | 69 // If we return NO 30 times in a row, switch to being synchronous to avoid |
| 71 // burning CPU cycles on this callback. | 70 // burning CPU cycles on this callback. |
| 72 if (needs_display_) { | 71 if (needs_display_) { |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 if (helper_) | 230 if (helper_) |
| 232 helper_->DidDraw(draw_succeeded); | 231 helper_->DidDraw(draw_succeeded); |
| 233 | 232 |
| 234 [super drawInCGLContext:glContext | 233 [super drawInCGLContext:glContext |
| 235 pixelFormat:pixelFormat | 234 pixelFormat:pixelFormat |
| 236 forLayerTime:timeInterval | 235 forLayerTime:timeInterval |
| 237 displayTime:timeStamp]; | 236 displayTime:timeStamp]; |
| 238 } | 237 } |
| 239 | 238 |
| 240 @end | 239 @end |
| OLD | NEW |