blob: a1f455524a40266420095ccbb6459c92a5231198 [file] [log] [blame] [edit]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// 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/program_cache_lru_helper.h"
namespace gpu {
namespace gles2 {
ProgramCacheLruHelper::ProgramCacheLruHelper() {}
ProgramCacheLruHelper::~ProgramCacheLruHelper() {}
void ProgramCacheLruHelper::Clear() {
location_map.clear();
queue.clear();
}
bool ProgramCacheLruHelper::IsEmpty() {
return queue.empty();
}
void ProgramCacheLruHelper::KeyUsed(const std::string& key) {
IteratorMap::iterator location_iterator = location_map.find(key);
if (location_iterator != location_map.end()) {
// already exists, erase it
queue.erase(location_iterator->second);
}
queue.push_front(key);
location_map[key] = queue.begin();
}
const std::string* ProgramCacheLruHelper::PeekKey() {
if (queue.empty()) {
return NULL;
}
return &queue.back();
}
void ProgramCacheLruHelper::PopKey() {
if (queue.empty()) {
return;
}
const std::string& last = queue.back();
location_map.erase(last);
queue.pop_back();
}
} // namespace gpu
} // namespace gles2