Commit Graph

1140 Commits

Author SHA1 Message Date
Sam Lantinga
b03ae03cf8 Fixed bug #197
On servers with the composite extension enabled, visuals with 32-bit depth
have an alpha mask.  This is pretty neat, but SDL needs a bit more work to
handle these properly, so for now, we'll just use 24 bit depth visuals.
2006-04-17 04:54:08 +00:00
Sam Lantinga
4ffa1daabc Make sure code is only compiled if the appropriate subsystem is enabled 2006-04-14 04:46:47 +00:00
Sam Lantinga
fc4fac2473 Fixed compile error 2006-04-13 14:27:58 +00:00
Sam Lantinga
720dbb7aee Fixed bug #55
From Christian Walther:
When writing my patch for #12, I ended up doing all sorts of changes to the way
application/window activating/deactivating is handled in the Quartz backend,
resulting in the attached patch. It does make the code a bit cleaner IMHO, but
as it might be regarded as a case of "if it ain't broken, don't fix it" I'd
like to hear other people's opinion about it. Please shout if some change
strikes you as unnecessary or wrong, and I'll explain the reasons behind it. As
far as I tested it, it does not introduce any new bugs, but I may well have
missed some.

- The most fundamental change (that triggered most of the others) is irrelevant
for the usual single-window SDL applications, it only affects the people who
are crazy enough to display other Cocoa windows alongside the SDL window (I'm
actually doing this currently, although the additional window only displays
debugging info and won't be present in the final product): Before, some things
were done on the application becoming active, some on the window becoming key,
and some on the window becoming main. Conceptually, all these actions belong to
the window becoming key, so that's what I implemented. However, since in a
single-window application these three events always happen together, the
previous implementation "ain't broken".

- This slightly changed the meaning of the SDL_APPMOUSEFOCUS flag from
SDL_GetAppState(): Before, it meant "window is main and mouse is inside window
(or mode is fullscreen)". Now, it means "window is key and mouse is inside
window (or mode is fullscreen)". It makes more sense to me that way. (See
http://developer.apple.com/documentation/Cocoa/Conceptual/WinPanel/Concepts/ChangingMainKeyWindow.html
for a discussion of what key and main windows are.) The other two flags are
unchanged: SDL_APPACTIVE = application is not hidden and window is not
minimized, SDL_APPINPUTFOCUS = window is key (or mode is fullscreen).

- As a side effect, the reorganization fixes the following two issues (and
maybe others) (but they could also be fixed in less invasive ways):

* A regression that was introduced in revision 1.42 of SDL_QuartzVideo.m
(http://libsdl.org/cgi/cvsweb.cgi/SDL12/src/video/quartz/SDL_QuartzVideo.m.diff?r1=1.41&r2=1.42)
(from half-desirable to undesirable behavior):

Situation: While in windowed mode, hide the cursor using
SDL_ShowCursor(SDL_DISABLE), move the mouse outside of the window so that the
cursor becomes visible again, and SDL_SetVideoMode() to a fullscreen mode.
What happened before revision 1.42: The cursor is visible, but becomes
invisible as soon as the mouse is moved (half-desirable).
What happens in revision 1.42 and after (including current CVS): The cursor is
visible and stays visible (undesirable).
What happens after my patch: The cursor is invisible from the beginning
(desirable).

* When the cursor is hidden and grabbed, switch away from the application using
cmd-tab (which ungrabs and makes the cursor visible), move the cursor outside
of the SDL window, then cmd-tab back to the application. In 1.2.8 and in the
current CVS, the cursor is re-grabbed, but it stays visible (immovable in the
middle of the window). With my patch, the cursor is correctly re-grabbed and
hidden. (For some reason, it still doesn't work correctly if you switch back to
the application using the dock instead of cmd-tab. I haven't been able to
figure out why. I can step over [NSCursor hide] being called in the debugger,
but it seems to have no effect.)

- The patch includes my patch for #12 (it was easier to obtain using cvs diff
that way). If you apply both of them, you will end up with 6 duplicate lines in
SDL_QuartzEvents.m.
2006-04-13 14:17:48 +00:00
Sam Lantinga
5587c232db Fixed bug #179
SDL_SemValue() always returns 0. That's because the underlying POSIX
sem_getvalue() is implemented as a noop in Mac OS X. Apart from that,
semaphores do work properly (at least according to test/testsem), so I'm not
sure if this is worth fixing at all.
2006-04-13 14:04:13 +00:00
Sam Lantinga
b0519469db Fixes bug #195:
The proper name of Apple's operating system is "Mac OS X" not "MacOS X", as can
bee seen in many places, for example http://www.apple.com/macosx/). This
contrasts the naming of the old operating system, which was called "MacOS" and
today is often refered to as "MacOS Classic".

The attached patches fixes the misuse of the name "MacOS X" in both the SDL12
and sdlweb CVS modules.
2006-04-13 13:08:26 +00:00
Sam Lantinga
69f5e3c82f Patch from Alex to fix reverted code 2006-04-12 14:19:11 +00:00
Sam Lantinga
62630e91cd *** empty log message *** 2006-03-31 06:30:16 +00:00
Sam Lantinga
a1a6152214 Date: Wed, 29 Mar 2006 17:26:55 +0200 CEST
From: "Fran���is Revol"
Subject: [SDL] BeOS port fix: PrintScreen key crashing

It seems the latest SDL crashes when someone hits the PrtScrn key in
ZETA (BeOS R6), somewhere it gets a negative value as key code (or a
big unsigned maybe ?), and uses it as an index in the keysym table...
I'll investigate the cause for the negative value, but it's always
better to check for bounds correctly when indexing a table. The
attached diff fixes it.

Fran���is Revol
--
Software Architect
yellowTAB GmbH
2006-03-31 06:16:20 +00:00
Sam Lantinga
63695e2f76 Fixed some ultra-pedantic gcc warnings 2006-03-24 06:10:24 +00:00
Ryan C. Gordon
ece098ba7b SDL_X11_LoadSymbols() was reporting success when required symbols weren't
found!
2006-03-24 03:49:37 +00:00
Ryan C. Gordon
3da774fbe3 Fixed compiler warning. 2006-03-23 22:11:29 +00:00
Sam Lantinga
e1ae9a0b81 Fixed bug #175
Removed obsolete .cvsignore files... whee!
2006-03-23 21:39:58 +00:00
Ryan C. Gordon
21c1fa5e46 More dynamic X11 mangling...should fix NetBSD builds. And hopefully doesn't
break 6 other platforms.  :)
2006-03-23 08:43:37 +00:00
Sam Lantinga
967ecbf1e0 Need time.h for nanosleep too... 2006-03-23 08:37:36 +00:00
Sam Lantinga
0257a5560c *** empty log message *** 2006-03-23 07:38:32 +00:00
Ryan C. Gordon
ebfefa19a9 Updated my email address. 2006-03-23 06:48:12 +00:00
Ryan C. Gordon
9c54c7ce36 Consolidate all the X11 libraries, so you don't have to update 12 different
places in the source when adding a new one. Also handles build systems that
 don't define a given library.
2006-03-23 02:47:56 +00:00
Ryan C. Gordon
10b3574ab7 Close off warning about setAppleMenu on Mac OS X 10.4 SDK.
Fixes Bugzilla #97.
2006-03-22 22:33:23 +00:00
Sam Lantinga
e7b76ca5dd Don't detect Altivec on MacOS X Intel 2006-03-22 22:29:44 +00:00
Ryan C. Gordon
b1bcd26c92 Xrandr support in the X11 target.
Fixes Bugzilla #109, and as a bonus, Bugzilla #145, too!
2006-03-22 11:13:58 +00:00
Sam Lantinga
aa79b0594b Improved DirectFB install detection 2006-03-22 09:18:10 +00:00
Sam Lantinga
da8044f050 *** empty log message *** 2006-03-22 09:13:10 +00:00
Ryan C. Gordon
4a8da61422 Patched to compile on 32-bit X11, I think. 2006-03-22 08:57:37 +00:00
Sam Lantinga
248ff92e7e Date: Tue, 4 Mar 2003 15:05:31 -0800
From: "Jim"
Subject: [SDL] Frame Buffer patches...

 Okay I'm new at patch generation - so please tell me if there's a better way
 I could have done this.

 Attached are two patch files generated with 'cvs diff -u'

 SDL-fb-open-lock.patch applies to SDL_fbvideo.c
    Modifies the open loop to check /dev/fb/0 found on devfs...

    Modifies the lock code to return failure if the current virtual terminal
 is not the one opened for frame buffer writing...
   Lock would hang forever if switched away (ctrl-alt-F1) ...

 SDL-fb-mousedrv-screensave.patch applies to SDL_fbevents.c
    Switches default mouse mode based on SDL_MOUSEDRV - currently only
 accepts PS2 - otherwise default is MS Mouse.

    When the screen is switched - exisiting code (wrapped in ifdef
 SAVE_SCREEN_COTENTS) would save the wrong bit of the screen....
     ( I run frame buffer 1600x1200, the size I requested was 800x600 - the
 save would save the top 800 lines (non biased) and restore them... Adding
 screen->offset fixed that )

    However, if that option is not set, then a call to SDL_UpdateRect (full
 screen) is made. (which may have had it's contents changed since the screen
 is not entirely locked because of lock-failure patch)

 Jim

[patches slightly tweaked for SDL 1.2.10]
2006-03-22 07:48:22 +00:00
Sam Lantinga
fd7f83dd28 Fixed bug #61
Date: Mon, 24 Feb 2003 13:35:11 +0800
From: "Leonidas"
Subject: [SDL] Re: Trigger mouse wheel event -- not in X-environment

I have looked into the codes for the IMPS/2 mouse wheel mode of fbcon driver.
But I found something weird.

Here's the original codes to set a mouse device into IMPS/2 mode in libSDL.
In the file src/video/fbcon/SDL_fbevents.c
In function static int set_imps2_mode(int fd)
...
 Uint8 set_imps2[] = {0xf3, 200, 0xf3, 100, 0xf3, 80};
 Uint8 reset = 0xff;
 fd_set fdset;
 struct timeval tv;
 int retval = 0;

 // Set mouse device fd into IMPS/2 mode
 if ( write(fd, &set_imps2, sizeof(set_imps2)) == sizeof(set_imps2) ) {
  // ??? then RESET it..???
  if (write(fd, &reset, sizeof (reset)) == sizeof (reset) ) {
   retval = 1;
  }
 }
...........

Since it sets IMPS/2 mode then reset it, so you will never get a mouse into
IMPS/2 mode to use its wheel.
What I did to make the wheel usable is remove the RESET codes.
....
 if ( write(fd, &set_imps2, sizeof(set_imps2)) == sizeof(set_imps2) ) {
    /*
    if (write(fd, &reset, sizeof (reset)) == sizeof (reset) ) {
    }
   */
   retval = 1;
 }
....
And in FB_OpenMouse(_THIS)
Make the device /dev/psaux to be setted into imps2 mode  such that it can be
detected its a imps/2 mouse or not.
(my mouse device is on ps2, but the codes only set /dev/input/mice device
originally)
Then I have done, I can use the mouse wheel when SDL uses frame buff driver.

I dont exactly know I did right or wrong, I just change it for my usuage.
Correct me please, if I did something wrong.

Best regards,
Li Tsung Lin
IAP Product Dept. Engineer
EeRise Corp. (Image Processing System, Computer Vision System)
Hsin Tien, Taipei Hsien, Taiwan, R.O.C.
2006-03-22 07:22:40 +00:00
Sam Lantinga
aecc79b780 *** empty log message *** 2006-03-22 07:10:38 +00:00
Sam Lantinga
32ee00ef9d Fixed bug #50
Using ctrl-alt-fn for flipping instead of alt-fn may help a few games that
actually use that key combination.

[Note: This is also consistent with X11 on the Linux console]
2006-03-22 06:43:25 +00:00
Sam Lantinga
f4023ae70f The exports file is no longer used by the Xcode project 2006-03-22 05:50:56 +00:00
Sam Lantinga
083c7dcb34 GLX_STEREO doesn't have a parameter 2006-03-22 05:09:27 +00:00
Ryan C. Gordon
a9551bd533 Whoops, that shouldn't have snuck in there. 2006-03-22 05:01:49 +00:00
Ryan C. Gordon
eb3f189e59 Updated dynamic X11 code. See details in Bugzilla #170. 2006-03-22 05:00:59 +00:00
Sam Lantinga
310df05e46 *** empty log message *** 2006-03-21 16:04:44 +00:00
Sam Lantinga
2c5f72ddbf Good idea, renaming OpenBSD audio to BSD audio. 2006-03-21 09:33:54 +00:00
Sam Lantinga
7978390e19 Fixed bug #52
Integrated most of the NetBSD and DragonFly patches at:
ftp://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/devel/SDL/patches/

Thanks to Thomas Klausner for defailed information on the patches
2006-03-21 08:54:50 +00:00
Sam Lantinga
56345b8c5d Fixed bug #18
Reordered the audio thread loop so there's no initial wait.
2006-03-21 06:45:47 +00:00
Ryan C. Gordon
66c1ba436e Try to fill the hardware audio buffer immediately.
Fixes Bugzilla #18.
2006-03-21 00:56:10 +00:00
Ryan C. Gordon
0977bbb469 Keep mouse cursor state sane on focus change in Quartz driver.
Fixes Bugzilla #12.
2006-03-21 00:35:22 +00:00
Sam Lantinga
c138957110 ------- Comment #8 From Sergey Svishchev 2006-03-19 12:35 [reply] -------
I've made a similar patch to BSD-specific USB driver, please review it too.
2006-03-20 08:00:07 +00:00
Sam Lantinga
3180d2fb52 Fixed bug #113:
Date: Sat, 16 Apr 2005 08:39:22 +1000
From: "Eric Mangold"
Subject: [SDL] Window manager does not show SDL window titles

Hello,

I have an issue with SDL-using applications and the sawfish window manager.

The problem is that SDL windows do not show the window caption. My gnome
panel *does* show the window name, but the actual sawfish window frame
shows no caption at all. All other non-SDL applications that I use work
fine.

I tried a couple other window managers, and they *were* able to show the
SDL window captions correctly. Though there many be other WMs that can't.

I believe the problem is that SDL is using the UTF8_STRING type for the
window's WM_NAME and WM_ICON properties. In fact, WM_NAME and WM_ICON are
supposed to set to a TEXT type, usually STRING (ISO 8859-1).
The property names _NET_WM_NAME and _NET_WM_ICON_NAME should be used to
store the UTF8_STRING versions of the window title and icon name.

You can see the properties I refer to with a command like this:
xprop|grep -e "WM.*NAME"

Please note the freedesktop.org standard:
http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#id2506954

This page talks a little bit about the history of these properties. Just
search down the page for "WM_NAME".
http://www.cl.cam.ac.uk/~mgk25/unicode.html

Please let me know if I can be of any assistance in resolving this issue.

Thanks,
Eric Mangold
2006-03-20 07:31:36 +00:00
Sam Lantinga
a5aee75297 Fixed bug #90
The palette -> RGBA blit wasn't following the rule:
 * RGB->RGBA:
 *     SDL_SRCALPHA not set:
 *      copy RGB, set destination alpha to source per-surface alpha value.
2006-03-20 06:37:58 +00:00
Sam Lantinga
562ac5c5fb Fixed bug #84
Actually implemented banked update for SVGAlib
2006-03-19 19:03:40 +00:00
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
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
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