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