OLD | NEW |
1 // Copyright 2010 The Chromium Authors. All rights reserved. | 1 // Copyright 2010 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 "cc/layers/texture_layer.h" | 5 #include "cc/layers/texture_layer.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 | 147 |
148 void TextureLayer::SetTextureMailbox( | 148 void TextureLayer::SetTextureMailbox( |
149 const TextureMailbox& mailbox, | 149 const TextureMailbox& mailbox, |
150 std::unique_ptr<SingleReleaseCallback> release_callback) { | 150 std::unique_ptr<SingleReleaseCallback> release_callback) { |
151 bool requires_commit = true; | 151 bool requires_commit = true; |
152 bool allow_mailbox_reuse = false; | 152 bool allow_mailbox_reuse = false; |
153 SetTextureMailboxInternal(mailbox, std::move(release_callback), | 153 SetTextureMailboxInternal(mailbox, std::move(release_callback), |
154 requires_commit, allow_mailbox_reuse); | 154 requires_commit, allow_mailbox_reuse); |
155 } | 155 } |
156 | 156 |
| 157 static void IgnoreReleaseCallback(const gpu::SyncToken& sync_token, bool lost) { |
| 158 } |
| 159 |
| 160 void TextureLayer::SetTextureMailboxWithoutReleaseCallback( |
| 161 const TextureMailbox& mailbox) { |
| 162 // We allow reuse of the mailbox if there is a new sync point signalling new |
| 163 // content, and the release callback goes nowhere since we'll be calling it |
| 164 // multiple times for the same mailbox. |
| 165 DCHECK(!mailbox.IsValid() || !holder_ref_ || |
| 166 !mailbox.Equals(holder_ref_->holder()->mailbox()) || |
| 167 mailbox.sync_token() != holder_ref_->holder()->mailbox().sync_token()); |
| 168 std::unique_ptr<SingleReleaseCallback> release; |
| 169 bool requires_commit = true; |
| 170 bool allow_mailbox_reuse = true; |
| 171 if (mailbox.IsValid()) |
| 172 release = SingleReleaseCallback::Create(base::Bind(&IgnoreReleaseCallback)); |
| 173 SetTextureMailboxInternal(mailbox, std::move(release), requires_commit, |
| 174 allow_mailbox_reuse); |
| 175 } |
| 176 |
157 void TextureLayer::SetNeedsDisplayRect(const gfx::Rect& dirty_rect) { | 177 void TextureLayer::SetNeedsDisplayRect(const gfx::Rect& dirty_rect) { |
158 Layer::SetNeedsDisplayRect(dirty_rect); | 178 Layer::SetNeedsDisplayRect(dirty_rect); |
159 } | 179 } |
160 | 180 |
161 void TextureLayer::SetLayerTreeHost(LayerTreeHost* host) { | 181 void TextureLayer::SetLayerTreeHost(LayerTreeHost* host) { |
162 if (layer_tree_host() == host) { | 182 if (layer_tree_host() == host) { |
163 Layer::SetLayerTreeHost(host); | 183 Layer::SetLayerTreeHost(host); |
164 return; | 184 return; |
165 } | 185 } |
166 | 186 |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 void TextureLayer::TextureMailboxHolder::ReturnAndReleaseOnImplThread( | 316 void TextureLayer::TextureMailboxHolder::ReturnAndReleaseOnImplThread( |
297 const gpu::SyncToken& sync_token, | 317 const gpu::SyncToken& sync_token, |
298 bool is_lost, | 318 bool is_lost, |
299 BlockingTaskRunner* main_thread_task_runner) { | 319 BlockingTaskRunner* main_thread_task_runner) { |
300 Return(sync_token, is_lost); | 320 Return(sync_token, is_lost); |
301 main_thread_task_runner->PostTask( | 321 main_thread_task_runner->PostTask( |
302 FROM_HERE, base::Bind(&TextureMailboxHolder::InternalRelease, this)); | 322 FROM_HERE, base::Bind(&TextureMailboxHolder::InternalRelease, this)); |
303 } | 323 } |
304 | 324 |
305 } // namespace cc | 325 } // namespace cc |
OLD | NEW |