| Index: ui/ozone/platform/drm/gpu/page_flip_request.cc
|
| diff --git a/ui/ozone/platform/drm/gpu/page_flip_request.cc b/ui/ozone/platform/drm/gpu/page_flip_request.cc
|
| index dfca208874abcfd17c8d9941362c1b202328aa7d..4d1b60d76d05f2900fef0ef0ab163f54403d4ca9 100644
|
| --- a/ui/ozone/platform/drm/gpu/page_flip_request.cc
|
| +++ b/ui/ozone/platform/drm/gpu/page_flip_request.cc
|
| @@ -4,19 +4,28 @@
|
|
|
| #include "ui/ozone/platform/drm/gpu/page_flip_request.h"
|
|
|
| -#include "base/barrier_closure.h"
|
| -
|
| namespace ui {
|
|
|
| -PageFlipRequest::PageFlipRequest(int crtc_count, const base::Closure& callback)
|
| - : callback_(base::BarrierClosure(crtc_count, callback)) {
|
| +PageFlipRequest::PageFlipRequest(int crtc_count,
|
| + const SwapCompletionCallback& callback)
|
| + : callback_(callback),
|
| + crtc_count_(crtc_count),
|
| + result_(gfx::SwapResult::SWAP_ACK) {
|
| }
|
|
|
| PageFlipRequest::~PageFlipRequest() {
|
| }
|
|
|
| -void PageFlipRequest::Signal() {
|
| - callback_.Run();
|
| +void PageFlipRequest::Signal(gfx::SwapResult result) {
|
| + if (result == gfx::SwapResult::SWAP_FAILED)
|
| + result_ = gfx::SwapResult::SWAP_FAILED;
|
| + else if (result != gfx::SwapResult::SWAP_ACK)
|
| + result_ = result;
|
| +
|
| + if (!--crtc_count_) {
|
| + callback_.Run(result_);
|
| + callback_.Reset();
|
| + }
|
| }
|
|
|
| } // namespace ui
|
|
|