OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/texture_layer_impl.h" | 5 #include "cc/texture_layer_impl.h" |
6 | 6 |
7 #include "base/stringprintf.h" | 7 #include "base/stringprintf.h" |
8 #include "cc/layer_tree_impl.h" | 8 #include "cc/layer_tree_impl.h" |
9 #include "cc/quad_sink.h" | 9 #include "cc/quad_sink.h" |
10 #include "cc/renderer.h" | 10 #include "cc/renderer.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 m_vertexOpacity[3] = 1.0f; | 28 m_vertexOpacity[3] = 1.0f; |
29 } | 29 } |
30 | 30 |
31 TextureLayerImpl::~TextureLayerImpl() | 31 TextureLayerImpl::~TextureLayerImpl() |
32 { | 32 { |
33 if (m_externalTextureResource) { | 33 if (m_externalTextureResource) { |
34 DCHECK(m_usesMailbox); | 34 DCHECK(m_usesMailbox); |
35 ResourceProvider* provider = layerTreeImpl()->resource_provider(); | 35 ResourceProvider* provider = layerTreeImpl()->resource_provider(); |
36 provider->deleteResource(m_externalTextureResource); | 36 provider->deleteResource(m_externalTextureResource); |
37 } | 37 } |
38 if (m_hasPendingMailbox && !m_pendingMailboxName.empty()) | 38 if (m_hasPendingMailbox) |
39 m_pendingMailboxReleaseCallback.Run(0); | 39 m_pendingTextureMailbox.RunReleaseCallback(0); |
40 } | 40 } |
41 | 41 |
42 void TextureLayerImpl::setTextureMailbox(const std::string& mailboxName, const b
ase::Callback<void(unsigned)>& releaseCallback) | 42 void TextureLayerImpl::setTextureMailbox(const TextureMailbox& mailbox) |
43 { | 43 { |
44 DCHECK(m_usesMailbox); | 44 DCHECK(m_usesMailbox); |
45 // Same mailbox name was commited, nothing to do. | 45 // Same mailbox name was commited, nothing to do. |
46 if (m_pendingMailboxName.compare(mailboxName) == 0) | 46 if (m_pendingTextureMailbox.Equals(mailbox)) |
47 return; | 47 return; |
48 // Two commits without a draw, ack the previous mailbox. | 48 // Two commits without a draw, ack the previous mailbox. |
49 if (m_hasPendingMailbox && !m_pendingMailboxReleaseCallback.is_null()) | 49 if (m_hasPendingMailbox) |
50 m_pendingMailboxReleaseCallback.Run(0); | 50 m_pendingTextureMailbox.RunReleaseCallback(0); |
51 | 51 |
52 m_pendingMailboxName = mailboxName; | 52 m_pendingTextureMailbox = mailbox; |
53 m_hasPendingMailbox = true; | 53 m_hasPendingMailbox = true; |
54 m_pendingMailboxReleaseCallback = releaseCallback; | |
55 } | 54 } |
56 | 55 |
57 void TextureLayerImpl::willDraw(ResourceProvider* resourceProvider) | 56 void TextureLayerImpl::willDraw(ResourceProvider* resourceProvider) |
58 { | 57 { |
59 if (!m_usesMailbox) { | 58 if (!m_usesMailbox) { |
60 if (!m_textureId) | 59 if (!m_textureId) |
61 return; | 60 return; |
62 DCHECK(!m_externalTextureResource); | 61 DCHECK(!m_externalTextureResource); |
63 m_externalTextureResource = resourceProvider->createResourceFromExternal
Texture(m_textureId); | 62 m_externalTextureResource = resourceProvider->createResourceFromExternal
Texture(m_textureId); |
64 return; | 63 return; |
65 } | 64 } |
66 | 65 |
67 if (!m_hasPendingMailbox) | 66 if (!m_hasPendingMailbox) |
68 return; | 67 return; |
69 | 68 |
70 if (m_externalTextureResource) { | 69 if (m_externalTextureResource) { |
71 resourceProvider->deleteResource(m_externalTextureResource); | 70 resourceProvider->deleteResource(m_externalTextureResource); |
72 m_externalTextureResource = 0; | 71 m_externalTextureResource = 0; |
73 } | 72 } |
74 if (!m_pendingMailboxName.empty()) | 73 if (!m_pendingTextureMailbox.IsEmpty()) |
75 m_externalTextureResource = resourceProvider->createResourceFromTextureM
ailbox(m_pendingMailboxName, m_pendingMailboxReleaseCallback); | 74 m_externalTextureResource = resourceProvider->createResourceFromTextureM
ailbox(m_pendingTextureMailbox); |
76 m_hasPendingMailbox = false; | 75 m_hasPendingMailbox = false; |
77 } | 76 } |
78 | 77 |
79 void TextureLayerImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQu
adsData) | 78 void TextureLayerImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQu
adsData) |
80 { | 79 { |
81 if (!m_externalTextureResource) | 80 if (!m_externalTextureResource) |
82 return; | 81 return; |
83 | 82 |
84 SharedQuadState* sharedQuadState = quadSink.useSharedQuadState(createSharedQ
uadState()); | 83 SharedQuadState* sharedQuadState = quadSink.useSharedQuadState(createSharedQ
uadState()); |
85 appendDebugBorderQuad(quadSink, sharedQuadState, appendQuadsData); | 84 appendDebugBorderQuad(quadSink, sharedQuadState, appendQuadsData); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 { | 133 { |
135 return "TextureLayer"; | 134 return "TextureLayer"; |
136 } | 135 } |
137 | 136 |
138 bool TextureLayerImpl::canClipSelf() const | 137 bool TextureLayerImpl::canClipSelf() const |
139 { | 138 { |
140 return true; | 139 return true; |
141 } | 140 } |
142 | 141 |
143 } // namespace cc | 142 } // namespace cc |
OLD | NEW |