diff options
author | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-03 23:54:12 +0000 |
---|---|---|
committer | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-03 23:54:12 +0000 |
commit | efa950d021d850fc9eea5d307527d4deeba6bdc1 (patch) | |
tree | f583128ef97b961c3e6b2e83add6a43c888d5e05 /gpu | |
parent | 293fa3c6a798e11bd4950860bcd3ee0b45421788 (diff) | |
download | chromium_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.cc | 2 | ||||
-rw-r--r-- | gpu/command_buffer/client/query_tracker.cc | 5 | ||||
-rw-r--r-- | gpu/command_buffer/client/query_tracker.h | 2 | ||||
-rw-r--r-- | gpu/command_buffer/client/query_tracker_unittest.cc | 2 |
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); } |