Commit Graph

1555 Commits

Author SHA1 Message Date
Sam Lantinga
eda562ddca Fixed bug #84
Date: Sun, 23 Oct 2005 16:39:03 +0200
From: "A. Schmid" <sahib@phreaker.net>
Subject: [SDL] no software surfaces with svgalib driver?

Hi,

I noticed that the SDL (1.2.9) svgalib driver only makes use of linear
addressable (framebuffer) video modes. On older systems (like one of
mine), linear addressable modes are often not available.
Especially for cards with VESA VBE < 2.0 the svgalib vesa driver is
unusable, since VESA only supports framebuffering for VBE 2.0 and later.

The changes necessary to add support for software surfaces seem to be
relatively small. I only had to hack src/video/svga/SDL_svgavideo.c (see
attached patch). The code worked fine for me, but it is no more than a
proof of concept and should be reviewed (probably has a memory leak when
switching modes). It also uses the vgagl library (included in the
svgalib package) and needs to be linked against it.

-Alex
2006-03-19 12:04:40 +00:00
Sam Lantinga
edf78177b4 Left the debug code more explicit 2006-03-19 10:48:48 +00:00
Sam Lantinga
c38db8be5b Fixed bug #79
Implemented snd_pcm_sw_params_set_start_threshold() and snd_pcm_sw_params_set_avail_min() in the ALSA 0.9 driver.
This doesn't actually change any latency for me, but it's the right thing to do...
2006-03-19 10:41:49 +00:00
Sam Lantinga
6a04e810c0 Fixed bug #4
[Note: I'm applying this patch since it's a cleaner version of what's already implemented, and supports this controller on older kernels.  I'll ask to make sure this doesn't break on the new kernels where it's no longer necessary]

Date: Mon, 21 Mar 2005 09:41:11 -0500
From: Chris Nelson
Subject: SDL Patch

Hey, Ryan.

I submitted the following patch about a year ago. It's just a simple
patch for the linux port, to make multiple joysticks each appear to SDL
as their own device, if they are on the same USB port (specifically,
these guys
<http://www.consoleplus.co.uk/product_info.php?pName=super-joybox-5-quad-joypad-converter>,

which allow 4 Playstation2 controllers to be accessed via a single USB
port). Without this patch, SDL pretty much drops the ball, and reports
that there are 4 joysticks available when less than that number  are
plugged in.

My work built upon the work of another person with the same device. When
I submitted the patch to the list, he tested it, but it didn't work for
him, so the patch was never accepted. Maybe about 3 times in the past
year, I've tried to email the guy, to see if he couldn't run my new
version, complete with debug code to diagnose the problem he was having.
He never got back  to me.

So, I'm attaching the patch. I wish I knew why it didn't work for him,
but I've been using it for the last year with no problems. Let me know
if you need any more information, or have any ideas as to how I could
test it. I'd like to see it in the tree, but I want to make sure it works.

-Chris
2006-03-19 06:31:34 +00:00
Sam Lantinga
b4a7fb3471 Fixed bug #166
From the autoconf obsolete macros documentation:
Macro: AC_CANONICAL_SYSTEM

    Determine the system type and set output variables to the names of the canonical system types. See section Getting the Canonical System Type, for details about the variables this macro sets.

    The user is encouraged to use either AC_CANONICAL_BUILD, or AC_CANONICAL_HOST, or AC_CANONICAL_TARGET, depending on the needs. Using AC_CANONICAL_TARGET is enough to run the two other macros.

From the documentation for the canonical environments:
case $target in
i386-*-mach* | i386-*-gnu*)
             obj_format=aout emulation=mach bfd_gas=yes ;;
i960-*-bout) obj_format=bout ;;
esac

Note that the above example uses $target because it's taken from a tool which can be built on some architecture ($build), run on another ($host), but yet handle data for a third architecture ($target). Such tools are usually part of a compiler suite, they generate code for a specific $target.

However $target should be meaningless for most packages. If you want to base a decision on the system where your program will be run, make sure you use the $host variable.
2006-03-19 05:27:22 +00:00
Sam Lantinga
ce4f2cc3d8 Implemented RISC OS and OS/2 desktop resolution code (thanks to Alan and Doodle) 2006-03-18 22:42:09 +00:00
Sam Lantinga
eacad52dc2 EXTRA_LDFLAGS are the linker flags and libraries needed to build SDL.
SDL_LIBS are the linker flags and libraries needed to build SDL applications.
SDL_STATIC_LIBS is set to SDL_LIBS by default.
2006-03-18 18:41:59 +00:00
Patrice Mandin
29e12046e6 I did not find in configure.in where SYSTEM_LIBS where set for other platforms, and why I did not have required extra libraries added in sdl-config, so I set it there 2006-03-17 19:54:39 +00:00
Sam Lantinga
886a75d257 *** empty log message *** 2006-03-16 00:35:21 +00:00
Sam Lantinga
e9e9f43bc0 Added current_w and current_h to the SDL_VideoInfo structure, which is set to the desktop resolution during video intialization, and then set to the current resolution when a video mode is set.
SDL_SetVideoMode() now accepts 0 for width or height and will use the current video mode (or the desktop mode if no mode has been set.)
2006-03-15 17:46:41 +00:00
Sam Lantinga
1eb921226d Fixed bug #33
Mike Frysinger wrote:
> with libsdl-1.2.9, some games (like bomberclone) started
> segfaulting in Gentoo
[...snip...]
> the last change in the last hunk:
[...snip...]
> if i change the statement to read:
> (table[which].blit_features & GetBlitFeatures()) == GetBlitFeatures()
> bomberclone no longer segfaults on my box

Alex Volkov wrote:
> The test "(table[which].blit_features & GetBlitFeatures()) ==
> table[which].blit_features)" is correct, and the previous
> "(table[which].cpu_mmx == SDL_HasMMX())" was actually broken.

I think there is potentially a slightly different cause of the above problem.
During the introduction of the Altivec code, the blit_table struct field
'alpha' got changed from a straightforward enum to a bitmask, which makes
perfect sense by itself. However, now the table driven blitter selection code
in SDL_CalculateBlitN() can choose the wrong blitters when searching for a
NO_ALPHA blitter because of the following code:
    int a_need = 0;
    ...
    (a_need & table[which].alpha) == a_need &&
When searching through the normal_blit_2[] table, a SET_ALPHA blitter (like
Blit_RGB565_ARGB8888) can now be selected instead of a NO_ALPHA one, causing
alpha channel bits to appear in a non-alpha destination surface. I suppose this
could theoretically be an indirect cause of the segfault mentioned above.

I *think* this can be fixed by changing to
    int a_need = NO_ALPHA;
2006-03-15 15:47:49 +00:00
Sam Lantinga
ad970913d7 From: "Alex Volkov"
Date: Thu, 10 Nov 2005 21:53:40 -0500
Subject: [SDL] BUG[?]: 32bpp RGBA->RGB colorkey blit, no SDL_SRCALPHA

It seems there is either a documentation vs. reality mismatch or a real bug
in SDL_blit_N.c:BlitNtoNKey().
The exact blit in question is a 32bpp RGBA->RGB, where RGBA has SDL_COLORKEY
and *no* SDL_SRCALPHA flags. The doc in SDL_video.h states:
* RGBA->RGB:
*     SDL_SRCALPHA not set:
*       copy RGB.
*       if SDL_SRCCOLORKEY set, only copy the pixels matching the
*       RGB values of the source colour key, ignoring alpha in the
*       comparison.

BlitNtoNKey(), however, forgets to "ignore alpha in the comparison". The
documentation makes perfect sense, so I think it is the code that is faulty.

The attached patch corrects the code.
2006-03-15 15:43:15 +00:00
Sam Lantinga
6b1646bc1f Fixed bug #15
SDL_blit_A.mmx-speed.patch.txt --
        Speed improvements and a bugfix for the current GCC inline mmx
        asm code:
        - Changed some ops and removed some resulting useless ones.
        - Added some instruction parallelism (some gain)
        The resulting speed on my Xeon improved upto 35% depending on
        the function (measured in fps).
        - Fixed a bug where BlitRGBtoRGBSurfaceAlphaMMX() was
        setting the alpha component on the destination surfaces (to
        opaque-alpha) even when the surface had none.

SDL_blit_A.mmx-msvc.patch.txt --
        MSVC mmx intrinsics version of the same GCC asm code.
        MSVC compiler tries to parallelize the code and to avoid
        register stalls, but does not always do a very good job.
        Per-surface blending MSVC functions run quite a bit faster
        than their pure-asm counterparts (upto 55% faster for 16bit
        ones), but the per-pixel blending runs somewhat slower than asm.

- BlitRGBtoRGBSurfaceAlphaMMX and BlitRGBtoRGBPixelAlphaMMX (and all
variants) can now also handle formats other than (A)RGB8888. Formats
like RGBA8888 and some quite exotic ones are allowed -- like
RAGB8888, or actually anything having channels aligned on 8bit
boundary and full 8bit alpha (for per-pixel alpha blending).
The performance cost of this change is virtually 0 for per-surface
alpha blending (no extra ops inside the loop) and a single non-MMX
op inside the loop for per-pixel blending. In testing, the per-pixel
alpha blending takes a ~2% performance hit, but it still runs much
faster than the current code in CVS. If necessary, a separate function
with this functionality can be made.

This code requires Processor Pack for VC6.
2006-03-15 15:39:29 +00:00
Ryan C. Gordon
f24d7d8095 Quartz implementation for SDL_DisplayYUVOverlay() was returning non-zero on
error, instead of zero, contrary to documentation.

    Fixes Bugzilla #165.
2006-03-15 05:52:31 +00:00
Sam Lantinga
0f90b82189 Added disk/dummy audio and dummy video to the Visual CE projects 2006-03-15 04:32:49 +00:00
Sam Lantinga
03a8f8b159 *** empty log message *** 2006-03-15 04:29:35 +00:00
Sam Lantinga
4343a58138 *** empty log message *** 2006-03-15 03:50:34 +00:00
Ryan C. Gordon
52e237c438 Corrected dummy audio callback firing to be realistic, cleaned up tabs. 2006-03-14 19:12:49 +00:00
Sam Lantinga
2f442b4b09 WIN32 is no longer defined on Windows builds 2006-03-14 17:33:33 +00:00
Sam Lantinga
6f4de63dec Added disk and dummy drivers to the Visual C++ projects 2006-03-14 17:21:49 +00:00
Sam Lantinga
5cf1524725 *** empty log message *** 2006-03-14 16:20:28 +00:00
Sam Lantinga
9491ae58df By default all the real targets have dummy audio/video and disk audio. 2006-03-14 16:19:32 +00:00
Ryan C. Gordon
58b18d03af Implemented dummy audio driver.
Fixes Bugzilla #161.
2006-03-14 08:53:33 +00:00
Ryan C. Gordon
1d1702a6bd Fixed cut-and-paste error in DC audio target. 2006-03-14 08:35:39 +00:00
Sam Lantinga
0d42fc151d Updated CodeWarrior export list with SDL_iconv 2006-03-14 08:01:30 +00:00
Sam Lantinga
dc991f4f84 Updated MacOS Classic and MacOS X exports list 2006-03-14 07:55:40 +00:00
Sam Lantinga
04576001ed The check for UTF-* isn't needed anymore since UTF-8 has the same code range. 2006-03-14 07:45:15 +00:00
Sam Lantinga
f783145e4f Fixed bug #67
Re-enable OpenGL window resetting code for the windib driver
2006-03-14 07:40:33 +00:00
Sam Lantinga
9dca113b1c Fixed bug #124
Print Screen key events weren't reported on Windows
2006-03-14 07:06:06 +00:00
Sam Lantinga
a23a0d8b52 Fixed bug #38
I'm using SDL 1.2.9 with Visual C++ 7.0 on Windows 2000.

Here's the setup: my game starts in a window, with
SDL_WM_GrabInput(SDL_GRAB_ON) to constrain the cursor to the game window. The
mouse cursor is outside of the window when the game launches, and when the
window appears the cursor is grabbed and placed at the top left corner of the
inside of the game window. At this point, if I click the mouse without moving
it, the SDL_MOUSEBUTTONDOWN event's mouse coordinates are (65535,65535).
2006-03-14 06:00:30 +00:00
Sam Lantinga
b12fa835ee Fixed bug #46
Date: Fri, 13 Jan 2006 18:09:45 -0500
From: mhall4400 vipmail kvcc edu
Subject: Possible SDL bug

Greetings

I believe Ive come across a bug in your SDL product (1.2.9), in the CD-ROM
control portion of the library.

When calling the SDL_CDPlay() function to play the last track of a CD using the
offset and length from an SDL_CD structure generated by SDL_CDOpen(), I get the
following error from a call to SDL_Error():

mciSendCommand() error: The specified parameter is out of range for the
specified command.

The code returning the error is:
SDL_CDPlay(g_playingDriveSDLCD,
g_playingDriveSDLCD->track[trackNumberInt].offset,
g_playingDriveSDLCD->track[trackNumberInt].length)

Subtracting one from the length of the provided length seems to repair the
problem:
SDL_CDPlay(g_playingDriveSDLCD,
g_playingDriveSDLCD->track[trackNumberInt].offset,
(g_playingDriveSDLCD->track[trackNumberInt].length) - 1)

Ive replicated this problem on Windows 98 SE (several months since last
patch), fully-patched Window ME, seldom-patched Windows XP SP1, and
fully-patched Windows XP SP2.

While investigating the issue, I came across a line in your librarys win32
source code in file \src\cdrom\win32\SDL_syscdrom.c (source code zip archive
from your download page), function: SDL_SYS_CDGetTOC(), line 226 where you add
1 to the value for length to fix MCI last track length bug.  This may be the
source of the issue (because subtracting 1 from the length seems to resolve the
issue).  Microsoft may have patched the referenced bug since you wrote that
line.

Mike Hall
2006-03-14 05:34:39 +00:00
Sam Lantinga
15ec416643 (patch tweaked a bit)
Date: Tue, 14 Mar 2006 03:30:11 +0000
From: Peter Mulholland
Subject: [SDL] Windows MessageBox() strangeness fixes

Hello all,

I *think* this should fix the issues that people were seeing with
MessageBox() not working and therefore assert() on mingw/msvc. Forgive
me if i've screwed up making the diff file - I'm a total newb when it
comes to things like CVS and diff.

It modifies a few files as I saw that FlushMessageQueue() was in both
the windx5 and windib driver, so I moved this into wincommon. It was
also in the gapi driver, so I changed that too. The function is now
WIN_FlushMessageQueue() in src/video/wincommon/SDL_syswm.c
2006-03-14 04:00:03 +00:00
Sam Lantinga
43f3300313 *** empty log message *** 2006-03-14 03:04:50 +00:00
Sam Lantinga
84f5e115fd CFLAGS are separate from EXTRA_CFLAGS
Fixed iconv.h detection on Cygwin32
2006-03-14 02:46:26 +00:00
Sam Lantinga
c43f4f0dcb Add the NAS library directory, since X11 is dynamically loaded now...
FIXME: See if we can dynamically load NAS
2006-03-13 18:01:34 +00:00
Sam Lantinga
b6313a8a66 RFC 3629 restricted the range of characters encoded with UTF-8 to 0000-10FFFF (the UTF-16 accessible range) 2006-03-13 17:25:44 +00:00
Sam Lantinga
d9374eb0ea Updated by Ryan Gordon 2006-03-13 16:56:01 +00:00
Sam Lantinga
b61fcd32f3 *** empty log message *** 2006-03-13 05:44:14 +00:00
Sam Lantinga
9e352303d7 Updated MacOS Classic build 2006-03-13 05:36:42 +00:00
Sam Lantinga
3f35ae60ac The exports file isn't necessary on BeOS anymore 2006-03-13 04:35:59 +00:00
Sam Lantinga
d352cae418 Added SDL_iconv.c to the Embedded Visual C++ projects
Added missing target configurations
2006-03-13 02:35:32 +00:00
Sam Lantinga
2650f98d04 *** empty log message *** 2006-03-13 02:26:47 +00:00
Sam Lantinga
3227f8dde8 Added _strnicmp support 2006-03-13 02:12:39 +00:00
Sam Lantinga
ef9f176174 Added SDL_iconv.c to MPW Makefile 2006-03-13 02:12:15 +00:00
Sam Lantinga
2b03f1c722 Win32 fixes 2006-03-13 02:06:33 +00:00
Sam Lantinga
b23eae2079 Added SDL_iconv.c to the Dreamcast Makefile 2006-03-13 01:47:03 +00:00
Sam Lantinga
576291efb0 The Win32 exports file isn't used by mingw anymore 2006-03-13 01:43:18 +00:00
Sam Lantinga
165dd0af40 Fixed bug #112
Added SDL_GetKeyRepeat()
2006-03-13 01:41:32 +00:00
Sam Lantinga
cdcf935e32 Added SDL_iconv.c to the Visual C++ projects 2006-03-13 01:40:49 +00:00
Sam Lantinga
a50362ff8f Fixed bug #139
The text in SDL_WM_SetCaption() is in UTF-8 encoding.
2006-03-13 01:33:58 +00:00