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 44 void 45 _glapi_noop_enable_warnings(unsigned char enable) 46 { 47 } 48 49 void 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 */ 63 static int 64 Warn(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 */ 79 static GLint 80 NoOpUnused(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 103 static int 104 NoOpGeneric(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