summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorgman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-03 23:54:12 +0000
committergman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-03 23:54:12 +0000
commitefa950d021d850fc9eea5d307527d4deeba6bdc1 (patch)
treef583128ef97b961c3e6b2e83add6a43c888d5e05 /gpu
parent293fa3c6a798e11bd4950860bcd3ee0b45421788 (diff)
downloadchromium_src-efa950d021d850fc9eea5d307527d4deeba6bdc1.zip
chromium_src-efa950d021d850fc9eea5d307527d4deeba6bdc1.tar.gz
chromium_src-efa950d021d850fc9eea5d307527d4deeba6bdc1.tar.bz2
Adjust Query code to handle context lost
BUG=140116 Review URL: https://chromiumcodereview.appspot.com/10837105 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149978 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r--gpu/command_buffer/client/gles2_implementation.cc2
-rw-r--r--gpu/command_buffer/client/query_tracker.cc5
-rw-r--r--gpu/command_buffer/client/query_tracker.h2
-rw-r--r--gpu/command_buffer/client/query_tracker_unittest.cc2
4 files changed, 6 insertions, 5 deletions
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc
index ce7b6f5..8fa305d 100644
--- a/gpu/command_buffer/client/gles2_implementation.cc
+++ b/gpu/command_buffer/client/gles2_implementation.cc
@@ -3059,7 +3059,7 @@ void GLES2Implementation::DeleteQueriesEXTHelper(
MustBeContextLost();
}
}
- query_tracker_->RemoveQuery(queries[ii]);
+ query_tracker_->RemoveQuery(queries[ii], context_lost_);
}
helper_->DeleteQueriesEXTImmediate(n, queries);
}
diff --git a/gpu/command_buffer/client/query_tracker.cc b/gpu/command_buffer/client/query_tracker.cc
index e1e150f..25790ec 100644
--- a/gpu/command_buffer/client/query_tracker.cc
+++ b/gpu/command_buffer/client/query_tracker.cc
@@ -151,11 +151,12 @@ QueryTracker::Query* QueryTracker::GetQuery(
return it != queries_.end() ? it->second : NULL;
}
-void QueryTracker::RemoveQuery(GLuint client_id) {
+void QueryTracker::RemoveQuery(GLuint client_id, bool context_lost) {
+ (void)context_lost; // stop unused warning
QueryMap::iterator it = queries_.find(client_id);
if (it != queries_.end()) {
Query* query = it->second;
- GPU_DCHECK(!query->Pending());
+ GPU_DCHECK(context_lost || !query->Pending());
query_sync_manager_.Free(query->info_);
queries_.erase(it);
delete query;
diff --git a/gpu/command_buffer/client/query_tracker.h b/gpu/command_buffer/client/query_tracker.h
index adaba82..ce6e1d4 100644
--- a/gpu/command_buffer/client/query_tracker.h
+++ b/gpu/command_buffer/client/query_tracker.h
@@ -150,7 +150,7 @@ class GLES2_IMPL_EXPORT QueryTracker {
Query* CreateQuery(GLuint id, GLenum target);
Query* GetQuery(GLuint id);
- void RemoveQuery(GLuint id);
+ void RemoveQuery(GLuint id, bool context_lost);
private:
typedef gpu::hash_map<GLuint, Query*> QueryMap;
diff --git a/gpu/command_buffer/client/query_tracker_unittest.cc b/gpu/command_buffer/client/query_tracker_unittest.cc
index 16da7c8..82f807c 100644
--- a/gpu/command_buffer/client/query_tracker_unittest.cc
+++ b/gpu/command_buffer/client/query_tracker_unittest.cc
@@ -115,7 +115,7 @@ TEST_F(QueryTrackerTest, Basic) {
// Check we get nothing for a non-existent query.
EXPECT_TRUE(query_tracker_->GetQuery(kId2) == NULL);
// Check we can delete the query.
- query_tracker_->RemoveQuery(kId1);
+ query_tracker_->RemoveQuery(kId1, false);
// Check we get nothing for a non-existent query.
EXPECT_TRUE(query_tracker_->GetQuery(kId1) == NULL);
}