annotate src/video/gem/SDL_gemmodes.c @ 2866:e532417a6977

Fixed SDL 1.2 compatibility problem. The API specifies that SDL_OpenAudio() will fill out the 'desired' audio spec with the correct samples and size set by the driver. This value is important since it may be used by applications that size audio buffers, etc. However, we want to allow advanced applications to call SDL_OpenAudioDevice() which gets passed a const 'desired' parameter, and have the correct data filled into the 'obtained' parameter, possibly allowing or not allowing format changes. So... 'obtained' becomes the audio format the user callback is expected to use, and we add flags to allow the application to specify which format changes are allowed. Note: We really need to add a way to query the 'obtained' audio spec.
author Sam Lantinga <slouken@libsdl.org>
date Sat, 13 Dec 2008 06:36:47 +0000
parents 99210400e8b9
children
rev   line source
2189
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1 /*
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
2859
99210400e8b9 Updated copyright date
Sam Lantinga <slouken@libsdl.org>
parents: 2199
diff changeset
3 Copyright (C) 1997-2009 Sam Lantinga
2189
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
4
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
6 modify it under the terms of the GNU Lesser General Public
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
8 version 2.1 of the License, or (at your option) any later version.
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
9
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
13 Lesser General Public License for more details.
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
14
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
15 You should have received a copy of the GNU Lesser General Public
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
16 License along with this library; if not, write to the Free Software
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
18
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
19 Sam Lantinga
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
20 slouken@libsdl.org
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
21 */
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
22 #include "SDL_config.h"
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
23
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
24 #include "SDL_gemvideo.h"
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
25
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
26
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
27 void
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
28 GEM_InitModes(_THIS)
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
29 {
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
30 SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
31 Uint32 Rmask, Gmask, Bmask, Amask;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
32 SDL_VideoDisplay display;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
33 SDL_DisplayData *displaydata;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
34 SDL_DisplayMode mode;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
35 int bpp;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
36
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
37 /* read vdi bpp, rmask, gmask, bmask, amask */
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
38
2199
Sam Lantinga <slouken@libsdl.org>
parents: 2189
diff changeset
39 mode.format = SDL_MasksToPixelFormatEnum(bpp, Rmask, Gmask, Bmask, Amask);
Sam Lantinga <slouken@libsdl.org>
parents: 2189
diff changeset
40 mode.w = 0 /* vdi width */ ;
Sam Lantinga <slouken@libsdl.org>
parents: 2189
diff changeset
41 mode.h = 0 /* vdi height */ ;
2189
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
42 mode.refresh_rate = 0;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
43 mode.driverdata = NULL;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
44
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
45 displaydata = (SDL_DisplayData *) SDL_malloc(sizeof(*displaydata));
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
46 if (!displaydata) {
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
47 return;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
48 }
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
49 /* fill display data */
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
50
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
51 SDL_zero(display);
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
52 display.desktop_mode = mode;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
53 display.current_mode = mode;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
54 display.driverdata = displaydata;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
55 SDL_AddVideoDisplay(&display);
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
56 }
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
57
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
58 void
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
59 GEM_GetDisplayModes(_THIS)
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
60 {
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
61 SDL_DisplayData *data = (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
62 SDL_DisplayMode mode;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
63 //SDL_AddDisplayMode(_this->current_display, &mode);
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
64 }
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
65
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
66 int
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
67 GEM_SetDisplayMode(_THIS, SDL_DisplayMode * mode)
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
68 {
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
69 //SDL_DisplayModeData *data = (SDL_DisplayModeData *) mode->driverdata;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
70 return -1;
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
71 }
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
72
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
73 void
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
74 GEM_QuitModes(_THIS)
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
75 {
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
76 }
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
77
f54670a477bb Update GEM driver to new API, will have to fill the void later :)
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
78 /* vi: set ts=4 sw=4 expandtab: */