Index: gpu/command_buffer/service/context_group.cc |
diff --git a/gpu/command_buffer/service/context_group.cc b/gpu/command_buffer/service/context_group.cc |
index 6ee57e4c0d2636062f3f51ccbd083e521fe595a0..0206d88f13a47dad8147b9f9acb772e87de53232 100644 |
--- a/gpu/command_buffer/service/context_group.cc |
+++ b/gpu/command_buffer/service/context_group.cc |
@@ -32,10 +32,12 @@ ContextGroup::ContextGroup( |
const scoped_refptr<MemoryTracker>& memory_tracker, |
const scoped_refptr<ShaderTranslatorCache>& shader_translator_cache, |
const scoped_refptr<FeatureInfo>& feature_info, |
+ const scoped_refptr<ValueStateMap>& pending_valuebuffer_state, |
bool bind_generates_resource) |
: mailbox_manager_(mailbox_manager), |
memory_tracker_(memory_tracker), |
shader_translator_cache_(shader_translator_cache), |
+ pending_valuebuffer_state_(pending_valuebuffer_state), |
enforce_gl_minimums_(CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnforceGLMinimums)), |
bind_generates_resource_(bind_generates_resource), |
@@ -54,6 +56,8 @@ ContextGroup::ContextGroup( |
{ |
if (!mailbox_manager_.get()) |
mailbox_manager_ = new MailboxManagerImpl; |
+ if (!pending_valuebuffer_state_.get()) |
+ pending_valuebuffer_state_ = new ValueStateMap(); |
if (!feature_info.get()) |
feature_info_ = new FeatureInfo; |
TransferBufferManager* manager = new TransferBufferManager(); |
@@ -122,8 +126,9 @@ bool ContextGroup::Initialize( |
renderbuffer_manager_.reset(new RenderbufferManager( |
memory_tracker_.get(), max_renderbuffer_size, max_samples, |
depth24_supported)); |
- valuebuffer_manager_.reset(new ValuebufferManager()); |
shader_manager_.reset(new ShaderManager()); |
+ valuebuffer_manager_.reset( |
+ new ValuebufferManager(pending_valuebuffer_state_.get())); |
// Lookup GL things we need to know. |
const GLint kGLES2RequiredMinimumVertexAttribs = 8u; |
@@ -302,11 +307,6 @@ void ContextGroup::Destroy(GLES2Decoder* decoder, bool have_context) { |
renderbuffer_manager_.reset(); |
} |
- if (valuebuffer_manager_ != NULL) { |
- valuebuffer_manager_->Destroy(); |
- valuebuffer_manager_.reset(); |
- } |
- |
if (texture_manager_ != NULL) { |
texture_manager_->Destroy(have_context); |
texture_manager_.reset(); |
@@ -322,6 +322,11 @@ void ContextGroup::Destroy(GLES2Decoder* decoder, bool have_context) { |
shader_manager_.reset(); |
} |
+ if (valuebuffer_manager_ != NULL) { |
+ valuebuffer_manager_->Destroy(); |
+ valuebuffer_manager_.reset(); |
+ } |
+ |
memory_tracker_ = NULL; |
} |