Commit Graph

3844 Commits

Author SHA1 Message Date
Sam Lantinga
3fdc17618c Fixed bug 1929 - SDL_Texture* from SDL_CreateTexture() causes GL_BindTexture() to segfault
Charles Huber

If SDL_CreateTexture() takes the !IsSupportedFormat() path it will return a SDL_Texture* with a NULL driverdata member.

If you then SDL_GL_BindTexture() this will cause a segfault in GL_BindTexture() when it unconditionally dereferences driverdata.
2013-06-25 20:21:31 -07:00
Sam Lantinga
924968d2d0 Updated timer test and fixed performance counter on Mac OS X 2013-06-23 22:19:38 -07:00
Sam Lantinga
d6084c5b7a Fixed bug 1913 - state->index may get negative in SDL_wave.c file.
Nitz

In function:
static Sint32
IMA_ADPCM_nibble(struct IMA_ADPCM_decodestate *state, Uint8 nybble)
{
 const Sint32 max_audioval = ((1 << (16 - 1)) - 1);
    const Sint32 min_audioval = -(1 << (16 - 1));
    const int index_table[16] = {
        -1, -1, -1, -1,
        2, 4, 6, 8,
        -1, -1, -1, -1,
        2, 4, 6, 8
    };
    const Sint32 step_table[89] = {
        7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31,
        34, 37, 41, 45, 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130,
        143, 157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408,
        449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282,
        1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327,
        3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630,
        9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350,
        22385, 24623, 27086, 29794, 32767
    };
    Sint32 delta, step;

    /* Compute difference and new sample value */
    step = step_table[state->index];
    // Some Code
}

Here step_table array have the state->index, which might be negative, so it is unsafe to assign this index to step_table array directly.
There would be a check before that to confirm its value.
2013-06-18 00:50:35 -07:00
Sam Lantinga
13787068f8 Fixed bug 1916 - SDL_Keysym contains a deprecated field for unicode which may be removed.
Philipp Wiesemann

SDL_Keysym contains a deprecated field for unicode which may be removed for SDL 2.0 release.

As far as I can tell the field is not set on all "major" platforms and therefore will not be useful for most users. Its existence in a public header therefore becomes (in my opinion) only confusing.
2013-06-18 00:39:47 -07:00
Sam Lantinga
d8b6e04ab1 Fixed SDL building with the minimal configuration 2013-06-13 22:10:10 -07:00
Sam Lantinga
7257f78f5a Added an arbitrary limit to the number of queued events so it doesn't grow unbounded. 2013-06-11 08:37:03 -07:00
Sam Lantinga
b214c5de74 Update the queued event wmmsg pointer to point to the queued event data. 2013-06-11 08:32:55 -07:00
Sam Lantinga
ad59525eca Made the SDL event queue dynamically allocated so we don't ever drop events. 2013-06-10 23:24:02 -07:00
Sam Lantinga
61d2aee816 Check for well known XInput device GUIDs before enumerating the device list. 2013-06-07 18:26:55 -07:00
Sam Lantinga
ef5dd95829 Removed redundant "Controller" names from gamepads, added mapping for Logitech F710 in DirectInput mode 2013-06-07 09:40:07 -07:00
Sam Lantinga
040fb5a8a3 Slightly more efficient to check the event type first 2013-06-07 09:39:10 -07:00
Sam Lantinga
a3cdddf050 It's better not to have the full range of the axis (by 1 on the negative side) than turn 0 value into -1 2013-06-07 08:48:25 -07:00
Sam Lantinga
17950d4dc7 Fixed bug 1897 - CPU spike on Windows with WM_EVENT and OpenGL
buckyballreaction

On some Windows systems, when switching from fullscreen to windowed mode in my game, the CPU will spike and the application never shows the window again.

See the part of the e-mail thread here:

http://lists.libsdl.org/pipermail/sdl-libsdl.org/2013-June/088626.html

I change the window by calling:

SDL_SetWindowFullscreen(gScreenInfo.sdlWindow, SDL_FALSE);
SDL_SetWindowSize(gScreenInfo.sdlWindow, sdlWindowWidth, sdlWindowHeight);

which you can see in our source:

https://code.google.com/p/bitfighter/source/browse/zap/VideoSystem.cpp#377

Then all of a sudden the application gets stuck in WIN_PumpEvents() in SDL_windowsevents.c.  I turned on WMMSG_DEBUG and found that there was an endless stream of WM_EVENT messages.  I also found that where WM_PAINT is being handled in the callback WIN_WindowProc(), ValidateRect is somehow not clearing, or it is persisting, the WM_EVENT message like it's supposed to (according to the docs).

This may be a hardware issue.  The issue has appeared on three different systems, one of them sporadically:
 - Windows XP SP3 running in VMware 9.0 (without VMWare 3D acceleration, but with the tools and drivers installed), Host: openSUSE 12.3 x86_64, NVidia NVS 3100M
 - Windows XP SP3 64bit running in VirtualBox, Host: Debian Wheezy (stable), Mobility Radeon HD 4100 (this was the sporadic one)
 - Windows 7 64 bit, Radeon 6770
2013-06-06 23:18:36 -07:00
Sam Lantinga
49c28af42b Fixed crash trying to get the GUID of an invalid joystick index 2013-06-06 18:20:06 -07:00
Sam Lantinga
fdd4b6aabf The triggers should be expanded out to the full range to match DirectInput behavior.
The game controller code will scale them back to 0 - 32767 when it converts the triggers axes.
2013-06-06 17:59:01 -07:00
Andreas Schiffler
f62d534268 Remove unnecessary debugger detection logic again from Win32 SDL_LogOutput 2013-06-06 07:25:41 -07:00
Sam Lantinga
215b3b259b Fixed compile errors on iOS 2013-06-05 21:48:53 -07:00
Sam Lantinga
74f92adb17 The jump hack is no longer used.
Cheers!
2013-06-05 21:47:49 -07:00
Sam Lantinga
0ab9a7d71a Need to include SDL_main.h when we call SDL_main() 2013-06-05 21:38:54 -07:00
Sam Lantinga
cdc319cb12 This patch isn't needed because you have the window and can do [nswindow contentView] yourself.
I'm rolling this back so we minimize the things exposed that we have to keep consistent in the API.
2013-06-05 21:31:22 -07:00
Sam Lantinga
6a0ed22cdc Added some extra protection to notify the developer if they haven't initialized the application properly.
This will help reduce issues like that reported in bug 1819:

Wouter van Oortmerssen 2013-04-23 20:12:07 EDT
#0  0x01d1e881 in __HALT ()
#1  0x01c58971 in _CFRuntimeCreateInstance ()
#2  0x02e4acc1 in GSFontCreateWithName ()
#3  0x00adc0e1 in UINewFont ()
#4  0x00adc24c in +[UIFont systemFontOfSize:traits:] ()
#5  0x00adc298 in +[UIFont systemFontOfSize:] ()
#6  0x009fb5d9 in +[UITextFieldLabel defaultFont] ()
#7  0x00a8ccd5 in -[UILabel _commonInit] ()
#8  0x00a8ce14 in -[UILabel initWithFrame:] ()
#9  0x00a052eb in -[UITextField createTextLabelWithTextColor:] ()
#10 0x009fbede in -[UITextField initWithFrame:] ()
#11 0x00152ead in -[SDL_uikitview initializeKeyboard] at /Users/aardappel/lobster/external/SDL-2.0.0-7046/Xcode-iOS/SDL/../../src/video/uikit/SDL_uikitview.m:208
#12 0x0015290c in -[SDL_uikitview initWithFrame:] at /Users/aardappel/lobster/external/SDL-2.0.0-7046/Xcode-iOS/SDL/../../src/video/uikit/SDL_uikitview.m:50
#13 0x00153b5b in -[SDL_uikitopenglview initWithFrame:scale:retainBacking:rBits:gBits:bBits:aBits:depthBits:stencilBits:majorVersion:] at /Users/aardappel/lobster/external/SDL-2.0.0-7046/Xcode-iOS/SDL/../../src/video/uikit/SDL_uikitopenglview.m:53
#14 0x001524ff in UIKit_GL_CreateContext at /Users/aardappel/lobster/external/SDL-2.0.0-7046/Xcode-iOS/SDL/../../src/video/uikit/SDL_uikitopengles.m:114
#15 0x0015078f in SDL_GL_CreateContext at /Users/aardappel/lobster/external/SDL-2.0.0-7046/Xcode-iOS/SDL/../../src/video/SDL_video.c:2666
#16 0x000d8c5c in SDLInit(char const*, vec<int, 2>&) at /Users/aardappel/lobster/dev/xcode/lobster/../../src/sdlsystem.cpp:193
2013-06-05 21:23:59 -07:00
Jørgen P. Tjernø
3bff17cb2e Joystick: Only send joy events when focused.
This changes makes it so that you only receive joystick (and implicitly
gamecontroller) input events when your application has keyboard focus.
If you'd like to still receive events when your application is in the
background, set the SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS hint to "1".

This fixes http://bugzilla.libsdl.org/show_bug.cgi?id=1892
2013-06-05 15:11:38 -07:00
Jørgen P. Tjernø
5a1c4f777f Mac: Fix invalid PS3 controller mapping.
PS3 controller had swapped D-Pad down & left buttons, as well as X & Y buttons.
Thanks to Alex Szpakowski for the bug report and fix.

Fixes http://bugzilla.libsdl.org/show_bug.cgi?id=1891
2013-06-05 12:48:44 -07:00
Jørgen P. Tjernø
5e9da0775c Win32: Fix issue with SetCapture & negative values.
This fixes an issue where we were using the wrong macros to extract the position from WM_MOUSEMOVE, so negative values were behaving incorrectly.
These would be generated in multimon situations, or if you use SetCapture.

Fixes http://bugzilla.libsdl.org/show_bug.cgi?id=1175
2013-06-05 12:00:18 -07:00
Jørgen P. Tjernø
60d634fe86 Win32: Ignore WM_MOUSELEAVE in relative mode.
We get an WM_MOUSELEAVE when we switch to relative mode, even though the cursor is still in the window.
Ignoring this event to not end up with a NULL mouse focus.

This fixes http://bugzilla.libsdl.org/show_bug.cgi?id=1861
2013-06-05 12:00:15 -07:00
Andreas Schiffler
6520cd55b2 Update SDL_LogOutput for WIN32 so it writes to the console 2013-06-05 07:22:45 -07:00
Jørgen P. Tjernø
0375acb1ab Mac: Fix incorrect relative jump on focus / start.
We should no longer send huge jumps on relative mode focus changes if
the cursor was moved around, or on initial start.

Fixes http://bugzilla.libsdl.org/show_bug.cgi?id=1836
2013-06-04 14:54:49 -07:00
Jørgen P. Tjernø
9b8c5071e9 Mac: Hide cursor in relative mode.
This hides the cursor when you SDL_SetRelativeMouseMode, as intended.

Fixes http://bugzilla.libsdl.org/show_bug.cgi?id=1860
2013-06-04 13:53:55 -07:00
Jørgen P. Tjernø
b76f0d31de - fix misleading hint about minimising on focus loss 2013-06-04 13:47:51 -07:00
Azamat H. Hackimov
3645242ba8 Fix compilation with libX11 >= 1.5.99.902.
These changes fixes bug #1769 for SDL2
(http://bugzilla.libsdl.org/show_bug.cgi?id=1769).
2013-06-02 20:20:18 +06:00
Sam Lantinga
de0c5b4bb5 Hopefully fixed mingw32 build 2013-06-02 08:48:52 -07:00
Philipp Wiesemann
aa1e431779 Fixed implicit function declaration for SDL_AndroidGetInternalStoragePath(). 2013-06-02 14:13:21 +02:00
Philipp Wiesemann
922efe43d8 Fixed implicit function declaration and warning for SDL_Log(). 2013-06-02 14:11:04 +02:00
Sam Lantinga
b03876dbb8 Gyrations to get the code to compile with the latest version of mingw-w64 as well as Visual Studio.
I think in this case mingw-w64 is incorrect in defining the GUID instead of declaring it like Visual Studio and the older mingw32 compilers.
2013-06-02 01:35:38 -07:00
Sam Lantinga
35b9ffa392 Fixed bug 1881 - SDL will not compile with "SDL_THREADS" disabled.
MakoEnergy02

I am attempting to compile SDL on WindowsXP 32-bit, using MinGW.  The problem I am having is when I attempt to compile, when it gets to "SDL_systhread.c" it errors:

C:\Repos\Mezzanine\Mezzanine\libincludes\common\sdlsrc\SDL\src\thread\generic\SDL_systhread.c|29|error: conflicting types for 'SDL_SYS_CreateThread'
C:\Repos\Mezzanine\Mezzanine\libincludes\common\sdlsrc\SDL\src\thread\generic\..\SDL_systhread.h|35|note: previous declaration of 'SDL_SYS_CreateThread' was here

I do have SDL_THREADS disabled in my cmake configuration as I do not want or need SDL making threads for me, I have another thread provider.  It seems the generic "dummy" implementation does not account for the two extra parameters needed for the "SDL_SYS_CreateThread" method when "SDL_PASSED_BEGINTHREAD_ENDTHREAD" is defined.
2013-06-02 01:12:29 -07:00
Sam Lantinga
b0b6b803fc Fixed bug 1882 - SDL_GetKeyboardState should return const.
Yuri K. Schlesner

The array returned by SDL_GetKeyboardState is also used internally by SDL to keep track of pressed/released keys and must not be modified, lest weird behaviour occurs. Because of this I believe it's return type should be changed to return a const pointer, which will provide a code indication of that fact.
2013-06-02 01:09:12 -07:00
Philipp Wiesemann
f79e338091 Fixed implicit function declarations and their warnings.
For the SDL_SetMouseFocus() and SDL_SetKeyboardFocus().
2013-06-01 21:17:43 +02:00
Philipp Wiesemann
6c6a5ba2e2 Removed debug output. 2013-06-01 21:11:52 +02:00
Philipp Wiesemann
f2bce67fb9 Corrected indentation of license. 2013-06-01 21:09:36 +02:00
Yuri K. Schlesner
ce7e01dd7b Re-apply texture filter when resetting direct3d renderer. 2013-05-29 06:31:48 -05:00
Andreas Schiffler
4835250790 Fix bug 1492: Visual Studio builds sdl.lib and sdl.dll for version 2.0 (contributed by Jan Reitz); update SDL_bool handling in test_common to fix VS compiler warnings 2013-05-30 20:03:56 -07:00
Edward Rudd
231d1325c1 Add trigger value adjustment code to the SDL_GameControllerGetAxis code as well.
- fixes Trigger values when polling instead of using event driven
2013-05-30 22:14:24 -04:00
Edward Rudd
d2ab989566 add in Controller configs for Logitech F510 for OS X / Linux 2013-05-30 10:42:52 -04:00
Philipp Wiesemann
36e6e25ae1 Moved prototype for static function out of header file to prevent warnings. 2013-05-30 23:25:03 +02:00
Philipp Wiesemann
0156bfbfcc Changed line comments in header file. 2013-05-30 23:08:35 +02:00
Sam Lantinga
028c19b92b When the window is resized, the viewport is automatically reset.
This resolves lots of confusion around resizable windows.  Most people don't expect a viewport to be implicitly set when the renderer is created and then not to be reset to the window size if the window is resized.

Added common test command line parameters --logical WxH and --scale N to test the render logical size and scaling APIs.
2013-05-29 03:22:19 -07:00
Sam Lantinga
23f33cb76c Fixed bug 1622 - SDL_RenderSetViewport with empty SDL_Rect raises wrong error for OpenGL rendering backend
It's now legal to set an empty viewport rect - it will prevent any rendering.

Also added an API to query the output size: SDL_GetRendererOutputSize()
2013-05-29 03:07:55 -07:00
Sam Lantinga
9c6d6e4423 Fixed crash with movaps instruction in SDL_memcpy(), due to unaligned Uint32* cast and -O3 vectorization optimizations with gcc 4.9.0 2013-05-27 16:18:11 -07:00
Sam Lantinga
d20e17f345 Fixed Visual Studio build 2013-05-26 14:37:41 -07:00
Sam Lantinga
767c1395d9 Fixed compiling XAudio2 code with mingw64 2013-05-26 12:20:23 -07:00