From 129410c745406e02b40d21407fe794a9c7c6f217 Mon Sep 17 00:00:00 2001 From: David Gow Date: Sun, 7 Apr 2013 19:39:23 +0800 Subject: [PATCH] Fix SDL_CreateColorCursor and SDL_LoadBMP --- src/SDL2.cs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/SDL2.cs b/src/SDL2.cs index ad2b12c..3658569 100644 --- a/src/SDL2.cs +++ b/src/SDL2.cs @@ -1964,16 +1964,25 @@ namespace SDL2 ref byte g, ref byte b ); - - [DllImport(nativeLibName, EntryPoint = "SDL_LoadBMP")] - private static extern IntPtr INTERNAL_SDL_LoadBMP( + + /* These are for SDL_LoadBMP, which is a macro in the SDL headers */ + [DllImport(nativeLibName, EntryPoint = "SDL_LoadBMP_RW")] + private static extern IntPtr INTERNAL_SDL_LoadBMP_RW( + IntPtr src, + int freesrc + ); + [DllImport(nativeLibName, EntryPoint = "SDL_RWFromFile")] + private static extern IntPtr INTERNAL_SDL_RWFromFile( [InAttribute()] [MarshalAsAttribute(UnmanagedType.LPStr)] - string file + string file, + [InAttribute()] [MarshalAsAttribute(UnmanagedType.LPStr)] + string mode ); public static SDL_Surface SDL_LoadBMP(string file) { SDL_Surface result; - IntPtr result_ptr = INTERNAL_SDL_LoadBMP(file); + IntPtr rwops = INTERNAL_SDL_RWFromFile(file, "rb"); + IntPtr result_ptr = INTERNAL_SDL_LoadBMP_RW(rwops, 1); result = (SDL_Surface) Marshal.PtrToStructure( result_ptr, result.GetType() @@ -3273,7 +3282,7 @@ namespace SDL2 /* return value is an SDL_Cursor pointer */ [DllImport(nativeLibName)] public static extern IntPtr SDL_CreateColorCursor( - SDL_Surface surface, + ref SDL_Surface surface, int hot_x, int hot_y );