Commit graph

678 commits

Author SHA1 Message Date
Stefanos A. 3f81bc26d4 Removed support for < Windows XP
The support burden for Windows versions prior to XP was too large, plus
the relevant code was completely untested. Removing that will allow us
to focus on the things that really matter.
2013-10-03 20:51:36 +02:00
Stefanos A 913c4f16e6 Throw extension if context creation fails
This aligns behavior with that of the other platforms.
2013-10-03 17:22:13 +02:00
Stefanos A. 0e221a0ce5 Load ES entry points even on desktop
Some drivers / operating systems export ES entry points as extensions on regular "desktop" GraphicsContexts. Attempt to load them even if the user has not explicitly asked for an ES context.
2013-10-03 16:42:38 +02:00
Stefanos A be7200d37e Merge branch 'sdl2' of https://github.com/thefiddler/opentk
Conflicts:
	Source/OpenTK/Platform/SDL2/Sdl2NativeWindow.cs
2013-10-03 15:11:59 +02:00
Stefanos A. f2eda16458 Serialize Sdl2NativeWindow methods
This change, along with moving DestroyWindow() to the Dispose() method
fixes crashes on shutdown.
2013-10-03 14:59:30 +02:00
Stefanos A. 3c867838e6 Reload WGL entry points in WinGLContext()
This fixes AccessViolationException when creating multiple contexts on
Intel hardware.
2013-10-03 14:04:34 +02:00
Stefanos A d217e379d4 Added support for OpenGL ES through SDL2
If SDL2 is supported, the PlatformFactory will now use it for creating the OpenGL ES context. Previously, it would revert to the native drivers when GraphicsContextFlag.Embedded was specified.
2013-10-03 11:17:21 +02:00
Stefanos A. 5051190b01 MouseButtonUp and MouseMove fixes
MouseMove no longer leaves the window borders when the cursor is
invisible. MouseButtonUp events are now reported even when they occur
outside the window. This aligns SDL2 behavior with the native drivers.
2013-10-02 17:55:30 +02:00
Stefanos A. b077597bc1 Create Sdl2NativeWindow hidden
This conforms to the other platform drivers and looks better in general
(no delay between window creation and OpenGL context creation.)
2013-10-02 16:31:22 +02:00
Stefanos A. 4d7ba20a03 Fixed unsetting current context in SDL2
SDL_GL_MakeCurrent(IntPtr.Zero, IntPtr.Zero) is the correct way to
remove the current OpenGL context from the calling thread. Fixes
threaded rendering on Windows.
2013-10-02 16:26:47 +02:00
Stefanos A 40cfcfaf25 Improved diagnostics in Dispose()
Leaked and disposed resources are now always reported.
2013-10-02 01:14:26 +02:00
Stefanos A 6360156d99 Added Sync object for SDL 2013-10-02 01:13:06 +02:00
Stefanos A c77439ea6b Marked class as partial
This allows extension of the class without touching the upstream code.
2013-10-02 01:12:12 +02:00
Stefanos A 31f2df094b Fixed invalid version string on git
Git commit hashcodes are not compatible with the 16bit integer values found in .Net version numbers. Use the git commit count as a version number instead.
2013-10-02 00:05:59 +02:00
Stefanos A. 7460452b26 MakeCurrent(null) should make context non-current
This fixes the crash in the "GameWindow Threading" example.
2013-10-01 22:13:33 +02:00
Stefanos A a85cecdc59 Improved resource disposal
Added IDisposable interface to all classes holding native data that must be freed. OpenTK.Toolkit.Init() now returns an IDisposable instance that can be used to cleanup all native data held by OpenTK. This is useful when re-initializing OpenTK (possibly in a new AppDomain), as is the case in the Example browser.
2013-10-01 22:01:27 +02:00
Stefanos A. b57e58dc47 Implemented Sdl2GLControl
SDL2 still fails with "not an OpenGL window".
2013-09-30 20:47:29 +02:00
Stefanos A 5bb23585b9 Merge remote-tracking branch 'origin/master' into sdl2 2013-09-30 18:29:55 +02:00
Stefanos A. ddd070579a Workaround for NRE on WinRawMouse driver
On some systems, the Windows Raw Input driver fails to find the name of
a mouse device, causing a NRE. Since the name is not vital information,
a dummy name is generated as a workaround.
2013-09-30 18:27:13 +02:00
Stefanos A. ea0c845eb0 Attempted to fix key modifier state
SDL2 does not report keydown and keyup events on modifiers keys until
you release them. Attempted to fix this using SDL_GetModifierState, but
this does not appear to work. Should hit upstream.
2013-09-30 14:20:33 +02:00
Stefanos A. c53773f4ec Use scancodes for KeyboardDevice states
This resolves the issue where different layouts would return different
keys when pressing the same physical key. A new API must be introduced
for text input.
2013-09-30 13:51:31 +02:00
Stefanos A. 5e35411dd1 Fixed return values of keyboard functions
SDL_GetKeyFromScancode and SDL_GetScancodeFromKey should return a
SDL_Keycode or SDL_Scancode respectively, instead of void.
2013-09-30 13:49:53 +02:00
Stefanos A. 2d19edf3fe Renamed Sdl2InputBase to Sdl2InputDriver
Sdl2InputDriver describes the role and function of this class more
accurately.
2013-09-30 13:13:02 +02:00
Stefanos A. 7cb3965e25 Made internal SDL2 API private 2013-09-30 12:22:51 +02:00
Stefanos A. 5a55cb5cca Implemented SDL2 mouse and keyboard drivers 2013-09-30 12:22:25 +02:00
Stefanos A. cfdb5bc95a Free SDL surface after updating the window icon
The SDL surface is no longer needed and will cause a memory leak if not
freed. Additionally, the decoded BitmapData should not be unlocked until
after updating the window icon, as it may be moved by the GC otherwise.
2013-09-29 23:36:28 +02:00
Stefanos A. 420ec232f3 Fixed decoding of Icons
The rgba mask for decoding icon surfaces was incorrect. Icons should
appear as expected now.
2013-09-29 23:08:51 +02:00
Stefanos A. 6245ffe3ef Updated license information 2013-09-27 23:07:23 +02:00
Stefanos A. 2666125b24 Implemented WindowState, WindowBorder and Icon
SDL2 suffers many of the issues we encountered when implementing
OpenTK.Platform.Windows. Workarounds are now in place to make
WindowState changes behave reasonably.
2013-09-27 23:01:46 +02:00
Stefanos A. 56d7e4e564 Use OpenGL window flag and switch to "fake" fullscreen mode
The OpenGL flag is required when using SDL2 on Windows. Fake fullscreen
works much better on modern monitors and systems with multiple monitors.
2013-09-27 18:57:05 +02:00
Stefanos A. 5df5447ff9 Add debug message when context creation fails 2013-09-27 18:55:58 +02:00
Stefanos A. 3398902940 Use Wgl.Import.GetCurrentContext DllImport directly
Wgl is implemented using the regular DllImport + delegate approach, in
order to support extensions. The delegates have not been armed at this
point, so we need to use the DllImport directly.

The whole wgl API should be revisited (we are using only a tiny
portion.)
2013-09-27 18:55:38 +02:00
thefiddler 6d0b5eb49f Implemented SDL2 platform using sdl2-cs
This is a new platform that can be used then sdl2 is installed on the target system. SDL2 is commercially supported by Valve and provides better support for MacOS compared to our current implementation (Cocoa vs Carbon). It will also help us introduce faster support for new platforms. Existing platforms remain as a fallback and will be automatically used if sdl2 is not installed.

Please note that this is still a work in progress. The new mouse and keyboard API is not supported yet. Due to limitations of sdl2, multiple mice/keyboards are also not supported.
2013-09-27 14:41:37 +02:00
thefiddler 89845d5ff9 Integrated sdl2-cs bindings for sdl2
This is using the sdl2/pure branch of https://github.com/thefiddler/SDL2-CS.git which contains the SDL2 bindings without MiniTK.
2013-09-27 14:33:52 +02:00
thefiddler 3989b94e68 Merge commit 'ed45dddb98c8250a33505c953b6c60bf7a854ffb' as 'Source/OpenTK/Platform/SDL2/sdl2-cs' 2013-09-27 14:26:50 +02:00
thefiddler 2e1bcaf280 Added support for high-dpi mode on Windows.
The platform factory for windows now calls SetProcessDPIAware
in order to enable support for high-dpi modes. The relevant
DllImport has been added to API.cs
2013-09-26 01:35:59 +02:00
David Jeske cce40d60b0 fix MacOS bug mapping modifier keys to the scancode array 2013-08-10 19:50:05 -07:00
David Jeske 2c29df6296 added support for smooth trackpad scrolling on macos 2013-08-09 23:20:49 -07:00
zastrowm e7ba5e789f Update whitespace issues to conform to the rest of the document 2013-04-26 21:09:12 -05:00
zastrowm 5f336dd9f9 Change WinRawMouse.ProcessMouseEvents to call code directly instead of using lambdas
Change WinRawMouse.ProcessMouseEvents to call code directly instead of using lambdas.  The lambdas caused memory allocations and were unneeded
2013-04-26 21:06:08 -05:00
Dean Ellis 9a39949249 Merge pull request #1 from elisee/fix-client-rectangle-setter
Fix ClientRectangle setter on Windows (WinGL) & Linux (X11)
2013-03-22 16:29:36 -05:00
Tom Edwards 6c35e8ef24 Merge remote-tracking branch 'origin/ScanCodeKeyboardBranch' 2013-02-17 14:58:16 +00:00
Jacob Hauberg Hansen af74d97903 Fix NullPointerException on Windows 8. 2013-01-26 14:27:26 +01:00
Andy Korth 0f64af130a Committing artfunkel patch for scan codes 2013-01-24 15:48:01 -06:00
Andy Korth 2a0ad3ef6f A few minor comments 2013-01-17 14:45:57 -06:00
Robert Rouhani bf1401e115 Fixed the issues caused by merging in our changes as patches from the old repo. 2013-01-16 18:08:03 -08:00
Robert Rouhani 819c02c445 More hacking for gamepads 2013-01-16 17:59:52 -08:00
Robert Rouhani b5591e1eee Started implementing GamePad 2013-01-16 17:56:31 -08:00
Andy Korth fa422dca2a Fix Windows 8 Keyboard, OpenTK issue 3198 2013-01-14 13:09:55 -06:00
Andy Korth 5b0db16a89 Mouse up events in Windows occur regardless of where on the screen the cursor is. OpenTK issue 2133 2012-12-21 21:12:59 -06:00