Commit graph

2756 commits

Author SHA1 Message Date
Jørgen P. Tjernø
d17c440442 Add SDL_GL_ResetAttributes.
--HG--
extra : rebase_source : 0a6fd1c977ab93ba651adaae3fa5a71d7c69fa8e
2014-01-29 18:38:13 -08:00
Sam Lantinga
a09aac7720 Add a new hint SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT that allows SDL_CreateWindowFrom() to set the pixel format of another SDL_Window (and also will set the SDL_WINDOW_OPENGL flag on the window created with SDL_CreateWindowFrom()).
The reasoning behind this change is that source2 in -tools mode has a single OpenGL context that is used with multiple different windows.  Some of those windows are created outside the engine (i.e. with Qt) and therefore we need to use SDL_CreateWindowFrom() to get an SDL_Window for those.  The requirement for sharing an OpenGL context across multiple different windows is that each window has the same pixel format.  To facilitate this, I now set SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT for the main window before calling SDL_CreateWindowFrom().  When I do this, SDL_CreateWindowFrom() will:

1. Set the pixel format of the returned window to the same pixel format as this SDL_Window passed in with the hint
2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for OpenGL rendering.

I only currently implemented this for Win32/WGL so implementing it for other platforms (i.e. X11) remains a TODO.

CR: SamL

Some pseudocode that shows how this is used in Source2:

HWND hExternalHwnd; // HWND that was established outside of SDL

// Create main window (happens inside platwindow.cpp)
SDL_Window *mainWindow = SDL_CreateWindow( , SDL_WINDOW_OPENGL .. );
// Create GL context, happens inside rendersystemgl
SDL_GLContext onlyContext = SDL_GL_CreateContext( mainWindow );

// Now I need to create another window from hEternalHwnd for my swap chain that will have the same pixel format as mainWindow, so set the hint
SDL_SetHint( SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT, CFmtStr( %p, mainWindow) );

// Create the secondary window.  This returned window will have SDL_WINDOW_OPENGL set and share a pixel format with mainWindow from the hint
SDL_Window *secondaryWindow = SDL_CreateWindowFrom( hExternalHwnd );

// To render to the main window:
SDL_GL_MakeCurrent( mainWindow, onlyContext );
// Do some rendering to main window

// To render to the secondary window:
SDL_GLMakeCurrent( secondaryWindow, onlyContext );
// Do some rendering to secondary window
2014-01-30 12:30:40 -08:00
Sam Lantinga
d9f1c7b666 Document Michael's changes adding TranslateMessage() back to the SDL message loop. 2014-01-30 12:27:24 -08:00
Sam Lantinga
ff4616a9f6 * Added TranslateMessage call to SDL default message pump - was causing problems in S2 tools mode apps that used Qt. Qt relies on the WM_CHAR message generated by TranslateMessage and keyboard input was showing up in the UI as mixed-case. (Depending on which message pump got a given message - both SDL and Qt pump messages for the entire process.) Sam will review and possibly tweak this change before propagating to public SDL, but I'm checking this version in so I can integrate into S2 and fix the issue there. 2014-01-30 12:27:00 -08:00
Jørgen P. Tjernø
fa2b1bca37 Mac: [NSApp keyWindow] is not valid in windowDidBecomeKey:
This fixes weird behavior on Mac where our first responder reverts to the window
itself, rather than the SDLTranslatorResponder, after the window has lost focus
once. This causes Escape to call cancelOperation: on the NSWindow, which by
default removes our fullscreen-ness.

When someone has turned off SDL_TEXTINPUT we should probably set another initial
responder that handles the Escape behavior, so that SDL_TEXTINPUT doesn't change
fullscreen behavior (and possibly other behavior) like it does now.

--HG--
extra : rebase_source : df8cb6520810c2174f4960c263840b0ed47a757c
2014-01-29 18:37:23 -08:00
Gabriel Jacobo
299247a5ed [Wayland] Fixes segfault when mouse enters window 2014-01-28 11:39:37 -03:00
Jørgen P. Tjernø
0b00b27fc8 X11: Don't redraw dialog box when mouse moves.
This fixes bug #2343. (https://bugzilla.libsdl.org/show_bug.cgi?id=2343)

Thanks to Melker Narikka for the patch.
2014-01-27 13:43:04 -08:00
Gabriel Jacobo
22d076b16f Move Wayland driver above dummy, check for driver availability before creation 2014-01-20 20:25:43 -03:00
Ryan C. Gordon
831ef8c592 Patched to compile if Wayland is disabled via SDL_config.h (thanks, Martin!).
Fixes Bugzilla #2351.
2014-01-20 12:53:44 -05:00
Gabriel Jacobo
836efb4c3e Fixes prototype declaration for wl_proxy_marshal_constructor [Wayland 1.4] 2014-01-16 15:02:41 -03:00
Gabriel Jacobo
f6e748c3a9 Fix to compile against the Wayland v1.4 headers 2014-01-16 11:33:39 -03:00
Jørgen P. Tjernø
4cb3bff047 Don't minimize fullscreen windows when destroying them.
Previously, we'd minimize fullscreen windows (if
SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS was set) during SDL_DestroyWindow if they
had keyboard focus, because we call SDL_SetKeyboardFocus(NULL) which yields a
OnWindowsFocusLost event.

Related to https://bugzilla.libsdl.org/show_bug.cgi?id=1840

--HG--
extra : histedit_source : 79338e62e43f2514a843aac8b62afa3e50c3fd5c
2014-01-15 11:34:03 -08:00
Jørgen P. Tjernø
f93c2e774a Mac: Don't give windows focus back when we're closing them.
Fixes bug #1840 (https://bugzilla.libsdl.org/show_bug.cgi?id=1840)

--HG--
extra : histedit_source : bd88f90110eb00ed9572073f7cc39a53e22a5d1b
2014-01-15 11:31:56 -08:00
Jørgen P. Tjernø
fcd0b2efc3 Allow switching between FS and desktop FS.
This should fix bug #2057 (https://bugzilla.libsdl.org/show_bug.cgi?id=2057)

--HG--
extra : histedit_source : 831e19a46dc0f4fe2e37c0cf0685c98706bada3c%2C9f25529300b5784d3b0574a060366c1625da11f1
2014-01-15 11:17:09 -08:00
Jørgen P. Tjernø
406ae45a58 Mac: Trigger SDL_FINGERUP for all touches.
Fixes bug #2348. Thanks to Alex Szpakowski for the patch!
2014-01-14 17:33:24 -08:00
Gabriel Jacobo
305b4e4afe Make EGL loading more resilient.
Lesson learned while trying to run L4D2 under Wayland :)
2014-01-14 21:29:38 -03:00
Gabriel Jacobo
774a9eed75 Dynamic loading support for Wayland 2014-01-09 13:56:21 -03:00
Edward Rudd
c8634f0d7f define a font-size for the "unicode" message box font so the text isn't unreadable on linux systems 2014-01-08 14:53:08 -05:00
Ryan C. Gordon
82edee6971 Make internal SDL sources include SDL_internal.h instead of SDL_config.h
The new header will include SDL_config.h, but allows for other global stuff.

--HG--
extra : rebase_source : ddf4a4c0dc2c554b98c82700798f343cd91b16e3
2013-11-24 23:56:17 -05:00
Sam Lantinga
1e764330e5 Fixed display mode calculations for applications which are not DPI aware.
If your application wants to have access to the full resolution even when the system has DPI scaling enabled, call SetProcessDPIAware() before calling SDL_Init()

e.g.
	typedef BOOL (WINAPI *SetProcessDPIAware_t)(void);
	HMODULE hMod = LoadLibrary("user32.dll");
	if ( hMod ) {
		SetProcessDPIAware_t pSetProcessDPIAware = GetProcAddress( hMod, "SetProcessDPIAware" );
		if ( pSetProcessDPIAware ) {
			pSetProcessDPIAware();
		}
		FreeLibrary( hMod );
	}
2013-12-30 12:49:15 -08:00
Sam Lantinga
95c34dcdd1 Make sure our window has mouse focus before processing raw input events.
This happens rarely, but not reproducibly, where we get raw input events for the window even though it doesn't have focus.
2013-12-27 10:18:18 -08:00
Sam Lantinga
a7694dea9a Bump SDL to build with 10.7 SDK.
This also bumps the minimum requirement for building SDL to 10.7, and
removes some checking we no longer need.

CR: saml
2013-12-27 10:18:11 -08:00
Gabriel Jacobo
5f5b667aa3 Implements touch support on QTWayland. Contributed by Thomas Perl. 2013-12-27 09:29:39 -03:00
Philipp Wiesemann
d1f38264a2 Fixed pointer from integer warning and bug if compiled without EGL. 2013-12-25 16:57:59 +01:00
Sam Lantinga
e19941b406 Setting the mouse in relative mode implies grabbing the mouse.
This fixes getting mouse button events in raw input relative mode on X11.
2013-12-23 17:55:06 -08:00
Sam Lantinga
134d56c6d9 Added a relative mouse mode that uses mouse warping instead of raw input.
To enable this, set the environment variable SDL_MOUSE_RELATIVE_MODE_WARP to "1"

When mouse relative mode is disabled, put the cursor back where the application expects it to be, instead of where it was when relative mode was enabled.
2013-12-23 17:37:22 -08:00
Sam Lantinga
11fc41fde2 Added support for double-clicks, through a new "clicks" field in the mouse button event. 2013-12-23 12:17:52 -08:00
Gabriel Jacobo
3308d271b5 Wayland support
Based on the original port to Wayland by: Joel Teichroeb, Benjamin Franzke, Scott Moreau, et al.

Additional changes in this commit, done by me:

* Wayland uses the common EGL framework
* EGL can now create a desktop OpenGL context
* testgl2 loads GL functions dynamically, no need to link to libGL anymore
* Assorted fixes to the Wayland backend

Tested on the Weston Compositor (v1.0.5) that ships with Ubuntu 13.10,
running Weston under X. Tests ran: testrendercopyex (all backends), testgl2, testgles2,testintersections
2013-12-14 20:18:43 -03:00
Gabriel Jacobo
b71add8edb Context sharing for EGL 2013-12-13 09:48:12 -03:00
Sam Lantinga
713109176d Fixed crash if no window has keyboard focus 2013-12-06 16:12:18 -08:00
Sam Lantinga
e191f1f872 Added code missed in the resolve 2013-12-05 09:29:04 -08:00
Sam Lantinga
f728c688d1 Fixed error return value in SDL_EGL_CreateSurface(), thanks to Mike Kasprzak 2013-12-02 23:54:35 -08:00
Gabriel Jacobo
d2984a16ad Select EGL config when creating the EGL surface 2013-12-02 10:08:57 -03:00
Gabriel Jacobo
7f809e64d8 Improve Android pause/resume behavior. 2013-11-29 10:06:08 -03:00
Sam Lantinga
e2be1694c1 Fixed windows build with conflict resolve 2013-11-28 02:31:32 -08:00
Sam Lantinga
94adb0c939 Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows
BurnSpamAddress

Steps to reproduce:
1. Grab the cursor with SDL_SetCursorGrab()
2. Alt-tab away from the window
3. Click on the titlebar of the window

This will cause the window to disappear underneath the taskbar!

This appears to be a general issue with ClipCursor() on windows, i.e. I am getting the same behavior if I call ClipCursor() directly.

It is caused by a feedback loop between the ClipCursor function and the modal resize/move event loop that handles mouse-based sizing on Windows.
2013-11-27 10:29:38 -08:00
Sam Lantinga
4c087a3780 Fixed large relative mouse motion when iconifying the SDL window.
Windows will move the window to -32000,-32000 when it is iconified, so we don't want to send mouse motion for iconic windows.
2013-11-27 10:29:32 -08:00
Sam Lantinga
aee889c1bd Don't crash when no WM is present.
CR: Sam Lantinga.
2013-11-27 10:29:27 -08:00
Gabriel Jacobo
fc300345e6 [Android] Fixes #2228, reworked touch code
Lets Android take care of which is the primary pointer (the one acting as the
mouse in SDL), reorganized the Java side code as well to make it easier to
understand.
2013-11-25 12:28:09 -03:00
Philipp Wiesemann
4db223b3a1 Fixed spaces in license comment. 2013-11-23 18:34:27 +01:00
Sam Lantinga
6ad1c0122c Fixed double-free of the window shape path 2013-11-23 02:02:29 -08:00
Gabriel Jacobo
d024ab8b10 Fixes compilation on Mingw. 2013-11-22 14:19:52 -03:00
Gabriel Jacobo
f21d3e7e2a OpenGL ES support for Windows 2013-11-22 13:24:53 -03:00
Ryan C. Gordon
a8fa54cfd7 Query version for X11 XInput2 multitouch separately from base XInput2. 2013-11-20 21:17:26 -05:00
Gabriel Jacobo
8e6405547d Clean up X11 OpenGL ES backend
If you really need to switch between OpenGL and GLES context types, just issue
a SDL_GL_UnloadLibrary manually.
2013-11-20 12:51:18 -03:00
Gabriel Jacobo
337a61cc3a Find the best EGL config available between those returned by eglChooseConfig
This existed in the old Android Java code, it got lost in the migration to the
commong EGL code.
2013-11-19 11:04:05 -03:00
Sam Lantinga
2313fd3181 When the mouse is grabbed it's constrained to the client area, not the window frame. 2013-11-16 21:19:16 -08:00
Sam Lantinga
0a3e0e97d7 Fixed bug 2231 - Move src/input/evdev into src/core/linux
Ryan C. Gordon

To keep the directory layout sane, we should probably move this one piece of source to the linux catch-all directory, instead of making it look like this is part of an SDL "input" subsystem.

--HG--
rename : src/input/evdev/SDL_evdev.c => src/core/linux/SDL_evdev.c
rename : src/input/evdev/SDL_evdev.h => src/core/linux/SDL_evdev.h
2013-11-16 12:02:09 -08:00
Sam Lantinga
4bf40e4848 Fixed bug 2241 - SSE intrinsic in fillrect MMX path
norfanin

The MMX path in SDL_fillrect.c uses the SSE intrinsic _mm_stream_pi. The function or symbol provided by the compiler will not be present because the SSE header may not get included. The linker will complain about an undefined reference.

Since this is the only intrinsic used here (and someone forgot to create one for MOVQ), I think the MMX path can be removed completely. At least I don't see another way to move 64-bits from an MMX register to memory.
2013-11-16 11:54:16 -08:00
Sam Lantinga
7b1c9df188 Fixed bug 2240 - On OS/X after calling SDL_SetWindowBordered right mouse clicks no longer register
philhassey

On OS/X after calling SDL_SetWindowBordered right mouse clicks no longer register.

Steps to Reproduce:

1. Open a windowed window on OS/X.  (With the border on.)

2. e.button.button will give values 1,2,3 depending on which mouse button I click.

3. Call SDL_SetWindowBordered to disable the border.

4. e.button.button will only give values 1,2.  3 (right mouse button) stops coming through.

Expected result:

I expect all mouse buttons to register.
2013-11-14 22:26:49 -08:00