comparison WhatsNew @ 0:74212992fb08

Initial revision
author Sam Lantinga <slouken@lokigames.com>
date Thu, 26 Apr 2001 16:45:43 +0000
parents
children eadc0746dfaf
comparison
equal deleted inserted replaced
-1:000000000000 0:74212992fb08
1
2 This is a list of API changes in SDL's version history.
3
4 Version 1.0:
5
6 1.2.0:
7 Added SDL_VIDEOEXPOSE event to signal that the screen needs to
8 be redrawn. This is currently only delivered to OpenGL windows
9 on X11, though it may be delivered in the future when the video
10 memory is lost under DirectX.
11
12 1.1.8:
13 You can pass SDL_NOFRAME to SDL_VideoMode() to create a window
14 that has no title bar or frame decoration. Fullscreen video
15 modes automatically have this flag set.
16
17 Added a function to query the clipping rectangle for a surface:
18 void SDL_GetClipRect(SDL_Surface *surface, SDL_Rect *rect)
19
20 Added a function to query the current event filter:
21 SDL_EventFilter SDL_GetEventFilter(void)
22
23 If you pass -1 to SDL_ShowCursor(), it won't change the current
24 cursor visibility state, but will still return it.
25
26 SDL_LockSurface() and SDL_UnlockSurface() are recursive, meaning
27 you can nest them as deep as you want, as long as each lock call
28 has a matching unlock call. The surface remains locked until the
29 last matching unlock call.
30
31 Note that you may not blit to or from a locked surface.
32
33 1.1.7:
34 The SDL_SetGammaRamp() and SDL_GetGammaRamp() functions now take
35 arrays of Uint16 values instead of Uint8 values. For the most part,
36 you can just take your old values and shift them up 8 bits to get
37 new correct values for your gamma ramps.
38
39 You can pass SDL_RLEACCEL in flags passed to SDL_ConvertSurface()
40 and SDL will try to RLE accelerate colorkey and alpha blits in the
41 resulting surface.
42
43 1.1.6:
44 Added a function to return the thread ID of a specific thread:
45 Uint32 SDL_GetThreadID(SDL_Thread *thread)
46 If 'thread' is NULL, this function returns the id for this thread.
47
48 1.1.5:
49 The YUV overlay structure has been changed to use an array of
50 pitches and pixels representing the planes of a YUV image, to
51 better enable hardware acceleration. The YV12 and IYUV formats
52 each have three planes, corresponding to the Y, U, and V portions
53 of the image, while packed pixel YUV formats just have one plane.
54
55 For palettized mode (8bpp), the screen colormap is now split in
56 a physical and a logical palette. The physical palette determines
57 what colours the screen pixels will get when displayed, and the
58 logical palette controls the mapping from blits to/from the screen.
59 A new function, SDL_SetPalette() has been added to change
60 logical and physical palettes separately. SDL_SetColors() works
61 just as before, and is equivalent to calling SDL_SetPalette() with
62 a flag argument of (SDL_LOGPAL|SDL_PHYSPAL).
63
64 SDL_BlitSurface() no longer modifies the source rectangle, only the
65 destination rectangle. The width/height members of the destination
66 rectangle are ignored, only the position is used.
67
68 The old source clipping function SDL_SetClipping() has been replaced
69 with a more useful function to set the destination clipping rectangle:
70 SDL_bool SDL_SetClipRect(SDL_Surface *surface, SDL_Rect *rect)
71
72 Added a function to see what subsystems have been initialized:
73 Uint32 SDL_WasInit(Uint32 flags)
74
75 The Big Alpha Flip: SDL now treats alpha as opacity like everybody
76 else, and not as transparency:
77
78 A new cpp symbol: SDL_ALPHA_OPAQUE is defined as 255
79 A new cpp symbol: SDL_ALPHA_TRANSPARENT is defined as 0
80 Values between 0 and 255 vary from fully transparent to fully opaque.
81
82 New functions:
83 SDL_DisplayFormatAlpha()
84 Returns a surface converted to a format with alpha-channel
85 that can be blit efficiently to the screen. (In other words,
86 like SDL_DisplayFormat() but the resulting surface has
87 an alpha channel.) This is useful for surfaces with alpha.
88 SDL_MapRGBA()
89 Works as SDL_MapRGB() but takes an additional alpha parameter.
90 SDL_GetRGBA()
91 Works as SDL_GetRGB() but also returns the alpha value
92 (SDL_ALPHA_OPAQUE for formats without an alpha channel)
93
94 Both SDL_GetRGB() and SDL_GetRGBA() now always return values in
95 the [0..255] interval. Previously, SDL_GetRGB() would return
96 (0xf8, 0xfc, 0xf8) for a completely white pixel in RGB565 format.
97 (N.B.: This is broken for bit fields < 3 bits.)
98
99 SDL_MapRGB() returns pixels in which the alpha channel is set opaque.
100
101 SDL_SetAlpha() can now be used for both setting the per-surface
102 alpha, using the new way of thinking of alpha, and also to enable
103 and disable per-pixel alpha blending for surfaces with an alpha
104 channel:
105 To disable alpha blending:
106 SDL_SetAlpha(surface, 0, 0);
107 To re-enable alpha blending:
108 SDL_SetAlpha(surface, SDL_SRCALPHA, 0);
109 Surfaces with an alpha channel have blending enabled by default.
110
111 SDL_SetAlpha() now accepts SDL_RLEACCEL as a flag, which requests
112 RLE acceleration of blits, just as like with SDL_SetColorKey().
113 This flag can be set for both surfaces with an alpha channel
114 and surfaces with an alpha value set by SDL_SetAlpha().
115 As always, RLE surfaces must be locked before pixel access is
116 allowed, and unlocked before any other SDL operations are done
117 on it.
118
119 The blit semantics for surfaces with and without alpha and colorkey
120 have now been defined:
121
122 RGBA->RGB:
123 SDL_SRCALPHA set:
124 alpha-blend (using alpha-channel).
125 SDL_SRCCOLORKEY ignored.
126 SDL_SRCALPHA not set:
127 copy RGB.
128 if SDL_SRCCOLORKEY set, only copy the pixels matching the
129 RGB values of the source colour key, ignoring alpha in the
130 comparison.
131
132 RGB->RGBA:
133 SDL_SRCALPHA set:
134 alpha-blend (using the source per-surface alpha value);
135 set destination alpha to opaque.
136 SDL_SRCALPHA not set:
137 copy RGB, set destination alpha to opaque.
138 both:
139 if SDL_SRCCOLORKEY set, only copy the pixels matching the
140 source colour key.
141
142 RGBA->RGBA:
143 SDL_SRCALPHA set:
144 alpha-blend (using the source alpha channel) the RGB values;
145 leave destination alpha untouched. [Note: is this correct?]
146 SDL_SRCCOLORKEY ignored.
147 SDL_SRCALPHA not set:
148 copy all of RGBA to the destination.
149 if SDL_SRCCOLORKEY set, only copy the pixels matching the
150 RGB values of the source colour key, ignoring alpha in the
151 comparison.
152
153 RGB->RGB:
154 SDL_SRCALPHA set:
155 alpha-blend (using the source per-surface alpha value).
156 SDL_SRCALPHA not set:
157 copy RGB.
158 both:
159 if SDL_SRCCOLORKEY set, only copy the pixels matching the
160 source colour key.
161
162 As a special case, blits from surfaces with per-surface alpha
163 value of 128 (50% transparency) are optimised and much faster
164 than other alpha values. This does not apply to surfaces with
165 alpha channels (per-pixel alpha).
166
167 New functions for manipulating the gamma of the display have
168 been added:
169 int SDL_SetGamma(float red, float green, float blue);
170 int SDL_SetGammaRamp(Uint8 *red, Uint8 *green, Uint8 *blue);
171 int SDL_GetGammaRamp(Uint8 *red, Uint8 *green, Uint8 *blue);
172 Gamma ramps are tables with 256 entries which map the screen color
173 components into actually displayed colors. For an example of
174 implementing gamma correction and gamma fades, see test/testgamma.c
175 Gamma control is not supported on all hardware.
176
177 1.1.4:
178 The size of the SDL_CDtrack structure changed from 8 to 12 bytes
179 as the size of the length member was extended to 32 bits.
180
181 You can now use SDL for 2D blitting with a GL mode by passing the
182 SDL_OPENGLBLIT flag to SDL_SetVideoMode(). You can specify 16 or
183 32 bpp, and the data in the framebuffer is put into the GL scene
184 when you call SDL_UpdateRects(), and the scene will be visible
185 when you call SDL_GL_SwapBuffers().
186
187 Run the "testgl" test program with the -logo command line option
188 to see an example of this blending of 2D and 3D in SDL.
189
190 1.1.3:
191 Added SDL_FreeRW() to the API, to complement SDL_AllocRW()
192
193 Added resizable window support - just add SDL_RESIZABLE to the
194 SDL_SetVideoMode() flags, and then wait for SDL_VIDEORESIZE events.
195 See SDL_events.h for details on the new SDL_ResizeEvent structure.
196
197 Added condition variable support, based on mutexes and semaphores.
198 SDL_CreateCond()
199 SDL_DestroyCond()
200 SDL_CondSignal()
201 SDL_CondBroadcast()
202 SDL_CondWait()
203 SDL_CondTimedWait()
204 The new function prototypes are in SDL_mutex.h
205
206 Added counting semaphore support, based on the mutex primitive.
207 SDL_CreateSemaphore()
208 SDL_DestroySemaphore()
209 SDL_SemWait()
210 SDL_SemTryWait()
211 SDL_SemWaitTimeout()
212 SDL_SemPost()
213 SDL_SemValue()
214 The new function prototypes are in SDL_mutex.h
215
216 Added support for asynchronous blitting. To take advantage of this,
217 you must set the SDL_ASYNCBLIT flag when setting the video mode and
218 creating surfaces that you want accelerated in this way. You must
219 lock surfaces that have this flag set, and the lock will block until
220 any queued blits have completed.
221
222 Added YUV video overlay support.
223 The supported YUV formats are: YV12, IYUV, YUY2, UYVY, and YVYU.
224 This function creates an overlay surface:
225 SDL_CreateYUVOverlay()
226 You must lock and unlock the overlay to get access to the data:
227 SDL_LockYUVOverlay() SDL_UnlockYUVOverlay()
228 You can then display the overlay:
229 SDL_DisplayYUVOverlay()
230 You must free the overlay when you are done using it:
231 SDL_FreeYUVOverlay()
232 See SDL_video.h for the full function prototypes.
233
234 The joystick hat position constants have been changed:
235 Old constant New constant
236 ------------ ------------
237 0 SDL_HAT_CENTERED
238 1 SDL_HAT_UP
239 2 SDL_HAT_RIGHTUP
240 3 SDL_HAT_RIGHT
241 4 SDL_HAT_RIGHTDOWN
242 5 SDL_HAT_DOWN
243 6 SDL_HAT_LEFTDOWN
244 7 SDL_HAT_LEFT
245 8 SDL_HAT_LEFTUP
246 The new constants are bitmasks, so you can check for the
247 individual axes like this:
248 if ( hat_position & SDL_HAT_UP ) {
249 }
250 and you'll catch left-up, up, and right-up.
251
252 1.1.2:
253 Added multiple timer support:
254 SDL_AddTimer() and SDL_RemoveTimer()
255
256 SDL_WM_SetIcon() now respects the icon colorkey if mask is NULL.
257
258 1.1.0:
259 Added initial OpenGL support.
260 First set GL attributes (such as RGB depth, alpha depth, etc.)
261 SDL_GL_SetAttribute()
262 Then call SDL_SetVideoMode() with the SDL_OPENGL flag.
263 Perform all of your normal GL drawing.
264 Finally swap the buffers with the new SDL function:
265 SDL_GL_SwapBuffers()
266 See the new 'testgl' test program for an example of using GL with SDL.
267
268 You can load GL extension functions by using the function:
269 SDL_GL_LoadProcAddress()
270
271 Added functions to initialize and cleanup specific SDL subsystems:
272 SDL_InitSubSystem() and SDL_QuitSubSystem()
273
274 Added user-defined event type:
275 typedef struct {
276 Uint8 type;
277 int code;
278 void *data1;
279 void *data2;
280 } SDL_UserEvent;
281 This structure is in the "user" member of an SDL_Event.
282
283 Added a function to push events into the event queue:
284 SDL_PushEvent()
285
286 Example of using the new SDL user-defined events:
287 {
288 SDL_Event event;
289
290 event.type = SDL_USEREVENT;
291 event.user.code = my_event_code;
292 event.user.data1 = significant_data;
293 event.user.data2 = 0;
294 SDL_PushEvent(&event);
295 }
296
297 Added a function to get mouse deltas since last query:
298 SDL_GetRelativeMouseState()
299
300 Added a boolean datatype to SDL_types.h:
301 SDL_bool = { SDL_TRUE, SDL_FALSE }
302
303 Added a function to get the current audio status:
304 SDL_GetAudioState();
305 It returns one of:
306 SDL_AUDIO_STOPPED,
307 SDL_AUDIO_PLAYING,
308 SDL_AUDIO_PAUSED
309
310 Added an AAlib driver (ASCII Art) - by Stephane Peter.
311
312 1.0.6:
313 The input grab state is reset after each call to SDL_SetVideoMode().
314 The input is grabbed by default in fullscreen mode, and ungrabbed in
315 windowed mode. If you want to set input grab to a particular value,
316 you should set it after each call to SDL_SetVideoMode().
317
318 1.0.5:
319 Exposed SDL_AudioInit(), SDL_VideoInit()
320 Added SDL_AudioDriverName() and SDL_VideoDriverName()
321
322 Added new window manager function:
323 SDL_WM_ToggleFullScreen()
324 This is currently implemented only on Linux
325
326 The ALT-ENTER code has been removed - it's not appropriate for a
327 lib to bind keys when they aren't even emergency escape sequences.
328
329 ALT-ENTER functionality can be implemented with the following code:
330
331 int Handle_AltEnter(const SDL_Event *event)
332 {
333 if ( event->type == SDL_KEYDOWN ) {
334 if ( (event->key.keysym.sym == SDLK_RETURN) &&
335 (event->key.keysym.mod & KMOD_ALT) ) {
336 SDL_WM_ToggleFullScreen(SDL_GetVideoSurface());
337 return(0);
338 }
339 }
340 return(1);
341 }
342 SDL_SetEventFilter(Handle_AltEnter);
343
344 1.0.3:
345 Under X11, if you grab the input and hide the mouse cursor,
346 the mouse will go into a "relative motion" mode where you
347 will always get relative motion events no matter how far in
348 each direction you move the mouse - relative motion is not
349 bounded by the edges of the window (though the absolute values
350 of the mouse positions are clamped by the size of the window).
351 The SVGAlib, framebuffer console, and DirectInput drivers all
352 have this behavior naturally, and the GDI and BWindow drivers
353 never go into "relative motion" mode.
354
355 1.0.2:
356 Added a function to enable keyboard repeat:
357 SDL_EnableKeyRepeat()
358
359 Added a function to grab the mouse and keyboard input
360 SDL_WM_GrabInput()
361
362 Added a function to iconify the window.
363 SDL_WM_IconifyWindow()
364 If this function succeeds, the application will receive an event
365 signaling SDL_APPACTIVE event
366
367 1.0.1:
368 Added constants to SDL_audio.h for 16-bit native byte ordering:
369 AUDIO_U16SYS, AUDIO_S16SYS
370
371 1.0.0:
372 New public release
373
374 Version 0.11:
375
376 0.11.5:
377 A new function SDL_GetVideoSurface() has been added, and returns
378 a pointer to the current display surface.
379
380 SDL_AllocSurface() has been renamed SDL_CreateRGBSurface(), and
381 a new function SDL_CreateRGBSurfaceFrom() has been added to allow
382 creating an SDL surface from an existing pixel data buffer.
383
384 Added SDL_GetRGB() to the headers and documentation.
385
386 0.11.4:
387 SDL_SetLibraryPath() is no longer meaningful, and has been removed.
388
389 0.11.3:
390 A new flag for SDL_Init(), SDL_INIT_NOPARACHUTE, prevents SDL from
391 installing fatal signal handlers on operating systems that support
392 them.
393
394 Version 0.9:
395
396 0.9.15:
397 SDL_CreateColorCursor() has been removed. Color cursors should
398 be implemented as sprites, blitted by the application when the
399 cursor moves. To get smooth color cursor updates when the app
400 is busy, pass the SDL_INIT_EVENTTHREAD flag to SDL_Init(). This
401 allows you to handle the mouse motion in another thread from an
402 event filter function, but is currently only supported by Linux
403 and BeOS. Note that you'll have to protect the display surface
404 from multi-threaded access by using mutexes if you do this.
405
406 Thread-safe surface support has been removed from SDL.
407 This makes blitting somewhat faster, by removing SDL_MiddleBlit().
408 Code that used SDL_MiddleBlit() should use SDL_LowerBlit() instead.
409 You can make your surfaces thread-safe by allocating your own
410 mutex and making lock/unlock calls around accesses to your surface.
411
412 0.9.14:
413 SDL_GetMouseState() now takes pointers to int rather than Uint16.
414
415 If you set the SDL_WINDOWID environment variable under UNIX X11,
416 SDL will use that as the main window instead of creating it's own.
417 This is an unsupported extension to SDL, and not portable at all.
418
419 0.9.13:
420 Added a function SDL_SetLibraryPath() which can be used to specify
421 the directory containing the SDL dynamic libraries. This is useful
422 for commercial applications which ship with particular versions
423 of the libraries, and for security on multi-user systems.
424 If this function is not used, the default system directories are
425 searched using the native dynamic object loading mechanism.
426
427 In order to support C linkage under Visual C++, you must declare
428 main() without any return type:
429 main(int argc, char *argv[]) {
430 /* Do the program... */
431 return(0);
432 }
433 C++ programs should also return a value if compiled under VC++.
434
435 The blit_endian member of the SDL_VideoInfo struct has been removed.
436
437 SDL_SymToASCII() has been replaced with SDL_GetKeyName(), so there
438 is now no longer any function to translate a keysym to a character.
439
440 The SDL_keysym structure has been extended with a 'scancode' and
441 'unicode' member. The 'scancode' is a hardware specific scancode
442 for the key that was pressed, and may be 0. The 'unicode' member
443 is a 16-bit UNICODE translation of the key that was pressed along
444 with any modifiers or compose keys that have been pressed.
445 If no UNICODE translation exists for the key, 'unicode' will be 0.
446
447 Added a function SDL_EnableUNICODE() to enable/disable UNICODE
448 translation of character keypresses. Translation defaults off.
449
450 To convert existing code to use the new API, change code which
451 uses SDL_SymToASCII() to get the keyname to use SDL_GetKeyName(),
452 and change code which uses it to get the ASCII value of a sym to
453 use the 'unicode' member of the event keysym.
454
455 0.9.12:
456 There is partial support for 64-bit datatypes. I don't recommend
457 you use this if you have a choice, because 64-bit datatypes are not
458 supported on many platforms. On platforms for which it is supported,
459 the SDL_HAS_64BIT_TYPE C preprocessor define will be enabled, and
460 you can use the Uint64 and Sint64 datatypes.
461
462 Added functions to SDL_endian.h to support 64-bit datatypes:
463 SDL_SwapLE64(), SDL_SwapBE64(),
464 SDL_ReadLE64(), SDL_ReadBE64(), SDL_WriteLE64(), SDL_WriteBE64()
465
466 A new member "len_ratio" has been added to the SDL_AudioCVT structure,
467 and allows you to determine either the original buffer length or the
468 converted buffer length, given the other.
469
470 A new function SDL_FreeWAV() has been added to the API to free data
471 allocated by SDL_LoadWAV_RW(). This is necessary under Win32 since
472 the gcc compiled DLL uses a different heap than VC++ compiled apps.
473
474 SDL now has initial support for international keyboards using the
475 Latin character set.
476 If a particular mapping is desired, you can set the DEFAULT_KEYBOARD
477 compile-time variable, or you can set the environment variable
478 "SDL_KEYBOARD" to a string identifying the keyboard mapping you desire.
479 The valid values for these variables can be found in SDL_keyboard.c
480
481 Full support for German and French keyboards under X11 is implemented.
482
483 0.9.11:
484 The THREADED_EVENTS compile-time define has been replaced with the
485 SDL_INIT_EVENTTHREAD flag. If this flag is passed to SDL_Init(),
486 SDL will create a separate thread to perform input event handling.
487 If this flag is passed to SDL_Init(), and the OS doesn't support
488 event handling in a separate thread, SDL_Init() will fail.
489 Be sure to add calls to SDL_Delay() in your main thread to allow
490 the OS to schedule your event thread, or it may starve, leading
491 to slow event delivery and/or dropped events.
492 Currently MacOS and Win32 do not support this flag, while BeOS
493 and Linux do support it. I recommend that your application only
494 use this flag if absolutely necessary.
495
496 The SDL thread function passed to SDL_CreateThread() now returns a
497 status. This status can be retrieved by passing a non-NULL pointer
498 as the 'status' argument to SDL_WaitThread().
499
500 The volume parameter to SDL_MixAudio() has been increased in range
501 from (0-8) to (0-128)
502
503 SDL now has a data source abstraction which can encompass a file,
504 an area of memory, or any custom object you can envision. It uses
505 these abstractions, SDL_RWops, in the endian read/write functions,
506 and the built-in WAV and BMP file loaders. This means you can load
507 WAV chunks from memory mapped files, compressed archives, network
508 pipes, or anything else that has a data read abstraction.
509
510 There are three built-in data source abstractions:
511 SDL_RWFromFile(), SDL_RWFromFP(), SDL_RWFromMem()
512 along with a generic data source allocation function:
513 SDL_AllocRW()
514 These data sources can be used like stdio file pointers with the
515 following convenience functions:
516 SDL_RWseek(), SDL_RWread(), SDL_RWwrite(), SDL_RWclose()
517 These functions are defined in the new header file "SDL_rwops.h"
518
519 The endian swapping functions have been turned into macros for speed
520 and SDL_CalculateEndian() has been removed. SDL_endian.h now defines
521 SDL_BYTEORDER as either SDL_BIG_ENDIAN or SDL_LIL_ENDIAN depending on
522 the endianness of the host system.
523
524 The endian read/write functions now take an SDL_RWops pointer
525 instead of a stdio FILE pointer, to support the new data source
526 abstraction.
527
528 The SDL_*LoadWAV() functions have been replaced with a single
529 SDL_LoadWAV_RW() function that takes a SDL_RWops pointer as it's
530 first parameter, and a flag whether or not to automatically
531 free it as the second parameter. SDL_LoadWAV() is a macro for
532 backward compatibility and convenience:
533 SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...);
534
535 The SDL_*LoadBMP()/SDL_*SaveBMP() functions have each been replaced
536 with a single function that takes a SDL_RWops pointer as it's
537 first parameter, and a flag whether or not to automatically
538 free it as the second parameter. SDL_LoadBMP() and SDL_SaveBMP()
539 are macros for backward compatibility and convenience:
540 SDL_LoadBMP_RW(SDL_RWFromFile("sample.bmp", "rb"), 1, ...);
541 SDL_SaveBMP_RW(SDL_RWFromFile("sample.bmp", "wb"), 1, ...);
542 Note that these functions use SDL_RWseek() extensively, and should
543 not be used on pipes or other non-seekable data sources.
544
545 0.9.10:
546 The Linux SDL_SysWMInfo and SDL_SysWMMsg structures have been
547 extended to support multiple types of display drivers, as well as
548 safe access to the X11 display when THREADED_EVENTS is enabled.
549 The new structures are documented in the SDL_syswm.h header file.
550
551 Thanks to John Elliott <jce@seasip.demon.co.uk>, the UK keyboard
552 should now work properly, as well as the "Windows" keys on US
553 keyboards.
554
555 The Linux CD-ROM code now reads the CD-ROM devices from /etc/fstab
556 instead of trying to open each block device on the system.
557 The CD must be listed in /etc/fstab as using the iso9660 filesystem.
558
559 On Linux, if you define THREADED_EVENTS at compile time, a separate
560 thread will be spawned to gather X events asynchronously from the
561 graphics updates. This hasn't been extensively tested, but it does
562 provide a means of handling keyboard and mouse input in a separate
563 thread from the graphics thread. (This is now enabled by default.)
564
565 A special access function SDL_PeepEvents() allows you to manipulate
566 the event queue in a thread-safe manner, including peeking at events,
567 removing events of a specified type, and adding new events of arbitrary
568 type to the queue (use the new 'user' member of the SDL_Event type).
569
570 If you use SDL_PeepEvents() to gather events, then the main graphics
571 thread needs to call SDL_PumpEvents() periodically to drive the event
572 loop and generate input events. This is not necessary if SDL has been
573 compiled with THREADED_EVENTS defined, but doesn't hurt.
574
575 A new function SDL_ThreadID() returns the identifier associated with
576 the current thread.
577
578 0.9.9:
579 The AUDIO_STEREO format flag has been replaced with a new 'channels'
580 member of the SDL_AudioSpec structure. The channels are 1 for mono
581 audio, and 2 for stereo audio. In the future more channels may be
582 supported for 3D surround sound.
583
584 The SDL_MixAudio() function now takes an additional volume parameter,
585 which should be set to SDL_MIX_MAXVOLUME for compatibility with the
586 original function.
587
588 The CD-ROM functions which take a 'cdrom' parameter can now be
589 passed NULL, and will act on the last successfully opened CD-ROM.
590
591 0.9.8:
592 No changes, bugfixes only.
593
594 0.9.7:
595 No changes, bugfixes only.
596
597 0.9.6:
598 Added a fast rectangle fill function: SDL_FillRect()
599
600 Addition of a useful function for getting info on the video hardware:
601 const SDL_VideoInfo *SDL_GetVideoInfo(void)
602 This function replaces SDL_GetDisplayFormat().
603
604 Initial support for double-buffering:
605 Use the SDL_DOUBLEBUF flag in SDL_SetVideoMode()
606 Update the screen with a new function: SDL_Flip()
607
608 SDL_AllocSurface() takes two new flags:
609 SDL_SRCCOLORKEY means that the surface will be used for colorkey blits
610 and if the hardware supports hardware acceleration of colorkey blits
611 between two surfaces in video memory, to place the surface in video
612 memory if possible, otherwise it will be placed in system memory.
613 SDL_SRCALPHA means that the surface will be used for alpha blits and
614 if the hardware supports hardware acceleration of alpha blits between
615 two surfaces in video memory, to place the surface in video memory
616 if possible, otherwise it will be placed in system memory.
617 SDL_HWSURFACE now means that the surface will be created with the
618 same format as the display surface, since having surfaces in video
619 memory is only useful for fast blitting to the screen, and you can't
620 blit surfaces with different surface formats in video memory.
621
622 0.9.5:
623 You can now pass a NULL mask to SDL_WM_SetIcon(), and it will assume
624 that the icon consists of the entire image.
625
626 SDL_LowerBlit() is back -- but don't use it on the display surface.
627 It is exactly the same as SDL_MiddleBlit(), but doesn't check for
628 thread safety.
629
630 Added SDL_FPLoadBMP(), SDL_FPSaveBMP(), SDL_FPLoadWAV(), which take
631 a FILE pointer instead of a file name.
632
633 Added CD-ROM audio control API:
634 SDL_CDNumDrives()
635 SDL_CDName()
636 SDL_CDOpen()
637 SDL_CDStatus()
638 SDL_CDPlayTracks()
639 SDL_CDPlay()
640 SDL_CDPause()
641 SDL_CDResume()
642 SDL_CDStop()
643 SDL_CDEject()
644 SDL_CDClose()
645
646 0.9.4:
647 No changes, bugfixes only.
648
649 0.9.3:
650 Mouse motion event now includes relative motion information:
651 Sint16 event->motion.xrel, Sint16 event->motion.yrel
652
653 X11 keyrepeat handling can be disabled by defining IGNORE_X_KEYREPEAT
654 (Add -DIGNORE_X_KEYREPEAT to CFLAGS line in obj/x11Makefile)
655
656 0.9.2:
657 No changes, bugfixes only.
658
659 0.9.1:
660 Removed SDL_MapSurface() and SDL_UnmapSurface() -- surfaces are now
661 automatically mapped on blit.
662
663 0.8.0:
664 SDL stable release