Stefanos A. [Fri, 20 Dec 2013 22:31:42 +0000 (23:31 +0100)]
Fix issue #19
Don't filter window messages passed to our window (see
http://blogs.msdn.com/b/oldnewthing/archive/2005/02/09/369804.aspx).
Additionally, return the correct values for all messages we are actually
handling and clean up unmanaged memory after we are done with the
window.
Stefanos A. [Fri, 20 Dec 2013 22:29:47 +0000 (23:29 +0100)]
Explicitly set WindowProcedure calling convention
Stefanos A. [Fri, 20 Dec 2013 07:42:36 +0000 (08:42 +0100)]
Simplify ProcessEvents implementation
Instead of combining PeekMessage+GetMessage, we can simply call
PeekMessage(Remove) to achieve the same effect. This also allows us to
remove the IsIdle property, which is no longer used anywhere.
Stefanos A. [Thu, 19 Dec 2013 09:39:36 +0000 (10:39 +0100)]
Threads with message pump require STA comparment
May affect issue #19
Stefanos A. [Wed, 18 Dec 2013 13:51:00 +0000 (14:51 +0100)]
Replace Wgl.GetCurrentDC with cached dc
with
Stefanos A. [Wed, 18 Dec 2013 13:29:18 +0000 (14:29 +0100)]
No point in using 16bpp color
Stefanos A. [Wed, 18 Dec 2013 13:29:06 +0000 (14:29 +0100)]
Cleaned up temporary context construction
The temporary context is now retained until the actual context has been
constructed. If we don't do this, then WGL_ARB_create_context may fail
to work correctly on specific GPUs (e.g. Intel). This may affect issue
#19.
Stefanos A. [Wed, 18 Dec 2013 13:16:49 +0000 (14:16 +0100)]
Fixed GetModesARB implementation
The correct way to query number of available pixel formats is to use
Wgl.Arb.GetPixelFormatAttrib(NumberPixelFormatsArb), not
Wgl.Arb.ChoosePixelFormats. This fixes an issue where Intel drivers
would fail to report any pixel formats in GetModesARB, even when
WGL_ARB_pixel_format is supported.
Stefanos A. [Tue, 17 Dec 2013 22:31:04 +0000 (23:31 +0100)]
Minor code cleanup
Stefanos A. [Tue, 17 Dec 2013 21:35:30 +0000 (22:35 +0100)]
Use gdi32 implementations of functions
Several functions are defined in both gdi32 and opengl32. Using the
opengl32/wgl versions did not appear to help with issue #19. Let's use
the gdi32 version instead, as suggested here:
https://www.opengl.org/wiki/Platform_specifics:_Windows#The_WGL_functions
Stefanos A. [Tue, 17 Dec 2013 20:24:25 +0000 (21:24 +0100)]
Load opengl32.dll before gdi32.dll
According to
http://stackoverflow.com/questions/199016/wglcreatecontext-in-c-sharp-failing-but-not-in-managed-c,
opengl32.dll must be loaded before gdi32.dll. Affect issue #19.
Stefanos A. [Tue, 17 Dec 2013 15:40:15 +0000 (16:40 +0100)]
Minor code cleanup
No need to wrap Wgl.DescribePixelFormat, just call it directly.
Stefanos A. [Tue, 17 Dec 2013 15:39:45 +0000 (16:39 +0100)]
Use opengl32 instead of gdi32 throughout
Since we are dynamically loading opengl32.dll, we are supposed to use
the wgl version of functions that exist in both opengl32 and gdi32 dlls.
Stefanos A. [Tue, 17 Dec 2013 15:38:56 +0000 (16:38 +0100)]
Corrected the entrypoint for wglChoosePixelFormat
Stefanos A. [Tue, 17 Dec 2013 11:09:00 +0000 (12:09 +0100)]
Clean up shader error detection
Stefanos A. [Mon, 16 Dec 2013 11:43:11 +0000 (12:43 +0100)]
Updated author information (2/2)
Stefanos A. [Mon, 16 Dec 2013 10:07:05 +0000 (11:07 +0100)]
Updated author information
Stefanos A. [Mon, 16 Dec 2013 09:44:37 +0000 (10:44 +0100)]
Use 16bit depth in GraphicsMode.Default
16bits appear to be better supported than 24bits on virtual machines.
Stefanos A. [Mon, 16 Dec 2013 09:43:56 +0000 (10:43 +0100)]
GraphicsContext cannot be released by finalizer
On many/most platforms, GraphicsContexts can only be released by the
thread where they are current. This means that the user must call
GraphicsContext.Dispose() or risk a resource leak.
Since we cannot release contexts on the finalizer thread, we should keep
strong references, instead of weak references, until the user explicitly
calls Dispose().
This patch fixes issues with SDL2 crashing when running the MonoGame
WindowsGL test suite.
Stefanos A. [Mon, 16 Dec 2013 09:39:54 +0000 (10:39 +0100)]
Improved diagnostics
This helps when tracking down GraphicsContext-related issues in SDL2.
Stefanos A. [Mon, 16 Dec 2013 09:39:11 +0000 (10:39 +0100)]
Added hack for MonoGame compatibility
MonoGame uses reflection to access internal APIs. We need to keep these
available until this is fixed downstream.
Stefanos A. [Mon, 16 Dec 2013 09:37:59 +0000 (10:37 +0100)]
Protect against recursion in Closing event
Misbehaving clients that shall not be named here may call
GameWindow.Close() inside the GameWindow.Closing event. This causes
recursion in SDL2, crashing the application.
This patch adds a guard to protect against recursion when calling
GameWindow.Close().
Stefanos A [Mon, 16 Dec 2013 00:55:05 +0000 (01:55 +0100)]
Added overloads for compatibility with svn r3127
Several projects are still using the last svn revision from the
sourceforge repository (r3127). These overloads provide an upgrade path
from r3127 to OpenTK 1.1.
Stefanos A [Sun, 15 Dec 2013 22:18:33 +0000 (23:18 +0100)]
Normalized xml doc file paths
Stefanos A [Sun, 15 Dec 2013 22:08:53 +0000 (23:08 +0100)]
Removed lib/ and *.nupkg from zip archive
Stefanos A [Sun, 15 Dec 2013 22:08:19 +0000 (23:08 +0100)]
Fixed build order in Nsis configuration
Stefanos A [Sun, 15 Dec 2013 22:07:56 +0000 (23:07 +0100)]
Added Dependencies folder to Nsis installer
Stefanos A [Sun, 15 Dec 2013 21:33:28 +0000 (22:33 +0100)]
Fixed build in Nsis configuration
Stefanos A [Sun, 15 Dec 2013 21:32:32 +0000 (22:32 +0100)]
Updated OpenGL documentation to Khronos r24522
Stefanos A [Sun, 15 Dec 2013 21:02:32 +0000 (22:02 +0100)]
Fixed deprecation warning
Stefanos A [Sun, 15 Dec 2013 21:02:21 +0000 (22:02 +0100)]
Eliminated cls-compliance warnings in BlittableValueType
Stefanos A [Sun, 15 Dec 2013 21:02:08 +0000 (22:02 +0100)]
Eliminated cls-compliance warnings in the math library
Stefanos A [Sun, 15 Dec 2013 21:01:45 +0000 (22:01 +0100)]
Eliminated CLS-compliance warnings in the bindings
Stefanos A [Sun, 15 Dec 2013 19:57:25 +0000 (20:57 +0100)]
Fixed memory corruption on string return type marshaling
Stefanos A [Sun, 15 Dec 2013 17:30:47 +0000 (18:30 +0100)]
Merge branch 'no-reflect' of https://github.com/opentk/opentk
Conflicts:
OpenTK.sln
parallels [Sun, 15 Dec 2013 17:27:24 +0000 (18:27 +0100)]
Compatibility fixes for Mono 2.10
The Mono 2.10 compiler fails when compiling extern methods that are not
marked as DllImport. We fix that by adding a method body that throws a
NotImplementedException instead.
Additionally, MonoDevelop 2.8 cannot open sln files with ToolsVersion 12.
The fix is to change ToolsVersion to 11.
Stefanos A [Sun, 15 Dec 2013 16:37:25 +0000 (17:37 +0100)]
Merge branch 'no-reflect'
Conflicts:
OpenTK.sln
Source/Bind/FuncProcessor.cs
Source/OpenTK/Graphics/ES11/ES11.cs
Source/OpenTK/Graphics/ES11/ES11Core.cs
Source/OpenTK/Graphics/ES11/ES11Delegates.cs
Source/OpenTK/Graphics/ES20/ES20.cs
Source/OpenTK/Graphics/OpenGL/GL.cs
Source/OpenTK/Graphics/OpenGL/GLCore.cs
Source/OpenTK/Graphics/OpenGL/GLDelegates.cs
Source/OpenTK/Graphics/OpenGL/GLObsolete.cs
Stefanos A [Sun, 15 Dec 2013 15:58:33 +0000 (16:58 +0100)]
Maintain backwards compatibility with 1.1
Stefanos A [Sun, 15 Dec 2013 15:36:37 +0000 (16:36 +0100)]
Merge master into no-reflect
Stefanos A. [Sun, 15 Dec 2013 14:36:24 +0000 (15:36 +0100)]
Build UpdateVersion before OpenTK
Stefanos A. [Sun, 15 Dec 2013 14:36:12 +0000 (15:36 +0100)]
Generate debug symbols in release builds
Stefanos A. [Sun, 15 Dec 2013 14:35:57 +0000 (15:35 +0100)]
Improved WindowState changes on SDL2 backend
SDL2 fails to report several different WindowState changes. OpenTK uses
a number of hacks to make it work to some extent, however real fixes
will have to be implemented upstream.
Stefanos A [Sun, 15 Dec 2013 12:51:29 +0000 (13:51 +0100)]
Merge branch 'sdlres'
Stefanos A. [Sun, 15 Dec 2013 12:47:29 +0000 (13:47 +0100)]
Updated solution to VS2013 format.
Stefanos A. [Sun, 15 Dec 2013 12:47:19 +0000 (13:47 +0100)]
Added nuget.exe to project items
Stefanos A. [Sun, 15 Dec 2013 12:36:00 +0000 (13:36 +0100)]
Committed nuget cmdline tool to source control
This appears to be the simplest (only?) way to use nuget in a
cross-platform manner.
Stefanos A [Sun, 15 Dec 2013 12:23:16 +0000 (13:23 +0100)]
Merge branch 'nuget'
Stefanos A [Sun, 15 Dec 2013 12:21:22 +0000 (13:21 +0100)]
Add OpenTK.dll.config as content
Stefanos A [Sun, 15 Dec 2013 12:05:06 +0000 (13:05 +0100)]
MonoDevelop insists on making these changes
Stefanos A [Sun, 15 Dec 2013 12:04:29 +0000 (13:04 +0100)]
Updated description
Stefanos A [Sun, 15 Dec 2013 12:03:56 +0000 (13:03 +0100)]
Generate nuget package for OpenTK.GLControl
Stefanos A [Sun, 15 Dec 2013 12:01:39 +0000 (13:01 +0100)]
Generate xml documentation for OpenTK.GLControl
Stefanos A [Sun, 15 Dec 2013 11:02:43 +0000 (12:02 +0100)]
Improved nuget version information
Stefanos A [Sun, 15 Dec 2013 11:02:01 +0000 (12:02 +0100)]
Do not commit build timestamp to repository
Stefanos A [Sun, 15 Dec 2013 11:01:26 +0000 (12:01 +0100)]
Generate both build timestamp and version information
parallels [Sat, 14 Dec 2013 10:54:55 +0000 (11:54 +0100)]
Delay VisualInfo construction (fixes #17)
In OpenTK 1.1, GraphicsMode queries the platform for a mode id lazily.
By delaying VisualInfo selection until the GraphicsContext is constructed
we ensure that a concrete GraphicsMode is selected and ready for use.
Stefanos A [Fri, 13 Dec 2013 23:20:39 +0000 (00:20 +0100)]
Copy build artifact to root directory regardless of artifact name
Stefanos A [Fri, 13 Dec 2013 23:19:18 +0000 (00:19 +0100)]
Added release notes for OpenTK
Stefanos A [Fri, 13 Dec 2013 23:19:03 +0000 (00:19 +0100)]
Added nuget lib directory to gitignore
Stefanos A [Fri, 13 Dec 2013 09:52:11 +0000 (10:52 +0100)]
Added nuget build target to OpenTK.sln
Stefanos A [Fri, 13 Dec 2013 09:51:34 +0000 (10:51 +0100)]
Added nuget build target
This will create a nupkg file for OpenTK and copy it to the base
directory. Version information is currently hardcoded to 1.1 (this
should be fixed.)
Stefanos A [Thu, 12 Dec 2013 23:07:13 +0000 (00:07 +0100)]
Implemented resolution change workaround on SDL2
SDL2 does not support changing display resolutions independently of an
SDL window. As a workaround, if the user uses ChangeResolution and then
makes a GameWindow fullscreen, we use old-style SDL fullscreen which
changes the resolution. If the user makes a GameWindow fullscreen
without calling ChangeResolution first, we use the new
fullscreen-desktop mode to match the other OpenTK backends.
Stefanos A [Mon, 9 Dec 2013 22:46:07 +0000 (23:46 +0100)]
Cache size of char
BlittableValueType<char> caches the size of the type parameter. This
way, we avoid calling Marshal.SizeOf repeatedly for every keyboard
event.
Stefanos A [Mon, 9 Dec 2013 22:44:51 +0000 (23:44 +0100)]
Eliminated memory allocations in Keyboard events
Stefanos A [Mon, 9 Dec 2013 22:43:36 +0000 (23:43 +0100)]
Do not generate KeyPress events for non-printable characters
Stefanos A [Sun, 8 Dec 2013 20:07:46 +0000 (21:07 +0100)]
Merge branch 'enumfix'
Stefanos A [Sun, 8 Dec 2013 15:20:30 +0000 (16:20 +0100)]
Regenerated bindings
Stefanos A [Sun, 8 Dec 2013 15:20:22 +0000 (16:20 +0100)]
Added overloads for compatibility with 1.0 and 1.1 APIs
Stefanos A [Sun, 8 Dec 2013 15:20:04 +0000 (16:20 +0100)]
Maintain Obsolete property when cloning a function
Stefanos A [Sun, 8 Dec 2013 15:19:46 +0000 (16:19 +0100)]
Create convenience overloads based on wrappers, not entry points
It makes sense to generate convenience overloads for each relevant
wrapper function, instead of each entry point. This way, we generate
convenience overloads for every wrapper in overrides.xml (even wrappers
for background compatibility), which would otherwise be ignored.
parallels [Sun, 8 Dec 2013 11:38:06 +0000 (12:38 +0100)]
Fix for issue #16 "X11 misreported as unsupported platform"
Stefanos A [Fri, 6 Dec 2013 18:33:03 +0000 (19:33 +0100)]
Ignore missing comments warning
The OpenGL manpages do not include extension methods. Ignore this
warning to let more important ones shine through.
Stefanos A. [Fri, 6 Dec 2013 17:37:11 +0000 (18:37 +0100)]
Regenerated bindings
Stefanos A. [Fri, 6 Dec 2013 17:37:03 +0000 (18:37 +0100)]
Updated to Revision 24389
Stefanos A. [Fri, 6 Dec 2013 17:36:31 +0000 (18:36 +0100)]
Improved handling of enum parameters
When a function parameter matches a strongly-typed enum, the parameter
type is explicitly set to that enum. This fixes issues with function
parameters referring to enums whose names change after translation.
Stefanos A. [Fri, 6 Dec 2013 17:28:38 +0000 (18:28 +0100)]
Cleaned up instructions for Converter.exe
Stefanos A [Fri, 6 Dec 2013 08:23:56 +0000 (09:23 +0100)]
Updated license information
Stefanos A [Fri, 6 Dec 2013 08:23:43 +0000 (09:23 +0100)]
Added methods for 1.0 compatibility
Stefanos A. [Thu, 5 Dec 2013 23:47:38 +0000 (00:47 +0100)]
Moved license files to license/ folder
This is simply a cosmetic change, to reduce clutter on the root
Dependencies/ directory.
Stefanos A. [Thu, 5 Dec 2013 23:46:32 +0000 (00:46 +0100)]
Updated dependency documentation
Added license files for ikvm, monolinker and cecil. Added usage
instructions for monolinker.
Stefanos A. [Thu, 5 Dec 2013 17:43:47 +0000 (18:43 +0100)]
Split binaries for library and supporting tools
Tools now go to the Binaries/Tools/[Debug|Release] directory. OpenTK
remains at BInaries/OpenTK/[Debug|Release].
Mono.Cecil and IKVM now reside under the Dependencies/managed/
directory.
Stefanos A. [Thu, 5 Dec 2013 16:44:13 +0000 (17:44 +0100)]
ClientRectangle should not affect window location
Fixes issue #13
Stefanos A [Thu, 5 Dec 2013 13:53:37 +0000 (14:53 +0100)]
Merge remote-tracking branch 'origin/master' into no-reflect
Stefanos A. [Thu, 5 Dec 2013 11:05:26 +0000 (12:05 +0100)]
Move installer to destination directory
This reduces the garbage left behind by the installer generation script.
Stefanos A. [Thu, 5 Dec 2013 11:04:58 +0000 (12:04 +0100)]
Streamlined nsis installer
OpenAL is now included in the Dependencies/ folder and NShader is no
longer linked to by the installer.
Stefanos A. [Thu, 5 Dec 2013 11:04:15 +0000 (12:04 +0100)]
Ignore generated installers
Stefanos A. [Thu, 5 Dec 2013 10:42:01 +0000 (11:42 +0100)]
Corrected zip build script
Excluded items are now really excluded.
Stefanos A [Thu, 5 Dec 2013 10:20:58 +0000 (11:20 +0100)]
Reduce temporary string allocations
Instead of modifying the name of an OpenGL symbol on the managed side,
before copying it to the unmanaged side, we perform the modification
directly on the unmanaged side. This reduces the total amount of
allocations in OpenTK by ~30% (673496 bytes in 10750 objects compared
to 930272 bytes in 15243 objects before this modification.)
Stefanos A [Thu, 5 Dec 2013 08:14:13 +0000 (09:14 +0100)]
Added debug arguments in release builds
Stefanos A [Thu, 5 Dec 2013 08:13:50 +0000 (09:13 +0100)]
Generate debug symbols in release builds
Stefanos A. [Thu, 5 Dec 2013 08:03:12 +0000 (09:03 +0100)]
Updated project files
Generate debug symbols on release builds. Remove unused resx file that
referenced WinForms.
Stefanos A [Wed, 4 Dec 2013 21:32:56 +0000 (22:32 +0100)]
Implemented manual marshaling of string parameters
Stefanos A [Wed, 4 Dec 2013 21:26:30 +0000 (22:26 +0100)]
Correct convenience wrapper implementation
Stefanos A [Wed, 4 Dec 2013 20:22:33 +0000 (21:22 +0100)]
Convert string[] callsites to IntPtr
This fixes the signature mismatch between the new marshaling code and
the callsites.
Stefanos A [Wed, 4 Dec 2013 19:33:19 +0000 (20:33 +0100)]
Implemented marshaling for string arrays
This allows functions such as GL.ShaderSource to run on Mono without
crashing.
Stefanos A [Tue, 3 Dec 2013 08:10:45 +0000 (09:10 +0100)]
Regenerated bindings
Stefanos A [Tue, 3 Dec 2013 08:10:36 +0000 (09:10 +0100)]
Clean up wrapper generation
We can now apply multiple WrapperTypes values to a single parameter.
Stefanos A [Tue, 3 Dec 2013 08:09:19 +0000 (09:09 +0100)]
Update WrapperTypes values for [Flags]
Stefanos A [Tue, 3 Dec 2013 07:59:48 +0000 (08:59 +0100)]
Removed duplicate ldarg
Stefanos A. [Mon, 2 Dec 2013 22:39:36 +0000 (23:39 +0100)]
Workaround for #5
WS_CLIPCHILDREN and WS_CLIPSIBLINGS appear to cause flickering on
specific video cards. OpenGL appears to work correctly without these, so
we'll disable them to return to OpenTK 1.0 behavior.