1 // This file was generated by the Gtk# code generator.
2 // Any changes made will be lost if regenerated.
3 
4 namespace GLibSharp {
5 
6 	using System;
7 	using System.Runtime.InteropServices;
8 
9 #region Autogenerated code
10 	[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
SourceDummyMarshalNative()11 	internal delegate void SourceDummyMarshalNative();
12 
13 	internal class SourceDummyMarshalInvoker {
14 
15 		SourceDummyMarshalNative native_cb;
16 		IntPtr __data;
17 		GLib.DestroyNotify __notify;
18 
~SourceDummyMarshalInvoker()19 		~SourceDummyMarshalInvoker ()
20 		{
21 			if (__notify == null)
22 				return;
23 			__notify (__data);
24 		}
25 
SourceDummyMarshalInvoker(SourceDummyMarshalNative native_cb)26 		internal SourceDummyMarshalInvoker (SourceDummyMarshalNative native_cb) : this (native_cb, IntPtr.Zero, null) {}
27 
SourceDummyMarshalInvoker(SourceDummyMarshalNative native_cb, IntPtr data)28 		internal SourceDummyMarshalInvoker (SourceDummyMarshalNative native_cb, IntPtr data) : this (native_cb, data, null) {}
29 
SourceDummyMarshalInvoker(SourceDummyMarshalNative native_cb, IntPtr data, GLib.DestroyNotify notify)30 		internal SourceDummyMarshalInvoker (SourceDummyMarshalNative native_cb, IntPtr data, GLib.DestroyNotify notify)
31 		{
32 			this.native_cb = native_cb;
33 			__data = data;
34 			__notify = notify;
35 		}
36 
37 		internal GLib.SourceDummyMarshal Handler {
38 			get {
39 				return new GLib.SourceDummyMarshal(InvokeNative);
40 			}
41 		}
42 
InvokeNative()43 		void InvokeNative ()
44 		{
45 			native_cb ();
46 		}
47 	}
48 
49 	internal class SourceDummyMarshalWrapper {
50 
NativeCallback()51 		public void NativeCallback ()
52 		{
53 			try {
54 				managed ();
55 				if (release_on_call)
56 					gch.Free ();
57 			} catch (Exception e) {
58 				GLib.ExceptionManager.RaiseUnhandledException (e, false);
59 			}
60 		}
61 
62 		bool release_on_call = false;
63 		GCHandle gch;
64 
PersistUntilCalled()65 		public void PersistUntilCalled ()
66 		{
67 			release_on_call = true;
68 			gch = GCHandle.Alloc (this);
69 		}
70 
71 		internal SourceDummyMarshalNative NativeDelegate;
72 		GLib.SourceDummyMarshal managed;
73 
SourceDummyMarshalWrapper(GLib.SourceDummyMarshal managed)74 		public SourceDummyMarshalWrapper (GLib.SourceDummyMarshal managed)
75 		{
76 			this.managed = managed;
77 			if (managed != null)
78 				NativeDelegate = new SourceDummyMarshalNative (NativeCallback);
79 		}
80 
GetManagedDelegate(SourceDummyMarshalNative native)81 		public static GLib.SourceDummyMarshal GetManagedDelegate (SourceDummyMarshalNative native)
82 		{
83 			if (native == null)
84 				return null;
85 			SourceDummyMarshalWrapper wrapper = (SourceDummyMarshalWrapper) native.Target;
86 			if (wrapper == null)
87 				return null;
88 			return wrapper.managed;
89 		}
90 	}
91 #endregion
92 }
93