Chromium Code Reviews| Index: ui/ozone/platform/dri/hardware_display_controller.cc |
| diff --git a/ui/ozone/platform/dri/hardware_display_controller.cc b/ui/ozone/platform/dri/hardware_display_controller.cc |
| index 0bd49477e857fcabbd05c7c4a4ec1a41bf88c5dc..c14dfd29cc5fc8abe1d155c4f872392ba8ca15e1 100644 |
| --- a/ui/ozone/platform/dri/hardware_display_controller.cc |
| +++ b/ui/ozone/platform/dri/hardware_display_controller.cc |
| @@ -24,8 +24,9 @@ namespace ui { |
| HardwareDisplayController::PageFlipRequest::PageFlipRequest( |
| const OverlayPlaneList& planes, |
| + bool is_sync, |
| const base::Closure& callback) |
| - : planes(planes), callback(callback) { |
| + : planes(planes), is_sync(is_sync), callback(callback) { |
| } |
| HardwareDisplayController::PageFlipRequest::~PageFlipRequest() { |
| @@ -63,7 +64,7 @@ bool HardwareDisplayController::Modeset(const OverlayPlane& primary, |
| // callback. We use the modeset state since it is the only valid state. |
| if (HasPendingPageFlips()) |
| requests_.push_back( |
| - PageFlipRequest(current_planes_, base::Bind(&base::DoNothing))); |
| + PageFlipRequest(current_planes_, false, base::Bind(&base::DoNothing))); |
| return status; |
| } |
| @@ -89,6 +90,7 @@ void HardwareDisplayController::QueueOverlayPlane(const OverlayPlane& plane) { |
| } |
| bool HardwareDisplayController::SchedulePageFlip( |
| + bool is_sync, |
| const base::Closure& callback) { |
| TRACE_EVENT0("dri", "HDC::SchedulePageFlip"); |
| @@ -98,14 +100,14 @@ bool HardwareDisplayController::SchedulePageFlip( |
| return true; |
| } |
| - requests_.push_back(PageFlipRequest(pending_planes_, callback)); |
| + requests_.push_back(PageFlipRequest(pending_planes_, is_sync, callback)); |
| pending_planes_.clear(); |
| // A request is being serviced right now. |
| if (HasPendingPageFlips()) |
| return true; |
| - bool status = ActualSchedulePageFlip(); |
| + bool status = ActualSchedulePageFlip(is_sync); |
| // No page flip event on failure so discard failed request. |
| if (!status) |
| @@ -245,10 +247,10 @@ void HardwareDisplayController::OnPageFlipEvent() { |
| if (requests_.empty()) |
| return; |
| + PageFlipRequest request = requests_.front(); |
|
dnicoara
2015/02/27 13:58:44
Move this back in the if-statement.
llandwerlin-old
2015/02/27 14:09:04
Done.
|
| // At this point we still have requests pending, so schedule the next request. |
| - bool status = ActualSchedulePageFlip(); |
| + bool status = ActualSchedulePageFlip(request.is_sync); |
| if (!status) { |
| - PageFlipRequest request = requests_.front(); |
| requests_.pop_front(); |
| // Normally the caller would handle the error call, but because we're in a |
| @@ -274,7 +276,7 @@ bool HardwareDisplayController::HasPendingPageFlips() const { |
| return false; |
| } |
| -bool HardwareDisplayController::ActualSchedulePageFlip() { |
| +bool HardwareDisplayController::ActualSchedulePageFlip(bool is_sync) { |
| TRACE_EVENT0("dri", "HDC::ActualSchedulePageFlip"); |
| DCHECK(!requests_.empty()); |
| @@ -297,7 +299,7 @@ bool HardwareDisplayController::ActualSchedulePageFlip() { |
| } |
| for (const auto& planes : owned_hardware_planes_) { |
| - if (!planes.first->plane_manager()->Commit(planes.second)) { |
| + if (!planes.first->plane_manager()->Commit(planes.second, is_sync)) { |
| status = false; |
| } |
| } |