Windows on x86-64 uses 32 bit longs...

This commit is contained in:
Sebastian Dröge 2009-09-17 09:13:52 +02:00
parent 405ff9c849
commit d5843a078d
2 changed files with 33 additions and 1 deletions

View file

@ -158,7 +158,7 @@ $(KEYFILE): $(top_srcdir)/gstreamer-sharp.snk
cp $(top_srcdir)/gstreamer-sharp.snk .
$(ASSEMBLY): $(build_sources) generated-stamp $(KEYFILE) $(plugin_csfiles)
$(CSC) -nowarn:0612 -debug -unsafe -out:$(ASSEMBLY) -target:library $(references) $(csc_build_sources) $(GENERATED_SOURCES) $(plugin_csfiles) -define:GTK_SHARP_2_6 -define:GTK_SHARP_2_8 -define:GTK_SHARP_2_10 -define:GTK_SHARP_2_12 -define:GTK_SHARP_2_14
$(CSC) -nowarn:0612 -debug -unsafe -out:$(ASSEMBLY) -target:library $(references) $(csc_build_sources) $(GENERATED_SOURCES) $(plugin_csfiles) $(WIN64DEFINES) -define:GTK_SHARP_2_6 -define:GTK_SHARP_2_8 -define:GTK_SHARP_2_10 -define:GTK_SHARP_2_12 -define:GTK_SHARP_2_14
plugins-update:
$(MAKE) -C coreplugins plugins-update

View file

@ -440,10 +440,17 @@ namespace Gst.GLib {
return (long) this;
else if (type == GType.UInt64.Val)
return (ulong) this;
#if WIN64LONGS
else if (type == GType.Long.Val)
return g_value_get_long (ref this);
else if (type == GType.ULong.Val)
return g_value_get_ulong (ref this);
#else
else if (type == GType.Long.Val)
return g_value_get_long (ref this).ToInt64 ();
else if (type == GType.ULong.Val)
return g_value_get_ulong (ref this).ToUInt64 ();
#endif
else if (GType.Is (type, GType.Enum) ||
GType.Is (type, GType.Flags))
return ToEnum ();
@ -487,10 +494,17 @@ namespace Gst.GLib {
g_value_set_int64 (ref this, (long) value);
else if (type == GType.UInt64.Val)
g_value_set_uint64 (ref this, (ulong) value);
#if WIN64LONGS
else if (type == GType.Long.Val)
g_value_set_long (ref this, ((IConvertible)value).ToInt32 (null));
else if (type == GType.ULong.Val)
g_value_set_ulong (ref this, ((IConvertible)value).ToUInt32 (null));
#else
else if (type == GType.Long.Val)
g_value_set_long (ref this, new IntPtr (((IConvertible)value).ToInt64 (null)));
else if (type == GType.ULong.Val)
g_value_set_ulong (ref this, new UIntPtr (((IConvertible)value).ToUInt64 (null)));
#endif
else if (GType.Is (type, GType.Enum))
g_value_set_enum (ref this, (int)value);
else if (GType.Is (type, GType.Flags))
@ -610,11 +624,20 @@ namespace Gst.GLib {
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void g_value_set_uint64 (ref Value val, ulong data);
/* Windows on x86-64 has 32 bit longs */
#if WIN64LONGS
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void g_value_set_long (ref Value val, int data);
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void g_value_set_ulong (ref Value val, uint data);
#else
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void g_value_set_long (ref Value val, IntPtr data);
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void g_value_set_ulong (ref Value val, UIntPtr data);
#endif
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void g_value_set_object (ref Value val, IntPtr data);
@ -663,11 +686,20 @@ namespace Gst.GLib {
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern ulong g_value_get_uint64 (ref Value val);
/* Windows on x86-64 has 32 bit longs */
#if WIN64LONGS
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern int g_value_get_long (ref Value val);
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern uint g_value_get_ulong (ref Value val);
#else
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr g_value_get_long (ref Value val);
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern UIntPtr g_value_get_ulong (ref Value val);
#endif
[DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr g_value_get_object (ref Value val);