-
Notifications
You must be signed in to change notification settings - Fork 541
CppSharp generates incorrect bindings for SDL_Event #978
Copy link
Copy link
Closed
Labels
Description
CppSharp with SDL generates the wrong bindings.
This is the equivalent C code:
SDL_Event event;
while(SDL_WaitEvent(&event))
{
if(e.type = SDL_QUIT)
exit(0);
}One should expect to get it working with something like this:
SDL.SDL_Event e = new SDL.SDL_Event();
while(SDL.SDL_WaitEvent(e))
{
if(e.Type == (uint)SDL.SDL_EventType.SDL_QUIT)
System.Environment.Exit(0);
}But SDL.SDL_Event is a C# struct, it can't change
Function binding:
[SuppressUnmanagedCodeSecurity]
[DllImport("SDL2", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,EntryPoint="SDL_WaitEvent")]
internal static extern int SDL_WaitEvent(global::System.IntPtr @event);
public static int SDL_WaitEvent(global::SDL.SDL_Event @event)
{
var ____arg0 = @event.__Instance;
var __arg0 = new global::System.IntPtr(&____arg0);
var __ret = __Internal.SDL_WaitEvent(__arg0);
return __ret;
}SDL_Event generated struct:
public unsafe partial struct SDL_Event
{
[StructLayout(LayoutKind.Explicit, Size = 56)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint type;
[FieldOffset(0)]
internal global::SDL.SDL_CommonEvent.__Internal common;
[FieldOffset(0)]
internal global::SDL.SDL_WindowEvent.__Internal window;
[FieldOffset(0)]
internal global::SDL.SDL_KeyboardEvent.__Internal key;
[FieldOffset(0)]
internal global::SDL.SDL_TextEditingEvent.__Internal edit;
[FieldOffset(0)]
internal global::SDL.SDL_TextInputEvent.__Internal text;
[FieldOffset(0)]
internal global::SDL.SDL_MouseMotionEvent.__Internal motion;
[FieldOffset(0)]
internal global::SDL.SDL_MouseButtonEvent.__Internal button;
[FieldOffset(0)]
internal global::SDL.SDL_MouseWheelEvent.__Internal wheel;
[FieldOffset(0)]
internal global::SDL.SDL_JoyAxisEvent.__Internal jaxis;
[FieldOffset(0)]
internal global::SDL.SDL_JoyBallEvent.__Internal jball;
[FieldOffset(0)]
internal global::SDL.SDL_JoyHatEvent.__Internal jhat;
[FieldOffset(0)]
internal global::SDL.SDL_JoyButtonEvent.__Internal jbutton;
[FieldOffset(0)]
internal global::SDL.SDL_JoyDeviceEvent.__Internal jdevice;
[FieldOffset(0)]
internal global::SDL.SDL_ControllerAxisEvent.__Internal caxis;
[FieldOffset(0)]
internal global::SDL.SDL_ControllerButtonEvent.__Internal cbutton;
[FieldOffset(0)]
internal global::SDL.SDL_ControllerDeviceEvent.__Internal cdevice;
[FieldOffset(0)]
internal global::SDL.SDL_AudioDeviceEvent.__Internal adevice;
[FieldOffset(0)]
internal global::SDL.SDL_QuitEvent.__Internal quit;
[FieldOffset(0)]
internal global::SDL.SDL_UserEvent.__Internal user;
[FieldOffset(0)]
internal global::SDL.SDL_SysWMEvent.__Internal syswm;
[FieldOffset(0)]
internal global::SDL.SDL_TouchFingerEvent.__Internal tfinger;
[FieldOffset(0)]
internal global::SDL.SDL_MultiGestureEvent.__Internal mgesture;
[FieldOffset(0)]
internal global::SDL.SDL_DollarGestureEvent.__Internal dgesture;
[FieldOffset(0)]
internal global::SDL.SDL_DropEvent.__Internal drop;
[FieldOffset(0)]
internal fixed byte padding[56];
[SuppressUnmanagedCodeSecurity]
[DllImport("SDL", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="??0SDL_Event@@QEAA@AEBT0@@Z")]
internal static extern global::System.IntPtr cctor(global::System.IntPtr instance, global::System.IntPtr _0);
}Reactions are currently unavailable