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..789f01e77103c9cf38f7393cc13cb82593e339b7 100644 |
--- a/ui/ozone/platform/drm/gpu/page_flip_request.cc |
+++ b/ui/ozone/platform/drm/gpu/page_flip_request.cc |
@@ -4,19 +4,26 @@ |
#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::SWAP_ACK) { |
} |
PageFlipRequest::~PageFlipRequest() { |
} |
-void PageFlipRequest::Signal() { |
- callback_.Run(); |
+void PageFlipRequest::Signal(gfx::SwapResult result) { |
+ if (result == gfx::SWAP_FAILED) |
+ result_ = gfx::SWAP_FAILED; |
+ else if (result != gfx::SWAP_ACK) |
+ result_ = result; |
+ |
+ if (!--crtc_count_) { |
+ callback_.Run(result_); |
+ callback_.Reset(); |
+ } |
} |
} // namespace ui |