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 |