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..5e8bcbf608bfedfaeeff93b5c527dd7176cfa98a 100644 |
| --- a/ui/ozone/platform/dri/hardware_display_controller.cc |
| +++ b/ui/ozone/platform/dri/hardware_display_controller.cc |
| @@ -105,7 +105,28 @@ bool HardwareDisplayController::SchedulePageFlip( |
| if (HasPendingPageFlips()) |
| return true; |
| - bool status = ActualSchedulePageFlip(); |
| + bool status = ActualSchedulePageFlip(false); |
| + |
| + // No page flip event on failure so discard failed request. |
| + if (!status) |
| + requests_.pop_front(); |
| + |
| + return status; |
| +} |
| + |
| +bool HardwareDisplayController::PageFlip() { |
|
dnicoara
2015/02/26 18:22:21
I think you can just use SchedulePageFlip() for th
|
| + CHECK(!HasPendingPageFlips()); |
| + TRACE_EVENT0("dri", "HDC::PageFlip"); |
| + |
| + // Ignore requests with no planes to schedule. |
| + if (pending_planes_.empty()) |
| + return true; |
| + |
| + requests_.push_back( |
| + PageFlipRequest(pending_planes_, base::Bind(&base::DoNothing))); |
| + pending_planes_.clear(); |
| + |
| + bool status = ActualSchedulePageFlip(true); |
| // No page flip event on failure so discard failed request. |
| if (!status) |
| @@ -246,7 +267,7 @@ void HardwareDisplayController::OnPageFlipEvent() { |
| return; |
| // At this point we still have requests pending, so schedule the next request. |
| - bool status = ActualSchedulePageFlip(); |
| + bool status = ActualSchedulePageFlip(false); |
| if (!status) { |
| PageFlipRequest request = requests_.front(); |
| requests_.pop_front(); |
| @@ -274,7 +295,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 +318,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; |
| } |
| } |