thefiddler
8195800ee7
[X11] Improved vsync support
...
OpenTK will now check for GLX_EXT_swap_control, GLX_MESA_swap_control
and GLX_SGI_swap_control. This allows us to control vsync on more
systems.
2014-05-09 00:13:23 +02:00
thefiddler
d430b462fe
[X11] Corrected size events
2014-05-08 20:58:11 +02:00
thefiddler
8b7d5bc7e4
[Input] Implement key repeat
2014-05-05 00:43:45 +02:00
thefiddler
d968281a1b
[OpenTK] Refactor keyboard and mouse handling
...
A lot of duplicated code is now moved to NativeWindowBase and
LegacyInputDriver.
2014-05-04 17:05:08 +02:00
thefiddler
e155d647de
[X11] Added X11KeyMap.TranslateButton()
...
This code was duplicated on four different places before.
2014-05-04 17:04:03 +02:00
thefiddler
ff46455e56
[X11] Removed legacy X11Input driver
...
Its functionality has been moved directly into X11GLNative and
X11KeyMap.
2014-05-04 08:32:08 +02:00
thefiddler
94fdf1881c
[Platform] Improved mouse interface
...
- The complete mouse state is now available in mouse events
- Horizontal wheels are now supported
- MouseState now takes up less memory and has a simpler internal
implementation.
2014-05-04 01:29:55 +02:00
thefiddler
3e33ac9280
[Platform] Refactored INativeWindow backends
...
All INativeWindow implementations are now derived from
NativeWindowBase. They no longer implement legacy IInputDriver
themselves, but rather rely on LegacyInputDriver provided by
NativeWindowBase for compatibility. They also implement the new Mouse*
events.
2014-05-02 16:52:11 +02:00
thefiddler
612652910f
[Platform] Inherit NativeWindowBase
2014-05-02 14:18:40 +02:00
thefiddler
c8c0d32fcc
[OpenTK] Rearranged MouseCursor parameters
...
MouseCursor and WindowIcon now match GL.TexImage2D in the way they
arrange their parameters. The expected values of each parameter are now
documented.
2014-04-30 20:04:31 +02:00
thefiddler
890805f2ae
[Platform] Renamed MouseCursor.Rgba to Argb
...
This matches the default format of System.Drawing.Bitmap.
2014-04-30 08:38:57 +02:00
thefiddler
3da459b316
[All] Fixed checks for EXT_swap_control_tear
...
EGL and NSOpenGL do not offer an EXT_swap_control_tear equivalent so
use regular vsync for now. The relevant extension string is now
correctly checked on WGL and GLX.
2014-04-29 08:10:18 +02:00
thefiddler
4f9a2f78d6
Merge branch 'cursor' of https://github.com/thefiddler/opentk into thefiddler-cursor
2014-04-28 07:07:47 +02:00
thefiddler
0f920fb205
[X11] Fixed SGI_swap_control query
...
GLX can return valid function pointer to unsupported functions.
We need to check for extension support in addition to the
function pointer.
Fixes crash on OpenSUSE 13.1 in VirtualBox.
2014-04-28 01:29:34 +02:00
thefiddler
96b7419d83
[X11] Fixed INativeWindow.Cursor getter
2014-04-27 22:28:10 +02:00
Fraser Waters
2207144aec
Fix a bug in X11 CursorVisble with custom cursors.
...
CursorVisible reset to the default cursor when showing the cursor, it
should instead show the custom cursor if it's defined (else the default
cursor).
2014-04-27 10:53:34 +02:00
Fraser Waters
9239fd08e3
Custom cursors on X11.
2014-04-27 10:53:33 +02:00
Fraser Waters
6e23a55f35
Add XcursorImageLoadCursor function.
2014-04-27 10:53:33 +02:00
Fraser Waters
4f2658ab79
Make xcursor fields public.
2014-04-27 10:53:33 +02:00
Fraser Waters
cb5f354ddc
Change xcursor library name.
2014-04-27 10:53:33 +02:00
Fraser Waters
cf43b6003c
Create and Destroy functions for XcursorImage.
2014-04-27 10:53:33 +02:00
Fraser Waters
52043d5f74
Xcursor types.
2014-04-27 10:53:33 +02:00
thefiddler
dd55cea489
[All] Initial implementation of INativeWindow.Cursor property
...
Affects issue #9
2014-04-27 10:52:53 +02:00
thefiddler
a79086bb20
[X11] Set WM_CLASS property
...
This allows Ubuntu Unity and Gnome Shell to detect and display
the correct application name.
2014-04-26 20:27:00 +02:00
thefiddler
95f73310d8
[X11] Implemented new-style bindings for GLX
...
Replaced delegates with call instructions and completely removed the
old extension loading code.
2014-04-26 18:24:13 +02:00
thefiddler
433fa35f7e
[Graphics] GetAddress(string) is no longer needed
2014-04-26 14:20:17 +02:00
thefiddler
9605940661
[X11] Optimized XKey translation
2014-04-25 21:55:00 +02:00
csantos
c48f6399e4
Centering the cursor at (width/2, height/2), effectively fixing
...
the issue described in https://github.com/mono/MonoGame/issues/2283
2014-03-18 01:44:52 -03:00
Fraser Waters
b80bb86c5b
Remove unused fields and variables.
2014-02-25 10:31:17 +00:00
thefiddler
2f4161108d
[X11] Fixed KeyUp event arguments
...
KeyUp event was incorrectly fired with KeyDownEventArgs instead of KeyUpEventArgs. This is now fixed.
2014-02-25 01:13:46 +01:00
thefiddler
ee1fb2a917
[X11] Implemented modifier keys
2014-02-25 01:13:46 +01:00
thefiddler
a7228274aa
[Input] Added JoystickCapabilities.HatCount
2014-01-31 15:40:07 +01:00
thefiddler
615df9201b
[OpenTK] Moved RelaxGraphicsMode to Utilities
...
This functionality is useful for all platform backends and is not
specific to the X11 backend.
2014-01-22 10:49:27 +01:00
thefiddler
e7f037b0a2
[OpenTK] Fixed legacy joystick hotplugging & events
2014-01-15 01:13:39 +01:00
thefiddler
df7d7ae8eb
[Linux] Implemented joystick guid detection
2014-01-15 00:57:28 +01:00
thefiddler
fb917a6d89
[Linux] Implemented joystick hotplugging
2014-01-14 23:51:31 +01:00
Stefanos A.
4473c8373e
[X11] Implemented joystick hotplugging
...
This is a work in progress.
2014-01-14 18:37:16 +01:00
Stefanos A.
4203c14b22
[X11] Removed IJoystickDriver from X11Joystick
...
Legacy IJoystickDriver support is now implemented through a
LegacyJoystickDriver instance.
2014-01-14 18:36:19 +01:00
Stefanos A
cb4e4d5e72
Merge branch 'legacy_joystick' into linux_joystick
2014-01-14 18:17:05 +01:00
Stefanos A.
d467629ad8
[Linux] Added INotify bindings
...
These are not currently used.
2014-01-14 18:15:53 +01:00
thefiddler
94c3c24bfb
[OpenTK] Platform backends should inherit from PlatformFactoryBase
...
This reduces code duplication wrt deprecated interfaces and common
support code between backends.
2014-01-06 14:49:05 +01:00
thefiddler
3a63496b6d
Merge branch 'gamepad' into develop
...
Conflicts:
Source/OpenTK/OpenTK.csproj
2014-01-03 02:23:02 +01:00
thefiddler
8649e4a044
[Input] Added SetVibration() API skeleton
2014-01-02 19:52:00 +01:00
thefiddler
b9a8e365de
[Input] Added IJoystickDriver2.GetGuid() API
2013-12-31 14:09:17 +01:00
thefiddler
0b8db7c40b
[X11] Removed unused variable
2013-12-30 10:25:17 +01:00
thefiddler
4005710b99
[X11] Fixed current resolution detection.
2013-12-30 09:23:33 +01:00
thefiddler
0d1df41393
[X11] Improve GraphicsMode fallback (fixes issue #23 )
...
When the user requests a GraphicsMode that is not directly supported
by the GPU/drivers, we should relax the requested parameters until
we find a supported mode. An exception should only be thrown when
there is no usable mode.
This makes the X11 backend match the behavior of Windows. The SDL/X11
backend works a little bit differently, in that it falls back to the
a default mode directly if the requested mode is not available. There
is nothing we can do about that.
2013-12-27 14:01:21 +02:00
thefiddler
88f7cd68f5
[X11] Fixed border size on Gnome 3
...
The _NET_FRAME_EXTENTS atom is implemented differently by
different window managers, when window decorations are hidden
with Motif. Unity returns a 0 size, while Gnome 3 returns the
previous size.
This patch removes that ambiguity: when decorations are hidden,
border size becomes zero. This should work everywhere, unless
some window manager decides to troll us by decorating the window
when we explicitly request no decorations. Sigh...
2013-12-27 13:31:51 +02:00
thefiddler
6c6e09aae6
[X11] Allow resizing with fixed borders
...
Windows can now be resized programmatically, even when they have
WindowBorder.Fixed. All resizing logic is now consolidated in the
Bounds property, and ConfigureNotify messages are now handled
correctly depending on their source (StructureNotify or
SubStructureNotify.)
2013-12-27 11:07:38 +01:00
thefiddler
4d27b6ee55
Implemented X11 KeyDown/KeyUp events and reduced code duplication
2013-12-25 11:46:02 +01:00
thefiddler
ffdf881cea
Do not raise KeyPress for control characters
2013-12-25 11:14:30 +01:00
Stefanos A
7e5307bd4a
Added IJoystickDevice2 interface
2013-12-24 17:18:03 +01:00
thefiddler
484af18673
Updated internal IGamePadDriver interface
2013-12-24 17:18:00 +01:00
Stefanos A.
c53c0bc66f
Added GetProcAddress(IntPtr) overloads
...
This might allow us to improve startup performance, by avoiding string
marshaling during extension loading.
2013-11-28 23:21:19 +01:00
Stefanos A.
803c575201
Corrected core profile selection
...
According to GLX_create_context, the correct flag for a core profile is
GLX_CONTEXT_CORE_PROFILE_BIT_ARB.
2013-11-14 08:29:06 +01:00
Stefanos A.
f9fdddea64
Re-added WindowHandle property
...
There are projects that use reflection to access
*WindowInfo.WindowHandle directly. This change ensures we don't break
them.
2013-11-13 18:25:49 +01:00
Stefanos A
b08e59e861
Allow non-realized GraphicsMode
...
It is now possible to pass a non-realized GraphicsMode to the X11GLContext and X11GLNative constructors. A non-realized GraphicsMode is a GraphicsMode with a null Index (i.e. which has not passed through SelectGraphicsMode()).
2013-11-09 18:55:17 +01:00
parallels
62d6791736
Use glXGetProcAddressARB
...
According to the Linux OpenGL ABI, glXGetProcAddressARB must be statically exported by libGL. This does *not* hold true for glXGetProcAddress. We must used the ARB version instead.
Furthermore, glx entry points, unlike wgl, do not depend on any specific OpenGL context. This means we can load them in the constructor of the Glx class.
2013-11-09 18:50:53 +01:00
Stefanos A
2725b3cd08
Fix support for 3.2+ contexts (issue 3111)
...
glXGetProcAddress may return a non-null value even if a function is not
supported by the server. We need to check the extension string using
any GLX extensions. Fixes issue http://www.opentk.com/node/3111 "GLX
extension support is not checked correctly".
Furthermore, mode selection is now performed explicitly by the
X11GLContext constructor.
2013-11-09 11:16:14 +01:00
Stefanos A
3c71634667
Temp context not necessary for GLX
...
GLX entry points are not bound to a specific context. This means that, unlike WGL, GLX does not require a temporary context in order to load its entry points!
2013-11-09 11:07:37 +01:00
Stefanos A
1130d988b0
Use OpenTK.Minimal to stub out missing System.Drawing functionality
...
when building on Android or iOS platforms.
2013-10-12 05:06:54 +02:00
Stefanos A
459313dca8
Fixed line endings
2013-10-10 00:18:59 +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
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
Andy Korth
0f64af130a
Committing artfunkel patch for scan codes
2013-01-24 15:48:01 -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
the_fiddler
4fde3c4dab
Added conditional compilation and the necessary classes to compile OpenTK without referencing System.Drawing.dll. To build without System.Drawing, add "MINIMAL" to the conditional compilation symbols. Note that this is an experimental feature that will result in a source- and binary-incompatible dll.
2011-12-08 00:03:14 +00:00
the_fiddler
809d369c52
Implemented IGraphicsContext.SwapInterval property that supersedes IGraphicsContext.VSync. Fixes issue [ #2671 ]: "Expose SwapInterval to GameWindow".
2011-09-06 12:06:30 +00:00
the_fiddler
45a623a873
* X11Mouse.cs: Updated comments to clarify the capabilities of the driver.
2010-11-23 19:26:35 +00:00
the_fiddler
32a564c990
* XI2Mouse.cs: Removed unused code.
2010-11-23 19:21:28 +00:00
the_fiddler
88cbcc3a04
* X11Mouse.cs: Added SetPosition() implementation.
...
Added detection of pointer warping and used it to fake relative
motion.
2010-11-23 19:21:17 +00:00
the_fiddler
07cbb9dd8b
* Input/Mouse.cs:
...
* Input/IMouseDriver2.cs:
* Platform/X11/X11Mouse.cs:
* Platform/X11/XI2Mouse.cs:
* Platform/X11/Functions.cs:
* Platform/Windows/WMInput.cs:
* Platform/X11/X11GLNative.cs:
* Platform/Windows/WinRawMouse.cs: Added ability to set the position
of the mouse cursor.
[X11] Avoid grabbing the pointer, as this causes unexpected
side-effects (XInput2 stops working, debugging becomes difficult).
We now use XWarpPointer and try to discard the spurious MouseMove
events it generates.
[X11] Make cursor visible when window loses focus, to make debugging
easier. Restore previous state when it regains focus.
2010-11-23 17:17:13 +00:00
the_fiddler
6c0da79687
Refactored and simplified DisplayDevice detection (devices are now stored in the platform-specific drivers instead of the frontend).
...
Made XRR resolution changes more robust.
Resolution changes now refresh the DisplayDevices on Windows.
2010-11-21 20:16:18 +00:00
the_fiddler
529a376d77
* X11GLNative.cs: Added missing KeyDown/KeyUp events.
2010-11-09 11:52:14 +00:00
the_fiddler
666355103b
* XI2Mouse.cs:
...
* X11Factory.cs: Removed window hooking, as it complicates code
unnecessarily.
2010-11-04 18:01:07 +00:00
the_fiddler
b646cfa06c
* X11KeyMap.cs: Added AltGr keycode.
...
* X11Mouse.cs: Use XQueryPointer instead of trying to hook events.
* X11Keyboard.cs: Improved handling of key modifiers.
* X11Factory.cs: Use new X11Mouse API.
* Functions.cs: Added XButtonGrab/XButtonUngrab.
* API.cs: Added missing XF86 keysyms.
2010-11-04 17:57:09 +00:00
the_fiddler
915f8e559f
* X11Keyboard.cs: Use XQueryKeymap to discover key state.
...
* X11Factory.cs: Use new X11Keyboard interface.
Temporarily disabled XI2Mouse for testing.
* Functions.cs: Fixed type declaration for Time.
Added support for XIGrabDevice, XIUngrabDevice, XGrabKey, XUngrabKey,
XAllowEvents and XKeycodeToKeysym/XKeysymToKeycode.
* API.cs: Enumerate modes for XAllowEvents.
2010-11-01 08:01:44 +00:00
the_fiddler
2934c9d004
Decoupled new driver API from old public interface.
...
WinRawMouse can now detect mouse disconnection/connection events.
2010-10-29 11:27:40 +00:00
the_fiddler
0044e4442d
Modified GetState() to return the combined state for all mouse/keyboard devices.
2010-10-28 11:10:57 +00:00
the_fiddler
a070918e93
Removed events that are not part of the INativeWindow interface.
2010-10-28 09:34:13 +00:00
the_fiddler
e13a8e25ae
Added code to raise all available events. Removed unused events from old OpenTK versions. Fixed potential race condition when raising events (an event might become null between the null check and the actual raising).
2010-10-28 09:31:00 +00:00
the_fiddler
b7a0a7c800
Removed unused field.
2010-10-28 09:01:54 +00:00
the_fiddler
ec01b1caae
Don't shadow class field.
2010-10-28 09:01:43 +00:00
the_fiddler
5ff74aa685
Suppressed unused field warnings. The fields are necessary for interop, even if not explicitly accessed.
2010-10-28 09:01:25 +00:00
the_fiddler
bb01babfbd
* XI2Mouse.cs:
...
* X11Factory.cs: Detect whether XInput2 is not supported without
throwing an exception.
2010-10-22 07:41:56 +00:00
the_fiddler
d49b315ced
* Input/Mouse.cs:
...
* Platform/X11/X11Mouse.cs:
* Platform/X11/XI2Mouse.cs: Added internal list of mouse devices in
preparation for multi-mouse support.
2010-10-21 14:53:10 +00:00
the_fiddler
671457b60a
* OpenTK.csproj:
...
* Input/MouseState.cs:
* Platform/X11/Structs.cs:
* Platform/X11/XI2Mouse.cs:
* Platform/X11/Functions.cs:
* Platform/X11/X11Factory.cs: Added XInput2 driver for mice.
Multi-mouse support pending.
* Platform/X11/X11Mouse.cs: Log the driver type for debugging
purposes.
2010-10-21 12:32:00 +00:00
the_fiddler
e638652d01
* Platform/X11/X11Keyboard.cs: Added index bounds check for
...
GetState.
2010-10-21 07:56:48 +00:00
the_fiddler
7947cad6f8
* OpenTK.csproj:
...
* Input/MouseState.cs:
* Input/ButtonState.cs:
* Platform/X11/X11Mouse.cs:
* Platform/X11/X11Factory.cs: Added initial implementation of
OpenTK.Input.Mouse for X11.
2010-10-21 07:56:37 +00:00
the_fiddler
1529f811ac
* X11Keyboard.cs: Do not allocate an X11WindowInfo unnecessarily.
2010-10-20 15:16:55 +00:00
the_fiddler
86588ea60c
* Source/OpenTK/Input/Mouse.cs:
...
* Source/OpenTK/Platform/Factory.cs:
* Source/OpenTK/Input/InputDriver.cs:
* Source/OpenTK/Input/IMouseDriver.cs:
* Source/OpenTK/Platform/X11/X11Input.cs:
* Source/OpenTK/Platform/X11/X11Factory.cs:
* Source/OpenTK/Platform/Windows/WMInput.cs:
* Source/OpenTK/Platform/IPlatformFactory.cs:
* Source/OpenTK/Platform/MacOS/CarbonInput.cs:
* Source/OpenTK/Platform/Windows/WinFactory.cs:
* Source/OpenTK/Platform/MacOS/MacOSFactory.cs:
* Source/OpenTK/Platform/Windows/WinGLNative.cs:
* Source/OpenTK/Platform/Windows/WinRawMouse.cs:
* Source/OpenTK/Platform/Windows/WinRawInput.cs: Added new MouseDriver
interface and added stub internal implementations.
2010-10-20 14:58:38 +00:00
the_fiddler
e801660ff7
* Source/OpenTK/OpenTK.csproj:
...
* Source/OpenTK/Input/Keyboard.cs:
* Source/OpenTK/Input/InputDriver.cs:
* Source/OpenTK/Input/KeyboardState.cs:
* Source/OpenTK/Input/IKeyboardDriver.cs:
* Source/OpenTK/Platform/X11/X11Input.cs:
* Source/OpenTK/Platform/X11/Functions.cs:
* Source/OpenTK/Platform/X11/X11Factory.cs:
* Source/OpenTK/Platform/Windows/WMInput.cs:
* Source/OpenTK/Platform/X11/X11Keyboard.cs:
* Source/OpenTK/Platform/MacOS/CarbonInput.cs:
* Source/OpenTK/Platform/Windows/WinGLNative.cs:
* Source/OpenTK/Platform/Windows/WinRawInput.cs:
* Source/OpenTK/Platform/Windows/WinRawKeyboard.cs: Added initial
OpenTK.Input.Keyboard implementation for X11.
2010-10-20 14:33:23 +00:00
the_fiddler
7c0dbf7dcf
* Source/OpenTK/Platform/X11/X11GLNative.cs: Confine pointer to
...
window when it becomes invisible.
2010-10-20 09:50:49 +00:00
the_fiddler
3b72054480
* Source/OpenTK/Platform/X11/X11GLNative.cs: Refactored empty cursor
...
creation into its own function. Create one empty cursor for the
lifetime of the window.
2010-10-20 09:19:34 +00:00
the_fiddler
42e0880cbb
* Source/OpenTK/NativeWindow.cs:
...
* Source/OpenTK/INativeWindow.cs:
* Source/OpenTK/Platform/X11/API.cs:
* Source/OpenTK/Platform/X11/X11GLNative.cs:
* Source/OpenTK/Platform/Windows/WinGLNative.cs:
* Source/OpenTK/Platform/MacOS/CarbonGLNative.cs:
* Source/Examples/OpenTK/Test/GameWindowStates.cs: Initial
implementation of CursorVisible API. See issue [#1560 ].
2010-10-18 15:25:25 +00:00
the_fiddler
8f9cd3decf
Report Xinerama as not supported when it fails to detect any devices. Fixes issue on Nvidia drivers when Twinview is enabled.
2010-10-09 19:11:45 +00:00
the_fiddler
ddb51b25f7
Added XF86VM fallback when XRandR is missing (many thanks to jdomnitz!)
2010-10-09 19:10:39 +00:00