pulsedevicemonitor: Index are per facility, not global

So need to keep the type of device in the device object
This commit is contained in:
Olivier Crête 2014-05-04 01:14:33 -04:00
parent 6c8e42944a
commit 39bbccdf79
2 changed files with 7 additions and 1 deletions

View file

@ -282,7 +282,11 @@ context_subscribe_cb (pa_context * context, pa_subscription_event_type_t type,
for (item = monitor->devices; item; item = item->next) { for (item = monitor->devices; item; item = item->next) {
dev = item->data; dev = item->data;
if (dev->device_index == idx) { if (((facility == PA_SUBSCRIPTION_EVENT_SOURCE &&
dev->type == GST_PULSE_DEVICE_TYPE_SOURCE) ||
(facility == PA_SUBSCRIPTION_EVENT_SINK &&
dev->type == GST_PULSE_DEVICE_TYPE_SINK)) &&
dev->device_index == idx) {
gst_object_ref (dev); gst_object_ref (dev);
break; break;
} }
@ -629,6 +633,7 @@ gst_pulse_device_new (guint device_index, const gchar * device_name,
"display-name", device_name, "caps", caps, "klass", klass, "display-name", device_name, "caps", caps, "klass", klass,
"internal-name", internal_name, NULL); "internal-name", internal_name, NULL);
gstdev->type = type;
gstdev->device_index = device_index; gstdev->device_index = device_index;
gstdev->element = element; gstdev->element = element;

View file

@ -83,6 +83,7 @@ typedef struct _GstPulseDeviceClass GstPulseDeviceClass;
struct _GstPulseDevice { struct _GstPulseDevice {
GstDevice parent; GstDevice parent;
GstPulseDeviceType type;
guint device_index; guint device_index;
gchar *internal_name; gchar *internal_name;
const gchar *element; const gchar *element;