| Index: ui/compositor/layer_unittest.cc
|
| diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc
|
| index ebc270768599a3be106eb2306c4de460037ad8d8..a9fbea599777680e65b6e75e4d3ee718306db564 100644
|
| --- a/ui/compositor/layer_unittest.cc
|
| +++ b/ui/compositor/layer_unittest.cc
|
| @@ -1116,16 +1116,18 @@ TEST_F(LayerWithNullDelegateTest, SetBoundsSchedulesPaint) {
|
| WaitForDraw();
|
| }
|
|
|
| -static void EmptyReleaseCallback(const gpu::SyncToken& sync_token,
|
| - bool is_lost) {}
|
| -
|
| // Checks that the damage rect for a TextureLayer is empty after a commit.
|
| TEST_F(LayerWithNullDelegateTest, EmptyDamagedRect) {
|
| + base::RunLoop run_loop;
|
| + cc::ReleaseCallback callback =
|
| + base::Bind([](base::RunLoop* run_loop, const gpu::SyncToken& sync_token,
|
| + bool is_lost) { run_loop->Quit(); },
|
| + base::Unretained(&run_loop));
|
| +
|
| std::unique_ptr<Layer> root(CreateLayer(LAYER_SOLID_COLOR));
|
| cc::TextureMailbox mailbox(gpu::Mailbox::Generate(), gpu::SyncToken(),
|
| GL_TEXTURE_2D);
|
| - root->SetTextureMailbox(mailbox, cc::SingleReleaseCallback::Create(
|
| - base::Bind(EmptyReleaseCallback)),
|
| + root->SetTextureMailbox(mailbox, cc::SingleReleaseCallback::Create(callback),
|
| gfx::Size(10, 10));
|
| compositor()->SetRootLayer(root.get());
|
|
|
| @@ -1139,9 +1141,14 @@ TEST_F(LayerWithNullDelegateTest, EmptyDamagedRect) {
|
| WaitForCommit();
|
| EXPECT_TRUE(root->damaged_region_for_testing().IsEmpty());
|
|
|
| - compositor()->SetRootLayer(nullptr);
|
| - root.reset();
|
| - WaitForCommit();
|
| + // The texture mailbox has a reference from an in-flight texture layer.
|
| + // We clear the texture mailbox from the root layer and draw a new frame
|
| + // to ensure that the texture mailbox is released.
|
| + root->SetShowSolidColorContent();
|
| + Draw();
|
| +
|
| + // Wait for texture mailbox release to avoid DCHECKs.
|
| + run_loop.Run();
|
| }
|
|
|
| void ExpectRgba(int x, int y, SkColor expected_color, SkColor actual_color) {
|
|
|