Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(476)

Unified Diff: ui/ozone/platform/dri/gbm_surfaceless.cc

Issue 781683005: Ozone: Avoid blocking in Swapbuffer Call. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compiler warning. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698