Mercurial > sdl-ios-xcode
annotate src/main/macos/exports/SDL.x @ 4216:5b99971a27b4 SDL-1.2
Fixed bug #698
Hans de Goede 2009-02-13 01:10:52 PST
Since the new "glitch free" version of pulseaudio (used in Fedora 10 amongst
others), the sound of SDL using apps (like a simple playmus call) has been
crackling.
While looking in to fixing this I noticed that the current pulseaudio code in
SDL uses pa_simple. However pa_simple uses a thread to pump pulseaudio events
and ipc, given that SDL already has its own thread for audio handling this is
clearly suboptimal, leading to unnecessary context switching IPC, etc. Also
pa_simple does not allow one to implement the WaitAudio() callback for SDL
audiodrivers properly.
Given that my work is mostly a rewrite (although some original pieces remain)
I'm attaching the new .c and .h file, as that is easier to review then the huge
diff.
Let me know if you also want the diff.
This new version has the following features:
-no longer use an additional thread next to the SDL sound thread
-do not crackle with glitch free audio
-when used with a newer pulse, which does glitch free audio, the total latency
is
the same as with the alsa driver
-proper WaitAudio() implementation, saving another mixlen worth of latency
-adds a WaitDone() implementation
This patch has been written in consultancy with Lennart Poetering (the
pulseaudio author) and has been reviewed by him for correct use of the pa API.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 21 Sep 2009 09:27:08 +0000 |
parents | 84cecd0b64b4 |
children | 0a53c90a37f9 1e191391e68d |
rev | line source |
---|---|
0 | 1 SDL_Init |
2 SDL_InitSubSystem | |
3 SDL_QuitSubSystem | |
4 SDL_WasInit | |
5 SDL_Quit | |
6 SDL_GetAppState | |
7 SDL_AudioInit | |
8 SDL_AudioQuit | |
9 SDL_AudioDriverName | |
10 SDL_OpenAudio | |
11 SDL_GetAudioStatus | |
12 SDL_PauseAudio | |
13 SDL_LoadWAV_RW | |
14 SDL_FreeWAV | |
15 SDL_BuildAudioCVT | |
16 SDL_ConvertAudio | |
17 SDL_MixAudio | |
18 SDL_LockAudio | |
19 SDL_UnlockAudio | |
20 SDL_CloseAudio | |
21 SDL_CDNumDrives | |
22 SDL_CDName | |
23 SDL_CDOpen | |
24 SDL_CDStatus | |
25 SDL_CDPlayTracks | |
26 SDL_CDPlay | |
27 SDL_CDPause | |
28 SDL_CDResume | |
29 SDL_CDStop | |
30 SDL_CDEject | |
31 SDL_CDClose | |
763 | 32 SDL_HasRDTSC |
33 SDL_HasMMX | |
791
ab0d977f91f8
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
764
diff
changeset
|
34 SDL_HasMMXExt |
763 | 35 SDL_Has3DNow |
791
ab0d977f91f8
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
764
diff
changeset
|
36 SDL_Has3DNowExt |
763 | 37 SDL_HasSSE |
791
ab0d977f91f8
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
764
diff
changeset
|
38 SDL_HasSSE2 |
ab0d977f91f8
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
764
diff
changeset
|
39 SDL_HasAltiVec |
0 | 40 SDL_SetError |
41 SDL_GetError | |
42 SDL_ClearError | |
976
eb78bb0b715b
Updated for Visual C++ 6 build
Sam Lantinga <slouken@libsdl.org>
parents:
791
diff
changeset
|
43 SDL_Error |
0 | 44 SDL_PumpEvents |
45 SDL_PeepEvents | |
46 SDL_PollEvent | |
47 SDL_WaitEvent | |
48 SDL_PushEvent | |
49 SDL_SetEventFilter | |
50 SDL_GetEventFilter | |
51 SDL_EventState | |
52 SDL_NumJoysticks | |
53 SDL_JoystickName | |
54 SDL_JoystickOpen | |
55 SDL_JoystickOpened | |
56 SDL_JoystickIndex | |
57 SDL_JoystickNumAxes | |
58 SDL_JoystickNumBalls | |
59 SDL_JoystickNumHats | |
60 SDL_JoystickNumButtons | |
61 SDL_JoystickUpdate | |
62 SDL_JoystickEventState | |
63 SDL_JoystickGetAxis | |
64 SDL_JoystickGetHat | |
65 SDL_JoystickGetBall | |
66 SDL_JoystickGetButton | |
67 SDL_JoystickClose | |
68 SDL_EnableUNICODE | |
69 SDL_EnableKeyRepeat | |
1516
4d241ea8a1cd
Updated MacOS Classic build
Sam Lantinga <slouken@libsdl.org>
parents:
1427
diff
changeset
|
70 SDL_GetKeyRepeat |
0 | 71 SDL_GetKeyState |
72 SDL_GetModState | |
73 SDL_SetModState | |
74 SDL_GetKeyName | |
648
12a21d82a060
Exposed SDL_LoadObject(), SDL_LoadFunction(), and SDL_UnloadObject() APIs
Sam Lantinga <slouken@libsdl.org>
parents:
296
diff
changeset
|
75 SDL_LoadObject |
12a21d82a060
Exposed SDL_LoadObject(), SDL_LoadFunction(), and SDL_UnloadObject() APIs
Sam Lantinga <slouken@libsdl.org>
parents:
296
diff
changeset
|
76 SDL_LoadFunction |
12a21d82a060
Exposed SDL_LoadObject(), SDL_LoadFunction(), and SDL_UnloadObject() APIs
Sam Lantinga <slouken@libsdl.org>
parents:
296
diff
changeset
|
77 SDL_UnloadObject |
0 | 78 SDL_GetMouseState |
79 SDL_GetRelativeMouseState | |
80 SDL_WarpMouse | |
81 SDL_CreateCursor | |
82 SDL_SetCursor | |
83 SDL_GetCursor | |
84 SDL_FreeCursor | |
85 SDL_ShowCursor | |
86 SDL_CreateMutex | |
87 SDL_mutexP | |
88 SDL_mutexV | |
89 SDL_DestroyMutex | |
90 SDL_CreateSemaphore | |
91 SDL_DestroySemaphore | |
92 SDL_SemWait | |
93 SDL_SemTryWait | |
94 SDL_SemWaitTimeout | |
95 SDL_SemPost | |
96 SDL_SemValue | |
97 SDL_CreateCond | |
98 SDL_DestroyCond | |
99 SDL_CondSignal | |
100 SDL_CondBroadcast | |
101 SDL_CondWait | |
102 SDL_CondWaitTimeout | |
103 SDL_RWFromFile | |
104 SDL_RWFromFP | |
105 SDL_RWFromMem | |
764
974c0fb74bf8
Added function to create RWops from const memory: SDL_RWFromConstMem()
Sam Lantinga <slouken@libsdl.org>
parents:
763
diff
changeset
|
106 SDL_RWFromConstMem |
0 | 107 SDL_AllocRW |
108 SDL_FreeRW | |
1424
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
109 SDL_ReadLE16 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
110 SDL_ReadBE16 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
111 SDL_ReadLE32 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
112 SDL_ReadBE32 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
113 SDL_ReadLE64 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
114 SDL_ReadBE64 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
115 SDL_WriteLE16 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
116 SDL_WriteBE16 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
117 SDL_WriteLE32 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
118 SDL_WriteBE32 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
119 SDL_WriteLE64 |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
120 SDL_WriteBE64 |
0 | 121 SDL_GetWMInfo |
122 SDL_CreateThread | |
1424
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
123 SDL_CreateThread |
0 | 124 SDL_ThreadID |
125 SDL_GetThreadID | |
126 SDL_WaitThread | |
127 SDL_KillThread | |
128 SDL_GetTicks | |
129 SDL_Delay | |
130 SDL_SetTimer | |
131 SDL_AddTimer | |
132 SDL_RemoveTimer | |
133 SDL_Linked_Version | |
134 SDL_VideoInit | |
135 SDL_VideoQuit | |
136 SDL_VideoDriverName | |
137 SDL_GetVideoSurface | |
138 SDL_GetVideoInfo | |
139 SDL_VideoModeOK | |
140 SDL_ListModes | |
141 SDL_SetVideoMode | |
142 SDL_UpdateRects | |
143 SDL_UpdateRect | |
144 SDL_Flip | |
145 SDL_SetGamma | |
146 SDL_SetGammaRamp | |
147 SDL_GetGammaRamp | |
148 SDL_SetColors | |
149 SDL_SetPalette | |
150 SDL_MapRGB | |
151 SDL_MapRGBA | |
152 SDL_GetRGB | |
153 SDL_GetRGBA | |
154 SDL_CreateRGBSurface | |
155 SDL_CreateRGBSurfaceFrom | |
156 SDL_FreeSurface | |
157 SDL_LockSurface | |
158 SDL_UnlockSurface | |
159 SDL_LoadBMP_RW | |
160 SDL_SaveBMP_RW | |
161 SDL_SetColorKey | |
162 SDL_SetAlpha | |
163 SDL_SetClipRect | |
164 SDL_GetClipRect | |
165 SDL_ConvertSurface | |
166 SDL_UpperBlit | |
167 SDL_LowerBlit | |
168 SDL_FillRect | |
169 SDL_DisplayFormat | |
170 SDL_DisplayFormatAlpha | |
171 SDL_CreateYUVOverlay | |
172 SDL_LockYUVOverlay | |
173 SDL_UnlockYUVOverlay | |
174 SDL_DisplayYUVOverlay | |
175 SDL_FreeYUVOverlay | |
176 SDL_GL_LoadLibrary | |
177 SDL_GL_GetProcAddress | |
178 SDL_GL_SetAttribute | |
179 SDL_GL_GetAttribute | |
180 SDL_GL_SwapBuffers | |
181 SDL_GL_UpdateRects | |
182 SDL_GL_Lock | |
183 SDL_GL_Unlock | |
184 SDL_WM_SetCaption | |
185 SDL_WM_GetCaption | |
186 SDL_WM_SetIcon | |
187 SDL_WM_IconifyWindow | |
188 SDL_WM_ToggleFullScreen | |
189 SDL_WM_GrabInput | |
292
eadc0746dfaf
Added SDL_LockRect() and SDL_UnlockRect()
Sam Lantinga <slouken@libsdl.org>
parents:
0
diff
changeset
|
190 SDL_SoftStretch |
1424
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
191 SDL_putenv |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
192 SDL_getenv |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
193 SDL_qsort |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
194 SDL_revcpy |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
195 SDL_strlcpy |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
196 SDL_strlcat |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
197 SDL_strdup |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
198 SDL_strrev |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
199 SDL_strupr |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
200 SDL_strlwr |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
201 SDL_ltoa |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
202 SDL_ultoa |
1516
4d241ea8a1cd
Updated MacOS Classic build
Sam Lantinga <slouken@libsdl.org>
parents:
1427
diff
changeset
|
203 SDL_strcasecmp |
4d241ea8a1cd
Updated MacOS Classic build
Sam Lantinga <slouken@libsdl.org>
parents:
1427
diff
changeset
|
204 SDL_strncasecmp |
1424
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
205 SDL_snprintf |
7a610f25c12f
Updated MacOS Classic MPW build
Sam Lantinga <slouken@libsdl.org>
parents:
976
diff
changeset
|
206 SDL_vsnprintf |
1529
84cecd0b64b4
Updated MacOS Classic and MacOS X exports list
Sam Lantinga <slouken@libsdl.org>
parents:
1516
diff
changeset
|
207 SDL_iconv |
1516
4d241ea8a1cd
Updated MacOS Classic build
Sam Lantinga <slouken@libsdl.org>
parents:
1427
diff
changeset
|
208 SDL_iconv_string |
0 | 209 SDL_InitQuickDraw |