Mercurial > sdl-ios-xcode
annotate src/video/x11/SDL_x11dyn.c @ 3957:b1d5b56aa549 SDL-1.2
Date: Mon, 4 Jun 2007 06:17:59 +0000 (UTC)
From: George Gensure <werkt0@gmail.com>
Subject: [SDL] error removal patch for SDL_x11dyn.c
I found that calling SDL_GetError when an error hasn't necessarily occurred is
still reporting problems from loadso regarding dynamic functions in X11. I've
added the following to my local copy to avoid revealing the 'many library
lookup' approach adopted by x11dyn.c:
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Wed, 13 Jun 2007 07:54:10 +0000 |
parents | 9e85b267f8f3 |
children | 85b6fb6a5e3c |
rev | line source |
---|---|
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
1 /* |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
3 Copyright (C) 1997-2004 Sam Lantinga |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
4 |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Library General Public |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
8 version 2 of the License, or (at your option) any later version. |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
9 |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
13 Library General Public License for more details. |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
14 |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Library General Public |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
18 |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
19 Sam Lantinga |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
20 slouken@libsdl.org |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
21 */ |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
22 #include "SDL_config.h" |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
23 |
1589
34cca785be57
Xrandr support in the X11 target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1587
diff
changeset
|
24 #define DEBUG_DYNAMIC_X11 0 |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
25 |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
26 #include "SDL_x11dyn.h" |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
27 |
1589
34cca785be57
Xrandr support in the X11 target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1587
diff
changeset
|
28 #if DEBUG_DYNAMIC_X11 |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
29 #include <stdio.h> |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
30 #endif |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
31 |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1245
diff
changeset
|
32 #ifdef SDL_VIDEO_DRIVER_X11_DYNAMIC |
1593
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
33 |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
34 #include "SDL_name.h" |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
35 #include "SDL_loadso.h" |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
36 |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
37 typedef struct |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
38 { |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
39 void *lib; |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
40 const char *libname; |
1593
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
41 } x11dynlib; |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
42 |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
43 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
44 #define SDL_VIDEO_DRIVER_X11_DYNAMIC NULL |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
45 #endif |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
46 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
47 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT NULL |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
48 #endif |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
49 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
50 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER NULL |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
51 #endif |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
52 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
53 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR NULL |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
54 #endif |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
55 |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
56 static x11dynlib x11libs[] = |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
57 { |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
58 { NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC }, |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
59 { NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT }, |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
60 { NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER }, |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
61 { NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR }, |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
62 }; |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
63 |
1842
fea140a964b3
Patch from Ryan to fix compiler warnings
Sam Lantinga <slouken@libsdl.org>
parents:
1648
diff
changeset
|
64 static void X11_GetSym(const char *fnname, int *rc, void **fn) |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
65 { |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
66 int i; |
1593
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
67 for (i = 0; i < SDL_TABLESIZE(x11libs); i++) { |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
68 if (x11libs[i].lib != NULL) |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
69 { |
1842
fea140a964b3
Patch from Ryan to fix compiler warnings
Sam Lantinga <slouken@libsdl.org>
parents:
1648
diff
changeset
|
70 *fn = SDL_LoadFunction(x11libs[i].lib, fnname); |
fea140a964b3
Patch from Ryan to fix compiler warnings
Sam Lantinga <slouken@libsdl.org>
parents:
1648
diff
changeset
|
71 if (*fn != NULL) |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
72 break; |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
73 } |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
74 } |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
75 |
3957
b1d5b56aa549
Date: Mon, 4 Jun 2007 06:17:59 +0000 (UTC)
Ryan C. Gordon <icculus@icculus.org>
parents:
1874
diff
changeset
|
76 if (*fn != NULL) |
b1d5b56aa549
Date: Mon, 4 Jun 2007 06:17:59 +0000 (UTC)
Ryan C. Gordon <icculus@icculus.org>
parents:
1874
diff
changeset
|
77 SDL_ClearError(); |
b1d5b56aa549
Date: Mon, 4 Jun 2007 06:17:59 +0000 (UTC)
Ryan C. Gordon <icculus@icculus.org>
parents:
1874
diff
changeset
|
78 else |
b1d5b56aa549
Date: Mon, 4 Jun 2007 06:17:59 +0000 (UTC)
Ryan C. Gordon <icculus@icculus.org>
parents:
1874
diff
changeset
|
79 SDL_SetError("Failed to load function %s from x11libs", fnname); |
b1d5b56aa549
Date: Mon, 4 Jun 2007 06:17:59 +0000 (UTC)
Ryan C. Gordon <icculus@icculus.org>
parents:
1874
diff
changeset
|
80 |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
81 #if DEBUG_DYNAMIC_X11 |
1842
fea140a964b3
Patch from Ryan to fix compiler warnings
Sam Lantinga <slouken@libsdl.org>
parents:
1648
diff
changeset
|
82 if (*fn != NULL) |
fea140a964b3
Patch from Ryan to fix compiler warnings
Sam Lantinga <slouken@libsdl.org>
parents:
1648
diff
changeset
|
83 printf("X11: Found '%s' in %s (%p)\n", fnname, x11libs[i].libname, *fn); |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
84 else |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
85 printf("X11: Symbol '%s' NOT FOUND!\n", fnname); |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
86 #endif |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
87 |
1842
fea140a964b3
Patch from Ryan to fix compiler warnings
Sam Lantinga <slouken@libsdl.org>
parents:
1648
diff
changeset
|
88 if (*fn == NULL) |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
89 *rc = 0; /* kill this module. */ |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
90 } |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
91 |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
92 |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
93 /* Define all the function pointers and wrappers... */ |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
94 #define SDL_X11_MODULE(modname) |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
95 #define SDL_X11_SYM(rc,fn,params,args,ret) \ |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
96 static rc (*p##fn) params = NULL; \ |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
97 rc fn params { ret p##fn args ; } |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
98 #include "SDL_x11sym.h" |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
99 #undef SDL_X11_MODULE |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
100 #undef SDL_X11_SYM |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1245
diff
changeset
|
101 #endif /* SDL_VIDEO_DRIVER_X11_DYNAMIC */ |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
102 |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
103 /* Annoying varargs entry point... */ |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
104 #ifdef X_HAVE_UTF8_STRING |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
105 XIC (*pXCreateIC)(XIM,...) = NULL; |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
106 #endif |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
107 |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
108 /* These SDL_X11_HAVE_* flags are here whether you have dynamic X11 or not. */ |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
109 #define SDL_X11_MODULE(modname) int SDL_X11_HAVE_##modname = 1; |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
110 #define SDL_X11_SYM(rc,fn,params,args,ret) |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
111 #include "SDL_x11sym.h" |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
112 #undef SDL_X11_MODULE |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
113 #undef SDL_X11_SYM |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
114 |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
115 |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
116 static int x11_load_refcount = 0; |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
117 |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
118 void SDL_X11_UnloadSymbols(void) |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
119 { |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
120 #ifdef SDL_VIDEO_DRIVER_X11_DYNAMIC |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
121 /* Don't actually unload if more than one module is using the libs... */ |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
122 if (x11_load_refcount > 0) { |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
123 if (--x11_load_refcount == 0) { |
1593
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
124 int i; |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
125 |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
126 /* set all the function pointers to NULL. */ |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
127 #define SDL_X11_MODULE(modname) SDL_X11_HAVE_##modname = 1; |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
128 #define SDL_X11_SYM(rc,fn,params,args,ret) p##fn = NULL; |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
129 #include "SDL_x11sym.h" |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
130 #undef SDL_X11_MODULE |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
131 #undef SDL_X11_SYM |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
132 |
1593
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
133 #ifdef X_HAVE_UTF8_STRING |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
134 pXCreateIC = NULL; |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
135 #endif |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
136 |
1593
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
137 for (i = 0; i < SDL_TABLESIZE(x11libs); i++) { |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
138 if (x11libs[i].lib != NULL) { |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
139 SDL_UnloadObject(x11libs[i].lib); |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
140 x11libs[i].lib = NULL; |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
141 } |
1589
34cca785be57
Xrandr support in the X11 target.
Ryan C. Gordon <icculus@icculus.org>
parents:
1587
diff
changeset
|
142 } |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
143 } |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
144 } |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
145 #endif |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
146 } |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
147 |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
148 /* returns non-zero if all needed symbols were loaded. */ |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
149 int SDL_X11_LoadSymbols(void) |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
150 { |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
151 int rc = 1; /* always succeed if not using Dynamic X11 stuff. */ |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
152 |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
153 #ifdef SDL_VIDEO_DRIVER_X11_DYNAMIC |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
154 /* deal with multiple modules (dga, x11, etc) needing these symbols... */ |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
155 if (x11_load_refcount++ == 0) { |
1593
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
156 int i; |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
157 int *thismod = NULL; |
1593
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
158 for (i = 0; i < SDL_TABLESIZE(x11libs); i++) { |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
159 if (x11libs[i].libname != NULL) { |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
160 x11libs[i].lib = SDL_LoadObject(x11libs[i].libname); |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
161 } |
5115439d67b1
Consolidate all the X11 libraries, so you don't have to update 12 different
Ryan C. Gordon <icculus@icculus.org>
parents:
1589
diff
changeset
|
162 } |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
163 #define SDL_X11_MODULE(modname) thismod = &SDL_X11_HAVE_##modname; |
1842
fea140a964b3
Patch from Ryan to fix compiler warnings
Sam Lantinga <slouken@libsdl.org>
parents:
1648
diff
changeset
|
164 #define SDL_X11_SYM(a,fn,x,y,z) X11_GetSym(#fn,thismod,(void**)&p##fn); |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
165 #include "SDL_x11sym.h" |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
166 #undef SDL_X11_MODULE |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
167 #undef SDL_X11_SYM |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
168 |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
169 #ifdef X_HAVE_UTF8_STRING |
1842
fea140a964b3
Patch from Ryan to fix compiler warnings
Sam Lantinga <slouken@libsdl.org>
parents:
1648
diff
changeset
|
170 X11_GetSym("XCreateIC",&SDL_X11_HAVE_UTF8,(void **)&pXCreateIC); |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
171 #endif |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
172 |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
173 if (!SDL_X11_HAVE_BASEXLIB) { /* some required symbol didn't load. */ |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
174 SDL_X11_UnloadSymbols(); /* in case something got loaded... */ |
1610
a1ee5944412b
SDL_X11_LoadSymbols() was reporting success when required symbols weren't
Ryan C. Gordon <icculus@icculus.org>
parents:
1593
diff
changeset
|
175 rc = 0; |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
176 } |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
177 } |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
178 #else |
1874
9e85b267f8f3
Minor bit of sanity-checking debug info in dynamic X11 code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1842
diff
changeset
|
179 #if DEBUG_DYNAMIC_X11 |
9e85b267f8f3
Minor bit of sanity-checking debug info in dynamic X11 code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1842
diff
changeset
|
180 printf("X11: No dynamic X11 support in this build of SDL.\n"); |
9e85b267f8f3
Minor bit of sanity-checking debug info in dynamic X11 code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1842
diff
changeset
|
181 #endif |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
182 #ifdef X_HAVE_UTF8_STRING |
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
183 pXCreateIC = XCreateIC; |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
184 #endif |
1575
3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
Ryan C. Gordon <icculus@icculus.org>
parents:
1402
diff
changeset
|
185 #endif |
1168
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
186 |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
187 return rc; |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
188 } |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
189 |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
190 /* end of SDL_x11dyn.c ... */ |
045f186426e1
Dynamically load X11 libraries like we currently do for alsa, esd, etc.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
191 |