Home | History | Annotate | Download | only in libagl
      1 /*
      2 ** Copyright 2006, The Android Open Source Project
      3 **
      4 ** Licensed under the Apache License, Version 2.0 (the "License");
      5 ** you may not use this file except in compliance with the License.
      6 ** You may obtain a copy of the License at
      7 **
      8 **     http://www.apache.org/licenses/LICENSE-2.0
      9 **
     10 ** Unless required by applicable law or agreed to in writing, software
     11 ** distributed under the License is distributed on an "AS IS" BASIS,
     12 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 ** See the License for the specific language governing permissions and
     14 ** limitations under the License.
     15 */
     16 
     17 #ifndef ANDROID_OPENGLES_TOKEN_MANAGER_H
     18 #define ANDROID_OPENGLES_TOKEN_MANAGER_H
     19 
     20 #include <stdint.h>
     21 #include <stddef.h>
     22 #include <sys/types.h>
     23 
     24 #include <utils/threads.h>
     25 
     26 #include <GLES/gl.h>
     27 
     28 #include "Tokenizer.h"
     29 
     30 namespace android {
     31 
     32 // ----------------------------------------------------------------------------
     33 
     34 class TokenManager
     35 {
     36 public:
     37                 TokenManager();
     38                 ~TokenManager();
     39 
     40     status_t    getToken(GLsizei n, GLuint *tokens);
     41     void        recycleTokens(GLsizei n, const GLuint *tokens);
     42     bool        isTokenValid(GLuint token) const;
     43 
     44 private:
     45     mutable Mutex   mLock;
     46     Tokenizer       mTokenizer;
     47 };
     48 
     49 // ----------------------------------------------------------------------------
     50 }; // namespace android
     51 
     52 #endif // ANDROID_OPENGLES_TOKEN_MANAGER_H
     53 
     54