No description
Find a file
Sam Lantinga 140163c34e Fixed bug #611
From  Tim Angus   2008-08-12 11:18:06

I'm one of the maintainers of ioquake3.org, an updated version of the
Quake 3 engine. Relatively recently, we moved ioq3 to use SDL as a
replacement for 95% of the platform specific code that was there. On the
whole it's doing a great job but unfortunately since the move we've been
getting complaints about the quality of the mouse input on the Windows
platform to the point where for many the game is unplayable. Put in
other terms, the current stable SDL 1.2 is basically not fit for purpose
if you need high quality mouse input as you do in a first person shooter.

Over the weekend I decided to pull my finger out and actually figure out
what's going on. There are basically two major problems. Firstly, when
using the "windib" driver, mouse input is gathered via the WM_MOUSEMOVE
message. Googling for this indicates that often this is known to result
in "spurious" and/or "missing" mouse movement events; this is the
primary cause of the poor mouse input. The second problem is that the
"directx" driver does not work at all in combination with OpenGL meaning
that you can't use DirectInput if your application also uses OpenGL. In
other words you're locked into using the "windib" driver and its poor
mouse input.

In order to address these problems I've done the following:

* Remove WM_MOUSEMOVE based motion event generation and replace with
calls to GetCursorPos which seems much more reliable. In order to
achieve this I've moved mouse motion out into a separate function that
is called once per DIB_PumpEvents.

* Remove the restriction on the "directx" driver being inoperable in
combination with OpenGL. There is a bug for this issues that I've
hijacked to a certain extent
(http://bugzilla.libsdl.org/show_bug.cgi?id=265). I'm the first to admit
I don't really understand why this restriction is there in the first
place. The commit message for the bug fix that introduced this
restriction (r581) isn't very elaborate and I couldn't see any other bug
tracking the issue. If anyone has more information on the bug that was
avoided by r581 it would be helpful as I/someone could then look into
addressing the problem without disabling the "directx" driver.

* I've also removed the restriction on not being allowed to use
DirectInput in windowed mode. I couldn't see any reason for this, at
least not from our perspective. I have my suspicions that it'll be
something like matching up the cursor with the mouse coordinates...

* I bumped up the DirectInput API used to version 7 in order to get
access to mouse buttons 4-7. I've had to inject a little bit of the DX7
headers into SDL there as the MinGW ones aren't up to date in this respect.

--HG--
branch : SDL-1.2
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%403572
2009-04-02 04:43:36 +00:00
build-scripts Tweaked fatbuild.sh so it works with install_name_tool. 2008-07-25 10:52:10 +00:00
docs Date: Tue, 05 Feb 2008 01:41:08 -0500 2008-02-26 10:50:28 +00:00
include Hello. 2009-04-02 04:06:55 +00:00
src Fixed bug #611 2009-04-02 04:43:36 +00:00
test Date: Fri, 6 Mar 2009 12:41:17 -0800 2009-03-17 03:58:53 +00:00
acinclude.m4 Fixed building DLL on Windows 2006-03-25 20:40:30 +00:00
autogen.sh Added yet another variant of autoconf to the list 2006-05-15 06:30:38 +00:00
Borland.html *** empty log message *** 2003-07-01 01:18:27 +00:00
Borland.zip *** empty log message *** 2003-07-01 01:18:27 +00:00
BUGS Removed the contents of the BUGS file, as most (all?) of the issues were 2007-02-14 10:40:24 +00:00
configure.in Fixed bug #611 2009-04-02 04:43:36 +00:00
COPYING This library is now available under the LGPL 2.1, the major change of which 2006-01-30 14:27:56 +00:00
CREDITS Added credits for the PS3 code 2009-04-02 04:09:40 +00:00
CWprojects.sea.bin Updated MacOS Classic version, added version resource to MPW build. 2007-12-31 03:04:31 +00:00
docs.html Added patch note for Sylvain's patch 2008-02-29 13:58:37 +00:00
INSTALL Date: Tue, 2 Mar 2004 11:34:54 +0100 2004-03-02 13:01:02 +00:00
Makefile.dc Date: Thu, 15 Jun 2006 14:19:47 +0200 (CEST) 2006-06-20 06:39:01 +00:00
Makefile.ds Added initial support for Nintendo DS, based on the work by Troy Davis (GPF) 2007-06-25 00:50:20 +00:00
Makefile.in Clean up the test directory for release 2007-12-31 06:18:12 +00:00
Makefile.minimal Fixed bug #171 2006-03-23 21:28:33 +00:00
MPWmake.sea.bin Updated MacOS Classic version, added version resource to MPW build. 2007-12-31 03:04:31 +00:00
README Added initial support for Nintendo DS, based on the work by Troy Davis (GPF) 2007-06-25 00:50:20 +00:00
README-SDL.txt Initial revision 2001-04-26 16:45:43 +00:00
README.AmigaOS Removed broken AmigaOS support. 2006-10-29 03:58:27 +00:00
README.BeOS Added a reminder on where to put libSDL.so 2006-02-18 07:21:42 +00:00
README.CVS Info on Subversion repository access. 2006-04-26 23:17:39 +00:00
README.DC *** empty log message *** 2006-03-02 13:26:24 +00:00
README.MacOS Date: Sat, 8 Sep 2001 04:42:23 +0200 2001-09-11 19:00:18 +00:00
README.MacOSX Added information about gcc-fat.sh to README.MacOSX 2006-05-16 07:26:48 +00:00
README.MiNT Update Email 2009-01-15 22:16:04 +00:00
README.NanoX Date: Sat, 24 Aug 2002 22:20:01 -0600 2002-08-25 06:21:49 +00:00
README.NDS Added initial support for Nintendo DS, based on the work by Troy Davis (GPF) 2007-06-25 00:50:20 +00:00
README.OS2 Fixed thread callback calling conventions, updated OS/2 DLL name to SDL12.dll 2006-05-17 18:57:04 +00:00
README.PicoGUI Added initial support for PicoGUI (thanks Micah!) 2002-08-01 23:24:13 +00:00
README.Porting Added documentation on how to build a completely useless SDL library. :) 2006-03-08 08:30:17 +00:00
README.PS3 Hello. 2009-04-02 04:06:55 +00:00
README.QNX Date: Sat, 24 Apr 2004 15:13:32 +0300 2004-05-06 15:55:06 +00:00
README.Qtopia Added a README for Qtopia 2002-06-01 18:43:51 +00:00
README.RISCOS Update from Alan Buckley 2006-02-06 08:47:44 +00:00
README.SVN Merged r3674:3675 from trunk: comment in README about svn RSS feed. 2008-07-05 18:27:27 +00:00
README.Symbian Minor updates to the Symbian/S60 port, plus project files that weren't 2007-07-05 04:51:09 +00:00
README.Watcom ------- Comment #5 From Marc Peter 2006-06-25 18:03 [reply] ------- 2006-06-26 01:33:53 +00:00
README.WinCE Updated Windows CE/PocketPC support...adds GAPI driver, landscape mode, 2006-01-19 08:43:00 +00:00
README.wscons To: sdl@libsdl.org 2005-11-22 15:19:50 +00:00
sdl-config.in Date: Sat, 31 Mar 2007 16:39:52 +0200 2007-04-01 03:27:45 +00:00
sdl.m4 Damien Carbery fixed bug #542 2008-01-24 15:50:20 +00:00
sdl.pc.in Fixed bug #531 2008-01-01 15:23:59 +00:00
SDL.qpg.in Date: Fri, 18 Feb 2005 07:58:00 +0200 2006-01-29 09:19:55 +00:00
SDL.spec.in Date: Sat, 31 Mar 2007 16:39:52 +0200 2007-04-01 03:27:45 +00:00
symbian.zip Minor updates to the Symbian/S60 port, plus project files that weren't 2007-07-05 04:51:09 +00:00
TODO Fixes bug #195: 2006-04-13 13:08:26 +00:00
VisualC.html Added note about SDL_config.h 2007-07-12 05:30:17 +00:00
VisualC.zip Updated version to 1.2.13 2007-12-29 05:20:51 +00:00
VisualCE.zip Patch from Dmitry Yakimov to fix building on WinCE 2006-05-03 04:11:38 +00:00
Watcom-OS2.zip Fixed thread callback calling conventions, updated OS/2 DLL name to SDL12.dll 2006-05-17 18:57:04 +00:00
Watcom-Win32.zip ------- Comment #5 From Marc Peter 2006-06-25 18:03 [reply] ------- 2006-06-26 01:33:53 +00:00
WhatsNew Fixed bug #464 2007-12-29 06:08:17 +00:00

                         Simple DirectMedia Layer

                                  (SDL)

                                Version 1.2

---
http://www.libsdl.org/

This is the Simple DirectMedia Layer, a general API that provides low
level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL,
and 2D framebuffer across multiple platforms.

The current version supports Linux, Windows CE/95/98/ME/XP/Vista, BeOS,
MacOS Classic, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX,
and QNX.  The code contains support for Dreamcast, Atari, AIX, OSF/Tru64,
RISC OS, SymbianOS, Nintendo DS, and OS/2, but these are not officially
supported.

SDL is written in C, but works with C++ natively, and has bindings to
several other languages, including Ada, C#, Eiffel, Erlang, Euphoria,
Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP,
Pike, Pliant, Python, Ruby, and Smalltalk.

This library is distributed under GNU LGPL version 2, which can be
found in the file  "COPYING".  This license allows you to use SDL
freely in commercial programs as long as you link with the dynamic
library.

The best way to learn how to use SDL is to check out the header files in
the "include" subdirectory and the programs in the "test" subdirectory.
The header files and test programs are well commented and always up to date.
More documentation is available in HTML format in "docs/index.html", and
a documentation wiki is available online at:
	http://www.libsdl.org/cgi/docwiki.cgi

The test programs in the "test" subdirectory are in the public domain.

Frequently asked questions are answered online:
	http://www.libsdl.org/faq.php

If you need help with the library, or just want to discuss SDL related
issues, you can join the developers mailing list:
	http://www.libsdl.org/mailing-list.php

Enjoy!
	Sam Lantinga				(slouken@libsdl.org)