Home | History | Annotate | Download | only in libGLESv2
      1 //
      2 // Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved.
      3 // Use of this source code is governed by a BSD-style license that can be
      4 // found in the LICENSE file.
      5 //
      6 
      7 // HandleAllocator.h: Defines the gl::HandleAllocator class, which is used to
      8 // allocate GL handles.
      9 
     10 #ifndef LIBGLESV2_HANDLEALLOCATOR_H_
     11 #define LIBGLESV2_HANDLEALLOCATOR_H_
     12 
     13 #include "common/angleutils.h"
     14 
     15 #include "angle_gl.h"
     16 
     17 #include <vector>
     18 
     19 namespace gl
     20 {
     21 
     22 class HandleAllocator
     23 {
     24   public:
     25     HandleAllocator();
     26     virtual ~HandleAllocator();
     27 
     28     void setBaseHandle(GLuint value);
     29 
     30     GLuint allocate();
     31     void release(GLuint handle);
     32 
     33   private:
     34     DISALLOW_COPY_AND_ASSIGN(HandleAllocator);
     35 
     36     GLuint mBaseValue;
     37     GLuint mNextValue;
     38     typedef std::vector<GLuint> HandleList;
     39     HandleList mFreeValues;
     40 };
     41 
     42 }
     43 
     44 #endif   // LIBGLESV2_HANDLEALLOCATOR_H_
     45