1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/* libs/opengles/surface.cpp 2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** 3edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** Copyright 2006, The Android Open Source Project 4edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** 5edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License"); 6edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** you may not use this file except in compliance with the License. 7edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** You may obtain a copy of the License at 8edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** 9edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** http://www.apache.org/licenses/LICENSE-2.0 10edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** 11edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** Unless required by applicable law or agreed to in writing, software 12edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS, 13edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** See the License for the specific language governing permissions and 15edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project** limitations under the License. 16edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project*/ 17edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 18edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <stdio.h> 19edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <stdlib.h> 20edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include "TokenManager.h" 21edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 22edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace android { 23edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 24edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 25edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source ProjectTokenManager::TokenManager() 26edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 27edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project // token 0 is always reserved 28edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project mTokenizer.reserve(0); 29edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 30edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 31edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source ProjectTokenManager::~TokenManager() 32edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 33edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 34edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 35edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectstatus_t TokenManager::getToken(GLsizei n, GLuint *tokens) 36edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 37edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project Mutex::Autolock _l(mLock); 38edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project for (GLsizei i=0 ; i<n ; i++) 39edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *tokens++ = mTokenizer.acquire(); 40edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return NO_ERROR; 41edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 42edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 43edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectvoid TokenManager::recycleTokens(GLsizei n, const GLuint *tokens) 44edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 45edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project Mutex::Autolock _l(mLock); 46edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project for (int i=0 ; i<n ; i++) { 47edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project const GLuint token = *tokens++; 48edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project if (token) { 49edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project mTokenizer.release(token); 50edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project } 51edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project } 52edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 53edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 54edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectbool TokenManager::isTokenValid(GLuint token) const 55edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 56edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project Mutex::Autolock _l(mLock); 57edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return mTokenizer.isAcquired(token); 58edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 59edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 60edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 61edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; // namespace android 62edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 63