annotate src/video/xbios/SDL_xbios_centscreen.c @ 3234:f8c02d0560d5

Fixed bug #746 Fixed freeze when trying to memset with 0 length
author Sam Lantinga <slouken@libsdl.org>
date Fri, 07 Aug 2009 10:20:10 +0000
parents 99210400e8b9
children
rev   line source
1061
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1 /*
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
2859
99210400e8b9 Updated copyright date
Sam Lantinga <slouken@libsdl.org>
parents: 2188
diff changeset
3 Copyright (C) 1997-2009 Sam Lantinga
1061
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
4
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
6 modify it under the terms of the GNU Library General Public
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
8 version 2 of the License, or (at your option) any later version.
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
9
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
13 Library General Public License for more details.
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
14
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
15 You should have received a copy of the GNU Library General Public
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
16 License along with this library; if not, write to the Free
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
18
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
19 Sam Lantinga
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
20 slouken@libsdl.org
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
21 */
1402
d910939febfa Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
22 #include "SDL_config.h"
1061
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
23
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
24 /*
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
25 Centscreen extension definitions
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
26
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
27 Patrice Mandin
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
28 */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
29
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
30 #include <mint/falcon.h>
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
31
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
32 #include "SDL_xbios.h"
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
33 #include "SDL_xbios_centscreen.h"
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
34
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
35 int
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
36 SDL_XBIOS_CentscreenInit(_THIS)
1061
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
37 {
2188
0e751c1f83f5 Disable video extensions atm
Patrice Mandin <patmandin@gmail.com>
parents: 1895
diff changeset
38 #if 0
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
39 centscreen_mode_t curmode, listedmode;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
40 unsigned long result;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
41 int cur_handle; /* Current Centscreen mode handle */
1061
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
42
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
43 /* Reset current mode list */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
44 if (XBIOS_modelist) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
45 SDL_free(XBIOS_modelist);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
46 XBIOS_nummodes = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
47 XBIOS_modelist = NULL;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
48 }
1061
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
49
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
50 /* Add Centscreen modes */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
51 Vread(&curmode);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
52 cur_handle = curmode.handle;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
53 curmode.mode = curmode.physx = curmode.physy = curmode.plan =
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
54 curmode.logx = curmode.logy = -1;
1061
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
55
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
56 result = Vfirst(&curmode, &listedmode);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
57 if (result == 0) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
58 while (result == 0) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
59 /* Don't add modes with virtual screen */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
60 if ((listedmode.mode & CSCREEN_VIRTUAL) == 0) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
61 /* Don't add modes with bpp<8 */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
62 if (listedmode.plan >= 8) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
63 SDL_XBIOS_AddMode(this, listedmode.mode,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
64 listedmode.physx,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
65 listedmode.physy,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
66 listedmode.plan, SDL_FALSE);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
67 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
68 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
69 SDL_memcpy(&curmode, &listedmode, sizeof(centscreen_mode_t));
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
70 curmode.mode = curmode.physx = curmode.physy = curmode.plan =
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
71 curmode.logx = curmode.logy = -1;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
72 result = Vnext(&curmode, &listedmode);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
73 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
74 } else {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
75 fprintf(stderr, "No suitable Centscreen modes\n");
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
76 }
1064
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
77
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
78 return cur_handle;
2188
0e751c1f83f5 Disable video extensions atm
Patrice Mandin <patmandin@gmail.com>
parents: 1895
diff changeset
79 #else
0e751c1f83f5 Disable video extensions atm
Patrice Mandin <patmandin@gmail.com>
parents: 1895
diff changeset
80 return -1;
0e751c1f83f5 Disable video extensions atm
Patrice Mandin <patmandin@gmail.com>
parents: 1895
diff changeset
81 #endif
1061
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
82 }
1064
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
83
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
84 void
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
85 SDL_XBIOS_CentscreenSetmode(_THIS, int width, int height, int planes)
1064
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
86 {
2188
0e751c1f83f5 Disable video extensions atm
Patrice Mandin <patmandin@gmail.com>
parents: 1895
diff changeset
87 #if 0
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
88 centscreen_mode_t newmode, curmode;
1105
1c9988e47824 Disable Centscreen screensaver
Patrice Mandin <patmandin@gmail.com>
parents: 1064
diff changeset
89
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
90 newmode.handle = newmode.mode = newmode.logx = newmode.logy = -1;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
91 newmode.physx = width;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
92 newmode.physy = height;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
93 newmode.plan = planes;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
94 Vwrite(0, &newmode, &curmode);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
95
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
96 /* Disable screensaver */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
97 Vread(&newmode);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
98 newmode.mode &= ~(CSCREEN_SAVER | CSCREEN_ENERGYSTAR);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
99 Vwrite(0, &newmode, &curmode);
2188
0e751c1f83f5 Disable video extensions atm
Patrice Mandin <patmandin@gmail.com>
parents: 1895
diff changeset
100 #endif
1064
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
101 }
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
102
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
103 void
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
104 SDL_XBIOS_CentscreenRestore(_THIS, int prev_handle)
1064
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
105 {
2188
0e751c1f83f5 Disable video extensions atm
Patrice Mandin <patmandin@gmail.com>
parents: 1895
diff changeset
106 #if 0
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
107 centscreen_mode_t newmode, curmode;
1064
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
108
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
109 /* Restore old video mode */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
110 newmode.handle = prev_handle;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
111 newmode.mode = newmode.physx = newmode.physy = newmode.plan =
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
112 newmode.logx = newmode.logy = -1;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
113 Vwrite(0, &newmode, &curmode);
2188
0e751c1f83f5 Disable video extensions atm
Patrice Mandin <patmandin@gmail.com>
parents: 1895
diff changeset
114 #endif
1064
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
115 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
116
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
117 /* vi: set ts=4 sw=4 expandtab: */