Fraser Waters [Thu, 19 Jun 2014 21:51:47 +0000 (22:51 +0100)]
Fixes bugs in String marshalling.
Fixes two issues:
1. FreeStringArrayPtr used the wrong variable in the offset to
ReadIntPtr causing an access violation.
2. Better cleanup of memory in MarshalStringArrayToPtr when any alloc
fails.
thefiddler [Sun, 8 Jun 2014 10:30:41 +0000 (12:30 +0200)]
Merge pull request #132 from thefiddler/fixbool2
Fix bool return types
thefiddler [Sun, 8 Jun 2014 07:58:01 +0000 (09:58 +0200)]
[ES][GL] Regenerated bindings
thefiddler [Sun, 8 Jun 2014 07:57:48 +0000 (09:57 +0200)]
[Bind] Fixed a System.FormatException
thefiddler [Sun, 8 Jun 2014 07:42:27 +0000 (09:42 +0200)]
[Rewrite] Implement byte -> bool marshalling
Since GL_TRUE and GL_FALSE match .Net true and false (1 and 0,
respectively), we can simply reinterpret the byte value as a bool.
In the future, we could issue a `(if value == 0 then false else true)`
statement for added safety, but this does not appear to be necessary
right now.
thefiddler [Sun, 8 Jun 2014 07:40:30 +0000 (09:40 +0200)]
[Bind] Use byte for GLboolean return types
GLboolean is typedefed as an unsigned char. It appears that `[return:
MarshalAs(UnmanagedType.U1)]` is ignored in calli p/invokes, so we need
to take care of this ourselves by emitting byte instead of bool for the
p/invoke signature. The public API remains unchanged.
Fixes issue #129.
thefiddler [Mon, 2 Jun 2014 12:47:43 +0000 (14:47 +0200)]
Merge pull request #127 from thefiddler/apitest
[AL][ES][GL] Add API compatibility test
thefiddler [Mon, 2 Jun 2014 11:03:30 +0000 (13:03 +0200)]
Merge pull request #128 from Frassle/half-fix
Fix a bug in single->half conversion.
Fraser Waters [Mon, 2 Jun 2014 10:16:43 +0000 (11:16 +0100)]
Fix a bug in single->half conversion.
The original C code had if(m & 0x00800000) which is true if the
expresssion does not evaluate to zero. This was inncorretly translated
to the C# code if((m & 0x00800000) == 1) which only evaluates true if
the expression evalaute to 1, which it never does. The correct test is
to test not equal to zero (!= 0).
thefiddler [Sat, 31 May 2014 22:38:32 +0000 (00:38 +0200)]
[Test] Added API.Desktop to OpenTK.sln
thefiddler [Sat, 31 May 2014 22:10:21 +0000 (00:10 +0200)]
[Test] Added API compatibility test
This test checks every public API under OpenTK.Audio, OpenTK.Compute
and OpenTK.Graphics for compatibility. Incompatible changes will cause
a compilation failure.
thefiddler [Sat, 31 May 2014 13:54:20 +0000 (15:54 +0200)]
Merge pull request #126 from thefiddler/sdlversion
[SDL] Do not attempt to use versions < 2.0.0
thefiddler [Fri, 30 May 2014 11:50:11 +0000 (13:50 +0200)]
[SDL] Removed unnecessary if-branch
thefiddler [Fri, 30 May 2014 11:47:27 +0000 (13:47 +0200)]
[SDL] Do not attempt to use versions < 2.0.0
Versions prior to 2.0.0 are not ABI-compatible with 2.0.x and
attempting to use those will result in random instability. We now
explicitly check the SDL2 version before enabling the SDL2 backend.
thefiddler [Mon, 19 May 2014 23:11:41 +0000 (01:11 +0200)]
Merge pull request #125 from thefiddler/r112
Prepare for 1.1.2 release
thefiddler [Mon, 19 May 2014 23:00:54 +0000 (01:00 +0200)]
[Mac] Fixed NRE and initial position on 64bit
thefiddler [Mon, 19 May 2014 22:14:57 +0000 (00:14 +0200)]
[Mac] Added NSFloat implementation
thefiddler [Mon, 19 May 2014 21:14:41 +0000 (23:14 +0200)]
Merge pull request #123 from thefiddler/eglfix
[EGL] Fix initialization and extension loading
thefiddler [Mon, 19 May 2014 21:14:32 +0000 (23:14 +0200)]
Merge pull request #124 from thefiddler/xdestroyfix
[X11] Fixed BadWindow error on shutdown
thefiddler [Mon, 19 May 2014 21:11:25 +0000 (23:11 +0200)]
[Docs] Yet more formatting fixes
thefiddler [Mon, 19 May 2014 21:08:22 +0000 (23:08 +0200)]
[Docs] Minor formatting fixes
thefiddler [Mon, 19 May 2014 21:03:39 +0000 (23:03 +0200)]
[Graphics] Synced with May 2014 Khronos spec
thefiddler [Mon, 19 May 2014 21:01:29 +0000 (23:01 +0200)]
[Docs] Updated documentation for release
thefiddler [Mon, 19 May 2014 20:02:46 +0000 (22:02 +0200)]
[X11] Fixed BadWindow error on shutdown
This was caused by calling XDestroyWindow inside Dispose(), or
by processing events after calling XDestroyWindow. Pending events
are now discarded when Close() is called and not cancelled, and
XDestroyWindow is only called if the window exists.
thefiddler [Mon, 19 May 2014 10:34:09 +0000 (12:34 +0200)]
Removed file committed by mistake
thefiddler [Mon, 19 May 2014 08:52:37 +0000 (10:52 +0200)]
Merge branch 'xkeyfix' of https://github.com/thefiddler/opentk into develop
thefiddler [Mon, 19 May 2014 07:22:27 +0000 (09:22 +0200)]
[X11] Improved WindowBorder.Fixed detection
This now works even without having to map the window first.
thefiddler [Mon, 19 May 2014 06:43:45 +0000 (08:43 +0200)]
Merge branch 'develop' of git://github.com/Goz3rr/opentk into pr/122
thefiddler [Mon, 19 May 2014 06:31:38 +0000 (08:31 +0200)]
[EGL] Fixed display connection
We now use the display connection specified in EglWindowInfo
throughout the EGL backend, instead of opening new connections
in EglGraphicsMode. This fixes EGL errors in
Egl.CreateWindowSurface.
As part of this fix, all instances of
IPlatformFactory.CreateGraphicsMode() have been removed. This
API is no longer used in OpenTK 1.1
thefiddler [Sun, 18 May 2014 20:04:52 +0000 (22:04 +0200)]
[EGL] Egl.GetProcAddress only returns extensions
We have to load statically exported entry points using the regular OS
symbol loading facilities, and only use eglGetProcAddress for
extensions.
Fixes crash in https://github.com/mono/MonoGame/pull/2377
Goz3rr [Fri, 16 May 2014 22:27:38 +0000 (00:27 +0200)]
Made NativeWindow set WindowBorder to Fixed when created with FixedWindow flag like SDL windows
Goz3rr [Thu, 15 May 2014 09:52:55 +0000 (11:52 +0200)]
Changed TranslateFlags to actually translate flags instead of using switch
thefiddler [Thu, 15 May 2014 08:24:03 +0000 (10:24 +0200)]
[X11] Renamed XI2Mouse
This file now implements both mouse and keyboard input, so its name
has been updated to reflect that.
thefiddler [Thu, 15 May 2014 08:22:01 +0000 (10:22 +0200)]
[X11] Split X11 and XI2 input drivers
thefiddler [Thu, 15 May 2014 08:21:06 +0000 (10:21 +0200)]
[X11] Implemented XI2 keyboard input
thefiddler [Thu, 15 May 2014 08:20:23 +0000 (10:20 +0200)]
[X11] Added XIDeviceType enumeration
thefiddler [Wed, 14 May 2014 23:16:28 +0000 (01:16 +0200)]
[X11] Rebased on develop branch
thefiddler [Wed, 14 May 2014 22:33:50 +0000 (00:33 +0200)]
[X11] Use XKB for layout-independent input
The code will fall back to core X11 if XKB is not available.
thefiddler [Wed, 14 May 2014 22:32:37 +0000 (00:32 +0200)]
[X11] Added XKB bindings
thefiddler [Wed, 14 May 2014 22:43:38 +0000 (00:43 +0200)]
Merge pull request #120 from thefiddler/xcursorfix
[X11] Improve mouse input
Goz3rr [Wed, 14 May 2014 22:38:06 +0000 (00:38 +0200)]
Added GameWindowFlags.FixedWindow to allow for fixed border SDL Windows
thefiddler [Wed, 14 May 2014 16:01:08 +0000 (18:01 +0200)]
[Mac] Explicitly retain/release CocoaWindowInfo instances
thefiddler [Tue, 13 May 2014 22:42:05 +0000 (00:42 +0200)]
[X11] Removed unused SetCursor() function
thefiddler [Tue, 13 May 2014 22:00:13 +0000 (00:00 +0200)]
[X11] Removed stale comment
thefiddler [Tue, 13 May 2014 21:51:55 +0000 (23:51 +0200)]
[X11] Removed unused warp detection code
thefiddler [Tue, 13 May 2014 21:50:39 +0000 (23:50 +0200)]
[X11] Fixed GetCursorState() after SetPosition()
The new position is now immediately reflected in GetCursorPos().
thefiddler [Tue, 13 May 2014 21:34:27 +0000 (23:34 +0200)]
[X11] Warn when XI2Mouse is not supported.
Without the XI2 extension, mouse support will suffer significantly.
More specifically, low-level mouse events will not be available.
thefiddler [Tue, 13 May 2014 21:25:56 +0000 (23:25 +0200)]
[Input] Renamed MouseScrollWheel to MouseScroll
This better describes the functionality of this structure.
thefiddler [Tue, 13 May 2014 21:23:51 +0000 (23:23 +0200)]
[X11] Implemented high-resolution scroll events
thefiddler [Tue, 13 May 2014 20:53:47 +0000 (22:53 +0200)]
[Platform] Fixed OnMouseDown/Up events for secondary buttons
thefiddler [Tue, 13 May 2014 20:31:45 +0000 (22:31 +0200)]
[X11] Improved CursorVisible = false behavior
We now use an XGrabPointer to confine the cursor to the window,
instead of the XWarpPointer hack. Fixes issue #28 and #36.
thefiddler [Tue, 13 May 2014 11:23:20 +0000 (13:23 +0200)]
[X11] Fixed cursor position when CursorVisible becomes true
thefiddler [Tue, 13 May 2014 07:27:21 +0000 (09:27 +0200)]
[X11] Fixed Cursor when CursorVisible = false
Setting Cursor will no longer override CursorVisible.
thefiddler [Mon, 12 May 2014 15:01:01 +0000 (17:01 +0200)]
Merge branch 'nulldisplay' into develop
thefiddler [Mon, 12 May 2014 15:00:42 +0000 (17:00 +0200)]
Merge branch 'nvidiafix' into develop
thefiddler [Mon, 12 May 2014 15:00:16 +0000 (17:00 +0200)]
Merge branch 'arrayfix' into develop
thefiddler [Mon, 12 May 2014 14:34:02 +0000 (16:34 +0200)]
[Rewrite] Removed unused conditional.
thefiddler [Thu, 1 May 2014 07:47:55 +0000 (09:47 +0200)]
[OpenTK] Do not crash when no monitor connected
NativeWindow now checks for a non-null device before attempting to
access its properties. Affects
https://github.com/mono/MonoGame/issues/2416
thefiddler [Mon, 12 May 2014 12:50:03 +0000 (14:50 +0200)]
[X11] Correct Glx.*.SwapInterval definitions
Improved error checking means we are no longer crashing when
SwapInterval is not available.
thefiddler [Mon, 12 May 2014 11:59:48 +0000 (13:59 +0200)]
[X11] Fixed GLX extension loading
GLX is now using the new extension loading mechanism,
and the entry point names now much the available slots.
thefiddler [Mon, 12 May 2014 11:03:27 +0000 (13:03 +0200)]
[Rewrite] Fixed 2d/3d arrays on .Net
Mono can use ldlen and ldelema on both 1d arrays (vectors) and 2d/3d
arrays. However, .Net can only use these instructions on 1d arrays -
higher rank arrays must use get_Length and Address explicitly.
thefiddler [Sun, 11 May 2014 23:49:38 +0000 (01:49 +0200)]
[X11] Flush XSendEvent on exit
thefiddler [Sun, 11 May 2014 23:48:06 +0000 (01:48 +0200)]
[X11] Fixed XI2Mouse smooth scrolling
The scrolling valuator offsets are now calculated correctly, based on
the number of set bits in the valuator mask.
Additionally XI2Mouse now runs on a background thread, using blocking
XIfEvent. This should improve resonsiveness and reduce CPU usage, due
to reduced polling.
thefiddler [Sun, 11 May 2014 20:54:47 +0000 (22:54 +0200)]
[X11] Improved XI2Mouse implementation
Horizontal and vertical smooth scrolling is now supported.
Movement axes are now correctly identified. Device hotplugging
has been improved.
thefiddler [Sat, 10 May 2014 15:54:49 +0000 (17:54 +0200)]
[Examples] Improved Mouse.GetState output
thefiddler [Sat, 10 May 2014 15:54:34 +0000 (17:54 +0200)]
[Mac] Implemented Mouse.GetCursorState()
thefiddler [Sat, 10 May 2014 00:12:52 +0000 (02:12 +0200)]
[Examples] Test Mouse.SetPosition
thefiddler [Sat, 10 May 2014 00:06:40 +0000 (02:06 +0200)]
[SDL] Use h-wheel events
thefiddler [Fri, 9 May 2014 23:44:27 +0000 (01:44 +0200)]
[Input] Improve SDL2 and Windows GetCursorState
thefiddler [Fri, 9 May 2014 23:30:46 +0000 (01:30 +0200)]
[Input] Added Mouse.GetCursorPos() (WIP)
thefiddler [Mon, 12 May 2014 00:20:29 +0000 (02:20 +0200)]
Merge pull request #114 from thefiddler/nativewindow
INativeWindow cleanup and consolidation
thefiddler [Fri, 9 May 2014 23:52:06 +0000 (01:52 +0200)]
[Examples] Fixed Scroll.X/Y misreporting
Scroll.X and Y are no longer swapped.
thefiddler [Fri, 9 May 2014 14:45:45 +0000 (16:45 +0200)]
[Platform] Fixed keys getting stuck on focus loss
NativeWindowBase will now clear all keyboard keys when losing focus.
This prevents keys from getting stuck when refocusing the window.
[Win] Also fixed WindowState.Maximized when WindowBorder is Hidden and
the window is minimized.
thefiddler [Fri, 9 May 2014 14:14:13 +0000 (16:14 +0200)]
[Win] Fixed infinite recursion
thefiddler [Fri, 9 May 2014 13:24:12 +0000 (15:24 +0200)]
[Graphics] Made entry points internal
Internal protected means internal *or* protected, not internal *and*
protected.
thefiddler [Fri, 9 May 2014 13:23:39 +0000 (15:23 +0200)]
[Input] Do not hook FocusedChanged
This is handled by NativeWindowBase now.
thefiddler [Fri, 9 May 2014 13:22:33 +0000 (15:22 +0200)]
[Win] Cleaned up window size/pos properties
thefiddler [Fri, 9 May 2014 11:10:23 +0000 (13:10 +0200)]
[X11] Fixed WindowBorder and WindowState setters
After many hours of fighting with xlib, the monster is slain and
WindowBorder/WindowState changes now take effect without messing
up the window size or position on the desktop.
Phew!
thefiddler [Thu, 8 May 2014 23:49:51 +0000 (01:49 +0200)]
[Platform] Raise KeyUp events on focus lost
This ensures that no keys are stuck in pressed state when the user
switches away from the application window.
thefiddler [Thu, 8 May 2014 22:26:51 +0000 (00:26 +0200)]
[X11] Fixed key repeat
thefiddler [Thu, 8 May 2014 22:13:23 +0000 (00:13 +0200)]
[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.
thefiddler [Thu, 8 May 2014 18:58:11 +0000 (20:58 +0200)]
[X11] Corrected size events
thefiddler [Wed, 7 May 2014 22:51:32 +0000 (00:51 +0200)]
Merge pull request #113 from danzel/develop
[Platform] Correct spelling in INativeWindow
Dave Leaver [Wed, 7 May 2014 22:21:27 +0000 (10:21 +1200)]
Correct spelling in INativeWindow
thefiddler [Wed, 7 May 2014 21:21:24 +0000 (23:21 +0200)]
[GL] Added generic RenderbufferStorage depth-stencil formats
According to the OpenGL 4.4 specification, RenderbufferStorage accepts
both generic and sized depth-stencil formats (DepthComponent and
DepthStencil). See sections 9.2.4, 9.2.5 and 9.4.
thefiddler [Wed, 7 May 2014 11:24:22 +0000 (13:24 +0200)]
Merge pull request #111 from thefiddler/sdl_stack_fix
[SDL] Fixed a stack corruption issue on win32
thefiddler [Tue, 6 May 2014 07:36:30 +0000 (09:36 +0200)]
[SDL] Avoid CursorVisible = true cursor jump
thefiddler [Tue, 6 May 2014 07:31:35 +0000 (09:31 +0200)]
[SDL] Report mouse in client coordinates
thefiddler [Tue, 6 May 2014 07:12:08 +0000 (09:12 +0200)]
[Examples] Test MouseCursor in GameWindowStates
thefiddler [Tue, 6 May 2014 07:03:13 +0000 (09:03 +0200)]
[Mac] Fixed PointTo* calculations
On HiDPI displays, the client rectangle is using a pixel-based
coordinate system, while the screen is using a point-based coordinate
system. PointToClient/PointToScreen now correctly accounts for that.
thefiddler [Tue, 6 May 2014 07:02:09 +0000 (09:02 +0200)]
[Platform] Forward PointToScreen to backend
thefiddler [Tue, 6 May 2014 07:01:23 +0000 (09:01 +0200)]
[Platform] More selective mouse events
We should not raise mouse events when the cursor state hasn’t changed.
thefiddler [Tue, 6 May 2014 07:00:42 +0000 (09:00 +0200)]
[Examples] Added PointToClient test
thefiddler [Mon, 5 May 2014 13:11:01 +0000 (15:11 +0200)]
[SDL] Improved documentation of Event size hack
Stefanos A [Mon, 5 May 2014 10:46:48 +0000 (12:46 +0200)]
[SDL] Fixed a stack corruption issue on win32
thefiddler [Mon, 5 May 2014 07:14:14 +0000 (09:14 +0200)]
[Mac] Report KeyDown/Up events for modifier flags
thefiddler [Sun, 4 May 2014 22:56:19 +0000 (00:56 +0200)]
[Examples] Print KeyboardState
thefiddler [Sun, 4 May 2014 22:43:58 +0000 (00:43 +0200)]
[Examples] Test key events for consistency
thefiddler [Sun, 4 May 2014 22:43:45 +0000 (00:43 +0200)]
[Input] Implement key repeat
thefiddler [Sun, 4 May 2014 15:05:08 +0000 (17:05 +0200)]
[OpenTK] Refactor keyboard and mouse handling
A lot of duplicated code is now moved to NativeWindowBase and
LegacyInputDriver.