src/video/x11/SDL_x11dyn.h
author Ryan C. Gordon <icculus@icculus.org>
Sat, 14 Jan 2006 08:15:38 +0000
changeset 1248 d2c6881935be
parent 1244 a388f2b59044
child 1299 2bf9dda618e5
permissions -rw-r--r--
Catch X11 extension errors...since most of these are notifications that we
queried for a missing extension (such as the XiG vidmode one that most
people don't have), and default Xlib behaviour is to write notification to
stderr, this tends to generate incorrect bug reports.

Since we'll actually deal with the missing extension when querying for it,
we ignore these errors in our hook. The rest continue to pass through to
the default handler.

Fixes Bugzilla #42.

--ryan.
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997-2004 Sam Lantinga
     4 
     5     This library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Library General Public
     7     License as published by the Free Software Foundation; either
     8     version 2 of the License, or (at your option) any later version.
     9 
    10     This library is distributed in the hope that it will be useful,
    11     but WITHOUT ANY WARRANTY; without even the implied warranty of
    12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    13     Library General Public License for more details.
    14 
    15     You should have received a copy of the GNU Library General Public
    16     License along with this library; if not, write to the Free
    17     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    18 
    19     Sam Lantinga
    20     slouken@libsdl.org
    21 */
    22 
    23 #ifndef _SDL_x11dyn_h
    24 #define _SDL_x11dyn_h
    25 
    26 #include <X11/Xlib.h>
    27 #include <X11/Xutil.h>
    28 #include <X11/Xatom.h>
    29 #include <X11/Xproto.h>
    30 #include <X11/Xlibint.h>
    31 
    32 #if defined(__osf__)
    33 #include <XFree86/extensions/extutil.h>
    34 #else
    35 #include <X11/extensions/extutil.h>
    36 #endif
    37 
    38 #ifndef NO_SHARED_MEMORY
    39 #include <sys/ipc.h>
    40 #include <sys/shm.h>
    41 #include <X11/extensions/XShm.h>
    42 #endif
    43 
    44 /*
    45  * Never reference Xlib directly...we might load it dynamically at runtime.
    46  *  Even if we don't, for readability, we still use the function pointers
    47  *  (although the symbol resolution will be done by the loader in that case).
    48  *
    49  * We define SDL_X11_SYM and include SDL_x11sym.h to accomplish various
    50  *  goals, without having to duplicate those function signatures.
    51  */
    52 #ifdef __cplusplus
    53 extern "C" {
    54 #endif
    55 
    56 /* evil function signatures... */
    57 typedef Bool (*SDL_X11_XESetWireToEventRetType)(Display*,XEvent*,xEvent*);
    58 typedef int (*SDL_X11_XSynchronizeRetType)(Display*);
    59 typedef Status (*SDL_X11_XESetEventToWireRetType)(Display*,XEvent*,xEvent*);
    60 typedef int (*SDL_X11_XSetExtensionErrorHandlerType)(Display *,char *,char *);
    61 
    62 #define SDL_X11_SYM(req,ret,fn,params) extern ret (*p##fn) params;
    63 #include "SDL_x11sym.h"
    64 #undef SDL_X11_SYM
    65 
    66 /* Macro in the xlib headers, not an actual symbol... */
    67 #define pXDestroyImage XDestroyImage
    68 
    69 /* Workaround code in headers... */
    70 #if !__SDL_NO_REDEFINE_X11_HEADER_SYMS
    71 #define _XFlush p_XFlush
    72 #define _XFlushGCCache p_XFlushGCCache
    73 #define _XReply p_XReply
    74 #define _XSend p_XSend
    75 #define _XData32 p_XData32
    76 #define XFree pXFree
    77 #endif
    78 
    79 int SDL_X11_LoadSymbols(void);
    80 void SDL_X11_UnloadSymbols(void);
    81 
    82 #ifdef __cplusplus
    83 }
    84 #endif
    85 
    86 #endif  /* !defined _SDL_x11dyn_h */
    87