comparison libpurple/media.c @ 26011:e8b8c6b14196

Simplified purple_media_get_devices.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Mon, 01 Sep 2008 03:18:26 +0000
parents 3b4b9795f987
children 5a774d0817d8
comparison
equal deleted inserted replaced
26010:3b4b9795f987 26011:e8b8c6b14196
754 { 754 {
755 g_signal_emit(media, purple_media_signals[GOT_ACCEPT], 0); 755 g_signal_emit(media, purple_media_signals[GOT_ACCEPT], 0);
756 } 756 }
757 757
758 GList* 758 GList*
759 purple_media_get_devices(GstElement *element) 759 purple_media_get_devices(const gchar *plugin)
760 { 760 {
761 GObjectClass *klass; 761 GObjectClass *klass;
762 GstPropertyProbe *probe; 762 GstPropertyProbe *probe;
763 const GParamSpec *pspec; 763 const GParamSpec *pspec;
764 764 GstElement *element = gst_element_factory_make(plugin, NULL);
765 GstElementFactory *factory;
765 const gchar *longname = NULL; 766 const gchar *longname = NULL;
766
767 GstElementFactory *factory =
768 gst_element_get_factory(element);
769
770 GList *ret = NULL; 767 GList *ret = NULL;
768
769 if (element == NULL)
770 return NULL;
771
772 factory = gst_element_get_factory(element);
771 773
772 longname = gst_element_factory_get_longname(factory); 774 longname = gst_element_factory_get_longname(factory);
773 klass = G_OBJECT_GET_CLASS(element); 775 klass = G_OBJECT_GET_CLASS(element);
774 776
775 if (!g_object_class_find_property (klass, "device") || 777 if (!g_object_class_find_property (klass, "device") ||
798 for (n = 0 ; n < array->n_values ; n++) { 800 for (n = 0 ; n < array->n_values ; n++) {
799 GValue *device = g_value_array_get_nth (array, n); 801 GValue *device = g_value_array_get_nth (array, n);
800 802
801 ret = g_list_append(ret, g_value_dup_string(device)); 803 ret = g_list_append(ret, g_value_dup_string(device));
802 804
805 g_object_set(G_OBJECT(element), "device",
806 g_value_get_string(device), NULL);
803 g_object_get(G_OBJECT(element), "device-name", &name, NULL); 807 g_object_get(G_OBJECT(element), "device-name", &name, NULL);
804 purple_debug_info("media", "Found source '%s' (%s) - device '%s' (%s)\n", 808 purple_debug_info("media", "Found source '%s' (%s) - device '%s' (%s)\n",
805 longname, GST_PLUGIN_FEATURE (factory)->name, 809 longname, GST_PLUGIN_FEATURE (factory)->name,
806 name, g_value_get_string(device)); 810 name, g_value_get_string(device));
807 g_free(name); 811 g_free(name);
816 g_object_set (G_OBJECT (element), "autoprobe-fps", TRUE, NULL); 820 g_object_set (G_OBJECT (element), "autoprobe-fps", TRUE, NULL);
817 } 821 }
818 } 822 }
819 } 823 }
820 824
825 gst_object_unref(element);
821 return ret; 826 return ret;
822 } 827 }
823 828
824 gchar * 829 gchar *
825 purple_media_element_get_device(GstElement *element) 830 purple_media_element_get_device(GstElement *element)