comparison src/SDL.c @ 1668:4da1ee79c9af SDL-1.3

more tweaking indent options
author Sam Lantinga <slouken@libsdl.org>
date Mon, 29 May 2006 04:04:35 +0000
parents 782fd950bd46
children c901fd2a42da
comparison
equal deleted inserted replaced
1667:1fddae038bc8 1668:4da1ee79c9af
33 #include <pth.h> 33 #include <pth.h>
34 #endif 34 #endif
35 35
36 /* Initialization/Cleanup routines */ 36 /* Initialization/Cleanup routines */
37 #if !SDL_JOYSTICK_DISABLED 37 #if !SDL_JOYSTICK_DISABLED
38 extern int SDL_JoystickInit (void); 38 extern int SDL_JoystickInit(void);
39 extern void SDL_JoystickQuit (void); 39 extern void SDL_JoystickQuit(void);
40 #endif 40 #endif
41 #if !SDL_CDROM_DISABLED 41 #if !SDL_CDROM_DISABLED
42 extern int SDL_CDROMInit (void); 42 extern int SDL_CDROMInit(void);
43 extern void SDL_CDROMQuit (void); 43 extern void SDL_CDROMQuit(void);
44 #endif 44 #endif
45 #if !SDL_TIMERS_DISABLED 45 #if !SDL_TIMERS_DISABLED
46 extern void SDL_StartTicks (void); 46 extern void SDL_StartTicks(void);
47 extern int SDL_TimerInit (void); 47 extern int SDL_TimerInit(void);
48 extern void SDL_TimerQuit (void); 48 extern void SDL_TimerQuit(void);
49 #endif 49 #endif
50 50
51 /* The initialized subsystems */ 51 /* The initialized subsystems */
52 static Uint32 SDL_initialized = 0; 52 static Uint32 SDL_initialized = 0;
53 static Uint32 ticks_started = 0; 53 static Uint32 ticks_started = 0;
55 #ifdef CHECK_LEAKS 55 #ifdef CHECK_LEAKS
56 int surfaces_allocated = 0; 56 int surfaces_allocated = 0;
57 #endif 57 #endif
58 58
59 int 59 int
60 SDL_InitSubSystem (Uint32 flags) 60 SDL_InitSubSystem(Uint32 flags)
61 { 61 {
62 #if !SDL_VIDEO_DISABLED 62 #if !SDL_VIDEO_DISABLED
63 /* Initialize the video/event subsystem */ 63 /* Initialize the video/event subsystem */
64 if ((flags & SDL_INIT_VIDEO) && !(SDL_initialized & SDL_INIT_VIDEO)) { 64 if ((flags & SDL_INIT_VIDEO) && !(SDL_initialized & SDL_INIT_VIDEO)) {
65 if (SDL_VideoInit (SDL_getenv ("SDL_VIDEODRIVER"), 65 if (SDL_VideoInit(SDL_getenv("SDL_VIDEODRIVER"),
66 (flags & SDL_INIT_EVENTTHREAD)) < 0) { 66 (flags & SDL_INIT_EVENTTHREAD)) < 0) {
67 return (-1); 67 return (-1);
68 } 68 }
69 SDL_initialized |= SDL_INIT_VIDEO; 69 SDL_initialized |= SDL_INIT_VIDEO;
70 } 70 }
71 #else 71 #else
72 if (flags & SDL_INIT_VIDEO) { 72 if (flags & SDL_INIT_VIDEO) {
73 SDL_SetError ("SDL not built with video support"); 73 SDL_SetError("SDL not built with video support");
74 return (-1); 74 return (-1);
75 } 75 }
76 #endif 76 #endif
77 77
78 #if !SDL_AUDIO_DISABLED 78 #if !SDL_AUDIO_DISABLED
79 /* Initialize the audio subsystem */ 79 /* Initialize the audio subsystem */
80 if ((flags & SDL_INIT_AUDIO) && !(SDL_initialized & SDL_INIT_AUDIO)) { 80 if ((flags & SDL_INIT_AUDIO) && !(SDL_initialized & SDL_INIT_AUDIO)) {
81 if (SDL_AudioInit (SDL_getenv ("SDL_AUDIODRIVER")) < 0) { 81 if (SDL_AudioInit(SDL_getenv("SDL_AUDIODRIVER")) < 0) {
82 return (-1); 82 return (-1);
83 } 83 }
84 SDL_initialized |= SDL_INIT_AUDIO; 84 SDL_initialized |= SDL_INIT_AUDIO;
85 } 85 }
86 #else 86 #else
87 if (flags & SDL_INIT_AUDIO) { 87 if (flags & SDL_INIT_AUDIO) {
88 SDL_SetError ("SDL not built with audio support"); 88 SDL_SetError("SDL not built with audio support");
89 return (-1); 89 return (-1);
90 } 90 }
91 #endif 91 #endif
92 92
93 #if !SDL_TIMERS_DISABLED 93 #if !SDL_TIMERS_DISABLED
94 /* Initialize the timer subsystem */ 94 /* Initialize the timer subsystem */
95 if (!ticks_started) { 95 if (!ticks_started) {
96 SDL_StartTicks (); 96 SDL_StartTicks();
97 ticks_started = 1; 97 ticks_started = 1;
98 } 98 }
99 if ((flags & SDL_INIT_TIMER) && !(SDL_initialized & SDL_INIT_TIMER)) { 99 if ((flags & SDL_INIT_TIMER) && !(SDL_initialized & SDL_INIT_TIMER)) {
100 if (SDL_TimerInit () < 0) { 100 if (SDL_TimerInit() < 0) {
101 return (-1); 101 return (-1);
102 } 102 }
103 SDL_initialized |= SDL_INIT_TIMER; 103 SDL_initialized |= SDL_INIT_TIMER;
104 } 104 }
105 #else 105 #else
106 if (flags & SDL_INIT_TIMER) { 106 if (flags & SDL_INIT_TIMER) {
107 SDL_SetError ("SDL not built with timer support"); 107 SDL_SetError("SDL not built with timer support");
108 return (-1); 108 return (-1);
109 } 109 }
110 #endif 110 #endif
111 111
112 #if !SDL_JOYSTICK_DISABLED 112 #if !SDL_JOYSTICK_DISABLED
113 /* Initialize the joystick subsystem */ 113 /* Initialize the joystick subsystem */
114 if ((flags & SDL_INIT_JOYSTICK) && !(SDL_initialized & SDL_INIT_JOYSTICK)) { 114 if ((flags & SDL_INIT_JOYSTICK) && !(SDL_initialized & SDL_INIT_JOYSTICK)) {
115 if (SDL_JoystickInit () < 0) { 115 if (SDL_JoystickInit() < 0) {
116 return (-1); 116 return (-1);
117 } 117 }
118 SDL_initialized |= SDL_INIT_JOYSTICK; 118 SDL_initialized |= SDL_INIT_JOYSTICK;
119 } 119 }
120 #else 120 #else
121 if (flags & SDL_INIT_JOYSTICK) { 121 if (flags & SDL_INIT_JOYSTICK) {
122 SDL_SetError ("SDL not built with joystick support"); 122 SDL_SetError("SDL not built with joystick support");
123 return (-1); 123 return (-1);
124 } 124 }
125 #endif 125 #endif
126 126
127 #if !SDL_CDROM_DISABLED 127 #if !SDL_CDROM_DISABLED
128 /* Initialize the CD-ROM subsystem */ 128 /* Initialize the CD-ROM subsystem */
129 if ((flags & SDL_INIT_CDROM) && !(SDL_initialized & SDL_INIT_CDROM)) { 129 if ((flags & SDL_INIT_CDROM) && !(SDL_initialized & SDL_INIT_CDROM)) {
130 if (SDL_CDROMInit () < 0) { 130 if (SDL_CDROMInit() < 0) {
131 return (-1); 131 return (-1);
132 } 132 }
133 SDL_initialized |= SDL_INIT_CDROM; 133 SDL_initialized |= SDL_INIT_CDROM;
134 } 134 }
135 #else 135 #else
136 if (flags & SDL_INIT_CDROM) { 136 if (flags & SDL_INIT_CDROM) {
137 SDL_SetError ("SDL not built with cdrom support"); 137 SDL_SetError("SDL not built with cdrom support");
138 return (-1); 138 return (-1);
139 } 139 }
140 #endif 140 #endif
141 return (0); 141 return (0);
142 } 142 }
143 143
144 int 144 int
145 SDL_Init (Uint32 flags) 145 SDL_Init(Uint32 flags)
146 { 146 {
147 #if !SDL_THREADS_DISABLED && SDL_THREAD_PTH 147 #if !SDL_THREADS_DISABLED && SDL_THREAD_PTH
148 if (!pth_init ()) { 148 if (!pth_init()) {
149 return -1; 149 return -1;
150 } 150 }
151 #endif 151 #endif
152 152
153 /* Clear the error message */ 153 /* Clear the error message */
154 SDL_ClearError (); 154 SDL_ClearError();
155 155
156 /* Initialize the desired subsystems */ 156 /* Initialize the desired subsystems */
157 if (SDL_InitSubSystem (flags) < 0) { 157 if (SDL_InitSubSystem(flags) < 0) {
158 return (-1); 158 return (-1);
159 } 159 }
160 160
161 /* Everything is initialized */ 161 /* Everything is initialized */
162 if (!(flags & SDL_INIT_NOPARACHUTE)) { 162 if (!(flags & SDL_INIT_NOPARACHUTE)) {
163 SDL_InstallParachute (); 163 SDL_InstallParachute();
164 } 164 }
165 return (0); 165 return (0);
166 } 166 }
167 167
168 void 168 void
169 SDL_QuitSubSystem (Uint32 flags) 169 SDL_QuitSubSystem(Uint32 flags)
170 { 170 {
171 /* Shut down requested initialized subsystems */ 171 /* Shut down requested initialized subsystems */
172 #if !SDL_CDROM_DISABLED 172 #if !SDL_CDROM_DISABLED
173 if ((flags & SDL_initialized & SDL_INIT_CDROM)) { 173 if ((flags & SDL_initialized & SDL_INIT_CDROM)) {
174 SDL_CDROMQuit (); 174 SDL_CDROMQuit();
175 SDL_initialized &= ~SDL_INIT_CDROM; 175 SDL_initialized &= ~SDL_INIT_CDROM;
176 } 176 }
177 #endif 177 #endif
178 #if !SDL_JOYSTICK_DISABLED 178 #if !SDL_JOYSTICK_DISABLED
179 if ((flags & SDL_initialized & SDL_INIT_JOYSTICK)) { 179 if ((flags & SDL_initialized & SDL_INIT_JOYSTICK)) {
180 SDL_JoystickQuit (); 180 SDL_JoystickQuit();
181 SDL_initialized &= ~SDL_INIT_JOYSTICK; 181 SDL_initialized &= ~SDL_INIT_JOYSTICK;
182 } 182 }
183 #endif 183 #endif
184 #if !SDL_TIMERS_DISABLED 184 #if !SDL_TIMERS_DISABLED
185 if ((flags & SDL_initialized & SDL_INIT_TIMER)) { 185 if ((flags & SDL_initialized & SDL_INIT_TIMER)) {
186 SDL_TimerQuit (); 186 SDL_TimerQuit();
187 SDL_initialized &= ~SDL_INIT_TIMER; 187 SDL_initialized &= ~SDL_INIT_TIMER;
188 } 188 }
189 #endif 189 #endif
190 #if !SDL_AUDIO_DISABLED 190 #if !SDL_AUDIO_DISABLED
191 if ((flags & SDL_initialized & SDL_INIT_AUDIO)) { 191 if ((flags & SDL_initialized & SDL_INIT_AUDIO)) {
192 SDL_AudioQuit (); 192 SDL_AudioQuit();
193 SDL_initialized &= ~SDL_INIT_AUDIO; 193 SDL_initialized &= ~SDL_INIT_AUDIO;
194 } 194 }
195 #endif 195 #endif
196 #if !SDL_VIDEO_DISABLED 196 #if !SDL_VIDEO_DISABLED
197 if ((flags & SDL_initialized & SDL_INIT_VIDEO)) { 197 if ((flags & SDL_initialized & SDL_INIT_VIDEO)) {
198 SDL_VideoQuit (); 198 SDL_VideoQuit();
199 SDL_initialized &= ~SDL_INIT_VIDEO; 199 SDL_initialized &= ~SDL_INIT_VIDEO;
200 } 200 }
201 #endif 201 #endif
202 } 202 }
203 203
204 Uint32 204 Uint32
205 SDL_WasInit (Uint32 flags) 205 SDL_WasInit(Uint32 flags)
206 { 206 {
207 if (!flags) { 207 if (!flags) {
208 flags = SDL_INIT_EVERYTHING; 208 flags = SDL_INIT_EVERYTHING;
209 } 209 }
210 return (SDL_initialized & flags); 210 return (SDL_initialized & flags);
211 } 211 }
212 212
213 void 213 void
214 SDL_Quit (void) 214 SDL_Quit(void)
215 { 215 {
216 /* Quit all subsystems */ 216 /* Quit all subsystems */
217 #ifdef DEBUG_BUILD 217 #ifdef DEBUG_BUILD
218 printf ("[SDL_Quit] : Enter! Calling QuitSubSystem()\n"); 218 printf("[SDL_Quit] : Enter! Calling QuitSubSystem()\n");
219 fflush (stdout); 219 fflush(stdout);
220 #endif 220 #endif
221 SDL_QuitSubSystem (SDL_INIT_EVERYTHING); 221 SDL_QuitSubSystem(SDL_INIT_EVERYTHING);
222 222
223 #ifdef CHECK_LEAKS 223 #ifdef CHECK_LEAKS
224 #ifdef DEBUG_BUILD 224 #ifdef DEBUG_BUILD
225 printf ("[SDL_Quit] : CHECK_LEAKS\n"); 225 printf("[SDL_Quit] : CHECK_LEAKS\n");
226 fflush (stdout); 226 fflush(stdout);
227 #endif 227 #endif
228 228
229 /* Print the number of surfaces not freed */ 229 /* Print the number of surfaces not freed */
230 if (surfaces_allocated != 0) { 230 if (surfaces_allocated != 0) {
231 fprintf (stderr, "SDL Warning: %d SDL surfaces extant\n", 231 fprintf(stderr, "SDL Warning: %d SDL surfaces extant\n",
232 surfaces_allocated); 232 surfaces_allocated);
233 } 233 }
234 #endif 234 #endif
235 #ifdef DEBUG_BUILD 235 #ifdef DEBUG_BUILD
236 printf ("[SDL_Quit] : SDL_UninstallParachute()\n"); 236 printf("[SDL_Quit] : SDL_UninstallParachute()\n");
237 fflush (stdout); 237 fflush(stdout);
238 #endif 238 #endif
239 239
240 /* Uninstall any parachute signal handlers */ 240 /* Uninstall any parachute signal handlers */
241 SDL_UninstallParachute (); 241 SDL_UninstallParachute();
242 242
243 #if !SDL_THREADS_DISABLED && SDL_THREAD_PTH 243 #if !SDL_THREADS_DISABLED && SDL_THREAD_PTH
244 pth_kill (); 244 pth_kill();
245 #endif 245 #endif
246 #ifdef DEBUG_BUILD 246 #ifdef DEBUG_BUILD
247 printf ("[SDL_Quit] : Returning!\n"); 247 printf("[SDL_Quit] : Returning!\n");
248 fflush (stdout); 248 fflush(stdout);
249 #endif 249 #endif
250 250
251 } 251 }
252 252
253 /* Get the library version number */ 253 /* Get the library version number */
254 void 254 void
255 SDL_GetVersion (SDL_version * ver) 255 SDL_GetVersion(SDL_version * ver)
256 { 256 {
257 SDL_VERSION (ver); 257 SDL_VERSION(ver);
258 } 258 }
259 259
260 #if defined(__OS2__) 260 #if defined(__OS2__)
261 /* Building for OS/2 */ 261 /* Building for OS/2 */
262 #ifdef __WATCOMC__ 262 #ifdef __WATCOMC__
265 #define INCL_DOSEXCEPTIONS 265 #define INCL_DOSEXCEPTIONS
266 #include <os2.h> 266 #include <os2.h>
267 267
268 /* Exception handler to prevent the Audio thread hanging, making a zombie process! */ 268 /* Exception handler to prevent the Audio thread hanging, making a zombie process! */
269 ULONG _System 269 ULONG _System
270 SDL_Main_ExceptionHandler (PEXCEPTIONREPORTRECORD pERepRec, 270 SDL_Main_ExceptionHandler(PEXCEPTIONREPORTRECORD pERepRec,
271 PEXCEPTIONREGISTRATIONRECORD pERegRec, 271 PEXCEPTIONREGISTRATIONRECORD pERegRec,
272 PCONTEXTRECORD pCtxRec, PVOID p) 272 PCONTEXTRECORD pCtxRec, PVOID p)
273 { 273 {
274 if (pERepRec->fHandlerFlags & EH_EXIT_UNWIND) 274 if (pERepRec->fHandlerFlags & EH_EXIT_UNWIND)
275 return XCPT_CONTINUE_SEARCH; 275 return XCPT_CONTINUE_SEARCH;
276 if (pERepRec->fHandlerFlags & EH_UNWINDING) 276 if (pERepRec->fHandlerFlags & EH_UNWINDING)
277 return XCPT_CONTINUE_SEARCH; 277 return XCPT_CONTINUE_SEARCH;
286 /* This removes the zombie audio thread in case of emergency. */ 286 /* This removes the zombie audio thread in case of emergency. */
287 #ifdef DEBUG_BUILD 287 #ifdef DEBUG_BUILD
288 printf 288 printf
289 ("[SDL_Main_ExceptionHandler] : Calling SDL_CloseAudio()!\n"); 289 ("[SDL_Main_ExceptionHandler] : Calling SDL_CloseAudio()!\n");
290 #endif 290 #endif
291 SDL_CloseAudio (); 291 SDL_CloseAudio();
292 } 292 }
293 } 293 }
294 return (XCPT_CONTINUE_SEARCH); 294 return (XCPT_CONTINUE_SEARCH);
295 } 295 }
296 296
298 EXCEPTIONREGISTRATIONRECORD SDL_Main_xcpthand = 298 EXCEPTIONREGISTRATIONRECORD SDL_Main_xcpthand =
299 { 0, SDL_Main_ExceptionHandler }; 299 { 0, SDL_Main_ExceptionHandler };
300 300
301 /* The main DLL entry for DLL Initialization and Uninitialization: */ 301 /* The main DLL entry for DLL Initialization and Uninitialization: */
302 unsigned _System 302 unsigned _System
303 LibMain (unsigned hmod, unsigned termination) 303 LibMain(unsigned hmod, unsigned termination)
304 { 304 {
305 if (termination) { 305 if (termination) {
306 #ifdef DEBUG_BUILD 306 #ifdef DEBUG_BUILD
307 /* printf("[SDL DLL Unintialization] : Removing exception handler\n"); */ 307 /* printf("[SDL DLL Unintialization] : Removing exception handler\n"); */
308 #endif 308 #endif
309 DosUnsetExceptionHandler (&SDL_Main_xcpthand); 309 DosUnsetExceptionHandler(&SDL_Main_xcpthand);
310 return 1; 310 return 1;
311 } else { 311 } else {
312 #ifdef DEBUG_BUILD 312 #ifdef DEBUG_BUILD
313 /* Make stdout and stderr unbuffered! */ 313 /* Make stdout and stderr unbuffered! */
314 setbuf (stdout, NULL); 314 setbuf(stdout, NULL);
315 setbuf (stderr, NULL); 315 setbuf(stderr, NULL);
316 #endif 316 #endif
317 /* Fire up exception handler */ 317 /* Fire up exception handler */
318 #ifdef DEBUG_BUILD 318 #ifdef DEBUG_BUILD
319 /* printf("[SDL DLL Initialization] : Setting exception handler\n"); */ 319 /* printf("[SDL DLL Initialization] : Setting exception handler\n"); */
320 #endif 320 #endif
321 /* Set exception handler */ 321 /* Set exception handler */
322 DosSetExceptionHandler (&SDL_Main_xcpthand); 322 DosSetExceptionHandler(&SDL_Main_xcpthand);
323 323
324 return 1; 324 return 1;
325 } 325 }
326 } 326 }
327 #endif /* __WATCOMC__ */ 327 #endif /* __WATCOMC__ */
332 /* Need to include DllMain() on Watcom C for some reason.. */ 332 /* Need to include DllMain() on Watcom C for some reason.. */
333 #define WIN32_LEAN_AND_MEAN 333 #define WIN32_LEAN_AND_MEAN
334 #include <windows.h> 334 #include <windows.h>
335 335
336 BOOL APIENTRY 336 BOOL APIENTRY
337 _DllMainCRTStartup (HANDLE hModule, 337 _DllMainCRTStartup(HANDLE hModule,
338 DWORD ul_reason_for_call, LPVOID lpReserved) 338 DWORD ul_reason_for_call, LPVOID lpReserved)
339 { 339 {
340 switch (ul_reason_for_call) { 340 switch (ul_reason_for_call) {
341 case DLL_PROCESS_ATTACH: 341 case DLL_PROCESS_ATTACH:
342 case DLL_THREAD_ATTACH: 342 case DLL_THREAD_ATTACH:
343 case DLL_THREAD_DETACH: 343 case DLL_THREAD_DETACH: