mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-04 01:32:42 +00:00
DynamicSignal: Reformat to match conventions
This commit is contained in:
parent
5b386f21fb
commit
db3ffc2a70
1 changed files with 415 additions and 387 deletions
|
@ -29,27 +29,32 @@ using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
|
||||||
namespace Gst {
|
namespace Gst
|
||||||
|
{
|
||||||
|
|
||||||
delegate void GClosureMarshal (IntPtr closure, ref GLib.Value retval, uint argc, IntPtr argsPtr,
|
delegate void GClosureMarshal (IntPtr closure, ref GLib.Value retval, uint argc, IntPtr argsPtr,
|
||||||
IntPtr invocation_hint, IntPtr data);
|
IntPtr invocation_hint, IntPtr data);
|
||||||
|
|
||||||
public delegate void SignalHandler (object o, SignalArgs args);
|
public delegate void SignalHandler (object o, SignalArgs args);
|
||||||
|
|
||||||
public static class DynamicSignal {
|
public static class DynamicSignal
|
||||||
|
{
|
||||||
|
|
||||||
private static readonly int gvalue_struct_size = Marshal.SizeOf (typeof(GLib.Value));
|
private static readonly int gvalue_struct_size = Marshal.SizeOf (typeof(GLib.Value));
|
||||||
|
|
||||||
class ObjectSignalKey {
|
class ObjectSignalKey
|
||||||
|
{
|
||||||
object o;
|
object o;
|
||||||
string signal_name;
|
string signal_name;
|
||||||
|
|
||||||
public ObjectSignalKey (object o, string name) {
|
public ObjectSignalKey (object o, string name)
|
||||||
|
{
|
||||||
this.o = o;
|
this.o = o;
|
||||||
signal_name = name;
|
signal_name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Equals (object o) {
|
public override bool Equals (object o)
|
||||||
|
{
|
||||||
if (o is ObjectSignalKey) {
|
if (o is ObjectSignalKey) {
|
||||||
ObjectSignalKey k = (ObjectSignalKey)o;
|
ObjectSignalKey k = (ObjectSignalKey)o;
|
||||||
return k.o.Equals (this.o) && signal_name.Equals (k.signal_name);
|
return k.o.Equals (this.o) && signal_name.Equals (k.signal_name);
|
||||||
|
@ -57,12 +62,14 @@ namespace Gst {
|
||||||
return base.Equals (o);
|
return base.Equals (o);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int GetHashCode() {
|
public override int GetHashCode ()
|
||||||
|
{
|
||||||
return o.GetHashCode () ^ signal_name.GetHashCode ();
|
return o.GetHashCode () ^ signal_name.GetHashCode ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SignalInfo {
|
class SignalInfo
|
||||||
|
{
|
||||||
uint handlerId;
|
uint handlerId;
|
||||||
IntPtr closure;
|
IntPtr closure;
|
||||||
Delegate registeredHandler;
|
Delegate registeredHandler;
|
||||||
|
@ -71,7 +78,8 @@ namespace Gst {
|
||||||
public IntPtr Closure {
|
public IntPtr Closure {
|
||||||
get {
|
get {
|
||||||
return closure;
|
return closure;
|
||||||
} set {
|
}
|
||||||
|
set {
|
||||||
closure = value;
|
closure = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,7 +87,8 @@ namespace Gst {
|
||||||
public uint HandlerId {
|
public uint HandlerId {
|
||||||
get {
|
get {
|
||||||
return handlerId;
|
return handlerId;
|
||||||
} set {
|
}
|
||||||
|
set {
|
||||||
handlerId = value;
|
handlerId = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,7 +96,8 @@ namespace Gst {
|
||||||
public Delegate RegisteredHandler {
|
public Delegate RegisteredHandler {
|
||||||
get {
|
get {
|
||||||
return registeredHandler;
|
return registeredHandler;
|
||||||
} set {
|
}
|
||||||
|
set {
|
||||||
registeredHandler = value;
|
registeredHandler = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,12 +105,14 @@ namespace Gst {
|
||||||
public Type ArgsType {
|
public Type ArgsType {
|
||||||
get {
|
get {
|
||||||
return argsType;
|
return argsType;
|
||||||
} set {
|
}
|
||||||
|
set {
|
||||||
argsType = value;
|
argsType = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public SignalInfo (uint handlerId, IntPtr closure, Delegate registeredHandler) {
|
public SignalInfo (uint handlerId, IntPtr closure, Delegate registeredHandler)
|
||||||
|
{
|
||||||
this.handlerId = handlerId;
|
this.handlerId = handlerId;
|
||||||
this.closure = closure;
|
this.closure = closure;
|
||||||
this.registeredHandler = registeredHandler;
|
this.registeredHandler = registeredHandler;
|
||||||
|
@ -113,7 +125,8 @@ namespace Gst {
|
||||||
this.argsType = parms [1].ParameterType;
|
this.argsType = parms [1].ParameterType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateArgsType (Delegate d) {
|
public void UpdateArgsType (Delegate d)
|
||||||
|
{
|
||||||
if (!IsCompatibleDelegate (d))
|
if (!IsCompatibleDelegate (d))
|
||||||
throw new Exception ("Incompatible delegate");
|
throw new Exception ("Incompatible delegate");
|
||||||
|
|
||||||
|
@ -134,7 +147,8 @@ namespace Gst {
|
||||||
throw new Exception ("Incompatible delegate");
|
throw new Exception ("Incompatible delegate");
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsCompatibleDelegate (Delegate d) {
|
public bool IsCompatibleDelegate (Delegate d)
|
||||||
|
{
|
||||||
if (!IsValidDelegate (d))
|
if (!IsValidDelegate (d))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -149,7 +163,8 @@ namespace Gst {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsValidDelegate (Delegate d) {
|
public static bool IsValidDelegate (Delegate d)
|
||||||
|
{
|
||||||
MethodInfo mi = d.Method;
|
MethodInfo mi = d.Method;
|
||||||
|
|
||||||
if (mi.ReturnType != typeof(void))
|
if (mi.ReturnType != typeof(void))
|
||||||
|
@ -171,23 +186,27 @@ namespace Gst {
|
||||||
|
|
||||||
static GClosureMarshal marshalHandler = new GClosureMarshal (OnMarshal);
|
static GClosureMarshal marshalHandler = new GClosureMarshal (OnMarshal);
|
||||||
|
|
||||||
public static void Connect (GLib.Object o, string name, SignalHandler handler) {
|
public static void Connect (GLib.Object o, string name, SignalHandler handler)
|
||||||
|
{
|
||||||
Connect (o, name, false, (Delegate)handler);
|
Connect (o, name, false, (Delegate)handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Connect (GLib.Object o, string name,
|
public static void Connect (GLib.Object o, string name,
|
||||||
bool after, SignalHandler handler) {
|
bool after, SignalHandler handler)
|
||||||
|
{
|
||||||
Connect (o, name, after, (Delegate)handler);
|
Connect (o, name, after, (Delegate)handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Connect (GLib.Object o, string name, Delegate handler) {
|
public static void Connect (GLib.Object o, string name, Delegate handler)
|
||||||
|
{
|
||||||
Connect (o, name, false, handler);
|
Connect (o, name, false, handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int g_closure_sizeof = gstsharp_g_closure_sizeof ();
|
static int g_closure_sizeof = gstsharp_g_closure_sizeof ();
|
||||||
|
|
||||||
public static void Connect (GLib.Object o, string name,
|
public static void Connect (GLib.Object o, string name,
|
||||||
bool after, Delegate handler) {
|
bool after, Delegate handler)
|
||||||
|
{
|
||||||
Delegate newHandler;
|
Delegate newHandler;
|
||||||
|
|
||||||
ObjectSignalKey k = new ObjectSignalKey (o, name);
|
ObjectSignalKey k = new ObjectSignalKey (o, name);
|
||||||
|
@ -217,7 +236,8 @@ namespace Gst {
|
||||||
[DllImport ("libgstreamersharpglue-1.0.0.dll")]
|
[DllImport ("libgstreamersharpglue-1.0.0.dll")]
|
||||||
static extern int gstsharp_g_closure_sizeof ();
|
static extern int gstsharp_g_closure_sizeof ();
|
||||||
|
|
||||||
public static void Disconnect (GLib.Object o, string name, Delegate handler) {
|
public static void Disconnect (GLib.Object o, string name, Delegate handler)
|
||||||
|
{
|
||||||
ObjectSignalKey k = new ObjectSignalKey (o, name);
|
ObjectSignalKey k = new ObjectSignalKey (o, name);
|
||||||
if (SignalHandlers [k] != null) {
|
if (SignalHandlers [k] != null) {
|
||||||
SignalInfo si = (SignalInfo)SignalHandlers [k];
|
SignalInfo si = (SignalInfo)SignalHandlers [k];
|
||||||
|
@ -232,7 +252,8 @@ namespace Gst {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OnMarshal (IntPtr closure, ref GLib.Value retval, uint argc, IntPtr argsPtr,
|
static void OnMarshal (IntPtr closure, ref GLib.Value retval, uint argc, IntPtr argsPtr,
|
||||||
IntPtr ihint, IntPtr data) {
|
IntPtr ihint, IntPtr data)
|
||||||
|
{
|
||||||
object[] args = new object[argc - 1];
|
object[] args = new object[argc - 1];
|
||||||
object o = ((GLib.Value)Marshal.PtrToStructure (argsPtr, typeof(GLib.Value))).Val;
|
object o = ((GLib.Value)Marshal.PtrToStructure (argsPtr, typeof(GLib.Value))).Val;
|
||||||
|
|
||||||
|
@ -270,16 +291,19 @@ namespace Gst {
|
||||||
[DllImport ("libgobject-2.0-0.dll")]
|
[DllImport ("libgobject-2.0-0.dll")]
|
||||||
static extern void g_closure_set_meta_marshal (IntPtr closure, IntPtr data, GClosureMarshal marshal);
|
static extern void g_closure_set_meta_marshal (IntPtr closure, IntPtr data, GClosureMarshal marshal);
|
||||||
|
|
||||||
class GTypeSignalKey {
|
class GTypeSignalKey
|
||||||
|
{
|
||||||
GType type;
|
GType type;
|
||||||
string signal_name;
|
string signal_name;
|
||||||
|
|
||||||
public GTypeSignalKey (GType type, string name) {
|
public GTypeSignalKey (GType type, string name)
|
||||||
|
{
|
||||||
this.type = type;
|
this.type = type;
|
||||||
signal_name = name;
|
signal_name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Equals (object o) {
|
public override bool Equals (object o)
|
||||||
|
{
|
||||||
if (o is GTypeSignalKey) {
|
if (o is GTypeSignalKey) {
|
||||||
GTypeSignalKey k = (GTypeSignalKey)o;
|
GTypeSignalKey k = (GTypeSignalKey)o;
|
||||||
return k.type.Equals (this.type) && signal_name.Equals (k.signal_name);
|
return k.type.Equals (this.type) && signal_name.Equals (k.signal_name);
|
||||||
|
@ -287,12 +311,14 @@ namespace Gst {
|
||||||
return base.Equals (o);
|
return base.Equals (o);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int GetHashCode() {
|
public override int GetHashCode ()
|
||||||
|
{
|
||||||
return type.GetHashCode () ^ signal_name.GetHashCode ();
|
return type.GetHashCode () ^ signal_name.GetHashCode ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SignalQuery {
|
struct SignalQuery
|
||||||
|
{
|
||||||
public uint signal_id;
|
public uint signal_id;
|
||||||
public string signal_name;
|
public string signal_name;
|
||||||
public GType itype;
|
public GType itype;
|
||||||
|
@ -304,7 +330,8 @@ namespace Gst {
|
||||||
|
|
||||||
static Hashtable SignalEmitInfo = new Hashtable ();
|
static Hashtable SignalEmitInfo = new Hashtable ();
|
||||||
|
|
||||||
public static object Emit (GLib.Object o, string name, params object[] parameters) {
|
public static object Emit (GLib.Object o, string name, params object[] parameters)
|
||||||
|
{
|
||||||
SignalQuery query;
|
SignalQuery query;
|
||||||
IntPtr type = gstsharp_g_type_from_instance (o.Handle);
|
IntPtr type = gstsharp_g_type_from_instance (o.Handle);
|
||||||
GType gtype = new GType (type);
|
GType gtype = new GType (type);
|
||||||
|
@ -413,7 +440,8 @@ namespace Gst {
|
||||||
static extern void g_signal_emitv (GLib.Value[] parameters, uint signal_id, uint detail, ref GLib.Value return_value);
|
static extern void g_signal_emitv (GLib.Value[] parameters, uint signal_id, uint detail, ref GLib.Value return_value);
|
||||||
|
|
||||||
[StructLayout (LayoutKind.Sequential)]
|
[StructLayout (LayoutKind.Sequential)]
|
||||||
struct GSignalQuery {
|
struct GSignalQuery
|
||||||
|
{
|
||||||
public uint signal_id;
|
public uint signal_id;
|
||||||
public IntPtr signal_name;
|
public IntPtr signal_name;
|
||||||
public IntPtr itype;
|
public IntPtr itype;
|
||||||
|
|
Loading…
Reference in a new issue