Move DynamicSignals into the Gst namespace to prevent conflicts
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Sun, 5 Apr 2009 11:11:02 +0000 (13:11 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Sun, 5 Apr 2009 11:11:02 +0000 (13:11 +0200)
gstreamer-sharp/BindingHelper.cs
gstreamer-sharp/DynamicSignal.cs
gstreamer-sharp/Element.custom
gstreamer-sharp/glue/dynamicsignal.c [deleted file]
gstreamer-sharp/plugins-base/TypeFindElement.cs

index ef43e52..645acff 100644 (file)
@@ -16,7 +16,7 @@ namespace Gst
     public static class BindingHelper
     {
         public static Delegate AddProxySignalDelegate(Element element, string signal, 
-            GLib.DynamicSignalHandler baseHandler, Delegate existingHandler, Delegate addHandler)
+            DynamicSignalHandler baseHandler, Delegate existingHandler, Delegate addHandler)
         {
             if(existingHandler == null) {
                 element.Connect(signal, baseHandler);
@@ -26,7 +26,7 @@ namespace Gst
         }
         
         public static Delegate RemoveProxySignalDelegate(Element element, string signal, 
-            GLib.DynamicSignalHandler baseHandler, Delegate existingHandler, Delegate removeHandler)
+            DynamicSignalHandler baseHandler, Delegate existingHandler, Delegate removeHandler)
         {
             Delegate temp_delegate = Delegate.Remove(existingHandler, removeHandler);
             if(temp_delegate == null) {
index 138d4d7..0fadbe6 100644 (file)
@@ -12,14 +12,14 @@ using System;
 using System.Runtime.InteropServices;
 using System.Collections;
 
-namespace GLib {
+namespace Gst {
        
        public delegate void DynamicSignalHandler(object o, SignalArgs args);
 
        delegate void GClosureMarshal (IntPtr closure, ref GLib.Value retval, uint argc, IntPtr argsPtr, 
                IntPtr invocation_hint, IntPtr data);
 
-       public class DynamicSignal {
+       public static class DynamicSignal {
                
                private static readonly int gvalue_struct_size = Marshal.SizeOf(typeof(GLib.Value));
 
index d5bc8fe..d3b8468 100644 (file)
         return gst_element_query_duration(Handle, ref format, out duration);
     }
 
-       public void Connect(string signal, GLib.DynamicSignalHandler handler)
+       public void Connect(string signal, DynamicSignalHandler handler)
        {
-               GLib.DynamicSignal.Connect(this, signal, handler);
+               DynamicSignal.Connect(this, signal, handler);
        }
 
-       public void Disconnect(string signal, GLib.DynamicSignalHandler handler)
+       public void Disconnect(string signal, DynamicSignalHandler handler)
        {
-               GLib.DynamicSignal.Disconnect(this, signal, handler);
+               DynamicSignal.Disconnect(this, signal, handler);
        }
 
        public bool AddPad(Pad p)
diff --git a/gstreamer-sharp/glue/dynamicsignal.c b/gstreamer-sharp/glue/dynamicsignal.c
deleted file mode 100644 (file)
index b573a4f..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-//
-// dynamicsignal.c: new method of registering GObject signal
-//   handlers that uses a default signal handler to read
-//   callback argument stack and convert to an array of
-//   GValues before running the "generic" signal handler
-//
-// Authors:
-//   Aaron Bockover (abockover@novell.com)
-//
-// (C) 2006 Novell, Inc.
-//
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-#include <glib-object.h>
-#include <gobject/gvaluecollector.h>
-
-typedef void (* DynamicSignalHandler)(GObject *sender, guint argc, 
-    GValue *argv, gpointer userdata);
-
-//typedef gpointer (* DynamicSignalHandlerGPointer) (GObject *sender, guint argc,
-//    GValue *argv, gpointer userdata);
-
-//typedef gint64 (* DynamicSignalHandlerGint64) (GObject *sender, guint argc, GValue *argv, gpointer userdata);
-
-typedef struct {
-    GObject *object;
-    gpointer userdata;
-
-/*
-    typedef union {
-       DynamicSignalHandler CBVoid;
-       DynamicSignalHandlerGPointer CBGPointer;
-       DynamicSignalHandlerGInt64 CBGInt64;  
-    }
-    CallBack;
-*/
-    DynamicSignalHandler callback;
-    
-    guint id;
-    
-    guint g_signal_id;
-    gulong handler_id;
-    GSignalQuery signal_details;
-} DynamicSignalEntry;
-
-static GList *dynamic_signal_table = NULL;
-static guint dynamic_signal_last_id = 1;
-
-static DynamicSignalEntry *
-find_entry(GObject *object, guint signal_id)
-{
-    GList *current = dynamic_signal_table;
-    
-    while(current != NULL) {
-        DynamicSignalEntry *entry = (DynamicSignalEntry *)current->data;
-        if(entry->object == object && entry->g_signal_id == signal_id) {
-            return entry;
-        }
-
-        current = current->next;
-    }
-    
-    return NULL;
-}
-
-static DynamicSignalEntry *
-find_entry_by_name(GObject *object, const gchar *signal_name, guint *signal_id_out)
-{
-    guint signal_id;
-    
-    signal_id = g_signal_lookup(signal_name, G_OBJECT_TYPE(object));
-    if(signal_id_out != NULL) {
-        *signal_id_out = signal_id;
-    }
-
-    if(signal_id <= 0) {
-        return NULL;
-    }
-    
-    return find_entry(object, signal_id);
-}
-
-static void
-free_entry(DynamicSignalEntry *entry)
-{
-    memset(entry, 0, sizeof(DynamicSignalEntry));
-    g_free(entry);
-}
-
-static void 
-dynamic_signal_handler(DynamicSignalEntry *entry, ...)
-{
-    va_list argp;
-    GValue *args = NULL;
-    guint i, n;
-
-    if(entry == NULL) {
-        return;
-    }
-
-    n = entry->signal_details.n_params;
-    
-    if(n <= 0) {
-        entry->callback(entry->object, 0, NULL, entry->userdata);
-        return;
-    }
-    
-    args = g_new0(GValue, n);
-    va_start(argp, entry);
-        
-    for(i = 0; i < n; i++) {
-        GType type = entry->signal_details.param_types[i];
-        GValue *value = &args[i];
-        gchar *collect_error = NULL;
-
-        if(!G_TYPE_IS_CLASSED(type) && G_TYPE_IS_VALUE_TYPE(type) &&
-            !G_TYPE_IS_FUNDAMENTAL(type) && G_TYPE_IS_DERIVED(type) &&
-            G_TYPE_HAS_VALUE_TABLE(type)) {
-            g_value_init(value, type);
-            value->data[0].v_pointer = va_arg(argp, gpointer);
-        } else {
-            g_value_init(value, type);
-            G_VALUE_COLLECT(value, argp, 0, &collect_error);        
-        }
-        
-        if(collect_error != NULL) {
-            g_warning("Could not collect value: %s", collect_error);
-            g_free(collect_error);
-            break;
-        }
-    }
-    
-    va_end(argp);
-    entry->callback(entry->object, n, args, entry->userdata);
-}
-
-DynamicSignalEntry *
-g_dynamic_signal_find_registration(GObject *object, const gchar *signal_name)
-{
-    return find_entry_by_name(object, signal_name, NULL);
-}
-
-guint 
-g_dynamic_signal_connect(GObject *object, const gchar *signal_name,
-    DynamicSignalHandler callback, gboolean after, gpointer userdata)
-{
-    DynamicSignalEntry *entry;
-    guint signal_id;
-    
-    entry = find_entry_by_name(object, signal_name, &signal_id);
-    
-    if(entry != NULL) {
-        return entry->id;
-    }
-
-    entry = g_new0(DynamicSignalEntry, 1);
-    entry->id = dynamic_signal_last_id++;
-    entry->object = object;
-    entry->g_signal_id = signal_id;
-    entry->callback = callback;
-    entry->userdata = userdata;
-    g_signal_query(signal_id, &(entry->signal_details));
-
-    dynamic_signal_table = g_list_prepend(dynamic_signal_table, entry);
-    
-    entry->handler_id = g_signal_connect_data(object, signal_name, 
-        G_CALLBACK(dynamic_signal_handler), entry, NULL, 
-        G_CONNECT_SWAPPED | (after ? G_CONNECT_AFTER : 0));
-    
-    return entry->id;
-}
-
-
-void 
-g_dynamic_signal_disconnect(GObject *object, const gchar *signal_name)
-{
-    DynamicSignalEntry *entry = find_entry_by_name(object, signal_name, NULL);
-    
-    if(entry == NULL) {
-        return;
-    }
-    
-    g_signal_handler_disconnect(object, entry->handler_id);
-    
-    dynamic_signal_table = g_list_remove(dynamic_signal_table, entry);
-    free_entry(entry);
-    
-    entry = NULL;
-}
-
-void
-g_dynamic_signal_update_entry_userdata(DynamicSignalEntry *entry, gpointer userdata)
-{
-    if(entry != NULL) {
-       entry->userdata = userdata;
-    }
-}
-
-GType g_value_type(GValue *value)
-{
-    return G_VALUE_TYPE(value);
-}
-
index 9ec6c42..eddb6e4 100644 (file)
@@ -44,7 +44,7 @@ namespace Gst
             BindingHelper.InvokeProxySignalDelegate(have_type_delegate, typeof(HaveTypeArgs), o, args);
         }
      
-        public event GLib.DynamicSignalHandler HaveType {
+        public event HaveTypeHandler HaveType {
             add {
                 have_type_delegate = BindingHelper.AddProxySignalDelegate(this, "have-type", 
                     OnHaveType, have_type_delegate, value);