Mercurial > sdl-ios-xcode
annotate src/video/dga/SDL_dgavideo.h @ 4383:daf9e6037596 SDL-1.2
Gregory Smith
Another one for the "How did this ever work?" file: when
DX5_HandleMessage is called with WM_ACTIVATEAPP, it goes past the end
of the 2-element SDL_DIdev array and if there doesn't happen to be a 0
in the memory next to it, crashes. Patch against SVN attached.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 15 Nov 2009 17:21:24 +0000 |
parents | a1b03ba2fcd0 |
children |
rev | line source |
---|---|
0 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
4159 | 3 Copyright (C) 1997-2009 Sam Lantinga |
0 | 4 |
5 This library is free software; you can redistribute it and/or | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
0 | 7 License as published by the Free Software Foundation; either |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
0 | 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 | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
13 Lesser General Public License for more details. |
0 | 14 |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 18 |
19 Sam Lantinga | |
252
e8157fcb3114
Updated the source with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents:
105
diff
changeset
|
20 slouken@libsdl.org |
0 | 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" |
0 | 23 |
24 #ifndef _SDL_dgavideo_h | |
25 #define _SDL_dgavideo_h | |
26 | |
27 #include <X11/Xlib.h> | |
4144
904defc0792e
Fix X11 build issue with multiple includes of Xlibint.h ...
Ryan C. Gordon <icculus@icculus.org>
parents:
4139
diff
changeset
|
28 |
904defc0792e
Fix X11 build issue with multiple includes of Xlibint.h ...
Ryan C. Gordon <icculus@icculus.org>
parents:
4139
diff
changeset
|
29 /* Apparently some X11 systems can't include this multiple times... */ |
904defc0792e
Fix X11 build issue with multiple includes of Xlibint.h ...
Ryan C. Gordon <icculus@icculus.org>
parents:
4139
diff
changeset
|
30 #ifndef SDL_INCLUDED_XLIBINT_H |
904defc0792e
Fix X11 build issue with multiple includes of Xlibint.h ...
Ryan C. Gordon <icculus@icculus.org>
parents:
4139
diff
changeset
|
31 #define SDL_INCLUDED_XLIBINT_H 1 |
4056
6f7af895ab02
A better fix for building DGA code on Solaris 8, inspired by the NetBSD pkgsrc patch.
Sam Lantinga <slouken@libsdl.org>
parents:
1792
diff
changeset
|
32 #include <X11/Xlibint.h> |
4144
904defc0792e
Fix X11 build issue with multiple includes of Xlibint.h ...
Ryan C. Gordon <icculus@icculus.org>
parents:
4139
diff
changeset
|
33 #endif |
904defc0792e
Fix X11 build issue with multiple includes of Xlibint.h ...
Ryan C. Gordon <icculus@icculus.org>
parents:
4139
diff
changeset
|
34 |
1792
409974dedf2e
More compile fixes for systems without the DPMS extension
Sam Lantinga <slouken@libsdl.org>
parents:
1784
diff
changeset
|
35 #include <X11/Xproto.h> |
0 | 36 |
37 #include "SDL_mouse.h" | |
38 #include "SDL_mutex.h" | |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
39 #include "../SDL_sysvideo.h" |
0 | 40 |
41 /* Hidden "this" pointer for the video functions */ | |
42 #define _THIS SDL_VideoDevice *this | |
43 | |
101
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
44 /* Define this if you need the DGA driver to be thread-safe */ |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
45 #define LOCK_DGA_DISPLAY |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
46 #ifdef LOCK_DGA_DISPLAY |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
47 #define LOCK_DISPLAY() SDL_mutexP(event_lock) |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
48 #define UNLOCK_DISPLAY() SDL_mutexV(event_lock) |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
49 #else |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
50 #define LOCK_DISPLAY() |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
51 #define UNLOCK_DISPLAY() |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
52 #endif |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
53 |
0 | 54 |
55 /* This is the structure we use to keep track of video memory */ | |
56 typedef struct vidmem_bucket { | |
57 struct vidmem_bucket *prev; | |
101
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
58 int used; |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
59 int dirty; |
0 | 60 Uint8 *base; |
61 unsigned int size; | |
62 struct vidmem_bucket *next; | |
63 } vidmem_bucket; | |
64 | |
65 /* Private display data */ | |
66 struct SDL_PrivateVideoData { | |
67 Display *DGA_Display; | |
68 Colormap DGA_colormap; | |
69 int visualClass; | |
70 | |
71 #define NUM_MODELISTS 4 /* 8, 16, 24, and 32 bits-per-pixel */ | |
72 int SDL_nummodes[NUM_MODELISTS]; | |
73 SDL_Rect **SDL_modelist[NUM_MODELISTS]; | |
74 | |
75 /* Information for the video surface */ | |
76 Uint8 *memory_base; | |
77 int memory_pitch; | |
78 SDL_mutex *hw_lock; | |
79 int sync_needed; | |
80 int was_flipped; | |
81 | |
82 /* Information for hardware surfaces */ | |
83 vidmem_bucket surfaces; | |
84 int surfaces_memtotal; | |
85 int surfaces_memleft; | |
86 | |
87 /* Information for double-buffering */ | |
88 int flip_page; | |
89 int flip_yoffset[2]; | |
90 Uint8 *flip_address[2]; | |
91 | |
92 /* Used to handle DGA events */ | |
93 int event_base; | |
101
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
94 #ifdef LOCK_DGA_DISPLAY |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
95 SDL_mutex *event_lock; |
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
96 #endif |
1784
45669d4efd02
Disable the screensaver in DGA mode, which is even more important than X11...
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
97 |
45669d4efd02
Disable the screensaver in DGA mode, which is even more important than X11...
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
98 /* Screensaver settings */ |
4139
568c9b3c0167
* Added configure option --enable-screensaver, to allow enabling the screensaver by default.
Sam Lantinga <slouken@libsdl.org>
parents:
4056
diff
changeset
|
99 int allow_screensaver; |
0 | 100 }; |
4139
568c9b3c0167
* Added configure option --enable-screensaver, to allow enabling the screensaver by default.
Sam Lantinga <slouken@libsdl.org>
parents:
4056
diff
changeset
|
101 |
0 | 102 /* Old variable names */ |
103 #define DGA_Display (this->hidden->DGA_Display) | |
104 #define DGA_Screen DefaultScreen(DGA_Display) | |
105 #define DGA_colormap (this->hidden->DGA_colormap) | |
106 #define DGA_visualClass (this->hidden->visualClass) | |
107 #define memory_base (this->hidden->memory_base) | |
108 #define memory_pitch (this->hidden->memory_pitch) | |
109 #define flip_page (this->hidden->flip_page) | |
110 #define flip_yoffset (this->hidden->flip_yoffset) | |
111 #define flip_address (this->hidden->flip_address) | |
112 #define sync_needed (this->hidden->sync_needed) | |
113 #define was_flipped (this->hidden->was_flipped) | |
114 #define SDL_nummodes (this->hidden->SDL_nummodes) | |
115 #define SDL_modelist (this->hidden->SDL_modelist) | |
116 #define surfaces (this->hidden->surfaces) | |
117 #define surfaces_memtotal (this->hidden->surfaces_memtotal) | |
118 #define surfaces_memleft (this->hidden->surfaces_memleft) | |
119 #define hw_lock (this->hidden->hw_lock) | |
120 #define DGA_event_base (this->hidden->event_base) | |
101
825b2fa28e2e
DGA video driver is now thread-safe
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
121 #define event_lock (this->hidden->event_lock) |
4139
568c9b3c0167
* Added configure option --enable-screensaver, to allow enabling the screensaver by default.
Sam Lantinga <slouken@libsdl.org>
parents:
4056
diff
changeset
|
122 #define allow_screensaver (this->hidden->allow_screensaver) |
0 | 123 |
124 #endif /* _SDL_dgavideo_h */ |