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