Index: ui/ozone/platform/dri/gbm_surfaceless.cc |
diff --git a/ui/ozone/platform/dri/gbm_surfaceless.cc b/ui/ozone/platform/dri/gbm_surfaceless.cc |
index b3748445a369b53d97866b759da0455c26cc4c0d..a6adb9edf084ba25d7eceed3e1b05f4731c522d0 100644 |
--- a/ui/ozone/platform/dri/gbm_surfaceless.cc |
+++ b/ui/ozone/platform/dri/gbm_surfaceless.cc |
@@ -8,11 +8,13 @@ |
#include "ui/ozone/platform/dri/dri_window_delegate.h" |
#include "ui/ozone/platform/dri/gbm_buffer.h" |
#include "ui/ozone/platform/dri/hardware_display_controller.h" |
+#include "ui/ozone/platform/dri/page_flip_event_handler.h" |
namespace ui { |
-GbmSurfaceless::GbmSurfaceless(DriWindowDelegate* window_delegate) |
- : window_delegate_(window_delegate) { |
+GbmSurfaceless::GbmSurfaceless(DriWindowDelegate* window_delegate, |
+ PageFlipEventHandler* handler) |
+ : window_delegate_(window_delegate), flip_handler_(handler) { |
} |
GbmSurfaceless::~GbmSurfaceless() {} |
@@ -33,7 +35,11 @@ bool GbmSurfaceless::OnSwapBuffers() { |
return true; |
bool success = controller->SchedulePageFlip(); |
- controller->WaitForPageFlipEvent(); |
+ |
+ if (flip_handler_) |
+ flip_handler_->GetPageFlipCompleted(controller, callback_); |
+ else |
+ controller->WaitForPageFlipEvent(); |
return success; |
} |
@@ -42,4 +48,9 @@ scoped_ptr<gfx::VSyncProvider> GbmSurfaceless::CreateVSyncProvider() { |
return scoped_ptr<gfx::VSyncProvider>(new DriVSyncProvider(window_delegate_)); |
} |
+void GbmSurfaceless::SetPageFlipCompletionCallback( |
+ const PageFlipCompletionCallback& callback) { |
+ callback_ = callback; |
+} |
+ |
} // namespace ui |