| Index: gpu/command_buffer/service/mailbox_manager_sync.cc
|
| diff --git a/gpu/command_buffer/service/mailbox_manager_sync.cc b/gpu/command_buffer/service/mailbox_manager_sync.cc
|
| index dd9e6738818d53ca970815db9b34beccdcd2daec..932bd1bbff508b61b42a8a5398ead415ad5a3919 100644
|
| --- a/gpu/command_buffer/service/mailbox_manager_sync.cc
|
| +++ b/gpu/command_buffer/service/mailbox_manager_sync.cc
|
| @@ -194,6 +194,10 @@ bool MailboxManagerSync::UsesSync() {
|
|
|
| Texture* MailboxManagerSync::ConsumeTexture(const Mailbox& mailbox) {
|
| base::AutoLock lock(g_lock.Get());
|
| + // Relax the cross-thread access restriction to non-thread-safe RefCount.
|
| + // The lock above protects non-thread-safe RefCount in TextureGroup.
|
| + base::ScopedAllowCrossThreadRefCountAccess
|
| + scoped_allow_cross_thread_ref_count_access;
|
| TextureGroup* group = TextureGroup::FromName(mailbox);
|
| if (!group)
|
| return NULL;
|
| @@ -221,6 +225,10 @@ Texture* MailboxManagerSync::ConsumeTexture(const Mailbox& mailbox) {
|
| void MailboxManagerSync::ProduceTexture(const Mailbox& mailbox,
|
| TextureBase* texture_base) {
|
| base::AutoLock lock(g_lock.Get());
|
| + // Relax the cross-thread access restriction to non-thread-safe RefCount.
|
| + // The lock above protects non-thread-safe RefCount in TextureGroup.
|
| + base::ScopedAllowCrossThreadRefCountAccess
|
| + scoped_allow_cross_thread_ref_count_access;
|
|
|
| Texture* texture = static_cast<Texture*>(texture_base);
|
| DCHECK(texture != nullptr);
|
| @@ -268,6 +276,10 @@ void MailboxManagerSync::ProduceTexture(const Mailbox& mailbox,
|
|
|
| void MailboxManagerSync::TextureDeleted(TextureBase* texture_base) {
|
| base::AutoLock lock(g_lock.Get());
|
| + // Relax the cross-thread access restriction to non-thread-safe RefCount.
|
| + // The lock above protects non-thread-safe RefCount in TextureGroup.
|
| + base::ScopedAllowCrossThreadRefCountAccess
|
| + scoped_allow_cross_thread_ref_count_access;
|
|
|
| Texture* texture = static_cast<Texture*>(texture_base);
|
| DCHECK(texture != nullptr);
|
| @@ -315,6 +327,10 @@ void MailboxManagerSync::UpdateDefinitionLocked(TextureBase* texture_base,
|
|
|
| void MailboxManagerSync::PushTextureUpdates(const SyncToken& token) {
|
| base::AutoLock lock(g_lock.Get());
|
| + // Relax the cross-thread access restriction to non-thread-safe RefCount.
|
| + // The lock above protects non-thread-safe RefCount in TextureGroup.
|
| + base::ScopedAllowCrossThreadRefCountAccess
|
| + scoped_allow_cross_thread_ref_count_access;
|
|
|
| for (TextureToGroupMap::iterator it = texture_to_group_.begin();
|
| it != texture_to_group_.end(); it++) {
|
| @@ -328,6 +344,10 @@ void MailboxManagerSync::PullTextureUpdates(const SyncToken& token) {
|
| std::vector<TextureUpdatePair> needs_update;
|
| {
|
| base::AutoLock lock(g_lock.Get());
|
| + // Relax the cross-thread access restriction to non-thread-safe RefCount.
|
| + // The lock above protects non-thread-safe RefCount in TextureGroup.
|
| + base::ScopedAllowCrossThreadRefCountAccess
|
| + scoped_allow_cross_thread_ref_count_access;
|
| AcquireFenceLocked(token);
|
|
|
| for (TextureToGroupMap::iterator it = texture_to_group_.begin();
|
|
|