Commit Graph

147 Commits

Author SHA1 Message Date
Alex Szpakowski
2dac6bf57e Fixed opengl context share groups on iOS. 2014-08-07 00:44:16 -03:00
Alex Szpakowski
02b06c6692 Merged default into iOS-improvements 2014-08-06 13:50:50 -03:00
Sam Lantinga
6299daecba The OpenGL context returned by the UIKit backend is now an actual OpenGL context instead of the OpenGL view we created.
This allows you to use the returned context in functions like CVOpenGLESTextureCacheCreate()
2014-08-06 00:28:02 -07:00
Alex Szpakowski
f5543f93b3 Updated the iOS backend code to use Objective-C's automatic reference counting (ARC). 2014-08-06 03:24:16 -03:00
Alex Szpakowski
362899776e Minor code update for less verbosity 2014-08-06 00:45:11 -03:00
Alex Szpakowski
2096583140 Merged branch default into iOS-improvements 2014-08-04 15:30:53 -03:00
Alfred Reynolds
87b8c8d108 SDL - when raising the window under OSX also force the app to activate. This fixes a fullscreen window on a separate space not coming front when raisewindow is called. 2014-07-31 12:46:23 -07:00
Alex Szpakowski
bde54b7f34 Merged 'default' into branch 'iOS-improvements' 2014-07-31 03:14:10 -03:00
Alfred Reynolds
7552947654 SDL - fix re-entrancy into SDL_UpdateFullscreenMode under OSX. During HideWindow we get a RESTORED event which then turns fullscreen back on causing a hang in Cocoa_SetWindowFullscreenSpace waiting for the fullscreen transition to finish. 2014-07-30 17:45:52 -07:00
Alex Szpakowski
caad673f06 Added missing autorelease pool blocks in UIKit backend code. Fixes memory leak issues, especially in SDL_video. 2014-07-29 00:36:12 -03:00
Alex Szpakowski
31257842ec Added support for SDL_SetWindowBordered on iOS. Worked around a bug with rotating the device on iOS 8. 2014-07-29 00:05:48 -03:00
Alex Szpakowski
0e5df60538 Fixed SDL_SetWindowFullscreen on iOS causing the window's reported dimensions and supported orientations to go out of sync with what they should be, if the device orientation was different from the screen orientation when the function call was made. 2014-07-24 22:35:25 -03:00
Alex Szpakowski
05afbfdf2c Integrated Phil Hassey's patch to fix SDL_IsScreenKeyboardShown on iOS (https://bugzilla.libsdl.org/show_bug.cgi?id=2660) 2014-07-23 22:35:14 -03:00
Alex Szpakowski
029e0193c5 Fixed SDL_SetWindowFullscreen on iOS for the last time, hopefully.
Fixed iOS version checking code.
2014-07-23 21:55:42 -03:00
Alex Szpakowski
ef0490a741 More cleanup of the iOS Objective-C code. 2014-07-23 03:05:31 -03:00
Alex Szpakowski
6d552cae38 90% of iOS users on the App Store run at least iOS 7, so it doesn't make sense to support building using an SDK that doesn't support iOS 7. The minimum supported runtime version is still iOS 5.1. 2014-07-23 01:33:59 -03:00
Alex Szpakowski
967549c9ad Updated the iOS Objective-C code to use NSDictionary/NSArray/NSNumber literals and subscripting, for improved code clarity.
This requires at least Xcode 4.5 and the iOS 6 SDK to build, but it doesn't change the minimum supported runtime version (iOS 5.1). Less than 2% of iOS users are running iOS 5, so I hope developers aren't trying to build SDL using an SDK which doesn't support iOS 6/7...
2014-07-23 01:28:24 -03:00
Alex Szpakowski
078ca9f078 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+ 2014-07-22 20:06:13 -03:00
Alex Szpakowski
cf2958a8de Fixed SDL_SetWindowFullscreen on iOS to properly update the view's frame. 2014-07-22 16:48:35 -03:00
Alex Szpakowski
e02e34521a The default implementation of [view layoutSubviews] actually does something in iOS 6+, so we should call [super layoutSubviews] when overriding it. 2014-07-21 02:46:53 -03:00
Alex Szpakowski
e234575d54 Disabled the custom iOS splashscreen code - it interferes with the normal rotation and orientation behaviour of SDL windows. 2014-07-17 22:55:59 -03:00
Alex Szpakowski
d2e445d7bb Properly send a window resize event in all cases when viewDidLayoutSubviews is triggered. 2014-07-17 18:05:12 -03:00
Alex Szpakowski
b55be6e7bd Fixed SDL_HINT_ORIENTATIONS to properly allow disabling custom orientations if the hint is set with no valid orientations. 2014-07-16 21:06:15 -03:00
Alex Szpakowski
b21544c1dd The iOS 7 transparent status bar now uses white text rather than black. 2014-07-16 20:05:00 -03:00
Alex Szpakowski
b4d15ece6d Fixed SDL_SetWindowFullscreen not properly updating the status bar visibility in iOS 7+ 2014-07-16 16:12:20 -03:00
Alex Szpakowski
3672409c51 Changed the way retina resolutions are handled in iOS.
Previously, SDL would always expose display modes and window dimensions in terms of pixels, and would add an extra 'fake' display mode on retina screens which would contain the non-retina resolution. Calling SDL_CreateWindow with the dimensions of that fake display mode would not work.

Now, SDL only exposes display modes and window dimensions in terms of points rather than pixels. If the SDL_WINDOW_ALLOW_HIGHDPI flag is passed into SDL_CreateWindow, then any OpenGL contexts created from that window will be sized in pixels rather than points (retrievable with SDL_GL_GetDrawableSize.) Window dimensions and mouse coordinates are still in terms of points rather than pixels even with that flag.

This matches the behavior of SDL in OS X more closely, and lets users choose whether to make use of retina displays and lets them handle it properly.
2014-07-14 22:35:48 -03:00
Alex Szpakowski
734b523302 Misc. iOS code improvements.
- Use @autoreleasepool instead of NSAutoReleasePool.

- Code style fixups.
2014-07-14 16:50:25 -03:00
Ryan C. Gordon
f7461cdc9a The Gimp puts out a different bogus color mask for 32-bit .bmp files. :) 2014-07-09 00:09:57 -04:00
Ryan C. Gordon
a91f1a1adc Make SDL_LoadBMP() work with 32-bit bitmaps from ImageMagick. 2014-07-09 00:01:34 -04:00
Sam Lantinga
0c8e33764c Fixed bug 2628 - invalidate surface->map in SDL_SurfacePalette()
Wei Mingzhi

surface->map should be invalidated in SDL_SetSurfacePalette(), otherwise the palette would not be effective when blitting to another non-8bit surface which we previously blitted to.
2014-07-07 21:21:05 -07:00
Sam Lantinga
fc4e798d79 Fixed bug 2631 - Mac: minor code cleanup
Alex Szpakowski

Some minor changes to the Mac-specific backend code:

- Fixed up some code style issues (mostly brace style inconsistencies).

- Fixed a compiler warning in SDL_cocoaevents.m.

- Removed some useless code now that the 10.7 SDK is required to build SDL.

- Removed Gestalt(gestaltSystemVersion, ...) call and switched to NSAppKitVersionNumber for version checking code. Using Gestalt with gestaltSystemVersion will give 0x1090 in Mac OS 10.10+, and the whole Gestalt function was deprecated in Mac OS 10.8.
2014-07-07 12:48:25 -07:00
Sam Lantinga
7187b74cf4 Fixed compiler warnings on iOS 2014-07-07 11:00:25 -07:00
Sam Lantinga
d44f392265 Fixed bug 2629 - Mac: crash when calling SDL_DestroyWindow with an active OpenGL context
Alex Szpakowski

Since this commit https://hg.libsdl.org/SDL/rev/59b543340d63 , calling SDL_DestroyWindow will crash the program if the window has an active OpenGL context.

This is because the Cocoa_DestroyWindow code sets the window's driverdata to NULL and then calls [context setWindow:NULL], which tries to access the window's driverdata, resulting in a null pointer dereference.

I have attached a patch which fixes the issue by moving the line which sets the driverdata to NULL to after the lines which call functions that use the driverdata pointer.
2014-07-07 10:33:32 -07:00
Sam Lantinga
1ee96bb994 Fixed mingw64 build and warnings 2014-07-07 10:26:28 -07:00
Gabriel Jacobo
5a3c553d0a Maybe fixes bug #2291 (red tinted screen on some Samsung Android devices)
Then again, maybe not!
2014-07-03 17:36:08 -03:00
Sam Lantinga
610225b451 Fixed null terminating the X11 error string 2014-06-28 19:51:26 -07:00
Gabriel Jacobo
765894e3cd Better fix to support EGL_KHR_create_context and not fail to build on Android
...or Raspberry Pi (EGL < 1.4 systems)
2014-06-28 13:05:16 -03:00
Gabriel Jacobo
a9bb889864 Disable desktop OpenGL for EGL under Android 2014-06-28 12:48:29 -03:00
Gabriel Jacobo
1ed1f7f2e3 Fixes #2611 #2610, Touch events cause crash on Android, thanks Alvin & Sylvain
This bug was introduced on this rev: https://hg.libsdl.org/SDL/rev/42f6bd8c8575
2014-06-28 12:36:44 -03:00
Knut Andre Tidemann
02e9f81ebe SDL_egl: allow creation of versioned OpenGL contexts with EGL_KHR_create_context
If the EGL extension EGL_KHR_create_context is available, we can use it to
set the core/compatability profile and the minimum OpenGL version.

Use this if it is available to get the context requested by the GL attributes.
2014-06-28 12:17:29 -03:00
Ryan C. Gordon
95864f86d8 Patched to compile on Windows. 2014-06-25 17:24:06 -04:00
Ryan C. Gordon
84cb232067 Patched to compile with -Werror=declaration-after-statement 2014-06-25 17:13:43 -04:00
Ryan C. Gordon
b29740b88f Merged Ryan's SDL-gui-backend branch.
Adds three APIs, and implements them on X11, Cocoa, and Windows:

- SDL_CaptureMouse()
- SDL_GetGlobalMouseState()
- SDL_SetWindowHitTest()
2014-06-25 17:06:12 -04:00
Ryan C. Gordon
8436956711 Changed SDL_GetAbsoluteMouseState() to SDL_GetGlobalMouseState().
This matches naming conventions in the main repository, between
 SDL_GetRelativeMouseState() and SDL_WarpMouseGlobal().
2014-06-25 16:16:55 -04:00
Sam Lantinga
704d9bd30d Fixed bug 2525 - Keyboard focus crash
Todd Seiler

Call Stack:
#0  0x0000000101c29291 in Cocoa_StartTextInput at /Users/Todd/Desktop/codes/sources/SDL/src/video/cocoa/SDL_cocoakeyboard.m:512
#1  0x0000000101c110c5 in SDL_SetKeyboardFocus at /Users/Todd/Desktop/codes/sources/SDL/src/events/SDL_keyboard.c:643
#2  0x0000000101c32be4 in SetupWindowData at /Users/Todd/Desktop/codes/sources/SDL/src/video/cocoa/SDL_cocoawindow.m:981
#3  0x0000000101c32d2a in Cocoa_CreateWindowFrom at /Users/Todd/Desktop/codes/sources/SDL/src/video/cocoa/SDL_cocoawindow.m:1092
#4  0x0000000101c99999 in SDL_CreateWindowFrom_REAL at /Users/Todd/Desktop/codes/sources/SDL/src/video/SDL_video.c:1338
#5  0x0000000101ce1484 in SDL_CreateWindowFrom at /Users/Todd/Desktop/codes/sources/SDL/src/dynapi/SDL_dynapi_procs.h:547
#6  0x0000000100018a5e in SceneRenderer at /Users/Todd/Desktop/codes/sources/tseiler_Todds-MacBook-Pro_3405/AppName/src/SceneRenderer.cpp:138
#7  0x0000000100017ca5 in SceneRenderer at /Users/Todd/Desktop/codes/sources/tseiler_Todds-MacBook-Pro_3405/AppName/src/SceneRenderer.cpp:145
#8  0x000000010000cd96 in App::execute(int, char**) at /Users/Todd/Desktop/codes/sources/tseiler_Todds-MacBook-Pro_3405/AppName/src/App.cpp:28
#9  0x0000000100004402 in main at /Users/Todd/Desktop/codes/sources/tseiler_Todds-MacBook-Pro_3405/AppName/src/main.cpp:8


This issue occurred when using Ogre3D Graphics engine on Mac (cocoa) to create the window. Then handing the window handle off to SDL_CreateWindowFrom().

In Ogre3D application you do the following:
        window_ = root_->initialise(true, "Ogre Window 2");
        loadOgreResources();
        Ogre::WindowEventUtilities::addWindowEventListener(window_, this);

#if OGRE_PLATFORM == OGRE_PLATFORM_APPLE
        NSWindow* Data = 0;
        window_->getCustomAttribute("WINDOW", &Data);
        sdl_window_ = SDL_CreateWindowFrom((void*)Data);
#endif

It results in a crash in this function:
SDL_cocoakeyboard.m

void
Cocoa_StartTextInput(_THIS)
{
    SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    SDL_Window *window = SDL_GetKeyboardFocus();
    NSWindow *nswindow = nil;
    if (window)
        nswindow = ((SDL_WindowData*)window->driverdata)->nswindow;

    // ...
}

The crash occurred because "driverdata" was nil. Before this function call, a call to SetupWindowData is called:

SDL_cocoawindow.m

static int
SetupWindowData(_THIS, SDL_Window * window, NSWindow *nswindow, SDL_bool created)
{
    // ...

    if ([nswindow isKeyWindow]) {
        window->flags |= SDL_WINDOW_INPUT_FOCUS;
        SDL_SetKeyboardFocus(data->window);
    }

    /* Prevents the window's "window device" from being destroyed when it is
     * hidden. See http://www.mikeash.com/pyblog/nsopenglcontext-and-one-shot.html
     */
    [nswindow setOneShot:NO];

    /* All done! */
    [pool release];
    window->driverdata = data;
    return 0;
}

As you can see: "window->driverdata = data" is performed after the "SDL_SetKeyboardFocus()" call, which eventually leads to "Cocoa_StartTextInput()" where the crash occurs.
2014-06-25 02:08:37 -07:00
Sam Lantinga
a8955f2640 Made the RLE code (semi) readable again 2014-06-25 01:35:17 -07:00
Sam Lantinga
afe14829b8 Fixed bug 2556 - add compilation flag -Wshadow
Sylvain

here's the full patch for Blit + RLE.
2014-06-25 00:43:10 -07:00
Sam Lantinga
67e55655a3 Fixed grab interaction with Windows Classic theme
Testing:
* For each theme in Windows 7, Windows 7 Basic, and Windows 7 Classic:
- Ran testsprite2
- Pressed Ctrl-G to grab the mouse
- Alt-tabbed away, verified mouse is no longer grabbed
- Alt-tabbed back, verified that mouse was grabbed
- Alt-tabbed away
- Clicked in the window, verified mouse was grabbed
- Alt-tabbed away
- Grabbed the title bar and dragged the window around successfully, verified that mouse was grabbed when move modal loop completed
- Alt-tabbed away
- Clicked the minimize button on the title bar, the window was successfully minimized
- Clicked on the icon in the task bar, the window was restored and the mouse grabbed again
- Alt-tabbed away
- Clicked the close button on the title bar, the window was successfully closed
2014-06-23 10:09:15 -07:00
Sam Lantinga
9e2a2639f8 Added names for some theme related windows messages 2014-06-23 10:09:13 -07:00
Gabriel Jacobo
620510b337 Fix compiler warning 2014-06-23 09:18:31 -03:00