Index: ChangeLog
===================================================================
--- ChangeLog	(revision 144)
+++ ChangeLog	(working copy)
@@ -1,3 +1,11 @@
+2008-06-29  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+	* plparse/totem-pl-parser.c (totem_pl_parser_metadata_get_type),
+	* plparse/totem-pl-parser.h: Define a new
+	TOTEM_TYPE_PL_PARSER_METADATA, identical to G_TYPE_HASH_TABLE; Use
+	it instead of G_TYPE_HASH_TABLE so that Python bindings can safely
+	convert metadata signal parameters.  Closes #536060.
+
 2008-06-27  Bastien Nocera  <hadess@hadess.net>
 
 	* plparse/totem-disc.c (cd_cache_new), (cd_cache_open_mountpoint):
Index: plparse/totem-pl-parser.h
===================================================================
--- plparse/totem-pl-parser.h	(revision 144)
+++ plparse/totem-pl-parser.h	(working copy)
@@ -356,6 +356,11 @@
 
 TotemPlParser *totem_pl_parser_new (void);
 
+
+GType totem_pl_parser_metadata_get_type (void) G_GNUC_CONST;
+#define TOTEM_TYPE_PL_PARSER_METADATA (totem_pl_parser_metadata_get_type())
+
+
 G_END_DECLS
 
 #endif /* TOTEM_PL_PARSER_H */
Index: plparse/totem-pl-parser.c
===================================================================
--- plparse/totem-pl-parser.c	(revision 144)
+++ plparse/totem-pl-parser.c	(working copy)
@@ -354,7 +354,7 @@
 			      G_STRUCT_OFFSET (TotemPlParserClass, entry_parsed),
 			      NULL, NULL,
 			      totemplparser_marshal_VOID__STRING_BOXED,
-			      G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_HASH_TABLE);
+			      G_TYPE_NONE, 2, G_TYPE_STRING, TOTEM_TYPE_PL_PARSER_METADATA);
 	/**
 	 * TotemPlParser::playlist-started:
 	 * @parser: the object which received the signal
@@ -374,7 +374,7 @@
 			      G_STRUCT_OFFSET (TotemPlParserClass, playlist_started),
 			      NULL, NULL,
 			      totemplparser_marshal_VOID__STRING_BOXED,
-			      G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_HASH_TABLE);
+			      G_TYPE_NONE, 2, G_TYPE_STRING, TOTEM_TYPE_PL_PARSER_METADATA);
 	/**
 	 * TotemPlParser::playlist-ended:
 	 * @parser: the object which received the signal
@@ -1877,3 +1877,32 @@
 	return retval;
 }
 
+
+static gpointer
+hash_table_copy (gpointer boxed)
+{
+  GHashTable *hash_table = boxed;
+  return g_hash_table_ref (hash_table);
+}
+
+static void
+hash_table_free (gpointer boxed)
+{
+  GHashTable *hash_table = boxed;
+  g_hash_table_unref (hash_table);
+}
+
+GType
+totem_pl_parser_metadata_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+  if (g_once_init_enter (&g_define_type_id__volatile))
+    { 
+        GType g_define_type_id = g_boxed_type_register_static (
+            g_intern_static_string ("TotemPlParserMetadata"),
+            hash_table_copy, hash_table_free);
+        g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+    }
+  return g_define_type_id__volatile;
+}
+
