Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Unified Diff: gpu/command_buffer/service/valuebuffer_manager.cc

Issue 761903003: Update from https://crrev.com/306655 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/valuebuffer_manager.cc
diff --git a/gpu/command_buffer/service/valuebuffer_manager.cc b/gpu/command_buffer/service/valuebuffer_manager.cc
index eb4db093f70211d15af73cc3531979480ae6d33d..21de3f88831c706d20e03fcd7289f3b135dc54a6 100644
--- a/gpu/command_buffer/service/valuebuffer_manager.cc
+++ b/gpu/command_buffer/service/valuebuffer_manager.cc
@@ -2,16 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "gpu/command_buffer/service/valuebuffer_manager.h"
-
+#include "gpu/command_buffer/service/gl_utils.h"
#include "gpu/command_buffer/service/program_manager.h"
+#include "gpu/command_buffer/service/valuebuffer_manager.h"
namespace gpu {
namespace gles2 {
-Valuebuffer::Valuebuffer(ValuebufferManager* manager, GLuint client_id)
+Valuebuffer::Valuebuffer(ValuebufferManager* manager, unsigned int client_id)
: manager_(manager), client_id_(client_id), has_been_bound_(false) {
manager_->StartTracking(this);
+ active_state_map_ = new ValueStateMap();
}
Valuebuffer::~Valuebuffer() {
@@ -21,40 +22,40 @@ Valuebuffer::~Valuebuffer() {
}
}
-void Valuebuffer::AddSubscription(GLenum subscription) {
+void Valuebuffer::AddSubscription(unsigned int subscription) {
subscriptions_.insert(subscription);
}
-void Valuebuffer::RemoveSubscription(GLenum subscription) {
+void Valuebuffer::RemoveSubscription(unsigned int subscription) {
subscriptions_.erase(subscription);
}
-bool Valuebuffer::IsSubscribed(GLenum subscription) {
+bool Valuebuffer::IsSubscribed(unsigned int subscription) {
return subscriptions_.find(subscription) != subscriptions_.end();
}
-const ValueState *Valuebuffer::GetState(GLenum target) const {
- StateMap::const_iterator it = active_state_map_.find(target);
- return it != active_state_map_.end() ? &it->second : NULL;
+const ValueState* Valuebuffer::GetState(unsigned int target) const {
+ return active_state_map_->GetState(target);
}
-void Valuebuffer::UpdateState(const StateMap& pending_state) {
+void Valuebuffer::UpdateState(const ValueStateMap* pending_state) {
+ DCHECK(pending_state);
for (SubscriptionSet::const_iterator it = subscriptions_.begin();
it != subscriptions_.end(); ++it) {
- StateMap::const_iterator pending_state_it = pending_state.find((*it));
- if (pending_state_it != pending_state.end()) {
- active_state_map_[pending_state_it->first] = pending_state_it->second;
+ const ValueState *state = pending_state->GetState(*it);
+ if (state != NULL) {
+ active_state_map_->UpdateState(*it, *state);
}
}
}
-ValuebufferManager::ValuebufferManager()
- : valuebuffer_count_(0) {
+ValuebufferManager::ValuebufferManager(ValueStateMap* state_map)
+ : valuebuffer_count_(0),
+ pending_state_map_(state_map) {
}
ValuebufferManager::~ValuebufferManager() {
DCHECK(valuebuffer_map_.empty());
- DCHECK(pending_state_map_.empty());
// If this triggers, that means something is keeping a reference to
// a Valuebuffer belonging to this.
CHECK_EQ(valuebuffer_count_, 0u);
@@ -62,7 +63,6 @@ ValuebufferManager::~ValuebufferManager() {
void ValuebufferManager::Destroy() {
valuebuffer_map_.clear();
- pending_state_map_.clear();
}
void ValuebufferManager::StartTracking(Valuebuffer* /* valuebuffer */) {
@@ -73,19 +73,19 @@ void ValuebufferManager::StopTracking(Valuebuffer* /* valuebuffer */) {
--valuebuffer_count_;
}
-void ValuebufferManager::CreateValuebuffer(GLuint client_id) {
+void ValuebufferManager::CreateValuebuffer(unsigned int client_id) {
scoped_refptr<Valuebuffer> valuebuffer(new Valuebuffer(this, client_id));
std::pair<ValuebufferMap::iterator, bool> result =
valuebuffer_map_.insert(std::make_pair(client_id, valuebuffer));
DCHECK(result.second);
}
-Valuebuffer* ValuebufferManager::GetValuebuffer(GLuint client_id) {
+Valuebuffer* ValuebufferManager::GetValuebuffer(unsigned int client_id) {
ValuebufferMap::iterator it = valuebuffer_map_.find(client_id);
return it != valuebuffer_map_.end() ? it->second.get() : NULL;
}
-void ValuebufferManager::RemoveValuebuffer(GLuint client_id) {
+void ValuebufferManager::RemoveValuebuffer(unsigned int client_id) {
ValuebufferMap::iterator it = valuebuffer_map_.find(client_id);
if (it != valuebuffer_map_.end()) {
Valuebuffer* valuebuffer = it->second.get();
@@ -96,15 +96,10 @@ void ValuebufferManager::RemoveValuebuffer(GLuint client_id) {
void ValuebufferManager::UpdateValuebufferState(Valuebuffer* valuebuffer) {
DCHECK(valuebuffer);
- valuebuffer->UpdateState(pending_state_map_);
-}
-
-void ValuebufferManager::UpdateValueState(
- GLenum target, const ValueState& state) {
- pending_state_map_[target] = state;
+ valuebuffer->UpdateState(pending_state_map_.get());
}
-uint32 ValuebufferManager::ApiTypeForSubscriptionTarget(GLenum target) {
+uint32 ValuebufferManager::ApiTypeForSubscriptionTarget(unsigned int target) {
switch (target) {
case GL_MOUSE_POSITION_CHROMIUM:
return Program::kUniform2i;
« no previous file with comments | « gpu/command_buffer/service/valuebuffer_manager.h ('k') | gpu/command_buffer/service/valuebuffer_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698