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 <GLES3/gl3.h>
     14 #include <GLES2/gl2.h>
     15 
     16 #include <vector>
     17 
     18 #include "common/angleutils.h"
     19 
     20 namespace gl
     21 {
     22 
     23 class HandleAllocator
     24 {
     25   public:
     26     HandleAllocator();
     27     virtual ~HandleAllocator();
     28 
     29     void setBaseHandle(GLuint value);
     30 
     31     GLuint allocate();
     32     void release(GLuint handle);
     33 
     34   private:
     35     DISALLOW_COPY_AND_ASSIGN(HandleAllocator);
     36 
     37     GLuint mBaseValue;
     38     GLuint mNextValue;
     39     typedef std::vector<GLuint> HandleList;
     40     HandleList mFreeValues;
     41 };
     42 
     43 }
     44 
     45 #endif   // LIBGLESV2_HANDLEALLOCATOR_H_
     46