11a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com// 21a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. 31a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com// Use of this source code is governed by a BSD-style license that can be 41a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com// found in the LICENSE file. 51a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com// 61a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 71a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com// HandleAllocator.h: Defines the gl::HandleAllocator class, which is used to 81a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com// allocate GL handles. 91a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 101a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com#ifndef LIBGLESV2_HANDLEALLOCATOR_H_ 111a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com#define LIBGLESV2_HANDLEALLOCATOR_H_ 121a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 130b7eef7c469bf717f7e1b57c6273f00d88e8b1d9Geoff Lang#include "common/angleutils.h" 140b7eef7c469bf717f7e1b57c6273f00d88e8b1d9Geoff Lang 15f51639a4d10c6b31a813a8154ed2c489cc7e55f3Jamie Madill#include "angle_gl.h" 161a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 171a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com#include <vector> 181a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 191a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.comnamespace gl 201a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com{ 211a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 221a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.comclass HandleAllocator 231a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com{ 241a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com public: 251a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com HandleAllocator(); 261a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com virtual ~HandleAllocator(); 271a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 281a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com void setBaseHandle(GLuint value); 291a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 301a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com GLuint allocate(); 311a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com void release(GLuint handle); 321a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 331a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com private: 341a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com DISALLOW_COPY_AND_ASSIGN(HandleAllocator); 351a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 361a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com GLuint mBaseValue; 371a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com GLuint mNextValue; 381a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com typedef std::vector<GLuint> HandleList; 391a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com HandleList mFreeValues; 401a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com}; 411a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 421a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com} 431a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com 441a23334f9536101cb777451bd6e5b9f13dd5c818benvanik@google.com#endif // LIBGLESV2_HANDLEALLOCATOR_H_ 45