OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/test/test_context_provider.h" | 5 #include "cc/test/test_context_provider.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 DCHECK(context_thread_checker_.CalledOnValidThread()); | 97 DCHECK(context_thread_checker_.CalledOnValidThread()); |
98 | 98 |
99 if (gr_context_) | 99 if (gr_context_) |
100 return gr_context_.get(); | 100 return gr_context_.get(); |
101 | 101 |
102 skia::RefPtr<class SkGLContext> gl_context = | 102 skia::RefPtr<class SkGLContext> gl_context = |
103 skia::AdoptRef(SkNullGLContext::Create(kNone_GrGLStandard)); | 103 skia::AdoptRef(SkNullGLContext::Create(kNone_GrGLStandard)); |
104 gl_context->makeCurrent(); | 104 gl_context->makeCurrent(); |
105 gr_context_ = skia::AdoptRef(GrContext::Create( | 105 gr_context_ = skia::AdoptRef(GrContext::Create( |
106 kOpenGL_GrBackend, reinterpret_cast<GrBackendContext>(gl_context->gl()))); | 106 kOpenGL_GrBackend, reinterpret_cast<GrBackendContext>(gl_context->gl()))); |
| 107 |
| 108 // If GlContext is already lost, also abandon the new GrContext. |
| 109 if (IsContextLost()) |
| 110 gr_context_->abandonContext(); |
| 111 |
107 return gr_context_.get(); | 112 return gr_context_.get(); |
108 } | 113 } |
109 | 114 |
110 void TestContextProvider::SetupLock() { | 115 void TestContextProvider::SetupLock() { |
111 } | 116 } |
112 | 117 |
113 base::Lock* TestContextProvider::GetLock() { | 118 base::Lock* TestContextProvider::GetLock() { |
114 return &context_lock_; | 119 return &context_lock_; |
115 } | 120 } |
116 | 121 |
(...skipping 27 matching lines...) Expand all Loading... |
144 void TestContextProvider::OnLostContext() { | 149 void TestContextProvider::OnLostContext() { |
145 DCHECK(context_thread_checker_.CalledOnValidThread()); | 150 DCHECK(context_thread_checker_.CalledOnValidThread()); |
146 { | 151 { |
147 base::AutoLock lock(destroyed_lock_); | 152 base::AutoLock lock(destroyed_lock_); |
148 if (destroyed_) | 153 if (destroyed_) |
149 return; | 154 return; |
150 destroyed_ = true; | 155 destroyed_ = true; |
151 } | 156 } |
152 if (!lost_context_callback_.is_null()) | 157 if (!lost_context_callback_.is_null()) |
153 base::ResetAndReturn(&lost_context_callback_).Run(); | 158 base::ResetAndReturn(&lost_context_callback_).Run(); |
| 159 if (gr_context_) |
| 160 gr_context_->abandonContext(); |
154 } | 161 } |
155 | 162 |
156 TestWebGraphicsContext3D* TestContextProvider::TestContext3d() { | 163 TestWebGraphicsContext3D* TestContextProvider::TestContext3d() { |
157 DCHECK(bound_); | 164 DCHECK(bound_); |
158 DCHECK(context_thread_checker_.CalledOnValidThread()); | 165 DCHECK(context_thread_checker_.CalledOnValidThread()); |
159 | 166 |
160 return context3d_.get(); | 167 return context3d_.get(); |
161 } | 168 } |
162 | 169 |
163 TestWebGraphicsContext3D* TestContextProvider::UnboundTestContext3d() { | 170 TestWebGraphicsContext3D* TestContextProvider::UnboundTestContext3d() { |
(...skipping 20 matching lines...) Expand all Loading... |
184 DCHECK(memory_policy_changed_callback_.is_null() || cb.is_null()); | 191 DCHECK(memory_policy_changed_callback_.is_null() || cb.is_null()); |
185 memory_policy_changed_callback_ = cb; | 192 memory_policy_changed_callback_ = cb; |
186 } | 193 } |
187 | 194 |
188 void TestContextProvider::SetMaxTransferBufferUsageBytes( | 195 void TestContextProvider::SetMaxTransferBufferUsageBytes( |
189 size_t max_transfer_buffer_usage_bytes) { | 196 size_t max_transfer_buffer_usage_bytes) { |
190 context3d_->SetMaxTransferBufferUsageBytes(max_transfer_buffer_usage_bytes); | 197 context3d_->SetMaxTransferBufferUsageBytes(max_transfer_buffer_usage_bytes); |
191 } | 198 } |
192 | 199 |
193 } // namespace cc | 200 } // namespace cc |
OLD | NEW |