OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/bind.h" | 5 #include "base/bind.h" |
6 #include "cc/output/compositor_frame.h" | 6 #include "cc/output/compositor_frame.h" |
7 #include "cc/output/delegated_frame_data.h" | 7 #include "cc/output/delegated_frame_data.h" |
8 #include "cc/resources/resource_provider.h" | 8 #include "cc/resources/resource_provider.h" |
9 #include "cc/surfaces/surface.h" | 9 #include "cc/surfaces/surface.h" |
10 #include "cc/surfaces/surface_factory.h" | 10 #include "cc/surfaces/surface_factory.h" |
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
483 factory_->Create(id2); | 483 factory_->Create(id2); |
484 | 484 |
485 manager_.RegisterSurfaceIdNamespace(0); | 485 manager_.RegisterSurfaceIdNamespace(0); |
486 | 486 |
487 manager_.GetSurfaceForId(id2) | 487 manager_.GetSurfaceForId(id2) |
488 ->AddDestructionDependency(SurfaceSequence(0, 4)); | 488 ->AddDestructionDependency(SurfaceSequence(0, 4)); |
489 | 489 |
490 // Give id2 a frame that references surface_id_. | 490 // Give id2 a frame that references surface_id_. |
491 { | 491 { |
492 scoped_ptr<RenderPass> render_pass(RenderPass::Create()); | 492 scoped_ptr<RenderPass> render_pass(RenderPass::Create()); |
493 render_pass->referenced_surfaces.push_back(surface_id_); | |
494 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); | 493 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); |
495 frame_data->render_pass_list.push_back(render_pass.Pass()); | 494 frame_data->render_pass_list.push_back(render_pass.Pass()); |
496 scoped_ptr<CompositorFrame> frame(new CompositorFrame); | 495 scoped_ptr<CompositorFrame> frame(new CompositorFrame); |
| 496 frame->metadata.referenced_surfaces.push_back(surface_id_); |
497 frame->delegated_frame_data = frame_data.Pass(); | 497 frame->delegated_frame_data = frame_data.Pass(); |
498 factory_->SubmitCompositorFrame(id2, frame.Pass(), | 498 factory_->SubmitCompositorFrame(id2, frame.Pass(), |
499 SurfaceFactory::DrawCallback()); | 499 SurfaceFactory::DrawCallback()); |
500 } | 500 } |
501 factory_->Destroy(id2); | 501 factory_->Destroy(id2); |
502 | 502 |
503 // Give surface_id_ a frame that references id2. | 503 // Give surface_id_ a frame that references id2. |
504 { | 504 { |
505 scoped_ptr<RenderPass> render_pass(RenderPass::Create()); | 505 scoped_ptr<RenderPass> render_pass(RenderPass::Create()); |
506 render_pass->referenced_surfaces.push_back(id2); | |
507 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); | 506 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); |
508 frame_data->render_pass_list.push_back(render_pass.Pass()); | 507 frame_data->render_pass_list.push_back(render_pass.Pass()); |
509 scoped_ptr<CompositorFrame> frame(new CompositorFrame); | 508 scoped_ptr<CompositorFrame> frame(new CompositorFrame); |
| 509 frame->metadata.referenced_surfaces.push_back(id2); |
510 frame->delegated_frame_data = frame_data.Pass(); | 510 frame->delegated_frame_data = frame_data.Pass(); |
511 factory_->SubmitCompositorFrame(surface_id_, frame.Pass(), | 511 factory_->SubmitCompositorFrame(surface_id_, frame.Pass(), |
512 SurfaceFactory::DrawCallback()); | 512 SurfaceFactory::DrawCallback()); |
513 } | 513 } |
514 factory_->Destroy(surface_id_); | 514 factory_->Destroy(surface_id_); |
515 EXPECT_TRUE(manager_.GetSurfaceForId(id2)); | 515 EXPECT_TRUE(manager_.GetSurfaceForId(id2)); |
516 // surface_id_ should be retained by reference from id2. | 516 // surface_id_ should be retained by reference from id2. |
517 EXPECT_TRUE(manager_.GetSurfaceForId(surface_id_)); | 517 EXPECT_TRUE(manager_.GetSurfaceForId(surface_id_)); |
518 | 518 |
519 // Satisfy last destruction dependency for id2. | 519 // Satisfy last destruction dependency for id2. |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 surface_id_ = SurfaceId(); | 555 surface_id_ = SurfaceId(); |
556 factory_->DestroyAll(); | 556 factory_->DestroyAll(); |
557 | 557 |
558 EXPECT_EQ(&bfs, client_.begin_frame_source()); | 558 EXPECT_EQ(&bfs, client_.begin_frame_source()); |
559 factory_.reset(); | 559 factory_.reset(); |
560 EXPECT_EQ(nullptr, client_.begin_frame_source()); | 560 EXPECT_EQ(nullptr, client_.begin_frame_source()); |
561 } | 561 } |
562 | 562 |
563 } // namespace | 563 } // namespace |
564 } // namespace cc | 564 } // namespace cc |
OLD | NEW |