Index: cc/surfaces/display.cc |
diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc |
index 21be0478f67be267d870c647f396eed9bef9ae31..013fd66e4ef3362f85bbf196c4d6aefad1735e17 100644 |
--- a/cc/surfaces/display.cc |
+++ b/cc/surfaces/display.cc |
@@ -32,40 +32,33 @@ |
namespace cc { |
-Display::Display(SurfaceManager* manager, |
- SharedBitmapManager* bitmap_manager, |
+Display::Display(SharedBitmapManager* bitmap_manager, |
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, |
const RendererSettings& settings, |
- uint32_t compositor_surface_namespace, |
std::unique_ptr<BeginFrameSource> begin_frame_source, |
std::unique_ptr<OutputSurface> output_surface, |
std::unique_ptr<DisplayScheduler> scheduler, |
std::unique_ptr<TextureMailboxDeleter> texture_mailbox_deleter) |
- : surface_manager_(manager), |
- bitmap_manager_(bitmap_manager), |
+ : bitmap_manager_(bitmap_manager), |
gpu_memory_buffer_manager_(gpu_memory_buffer_manager), |
settings_(settings), |
- compositor_surface_namespace_(compositor_surface_namespace), |
begin_frame_source_(std::move(begin_frame_source)), |
output_surface_(std::move(output_surface)), |
scheduler_(std::move(scheduler)), |
texture_mailbox_deleter_(std::move(texture_mailbox_deleter)) { |
- DCHECK(surface_manager_); |
DCHECK(output_surface_); |
DCHECK_EQ(!scheduler_, !begin_frame_source_); |
- |
- surface_manager_->AddObserver(this); |
- |
if (scheduler_) |
scheduler_->SetClient(this); |
} |
Display::~Display() { |
// Only do this if Initialize() happened. |
- if (begin_frame_source_ && client_) |
- surface_manager_->UnregisterBeginFrameSource(begin_frame_source_.get()); |
- |
- surface_manager_->RemoveObserver(this); |
+ if (client_) { |
+ if (begin_frame_source_) |
+ surface_manager_->UnregisterBeginFrameSource(begin_frame_source_.get()); |
+ surface_manager_->RemoveObserver(this); |
+ } |
if (aggregator_) { |
for (const auto& id_entry : aggregator_->previous_contained_surfaces()) { |
Surface* surface = surface_manager_->GetSurfaceForId(id_entry.first); |
@@ -75,9 +68,16 @@ Display::~Display() { |
} |
} |
-void Display::Initialize(DisplayClient* client) { |
+void Display::Initialize(DisplayClient* client, |
+ SurfaceManager* surface_manager, |
+ uint32_t compositor_surface_namespace) { |
DCHECK(client); |
+ DCHECK(surface_manager); |
client_ = client; |
+ surface_manager_ = surface_manager; |
+ compositor_surface_namespace_ = compositor_surface_namespace; |
+ |
+ surface_manager_->AddObserver(this); |
// This must be done in Initialize() so that the caller can delay this until |
// they are ready to receive a BeginFrameSource. |