Commit Graph

71 Commits

Author SHA1 Message Date
Sam Lantinga
1764e75bcc Possibly fixed bug #601, definitely fixed a potential issue with threads
stopping and starting in rapid succession.
2009-09-23 06:37:27 +00:00
Sam Lantinga
6215039632 Fixed bug #570
SDL_SemWaitTimeout in src/thread/generic/SDL_syssem.c line 179 (SVN trunk):

--sem->count;

should be

if (retval == 0) {
    --sem->count;
}

Without this, sem->count will underflow on timeout effectively breaking the
semaphore. It appears that the implementation has been wrong since the initial
revision.
2009-09-21 07:35:06 +00:00
Sam Lantinga
6bb854b1d4 Removed outdated Dreamcast support 2009-09-19 07:21:22 +00:00
Sam Lantinga
5bee043a89 Removed outdated OS/2 support 2009-09-19 06:43:45 +00:00
Sam Lantinga
306f1dc431 Von: Thomas Zimmermann
Betreff: [SDL] [PATCH] Make static variables const
Datum: Tue, 19 May 2009 19:45:37 +0200

Hi,

this is a set of simple changes which make some of SDL's internal static
arrays constant. The purpose is to shrink the number of write-able
static bytes and thus increase the number of memory pages shared between
SDL applications.

The patch set is against trunk@4513. Each of the attached patch files is
specific to a sub-system. The set is completed by a second mail, because
of the list's 40 KiB limit.

The files readelf-r4513.txt and readelf-const-patch.txt where made by
calling 'readelf -S libSDL.so'. They show the difference in ELF sections
without and with the patch. Some numbers measured on my x86-64:

Before

 [13] .rodata           PROGBITS         00000000000eaaa0  000eaaa0
      0000000000008170  0000000000000000   A       0     0     32
 [19] .data.rel.ro      PROGBITS         00000000003045e0  001045e0
      00000000000023d0  0000000000000000  WA       0     0     32
 [23] .data             PROGBITS         00000000003076e0  001076e0
      0000000000004988  0000000000000000  WA       0     0     32

After

 [13] .rodata           PROGBITS         00000000000eaaa0  000eaaa0
      0000000000009a50  0000000000000000   A       0     0     32
 [19] .data.rel.ro      PROGBITS         0000000000306040  00106040
      0000000000002608  0000000000000000  WA       0     0     32
 [23] .data             PROGBITS         0000000000309360  00109360
      0000000000002e88  0000000000000000  WA       0     0     32

The size of the write-able data section decreased considerably. Some
entries became const-after-relocation, while most of its content went
straight into the read-only data section.

Best regards, Thomas
2009-06-03 04:37:27 +00:00
Sam Lantinga
34ec22eedd indent 2009-02-17 05:57:54 +00:00
Sam Lantinga
41cfcacafc Date: Thu, 27 Dec 2007 07:38:25 +0000
From: John Bartholomew
Subject: [SDL] SDL Semaphore implementation broken on Windows?
Hi,

Over the past couple of days, I've been battling with SDL, SDL_Mixer and SMPEG to try to find an audio hang bug.  I believe I've found the problem, which I think is a race condition inside SDL's semaphore implementation (at least the Windows implementation).  The semaphore code uses Windows' built in semaphore functions, but it also maintains a separate count value.  This count value is updated with bare increment and decrement operations in SemPost and SemWaitTimeout - no locking primitives to protect them.

In tracking down the apparent audio bug, I found that at some point a semaphore's count value was being decremented to -1, which is clearly not a valid value for it to take.

I'm still not certain exactly what sequence of operations is occuring for this to happen, but I believe that overall it's a race condition between a thread calling SemPost (which increments the count) and the thread on the other end calling SemWait (which decrements it).

I will try to make a test case to verify this, but I'm not sure if I'll be able to   (threading errors being difficult to reproduce even in the best    circumstances).

However, assuming this is the cause of my problems, there is a very
simple fix:
Windows provides InterlockedIncrement() and InterlockedDecrement()
functions to perform increments and decrements which are guaranteed to be atomic.  So the fix is in thread/win32/SDL_syssem.c: replace occurrences of --sem->count with InterlockedDecrement(&sem->count); and replace occurrences of ++sem->count with InterlockedIncrement(&sem->count);

This is using SDL v1.2.12, built with VC++ 2008 Express, running on a
Core 2 duo processor.
2009-02-17 05:39:18 +00:00
Sam Lantinga
befb0f7f42 Updated copyright date 2008-12-08 00:27:32 +00:00
Sam Lantinga
825b0b08f1 Fixed Bugzilla bug #205
Removed SDL_KillThread() from the API, as it isn't safe on many platforms.
2008-11-24 00:18:42 +00:00
Sam Lantinga
92c3984118 Final merge of Google Summer of Code 2008 work...
Bring SDL to iPhone and iPod Touch
by Holmes Futrell, mentored by Sam Lantinga
2008-10-04 06:46:59 +00:00
Sam Lantinga
9c4b835e49 Final merge of Google Summer of Code 2008 work...
Port SDL 1.3 to the Nintendo DS
by Darren Alton, mentored by Sam Lantinga
2008-08-27 15:10:03 +00:00
Ryan C. Gordon
04d6e513a9 Removed EPOC port from the 1.3 branch. 2007-06-15 15:54:07 +00:00
Ryan C. Gordon
b94f08253a Removed AmigaOS code for 1.3 branch. 2006-10-29 04:09:17 +00:00
Sam Lantinga
6bc598ea61 SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head. 2006-07-10 21:04:37 +00:00
Ryan C. Gordon
1890f79cea Make sure sem_wait didn't return early with EINTR. Fixes Bugzilla #231. 2006-05-17 23:42:48 +00:00
Patrice Mandin
7c58460af7 Add missing include file 2006-05-12 16:25:04 +00:00
Sam Lantinga
1195dd8133 Fixed bug #215
The current SVN trunk is missing the SDLCALL specifier at numerous locations.

It has to be added for all (possibly user provided) callbacks.

I stumbled over this while creating a makefile for the OpenWatcom compiler for
Win32.
2006-05-07 03:40:06 +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
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
63695e2f76 Fixed some ultra-pedantic gcc warnings 2006-03-24 06:10:24 +00:00
Sam Lantinga
e1ae9a0b81 Fixed bug #175
Removed obsolete .cvsignore files... whee!
2006-03-23 21:39:58 +00:00
Sam Lantinga
870a0b4ab6 Fixed bug #150
memory leak in SDL_thread.c
2006-03-12 01:18:29 +00:00
Sam Lantinga
887d7dce86 Cleaning up warnings on MacOS X 2006-03-09 06:33:21 +00:00
Sam Lantinga
0fa63c4bba Enabled libc support on Win32, so we don't break binary compatibility in 1.2 2006-03-06 07:42:36 +00:00
Sam Lantinga
d1d0afa53e Fixed declarations to match mingw includes 2006-03-06 06:00:45 +00:00
Sam Lantinga
f496c3b272 Updated for Dreamcast KOS June 2005 snapshot:
http://cadcdev.sourceforge.net/svn/snapshots/
http://gamedev.allusion.net/softprj/kos/dcsetup.php
2006-03-02 13:16:02 +00:00
Sam Lantinga
26df4ca527 Date: Wed, 01 Mar 2006 10:14:31 +0000
From: "alan buckley"
Subject: Re: Updating SDL for RISC OS

I've attached a zip file with three diffs to get SDL to build on RISC OS.

configure.in.diff and makedeps.sh.diff have been modified so that they
can build the assembler file in video/riscos. You may want to double
check these as I don't know a lot about unix shell programming.
(I've tested them cross-compiling on cygwin).

sdlsysthread.diff is the changes required to SDL_systhread.c for RISC
OS. As you suspected with these changes in place you can delete the
RISC OS specific threading code in thread/riscos.

I've also renamed SDL_riscosASM.s to SDL_riscosASM.S, but I'm never
quite sure how to rename files in CVS, so if you could to this it would
be appreciated.
2006-03-02 03:24:20 +00:00
Sam Lantinga
cdf944a643 Fixed some OpenWatcom warnings 2006-02-26 19:37:40 +00:00
Sam Lantinga
aaf71291d0 Updated OS/2 build, yay! 2006-02-26 19:30:21 +00:00
Sam Lantinga
2861771aa5 SDL_windows.h is no longer necessary 2006-02-25 22:18:25 +00:00
Sam Lantinga
190b425364 Use consistent identifiers for the various platforms we support.
Make sure every source file includes SDL_config.h, so the proper system
headers are chosen.
2006-02-21 08:46:50 +00:00
Sam Lantinga
f05187e232 New configure-based build system. Still work in progress, but much improved 2006-02-16 10:11:48 +00:00
Sam Lantinga
769424426d More header massaging... works great on Windows. ;-) 2006-02-10 06:48:43 +00:00
Sam Lantinga
1e037cc218 Removed uses of stdlib.h and string.h 2006-02-07 09:29:18 +00:00
Sam Lantinga
02cc6c0f11 Use SDL_ prefixed versions of C library functions.
FIXME:
Change #include <stdlib.h> to #include "SDL_stdlib.h"
Change #include <string.h> to #include "SDL_string.h"
Make sure nothing else broke because of this...
2006-02-07 06:59:48 +00:00
Sam Lantinga
82bfaee73a It's now possible to build SDL without any C runtime at all on Windows,
using Visual C++ 2005
2006-02-06 08:28:51 +00:00
Sam Lantinga
f6f8aefcd1 Favor using pthread_mutexattr_settype() on Linux. 2006-02-03 06:33:54 +00:00
Sam Lantinga
808a16717c Updated copyright information and removed rcs id lines (problematic in branch merges)
I batch edited these files, so please let me know if I've accidentally removed anybody's
credit here.
2006-02-01 06:32:25 +00:00
Ryan C. Gordon
82bc351fbd Removed some old Mac OS X cruft.
Fixes Bugzilla #64.

--ryan.
2006-01-30 18:56:30 +00:00
Ryan C. Gordon
64a36c7f71 Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode,
updated project files, VS2005 support, VGA mode, more device support, etc,
 etc, etc.

Fixes Bugzilla #47 and #28.

--ryan.
2006-01-19 08:43:00 +00:00
Ryan C. Gordon
49944d1da9 Windows should use _beginthreadex() instead of CreateThread(), to avoid a
memory leak on each joined thread.
2006-01-04 21:01:49 +00:00
Ryan C. Gordon
406ef7dae9 OS/2 port!
This was mostly, if not entirely, written by "Doodle" and "Caetano":
    doodle@scenergy.dfmk.hu
    daniel@caetano.eng.br

--ryan.
2005-11-23 07:29:56 +00:00
Ryan C. Gordon
b76802c2a6 Date: Sat, 17 Sep 2005 13:38:49 +0200
From: Jon Daniel <forcemaster@gmx.net>
To: sdl@libsdl.org
Subject: [SDL] SDL_SemWaitTimeout patch for BeOS

The current SDL-1.2.9/src/thread/beos/SDL_syssem.c returns -1 if the
acquire_sem timeouts which according to the DocWiki is not correct.
I've added support for the B_TIMED_OUT and B_WOULD_BLOCK in the switch.

Jon Daniel
2005-09-27 11:27:38 +00:00
Sam Lantinga
babffe4274 Date: Fri, 15 Jul 2005 08:29:01 +0100
From: "alan buckley"
Subject: SDL Improved semiphore implementation for RISC OS (version 2)

I've attached a new version of the patch for the RISC OS
semaphore processing (in a zip file) that updates it to use
the improved semaphores support in UnixLiib.
2005-07-21 06:19:18 +00:00
Sam Lantinga
f37d4736d9 Date: Wed, 26 Jan 2005 13:37:09 GMT
From: Peter Naulls
Subject: RISC OS SDL Patches

Sam, I've attached a diff of the latest changes to libSDL for RISC OS
support.  These changes are by Alan Buckley and myself.

The most significant of these are:

  Optimised assembler blit rountines - I've attached the file
   src/video/riscos/SDL_riscosASM.s which is needed for this.

  Move to using /dev/dsp instead of its own audio implementation.
  This means that src/audio/riscos/SDL_drenderer.c should be removed

  Typo fixes.  Mainly correct spelling of "RISC OS", but some from elsewhere
  too.
2005-02-12 18:01:31 +00:00
Sam Lantinga
ea38599d62 Date: Fri, 25 Jun 2004 13:29:15 +0100
From: "alan buckley"
Subject: Modification for RISC OS version of SDL

Ive attached a zip file with the changes to this email, it contains the
following:

The file sdldiff.txt is the output from cvs diff u.  .
The directory thread/riscos contains all the new files to support threading.

Readme.riscos is a new readme file to add.
2004-09-17 13:20:10 +00:00
Sam Lantinga
32719e7429 Updated copyright information for 2004 (Happy New Year!) 2004-01-04 16:49:27 +00:00
Sam Lantinga
268729cc33 Fixed "dist" make target for newer versions of automake 2003-12-14 06:25:53 +00:00
Sam Lantinga
fd756e4973 Added initial support for Dreamcast (thanks HERO!) 2002-10-05 16:50:56 +00:00