pack_error.c revision a0d1e40cc56a54314af0a1a4b5e13905ffd78393
/* Copyright (c) 2001, Stanford University
* All rights reserved.
*
* See the file LICENSE.txt for information on redistributing this software.
*/
#include "cr_error.h"
#include "cr_environment.h"
#include "cr_pack.h"
#include "packer.h"
/*
* Set the error handler callback
*/
void crPackErrorFunction( CRPackContext *pc, CRPackErrorHandlerFunc function )
{
pc->Error = function;
}
/*
* This function is called by the packer functions when it detects and
* OpenGL error.
*/
void __PackError( int line, const char *file, GLenum error, const char *info)
{
GET_PACKER_CONTEXT(pc);
if (pc->Error)
pc->Error( line, file, error, info );
if (crGetenv("CR_DEBUG"))
{
char *glerr;
switch (error) {
case GL_NO_ERROR:
glerr = "GL_NO_ERROR";
break;
case GL_INVALID_VALUE:
glerr = "GL_INVALID_VALUE";
break;
case GL_INVALID_ENUM:
glerr = "GL_INVALID_ENUM";
break;
case GL_INVALID_OPERATION:
glerr = "GL_INVALID_OPERATION";
break;
case GL_STACK_OVERFLOW:
glerr = "GL_STACK_OVERFLOW";
break;
case GL_STACK_UNDERFLOW:
glerr = "GL_STACK_UNDERFLOW";
break;
case GL_OUT_OF_MEMORY:
glerr = "GL_OUT_OF_MEMORY";
break;
case GL_TABLE_TOO_LARGE:
glerr = "GL_TABLE_TOO_LARGE";
break;
default:
glerr = "unknown";
break;
}
crWarning( "GL error in packer: %s, line %d: %s: %s",
file, line, glerr, info );
}
}