1. 21 Aug, 2004 8 commits
    • Sam Lantinga's avatar
      Here are patches for SDL12 and SDL_mixer for 4 or 6 channel · 2c65409a
      Sam Lantinga authored
      surround sound on Linux using the Alsa driver.  To use them, naturally
      you need a sound card that will do 4 or 6 channels and probably also a
      recent version of the Alsa drivers and library.   Since the  only  SDL
      output  driver  that  knows  about  surround sound is the Alsa driver,
      you���ll want to choose it, using:
      
           export SDL_AUDIODRIVER=alsa
      
           There are no syntactic changes to the  programming  API.  No  new
      library calls, no differences in arguments.
      
           There are two semantic changes:
      
      (1) For library calls with number of channels as an argument, formerly
           you  could  use only 1 or 2 for the number of channels.   Now you
           can also use 4 or 6.
      
      (2) The two "left" and "right" arguments to Mix_SetPanning,   for  the
           case of 4 or 6 channels,  no longer simply control the volumes of
           the left and right channels. Now the "left" argument is converted
           to an angle and Mix_SetPosition is called,  and the "right" argu-
           ment is ignored.
      
           With two exceptions,  so far as I know,  the modified  SDL12  and
      SDL_mixer work the same way as the original versions,  when opened for
      1  or  2  channel output.   The two exceptions are bugs which I fixed.
      Well, the first, anyway, is a bug for sure.   When rate conversions up
      or down by a factor of two are applied (in  src/audio/SDL_audiocvt.c),
      streams with different numbers of channels (that is,  mono and stereo)
      are treated the same way:  either each sample is copied or every other
      sample is omitted.  This is ok for mono, but for stereo,  it is frames
      that should be copied or omitted, where by "frame" I mean a portion of
      the stream containing one sample for each channel. (In the SDL source,
      confusingly,   sometimes  frames are called "samples".)   So for these
      rate conversions,  stereo streams have to be treated differently,  and
      they are, in my modified version.
      
           The other problem that might be characterized  as  a  bug  arises
      when  SDL_mixer  is passed a multichannel chunk which does not have an
      integral number of frames.   Due to the way the  effect_position  code
      loops  over frames,  when the chunk ends with a partial frame,  memory
      outside the chunk buffer will be accessed.   In the  case  of  stereo,
      it���s possible that because malloc may give more memory than requested,
      this potential problem never actually causes a segment fault.  I don���t
      know.   For 6 channel chunks,  I do know,  and it does  cause  segment
      faults.
      
      
           If SDL_mixer is passed defective chunks and this causes a segment
      fault, arguably, that���s not a bug in SDL_mixer.  Still, whether or not
      it counts as a bug, it���s easy to protect against, so why not?  I added
      code in mixer.c to discard any partial frame at the end of a chunk.
      
           Then what about when SDL or SDL_mixer is opened for 4 or 6  chan-
      nel  output?    What  happens  with  the  parts of the current library
      designed for stereo?  I don���t know whether I���ve covered all the bases,
      but I���ve tried:
      
      (1) For playing 2 channel waves, or other cases where SDL knows it has
           to match up a 2 channel source with a 4 or 6 channel output, I���ve
           added code in SDL_audiocvt.c to make the necessary conversions.
      
      (2) For playing midis using timidity,  I���ve converted timidity to do 4
           or 6 channel output, upon request.
      
      (3) For playing mods using mikmod,  I put ad hoc code  in  music.c  to
           convert  the  stereo  output that mikmod produces to 4 or 6 chan-
           nels.   Obviously it would be better to change the mikmod code to
           mix down into 4 or 6 channels,  but I have a hard time  following
           the code in mikmod, so I didn���t do that.
      
      (4) For  playing mp3s,  I put ad hoc code in smpeg to copy channels in
           the case when 4 or 6 channel output is needed.
      
      (5) There seems to be no problem with .ogg files - stereo .oggs can be
           up converted as .wavs are.
      
      (6) The  effect_position  code  in SDL_mixer is now generalized to in-
           clude the cases of 4 and 6 channel streams.
      
           I���ve done a very limited amount of compatibility testing for some
      of  the games using SDL I happen to have.   For details,  see the file
      TESTS.
      
           I���ve put into a separate archive,  Surround-SDL-testfiles.tgz,  a
      couple of 6 channel wave files for testing and a 6 channel  ogg  file.
      If you have the right hardware and version of Alsa, you should be able
      to  play  the  wave  files  with  the Alsa utility aplay (and hear all
      channels, except maybe lfe, for chan-id.wav, since it���s rather faint).
      Don���t expect aplay to give good sound,   though.    There���s  something
      wrong with the current version of aplay.
      
           The canyon.ogg file is to test loading of 6 channel oggs.   After
      patching and compiling, you can play it with playmus.   (My version of
      ogg123 will not play it,  and I had to patch mplayer to get it to play
      6 channel oggs.)
      
      Greg Lee <greg@ling.lll.hawaii.edu>
      Thus, July 1, 2004
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40943
      2c65409a
    • Sam Lantinga's avatar
      Date: Mon, 12 Jul 2004 14:17:47 -0500 · 87de03dc
      Sam Lantinga authored
      From: Richard Smith
      Subject: Re: [SDL] Disableing color depth and mode searching
      
      > Also, I should add that a quick way to get the desired effect is to
      > #define BROKEN_MODES on top of the SDL_fbvideo.c file.
      >
      
      Ah yes, I see that looks like that will do what I need.  Curious as to
      why this is a #define and not an enviroment variable like the other
      settings.
      
      I would think that finding cards (or chips) with broken modes would be
      the norm rather than the execption.
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40942
      87de03dc
    • Sam Lantinga's avatar
      Date: Sat, 10 Jul 2004 21:02:33 +0200 · cebd45ab
      Sam Lantinga authored
      From: "Philippe Plantier (ayin)"
      Subject: [SDL] Problems allocating large surfaces
      
      There are problems when allocating large surfaces using SDL_CreateRGBSurface.
      
      When, for example, we try to allocate a surface wider than 16384 pixels,
      the calculation of the pitch overflows; this leads to a surface that
      has the w and h flags correctly set, but whose "pixels" buffer is too
      small. That may lead to heap corruption.
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40941
      cebd45ab
    • Sam Lantinga's avatar
      Date: Tue, 01 Jun 2004 15:27:44 +0300 · b3fa5998
      Sam Lantinga authored
      From: Martin_Storsj
      Subject: Update for dynamic loading of ALSA
      
      I sent you a patch a few months ago which enables SDL to load ALSA
      dynamically. Now I've finally got time to tweak this yet some more. I've
      added code from alsa.m4 (from alsa's dev package) to acinclude.m4, and
      made the detection of the alsa library name a bit better. I've also
      fixed up the loading versioned symbols with dlvsym, so that it falls
      back to dlsym.
      
      I wouldn't say the configure script is complete yet, but this is how far
      I've come this time, and I'm no expert at those things.
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40940
      b3fa5998
    • Sam Lantinga's avatar
      Hmm, this should work a little better. :) · 1d9ee037
      Sam Lantinga authored
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40939
      1d9ee037
    • Sam Lantinga's avatar
      Date: Tue, 27 Jul 2004 17:14:00 +0200 · fa46eb0b
      Sam Lantinga authored
      From: "Eckhard Stolberg"
      Subject: Controller names in SDL for Windows
      
      I'm working on an Atari 2600 emulator for different systems that uses
      the SDL. Some time ago someone created an adaptor that lets you use
      your old Atari controllers with your computer through the USB port.
      Some of the Atari controllers require special handling by the emulator,
      so it would be nice, if it would be possible to detect if any of the
      controllers connected to the computer is this adaptor.
      
      SDL would allow that with the SDL_JoystickName function, but unfortunately
      it doesn't work properly on Windows. On Linux and MacOSX this function
      returns the name of the controller, but on Windows you'll only get the
      name of the joystick driver. Most joysticks nowadays use the generic
      Microsoft driver, so they all return the same name.
      
      In an old MSDN article
      (http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnarinput/html/msdn_extdirect.asp)
      Microsoft describes how to read out the OEM controller names from the registry.
      I have implemented this for the SDL controller handler on Windows,
      and now reading the joystick name works properly there too.
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40938
      fa46eb0b
    • Sam Lantinga's avatar
      CoreAudio driver works on Mac OSX 10.1 · 0ac2cf18
      Sam Lantinga authored
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40937
      0ac2cf18
    • Sam Lantinga's avatar
      Audio improvements from Max Horn, including a new CoreAudio driver for MacOSX · 35c8da7a
      Sam Lantinga authored
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40936
      35c8da7a
  2. 20 Aug, 2004 5 commits
    • Sam Lantinga's avatar
      Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT) · fddd0153
      Sam Lantinga authored
      From: Eric Wing <ewing2121@yahoo.com>
      Subject: New OS X patch (was Re: [SDL] Bug with inverted mouse coordinates in
      
      I have a new patch for OS X I would like to submit.
      First, it appears no further action has been taken on
      my fix from Apple on the OpenGL windowed mode mouse
      inversion problem. The fix would reunify the code, and
      no longer require case checking for which version of
      the OS you are running. This is probably a good fix
      because the behavior with the old code could change
      again with future versions of the OS, so those fixes
      are included in this new patch.
      
      But in addition, when I was at Apple, I asked them
      about the ability to distinguish between the modifier
      keys on the left and right sides of the keyboard (e.g.
      Left Shift, Right Shift, Left/Right Alt, L/R Cmd, L/R
      Ctrl). They told me that starting with Panther, the OS
      began supporting this feature. This has always been a
      source of annoyance for me when bringing a program
      that comes from Windows or Linux to OS X when the
      keybindings happened to need distinguishable left-side
      and right-side keys. So the rest of the patch I am
      submitting contains new code to support this feature
      on Panther (and presumably later versions of the OS).
      
      So after removing the OS version checks for the mouse
      inversion problem, I reused the OS version checks to
      activate the Left/Right detection of modifier keys. If
      you are running Panther (or above), the new code will
      attempt to distinguish between sides. For the older
      OS's, the code path reverts to the original code.
      
      I've tested with Panther on a G4 Cube, G5 dual
      processor, and Powerbook Rev C. The Cube and G5
      keyboards demonstrated the ability to distinguish
      between sides. The Powerbook seems to only have
      left-side keys, but the patch was still able to handle
      it by producing the same results as before the patch.
      
      I also wanted to test a non-Apple keyboard.
      Unfortunately, I don't have any PC USB keyboards.
      However, I was able to borrow a Sun Microsystems USB
      keyboard, so I tried that out on the G5, and I got the
      correct behavior for left and right sides. I'm
      expecting that if it worked with a Sun keyboard, most
      other keyboards should work with no problems.
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40935
      fddd0153
    • Sam Lantinga's avatar
      Added an option to show the logo at the cursor position for debugging · 0ef2a5d6
      Sam Lantinga authored
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40934
      0ef2a5d6
    • Sam Lantinga's avatar
      Use the canonical glext.h on MacOS X as well (#define NO_SDL_GLEXT if you don't want this) · ce19d347
      Sam Lantinga authored
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40933
      ce19d347
    • Sam Lantinga's avatar
      *** empty log message *** · 26528307
      Sam Lantinga authored
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40932
      26528307
    • Sam Lantinga's avatar
      Date: Fri, 20 Aug 2004 08:31:20 +0200 · 8feb4edf
      Sam Lantinga authored
      From: "Markus F.X.J. Oberhumer"
      Subject: [SDL-CVS][patch] add missing SDLCALL to headers
      
      the small patch attached below (against current CVS) adds some missing SDLCALL
      decorations to callback types and arguments.
      
      Unfortunately one of these changes breaks your gen{def,exp}.pl scripts which
      should be changed to use non-greedy regular expression matching...
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40931
      8feb4edf
  3. 18 Aug, 2004 1 commit
    • Sam Lantinga's avatar
      Date: Mon, 05 Jul 2004 14:37:59 +0200 · c05a3f25
      Sam Lantinga authored
      From: Yves Maurischat
      Subject: [SDL] Crashes when using aRts on Linux
      
      We had a problem with my app using SDL. It always crashed after SDL_OpenAudio(),
      if the artsd was running on a Linux machine with KDE. After some investigation
      (and searching for differences in other apps using arts) we found out, that the
      problem resulted from loading, calling arts_init(), calling arts_free() and
      unloading the aRts-Library in .../src/audio/arts/SDL_artsaudio.c twice: first in
      "static int Audio_Available()", the second time in "static SDL_AudioDevice
      *Audio_CreateDevice(int devindex)".
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40930
      c05a3f25
  4. 10 Aug, 2004 3 commits
  5. 09 Aug, 2004 1 commit
  6. 05 Aug, 2004 5 commits
  7. 03 Aug, 2004 2 commits
  8. 02 Aug, 2004 1 commit
  9. 25 Jul, 2004 4 commits
    • Sam Lantinga's avatar
      Date: Sun, 25 Jul 2004 23:10:03 +0800 · b9185e54
      Sam Lantinga authored
      From: Chris Taylor
      Subject: SDL for Macintosh Programmer's Workshop: removed dynamic loading
      
      I'm working on a game called D2X which uses SDL, and I recently ported
      it to Mac OS 9. I used MPW to build it. It uses OpenGL. To get it to
      work, I had to build SDL so it doesn't dynamically load OpenGL. This is
      because I don't think MPW supports dynamic loading. The following patch
      makes sure when SDL is built under MPW, dynamic loading of shared
      libraries is disabled.
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40917
      b9185e54
    • Sam Lantinga's avatar
      You can't free locked surfaces! · ee929726
      Sam Lantinga authored
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40916
      ee929726
    • Sam Lantinga's avatar
      Date: Wed, 23 Jun 2004 17:05:33 -0400 · a69bbd47
      Sam Lantinga authored
      From: Chris Nelson
      Subject: [SDL] [Patch] WiseGroup MP-8800 / MP-8866 (PS2 Joystick)
      
      In the current cvs version, SDL doesn't handle these Playstation2
      controller => USB adapters correctly, in linux.
      
      It will always assume that the maximum number of joysticks (2 in the
      case of the MP-8866, 4 in the case of the 8800) are plugged in. This is
      bad not only because it allows SDL to exaggerate the number of logical
      joysticks, but primarily because the joystick axes are mapped
      incorrectly, all over the place, such that the devices are effectively
      unusable unless you have the maximum number of joysticks plugged in.
      
      My changes to src/joystick/linux/SDL_sysjoystick.c build on another's
      previous work (which was a special case for this very joystick,
      actually), and fix both of these problems, as well as making the current
      code a little more general, to allow for others to more easily drop in
      code for quirky joysticks such as these.
      
      I've tested this code under 2.6.7 as well as 2.4.24... Both work as
      advertised (provided you load the JOYDEV linux code as a module,
      otherwise they won't work at all, new code or old, but that's another
      issue entirely).
      
      Though this sounds horribly formal, you have my permission to distribute
      all of my work on this issue under the LGPL. So there.
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40915
      a69bbd47
    • Sam Lantinga's avatar
      Date: Mon, 28 Jun 2004 23:15:55 +0200 · 564da8e6
      Sam Lantinga authored
      From: Ivo Danihelka
      Subject: [SDL] [PATCH] SDL_WM_SetCaption with UTF-8
      
      This patch enables UTF-8 suport for SDL_WM_SetCaption() in x11.
      
      XFree86 >= 4.0.2 supports text strings in UTF-8. Presence of this
      feature is indicated by the macro X_HAVE_UTF8_STRING.
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40914
      564da8e6
  10. 21 Jul, 2004 1 commit
  11. 18 Jul, 2004 9 commits
    • Sam Lantinga's avatar
      Date: Mon, 3 May 2004 03:15:01 +0100 · f70b972d
      Sam Lantinga authored
      From: David Symmonds
      Subject: SDL Typedef Structs
      
      Hi, Thanks for the SDL libraries, I have been using them for about a year
      now and they are really brilliant. One thing that I have just found whilst
      using them through C++ (and needing forward declarations) is that when you
      typedef structs you sometimes use
      
      typedef struct Name
      {
      ...
      }Name;
      
      e.g. SDL_Surface
      
      
      and other times use
      
      typedef struct
      {
      ...
      }Name;
      
      
      e.g. SDL_Rect
      
      The first type works fine, when I define a header file I can just put
      'struct Name;' at the top and use the Name throughout. However, the second
      type is harder to use in a header, and I haven't found a way yet, other than
      to include 'SDL.h' in the header file (undesirable). Would there be any harm
      in changing the definition of SDL_Rect and such like to the second form?
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40912
      f70b972d
    • Sam Lantinga's avatar
      Date: Sat, 26 Jun 2004 14:58:42 +0300 · 1ac1efb0
      Sam Lantinga authored
      From: "Mike Gorchak"
      Subject: QNX 6.3 fixes for SDL
      
      Sam, I've added new OpenGL framework for SDL, which appeared in the new QNX version - 6.3. I've leave compatibility with previous QNX versions. And I've moved all GL specific functions to the separate module, like it done for the other platforms.
      
      SDL is now ready for the QNX 6.3 :)
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40911
      1ac1efb0
    • Sam Lantinga's avatar
      *** empty log message *** · 7a8d040a
      Sam Lantinga authored
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40910
      7a8d040a
    • Sam Lantinga's avatar
      Date: Mon, 28 Jun 2004 19:58:08 +0900 · 2e7908c3
      Sam Lantinga authored
      From: Hayashi Naoyuki
      Subject: SDL_types.h - fix for Tru64 MME
      
      The following two problems are fixed.
      1. Type of Uint64 is "long long" in SDL_types.h,
         but is "long" in mmbasic.h(Tru64 UNIX MME header file).
      2. Uint8, Uint16 and Uint32 are redefined
         if you compile a file including mmbasic.h and SDL_types.h.
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40909
      2e7908c3
    • Sam Lantinga's avatar
      Date: Mon, 21 Jun 2004 16:52:47 +0200 · b84dba57
      Sam Lantinga authored
      From: Marcin Konicki
      Subject: SDL 1.2.7 patch for BeOS (new input handling code)
      
      I rewrote input handling code for BeOS. It should be faster now (i got
      report that mouse is faster, keyboard should be too, but it's harder to
      observe).
      
      I'll try to add mouse wheel support too, soon.
      
      Stefano Ceccherini (a.k.a Jack Burton) helped me beautify code (working
      version was less clean), and it was he who asked me to write this thing ;).
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40908
      b84dba57
    • Sam Lantinga's avatar
      Date: Sat, 03 Jul 2004 02:23:48 +0200 · 3eaf8adb
      Sam Lantinga authored
      From: Marcin Konicki
      Subject: [PATCH] Add missing functions and bring back OpenGL
      
      This patch adds missing functions:
      IconifyWindow
      GetWMInfo
      GL_LoadLibrary
      GL_GetProcAddress
      GL_GetAttribute
      GL_MakeCurrent
      
      Adding GL_* functions brings back working OpenGL in SDL for BeOS :).
      With addd GL_* functions there are few changes in Window class to handle
      changes better.
      
      Patch also fixes bug which freezed window when using MesaGL instead of
      BeOS r5 GL - it just needed Window->Quit() added into BE_VideoQuit().
      THX to Michael Weirauch (a.k.a emwe) who worked on that bug before and
      found that it freezes because of lock somewhere.
      
      THX to Matti "Mictlantecuhtli" Lev��nen for testing, Rod��ric Vicaire
      (a.k.a. Ingenu) for OpenGL wisdom, and Stefano Ceccherini (a.k.a Jack
      Burton) for asking me to fix SDL on BeOS :).
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40907
      3eaf8adb
    • Sam Lantinga's avatar
      Date: Wed, 7 Jul 2004 12:57:58 +0200 · 249a5dcd
      Sam Lantinga authored
      From: "Markus F.X.J. Oberhumer"
      Subject: [SDL-CVS] [patch] small fix for SDL_joystick.h
      
      the tiny patch below (against current CVS) fixes a syntax error
      (not allow compilers allow multiple __cdecl).
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40906
      249a5dcd
    • Sam Lantinga's avatar
      Date: Fri, 16 Jul 2004 17:25:45 +0200 · fc16e929
      Sam Lantinga authored
      From: "A. Umbach"
      Subject: Patch for bug in SDL cdrom resume handling
      
      Black| pointed out a bug on #sdl today, that when you pause CD playback,
      and then Resume it, it'll play until the end of the disk, and not until
      the track you specified.
      
      Attached is a patch that fixes the issue, by saving the desired end position
      in the SDL_CD struct, and seting it again upon resume
      
      - Andreas
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40905
      fc16e929
    • Sam Lantinga's avatar
      Date: Sun, 18 Jul 2004 16:46:44 +0200 · c496d3e3
      Sam Lantinga authored
      From: Georg Schwarz
      Subject: Compiling SDL on IRIX 5.3
      
      in order to make SDL compile on IRIX 5.3 I had to apply the following patch
      
      --HG--
      extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40904
      c496d3e3