本文整理汇总了C++中crFree函数的典型用法代码示例。如果您正苦于以下问题:C++ crFree函数的具体用法?C++ crFree怎么用?C++ crFree使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了crFree函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: crServerDispatchAreProgramsResidentNV
GLboolean SERVER_DISPATCH_APIENTRY
crServerDispatchAreProgramsResidentNV(GLsizei n, const GLuint *programs,
GLboolean *residences)
{
GLboolean retval;
GLboolean *res = (GLboolean *) crAlloc(n * sizeof(GLboolean));
GLsizei i;
(void) residences;
if (!cr_server.sharedTextureObjects) {
GLuint *programs2 = (GLuint *) crAlloc(n * sizeof(GLuint));
for (i = 0; i < n; i++)
programs2[i] = crServerTranslateProgramID(programs[i]);
retval = cr_server.head_spu->dispatch_table.AreProgramsResidentNV(n, programs2, res);
crFree(programs2);
}
else {
retval = cr_server.head_spu->dispatch_table.AreProgramsResidentNV(n, programs, res);
}
crServerReturnValue(res, n * sizeof(GLboolean));
crFree(res);
return retval; /* WILL PROBABLY BE IGNORED */
}
示例2: crServerDispatchAreTexturesResident
GLboolean SERVER_DISPATCH_APIENTRY
crServerDispatchAreTexturesResident(GLsizei n, const GLuint *textures,
GLboolean *residences)
{
GLboolean retval;
GLsizei i;
GLboolean *res = (GLboolean *) crAlloc(n * sizeof(GLboolean));
GLuint *textures2 = (GLuint *) crAlloc(n * sizeof(GLuint));
(void) residences;
for (i = 0; i < n; i++)
{
textures2[i] = crStateGetTextureHWID(textures[i]);
}
retval = cr_server.head_spu->dispatch_table.AreTexturesResident(n, textures2, res);
crFree(textures2);
crServerReturnValue(res, n * sizeof(GLboolean));
crFree(res);
return retval; /* WILL PROBABLY BE IGNORED */
}
示例3: crServerCleanupByPID
static void crServerCleanupByPID(uint64_t pid)
{
CRClientNode *pNode=cr_server.pCleanupClient, *pNext;
while (pNode)
{
if (pNode->pClient->pid==pid)
{
crServerCleanupClient(pNode->pClient);
crFree(pNode->pClient);
if (pNode->prev)
{
pNode->prev->next=pNode->next;
}
else
{
cr_server.pCleanupClient=pNode->next;
}
if (pNode->next)
{
pNode->next->prev = pNode->prev;
}
pNext=pNode->next;
crFree(pNode);
pNode=pNext;
}
else
{
pNode=pNode->next;
}
}
}
示例4: freeContextCallback
static void freeContextCallback(void *data)
{
ContextInfo *contextInfo = (ContextInfo *) data;
crFree(contextInfo->server);
crStateFreeContext(contextInfo->State);
crFree(contextInfo);
}
示例5: crFreeStrings
/* Free an array of strings, as returned by crStrSplit() and crStrSplitn(). */
void crFreeStrings( char **strings )
{
int i;
for (i = 0; strings[i]; i++) {
crFree(strings[i]);
}
crFree(strings);
}
示例6: crNetDisconnect
/**
* Tear down a network connection (close the socket, etc).
*/
void crNetDisconnect( CRConnection *conn )
{
conn->Disconnect( conn );
crFree( conn->hostname );
#ifdef CHROMIUM_THREADSAFE
crFreeMutex( &conn->messageList.lock );
#endif
crFree( conn );
}
示例7: crStateFreeGLSLShader
static void crStateFreeGLSLShader(void *data)
{
CRGLSLShader* pShader = (CRGLSLShader *) data;
if (pShader->source)
crFree(pShader->source);
crFree(pShader);
}
示例8: crFreeHashIdPool
static void crFreeHashIdPool( CRHashIdPool *pool )
{
FreeElem *i, *next;
for (i = pool->freeList; i; i = next)
{
next = i->next;
crFree(i);
}
crFree(pool);
}
示例9: DECLEXPORT
DECLEXPORT(void) STATE_APIENTRY crStateLinkProgram(GLuint program)
{
CRGLSLProgram *pProgram = crStateGetProgramObj(program);
GLuint i;
if (!pProgram)
{
crWarning("Unknown program %d", program);
return;
}
pProgram->linked = GL_TRUE;
/*Free program's active state*/
if (pProgram->activeState.attachedShaders)
{
crHashtableWalk(pProgram->activeState.attachedShaders, crStateFakeDecRefCountCB, NULL);
crFreeHashtable(pProgram->activeState.attachedShaders, crStateFreeGLSLShader);
pProgram->activeState.attachedShaders = NULL;
}
for (i=0; i<pProgram->activeState.cAttribs; ++i)
{
crFree(pProgram->activeState.pAttribs[i].name);
}
if (pProgram->activeState.pAttribs) crFree(pProgram->activeState.pAttribs);
/*copy current state to active state*/
crMemcpy(&pProgram->activeState, &pProgram->currentState, sizeof(CRGLSLProgramState));
pProgram->activeState.attachedShaders = crAllocHashtable();
if (!pProgram->activeState.attachedShaders)
{
crWarning("crStateLinkProgram: Out of memory!");
return;
}
crHashtableWalk(pProgram->currentState.attachedShaders, crStateCopyShaderCB, pProgram);
/*that's not a bug, note the memcpy above*/
if (pProgram->activeState.pAttribs)
{
pProgram->activeState.pAttribs = (CRGLSLAttrib *) crAlloc(pProgram->activeState.cAttribs * sizeof(CRGLSLAttrib));
}
for (i=0; i<pProgram->activeState.cAttribs; ++i)
{
crMemcpy(&pProgram->activeState.pAttribs[i], &pProgram->currentState.pAttribs[i], sizeof(CRGLSLAttrib));
pProgram->activeState.pAttribs[i].name = crStrdup(pProgram->currentState.pAttribs[i].name);
}
crStateFreeProgramUniforms(pProgram);
}
示例10: renderspuDestroyContextTerminate
static void renderspuDestroyContextTerminate( ContextInfo *context )
{
CRASSERT(context->BltInfo.Base.id == -1);
renderspu_SystemDestroyContext( context );
if (context->extensionString) {
crFree(context->extensionString);
context->extensionString = NULL;
}
if (context->shared)
renderspuContextRelease( context->shared );
crFree(context);
}
示例11: crStateFreeBufferObject
void crStateFreeBufferObject(void *data)
{
CRBufferObject *pObj = (CRBufferObject *)data;
if (pObj->data) crFree(pObj->data);
#ifndef IN_GUEST
if (diff_api.DeleteBuffersARB)
{
diff_api.DeleteBuffersARB(1, &pObj->hwid);
}
#endif
crFree(pObj);
}
示例12: crServerTearDown
static void crServerTearDown( void )
{
GLint i;
/* avoid a race condition */
if (tearingdown)
return;
tearingdown = 1;
crStateSetCurrent( NULL );
cr_server.curClient = NULL;
cr_server.run_queue = NULL;
crFree( cr_server.overlap_intens );
cr_server.overlap_intens = NULL;
/* Deallocate all semaphores */
crFreeHashtable(cr_server.semaphores, crFree);
cr_server.semaphores = NULL;
/* Deallocate all barriers */
crFreeHashtable(cr_server.barriers, DeleteBarrierCallback);
cr_server.barriers = NULL;
/* Free all context info */
crFreeHashtable(cr_server.contextTable, deleteContextCallback);
/* Free vertex programs */
crFreeHashtable(cr_server.programTable, crFree);
for (i = 0; i < cr_server.numClients; i++) {
if (cr_server.clients[i]) {
CRConnection *conn = cr_server.clients[i]->conn;
crNetFreeConnection(conn);
crFree(cr_server.clients[i]);
}
}
cr_server.numClients = 0;
#if 1
/* disable these two lines if trying to get stack traces with valgrind */
crSPUUnloadChain(cr_server.head_spu);
cr_server.head_spu = NULL;
#endif
crUnloadOpenGL();
}
示例13: crDLMFreeContext
void DLM_APIENTRY crDLMFreeContext(CRDLMContextState *state, SPUDispatchTable *dispatchTable)
{
CRDLMContextState *listState = CURRENT_STATE();
/* If we're currently using this context, release it first */
if (listState == state)
crDLMSetCurrentState(NULL);
/* Try to free the DLM. This will either decrement the use count,
* or will actually free the DLM, if we were the last user.
*/
crDLMFreeDLM(state->dlm, dispatchTable);
state->dlm = NULL;
/* If any buffers still remain (e.g. because there was an open
* display list), remove those as well.
*/
if (state->currentListInfo)
{
crdlmFreeDisplayListResourcesCb((void *)state->currentListInfo, (void *)dispatchTable);
state->currentListInfo = NULL;
}
state->currentListIdentifier = 0;
/* Free the state record itself */
crFree(state);
}
示例14: packspu_GetUniformLocation
GLint PACKSPU_APIENTRY packspu_GetUniformLocation(GLuint program, const char * name)
{
if (!crStateIsProgramUniformsCached(program))
{
GET_THREAD(thread);
int writeback = 1;
GLsizei maxcbData;
GLsizei *pData;
GLint mu;
packspu_GetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, &mu);
maxcbData = 16*mu*sizeof(char);
pData = (GLsizei *) crAlloc(maxcbData+sizeof(GLsizei));
if (!pData)
{
crWarning("packspu_GetUniformLocation: not enough memory, fallback to single query");
return packspu_GetUniformLocationUncached(program, name);
}
crPackGetUniformsLocations(program, maxcbData, pData, NULL, &writeback);
packspuFlush((void *) thread);
CRPACKSPU_WRITEBACK_WAIT(thread, writeback);
crStateGLSLProgramCacheUniforms(program, pData[0], &pData[1]);
CRASSERT(crStateIsProgramUniformsCached(program));
crFree(pData);
}
/*crDebug("packspu_GetUniformLocation(%d, %s)=%i", program, name, crStateGetUniformLocation(program, name));*/
return crStateGetUniformLocation(program, name);
}
示例15: crServerDispatchCallLists
void SERVER_DISPATCH_APIENTRY
crServerDispatchCallLists( GLsizei n, GLenum type, const GLvoid *lists )
{
if (!cr_server.sharedDisplayLists) {
/* need to translate IDs */
GLuint *newLists = (GLuint *) crAlloc(n * sizeof(GLuint));
if (newLists) {
TranslateListIDs(n, type, lists, newLists);
}
lists = newLists;
type = GL_UNSIGNED_INT;
}
if (cr_server.curClient->currentCtx->lists.mode == 0) {
/* we're not compiling, so execute the list now */
/* Issue the list as-is */
cr_server.head_spu->dispatch_table.CallLists( n, type, lists );
crStateQueryHWState();
}
else {
/* we're compiling glCallList into another list - just pass it through */
cr_server.head_spu->dispatch_table.CallLists( n, type, lists );
}
if (!cr_server.sharedDisplayLists) {
crFree((void *) lists); /* malloc'd above */
}
}