1/* 2 * Mesa 3-D graphics library 3 * Version: 7.8 4 * 5 * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. 6 * Copyright (C) 2010 VMware, Inc. All Rights Reserved. 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining a 9 * copy of this software and associated documentation files (the "Software"), 10 * to deal in the Software without restriction, including without limitation 11 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12 * and/or sell copies of the Software, and to permit persons to whom the 13 * Software is furnished to do so, subject to the following conditions: 14 * 15 * The above copyright notice and this permission notice shall be included 16 * in all copies or substantial portions of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 21 * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 22 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 23 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 */ 25 26 27/** 28 * No-op dispatch table. 29 * 30 * This file defines a special dispatch table which is loaded with no-op 31 * functions. 32 * 33 * When there's no current rendering context, calling a GL function like 34 * glBegin() is a no-op. Apps should never normally do this. So as a 35 * debugging aid, each of the no-op functions will emit a warning to 36 * stderr if the MESA_DEBUG or LIBGL_DEBUG env var is set. 37 */ 38 39 40 41#include "glapi/glapi_priv.h" 42 43 44void 45_glapi_noop_enable_warnings(unsigned char enable) 46{ 47} 48 49void 50_glapi_set_warning_func(_glapi_proc func) 51{ 52} 53 54/* 55 * When GLAPIENTRY is __stdcall (i.e. Windows), the stack is popped by the 56 * callee making the number/type of arguments significant. 57 */ 58#if defined(_WIN32) || defined(DEBUG) 59 60/** 61 * Called by each of the no-op GL entrypoints. 62 */ 63static int 64Warn(const char *func) 65{ 66#if defined(DEBUG) && !defined(_WIN32_WCE) 67 if (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG")) { 68 fprintf(stderr, "GL User Error: gl%s called without a rendering context\n", 69 func); 70 } 71#endif 72 return 0; 73} 74 75 76/** 77 * This is called if the user somehow calls an unassigned GL dispatch function. 78 */ 79static GLint 80NoOpUnused(void) 81{ 82 return Warn(" function"); 83} 84 85/* 86 * Defines for the glapitemp.h functions. 87 */ 88#define KEYWORD1 static 89#define KEYWORD1_ALT static 90#define KEYWORD2 GLAPIENTRY 91#define NAME(func) NoOp##func 92#define DISPATCH(func, args, msg) Warn(#func); 93#define RETURN_DISPATCH(func, args, msg) Warn(#func); return 0 94 95 96/* 97 * Defines for the table of no-op entry points. 98 */ 99#define TABLE_ENTRY(name) (_glapi_proc) NoOp##name 100 101#else 102 103static int 104NoOpGeneric(void) 105{ 106#if !defined(_WIN32_WCE) 107 if (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG")) { 108 fprintf(stderr, "GL User Error: calling GL function without a rendering context\n"); 109 } 110#endif 111 return 0; 112} 113 114#define TABLE_ENTRY(name) (_glapi_proc) NoOpGeneric 115 116#endif 117 118#define DISPATCH_TABLE_NAME __glapi_noop_table 119#define UNUSED_TABLE_NAME __unused_noop_functions 120 121#include "glapi/glapitemp.h" 122