diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-10-01 16:10:44 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-10-01 16:10:44 +0200 |
commit | aff62828ea66aced8c4be2e5cd16b4fec53c6246 (patch) | |
tree | fdcc64519998c55e2f45c4dbac35c24f2c3cf528 | |
parent | 4cdbee824916412a34043ce97988978d1efcc3db (diff) |
Make sure Gst.Bus.SyncHandler handlers are not garbage collected too early
-rw-r--r-- | gstreamer-sharp/Bus.custom | 12 | ||||
-rw-r--r-- | gstreamer-sharp/Gstreamer.metadata | 1 |
2 files changed, 13 insertions, 0 deletions
diff --git a/gstreamer-sharp/Bus.custom b/gstreamer-sharp/Bus.custom index 873232e..b668954 100644 --- a/gstreamer-sharp/Bus.custom +++ b/gstreamer-sharp/Bus.custom @@ -19,3 +19,15 @@ public bool AsyncSignalFunc (Gst.Message message) { bool ret = raw_ret; return ret; } + +[DllImport ("libgstreamer-0.10.dll", CallingConvention = CallingConvention.Cdecl) ] +static extern void gst_bus_set_sync_handler (IntPtr raw, GstSharp.BusSyncHandlerNative func, IntPtr data); +private GstSharp.BusSyncHandlerWrapper sync_handler = null; + +public Gst.BusSyncHandler SyncHandler { + set { + GstSharp.BusSyncHandlerWrapper value_wrapper = new GstSharp.BusSyncHandlerWrapper (value); + sync_handler = value_wrapper; + gst_bus_set_sync_handler (Handle, value_wrapper.NativeDelegate, IntPtr.Zero); + } +} diff --git a/gstreamer-sharp/Gstreamer.metadata b/gstreamer-sharp/Gstreamer.metadata index 7209b21..6902e0d 100644 --- a/gstreamer-sharp/Gstreamer.metadata +++ b/gstreamer-sharp/Gstreamer.metadata @@ -99,6 +99,7 @@ <attr path="/api/namespace/object[@name='Bus']/method[@cname='gst_bus_async_signal_func']" name="hidden">1</attr> <attr path="/api/namespace/object[@name='Bus']/method[@cname='gst_bus_add_signal_watch_full']" name="name">AddSignalWatch</attr> <attr path="/api/namespace/object[@name='Bus']/method[@cname='gst_bus_poll']/return-type" name="owned">true</attr> + <attr path="/api/namespace/object[@name='Bus']/method[@cname='gst_bus_set_sync_handler']" name="hidden">1</attr> <attr path="/api/namespace/enum[@name='BusFlags']/member[@cname='GST_BUS_FLAG_LAST']" name="name">Last</attr> <attr path="/api/namespace/enum[@name='BusFlags']/member[@cname='GST_BUS_FLUSHING']" name="value">MiniObjectFlags.Last << 0</attr> |