static void OverrideEvent(GLib.GType gtype, EventNativeDelegate callback)
 {
     unsafe {
         IntPtr *raw_ptr = (IntPtr *)(((long)gtype.GetClassPtr()) + (long)class_abi.GetFieldOffset("event"));
         *raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate)callback);
     }
 }
예제 #2
0
        private void InternalEvent(GLib.SocketClientEvent evnt, GLib.ISocketConnectable connectable, GLib.IOStream connection)
        {
            EventNativeDelegate unmanaged = null;

            unsafe {
                IntPtr *raw_ptr = (IntPtr *)(((long)this.LookupGType().GetThresholdType().GetClassPtr()) + (long)class_abi.GetFieldOffset("event"));
                unmanaged = (EventNativeDelegate)Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(EventNativeDelegate));
            }
            if (unmanaged == null)
            {
                return;
            }

            unmanaged(this.Handle, (int)evnt, connectable == null ? IntPtr.Zero : ((connectable is GLib.Object) ? (connectable as GLib.Object).Handle : (connectable as GLib.SocketConnectableAdapter).Handle), connection == null ? IntPtr.Zero : connection.Handle);
        }
        private void InternalEvent(out GLib.SocketListenerEvent evnt, GLib.Socket socket)
        {
            EventNativeDelegate unmanaged = null;

            unsafe {
                IntPtr *raw_ptr = (IntPtr *)(((long)this.LookupGType().GetThresholdType().GetClassPtr()) + (long)class_abi.GetFieldOffset("event"));
                unmanaged = (EventNativeDelegate)Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(EventNativeDelegate));
            }
            if (unmanaged == null)
            {
                throw new InvalidOperationException("No base method to invoke");
            }

            int native_evnt;

            unmanaged(this.Handle, out native_evnt, socket == null ? IntPtr.Zero : socket.Handle);
            evnt = (GLib.SocketListenerEvent)native_evnt;
        }
예제 #4
0
파일: BaseSink.cs 프로젝트: jwzl/ossbuild
		static void OverrideEvent (Gst.GLib.GType gtype, EventNativeDelegate callback)
		{
			GstBaseSinkClass class_iface = GetClassStruct (gtype, false);
			class_iface.Event = callback;
			OverrideClassStruct (gtype, class_iface);
		}