Mercurial > sdl-ios-xcode
annotate src/video/directfb/SDL_DirectFB_dyn.c @ 4593:3892fe2f6537
Fixed so many things. See the changelog listed below.
1. Use SDL_X11_HAVE_XRENDER to check for RENDER at runtime.
2. Added lots of comments.
3. Added checks and lots of calls to SDL_SetError().
4. Fixed X11_CreateTexture() so that the pixmap and image created
are for the format specified by the user and not the window
format. This is only for the RENDER case.
5. The above change required that functions to convert SDL
pixel format enums to Visuals and XRenderPictFormats be added.
6. Fixed lots of 'style' issues.
author | Sunny Sachanandani <sunnysachanandani@gmail.com> |
---|---|
date | Sat, 17 Jul 2010 15:38:24 +0530 |
parents | f7b03b6838cb |
children | b196d2758026 |
rev | line source |
---|---|
3000
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
3697 | 3 Copyright (C) 1997-2010 Sam Lantinga |
3000
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 Lesser General Public License for more details. |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 Sam Lantinga |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 slouken@libsdl.org |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 */ |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 #include "SDL_config.h" |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 |
3023
d72a0dd80e8b
DirectFB cleanups & simple window manager
Couriersud <couriersud@arcor.de>
parents:
3000
diff
changeset
|
24 #include "SDL_DirectFB_video.h" |
3000
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 #include "SDL_DirectFB_dyn.h" |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
27 #ifdef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 #include "SDL_name.h" |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 #include "SDL_loadso.h" |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
30 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
31 #define DFB_SYM(ret, name, args, al, func) ret (*name) args; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
32 static struct _SDL_DirectFB_Symbols |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
33 { |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
34 DFB_SYMS const unsigned int *directfb_major_version; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
35 const unsigned int *directfb_minor_version; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
36 const unsigned int *directfb_micro_version; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
37 } SDL_DirectFB_Symbols; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
38 #undef DFB_SYM |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
39 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
40 #define DFB_SYM(ret, name, args, al, func) ret name args { func SDL_DirectFB_Symbols.name al ; } |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
41 DFB_SYMS |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
42 #undef DFB_SYM |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
43 static void *handle = NULL; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
44 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
45 int |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
46 SDL_DirectFB_LoadLibrary(void) |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
47 { |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
48 int retval = 0; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
49 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
50 if (handle == NULL) { |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
51 handle = SDL_LoadObject(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC); |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
52 if (handle != NULL) { |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
53 retval = 1; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
54 #define DFB_SYM(ret, name, args, al, func) if (!(SDL_DirectFB_Symbols.name = SDL_LoadFunction(handle, # name))) retval = 0; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
55 DFB_SYMS |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
56 #undef DFB_SYM |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
57 if (! |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
58 (SDL_DirectFB_Symbols.directfb_major_version = |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
59 SDL_LoadFunction(handle, "directfb_major_version"))) |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
60 retval = 0; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
61 if (! |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
62 (SDL_DirectFB_Symbols.directfb_minor_version = |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
63 SDL_LoadFunction(handle, "directfb_minor_version"))) |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
64 retval = 0; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
65 if (! |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
66 (SDL_DirectFB_Symbols.directfb_micro_version = |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
67 SDL_LoadFunction(handle, "directfb_micro_version"))) |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
68 retval = 0; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
69 } |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
70 } |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
71 if (retval) { |
3023
d72a0dd80e8b
DirectFB cleanups & simple window manager
Couriersud <couriersud@arcor.de>
parents:
3000
diff
changeset
|
72 const char *stemp = DirectFBCheckVersion(DIRECTFB_MAJOR_VERSION, |
d72a0dd80e8b
DirectFB cleanups & simple window manager
Couriersud <couriersud@arcor.de>
parents:
3000
diff
changeset
|
73 DIRECTFB_MINOR_VERSION, |
d72a0dd80e8b
DirectFB cleanups & simple window manager
Couriersud <couriersud@arcor.de>
parents:
3000
diff
changeset
|
74 DIRECTFB_MICRO_VERSION); |
3000
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
75 /* Version Check */ |
3023
d72a0dd80e8b
DirectFB cleanups & simple window manager
Couriersud <couriersud@arcor.de>
parents:
3000
diff
changeset
|
76 if (stemp != NULL) { |
3000
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
77 fprintf(stderr, |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
78 "DirectFB Lib: Version mismatch. Compiled: %d.%d.%d Library %d.%d.%d\n", |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
79 DIRECTFB_MAJOR_VERSION, DIRECTFB_MINOR_VERSION, |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
80 DIRECTFB_MICRO_VERSION, |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
81 *SDL_DirectFB_Symbols.directfb_major_version, |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
82 *SDL_DirectFB_Symbols.directfb_minor_version, |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
83 *SDL_DirectFB_Symbols.directfb_micro_version); |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
84 retval = 0; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
85 } |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
86 } |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
87 if (!retval) |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
88 SDL_DirectFB_UnLoadLibrary(); |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
89 return retval; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
90 } |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
91 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
92 void |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
93 SDL_DirectFB_UnLoadLibrary(void) |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
94 { |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
95 if (handle != NULL) { |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
96 SDL_UnloadObject(handle); |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
97 handle = NULL; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
98 } |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
99 } |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
100 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
101 #else |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
102 int |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
103 SDL_DirectFB_LoadLibrary(void) |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
104 { |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
105 return 1; |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
106 } |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
107 |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
108 void |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
109 SDL_DirectFB_UnLoadLibrary(void) |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
110 { |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
111 } |
61081db2385a
Whoops, missing files from Couriersud's update
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
112 #endif |