| 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;
|
| }
|
|
|
|
|