Index: trunk/src/ui/ozone/platform/dri/gbm_surfaceless.cc |
=================================================================== |
--- trunk/src/ui/ozone/platform/dri/gbm_surfaceless.cc (revision 288142) |
+++ trunk/src/ui/ozone/platform/dri/gbm_surfaceless.cc (working copy) |
@@ -29,7 +29,10 @@ |
if (!controller_) |
return true; |
- bool success = controller_->SchedulePageFlip(); |
+ bool success = controller_->SchedulePageFlip(queued_planes_); |
+ queued_planes_.clear(); |
+ // Even on failure we may have scheduled some planes. Allow the controller to |
+ // wait for the events for the scheduled planes. |
controller_->WaitForPageFlipEvent(); |
return success; |
@@ -39,4 +42,25 @@ |
return scoped_ptr<gfx::VSyncProvider>(new DriVSyncProvider(controller_)); |
} |
+bool GbmSurfaceless::ScheduleOverlayPlane( |
+ int plane_z_order, |
+ gfx::OverlayTransform plane_transform, |
+ scoped_refptr<ui::NativePixmap> buffer, |
+ const gfx::Rect& display_bounds, |
+ const gfx::RectF& crop_rect) { |
+ scoped_refptr<GbmPixmap> pixmap = |
+ static_cast<GbmPixmap*>(buffer.get()); |
+ if (!pixmap) { |
+ LOG(ERROR) << "ScheduleOverlayPlane passed NULL buffer."; |
+ return false; |
+ } |
+ |
+ queued_planes_.push_back(OverlayPlane(pixmap->buffer(), |
+ plane_z_order, |
+ plane_transform, |
+ display_bounds, |
+ crop_rect)); |
+ return true; |
+} |
+ |
} // namespace ui |