| Index: ui/ozone/platform/dri/dri_surface.cc
|
| diff --git a/ui/ozone/platform/dri/dri_surface.cc b/ui/ozone/platform/dri/dri_surface.cc
|
| index d0d4f56ade6569d28926f5cee6a26f19fd15e713..f12ef693570dce96e6cc379473aa5079e170d886 100644
|
| --- a/ui/ozone/platform/dri/dri_surface.cc
|
| +++ b/ui/ozone/platform/dri/dri_surface.cc
|
| @@ -12,6 +12,7 @@
|
| #include "ui/gfx/skia_util.h"
|
| #include "ui/ozone/platform/dri/dri_buffer.h"
|
| #include "ui/ozone/platform/dri/dri_vsync_provider.h"
|
| +#include "ui/ozone/platform/dri/dri_window_delegate_impl.h"
|
| #include "ui/ozone/platform/dri/dri_wrapper.h"
|
| #include "ui/ozone/platform/dri/hardware_display_controller.h"
|
|
|
| @@ -32,13 +33,11 @@ scoped_refptr<DriBuffer> AllocateBuffer(DriWrapper* dri,
|
|
|
| } // namespace
|
|
|
| -DriSurface::DriSurface(
|
| - DriWrapper* dri,
|
| - const base::WeakPtr<HardwareDisplayController>& controller)
|
| - : dri_(dri),
|
| +DriSurface::DriSurface(DriWindowDelegate* window_delegate, DriWrapper* dri)
|
| + : window_delegate_(window_delegate),
|
| + dri_(dri),
|
| buffers_(),
|
| - front_buffer_(0),
|
| - controller_(controller) {
|
| + front_buffer_(0) {
|
| }
|
|
|
| DriSurface::~DriSurface() {
|
| @@ -53,13 +52,14 @@ void DriSurface::ResizeCanvas(const gfx::Size& viewport_size) {
|
| viewport_size.width(), viewport_size.height(), kOpaque_SkAlphaType);
|
| surface_ = skia::AdoptRef(SkSurface::NewRaster(info));
|
|
|
| - if (!controller_)
|
| + HardwareDisplayController* controller = window_delegate_->GetController();
|
| + if (!controller)
|
| return;
|
|
|
| // For the display buffers use the mode size since a |viewport_size| smaller
|
| // than the display size will not scanout.
|
| - gfx::Size mode_size(controller_->get_mode().hdisplay,
|
| - controller_->get_mode().vdisplay);
|
| + gfx::Size mode_size(controller->get_mode().hdisplay,
|
| + controller->get_mode().vdisplay);
|
| for (size_t i = 0; i < arraysize(buffers_); ++i)
|
| buffers_[i] = AllocateBuffer(dri_, mode_size);
|
| }
|
| @@ -68,21 +68,22 @@ void DriSurface::PresentCanvas(const gfx::Rect& damage) {
|
| DCHECK(base::MessageLoopForUI::IsCurrent());
|
| DCHECK(buffers_[front_buffer_ ^ 1]);
|
|
|
| - if (!controller_)
|
| + HardwareDisplayController* controller = window_delegate_->GetController();
|
| + if (!controller)
|
| return;
|
|
|
| - controller_->QueueOverlayPlane(OverlayPlane(buffers_[front_buffer_ ^ 1]));
|
| + controller->QueueOverlayPlane(OverlayPlane(buffers_[front_buffer_ ^ 1]));
|
|
|
| UpdateNativeSurface(damage);
|
| - controller_->SchedulePageFlip();
|
| - controller_->WaitForPageFlipEvent();
|
| + controller->SchedulePageFlip();
|
| + controller->WaitForPageFlipEvent();
|
|
|
| // Update our front buffer pointer.
|
| front_buffer_ ^= 1;
|
| }
|
|
|
| scoped_ptr<gfx::VSyncProvider> DriSurface::CreateVSyncProvider() {
|
| - return scoped_ptr<gfx::VSyncProvider>(new DriVSyncProvider(controller_));
|
| + return scoped_ptr<gfx::VSyncProvider>(new DriVSyncProvider(window_delegate_));
|
| }
|
|
|
| void DriSurface::UpdateNativeSurface(const gfx::Rect& damage) {
|
|
|