refuse to initialize on modem devices
authorLennart Poettering <lennart@poettering.net>
Sat, 4 Apr 2009 02:12:42 +0000 (04:12 +0200)
committerLennart Poettering <lennart@poettering.net>
Sat, 4 Apr 2009 02:12:42 +0000 (04:12 +0200)
src/modules/alsa/alsa-sink.c
src/modules/alsa/alsa-source.c
src/modules/alsa/alsa-util.c
src/modules/alsa/alsa-util.h

index b43fa06de707b91749d5dd3de4721ff02574f3da..cdf1ca807377e97d3cc665d9d6f3cb5596d83dfd 100644 (file)
@@ -1617,6 +1617,11 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
     pa_assert(u->device_name);
     pa_log_info("Successfully opened device %s.", u->device_name);
 
+    if (pa_alsa_pcm_is_modem(u->pcm_handle)) {
+        pa_log_notice("Device %s is modem, refusing further initialization.", u->device_name);
+        goto fail;
+    }
+
     if (profile)
         pa_log_info("Selected configuration '%s' (%s).", profile->description, profile->name);
 
index 348cd0822e88702e9751eea63e584022585b1b55..d9c6010385793b329421d0833457bd432f5d5f62 100644 (file)
@@ -1469,6 +1469,11 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
     pa_assert(u->device_name);
     pa_log_info("Successfully opened device %s.", u->device_name);
 
+    if (pa_alsa_pcm_is_modem(u->pcm_handle)) {
+        pa_log_notice("Device %s is modem, refusing further initialization.", u->device_name);
+        goto fail;
+    }
+
     if (profile)
         pa_log_info("Selected configuration '%s' (%s).", profile->description, profile->name);
 
index be8cd1cbfe4ef1688705793fa490ab6e3558a7ea..870cf0f1e82ce5919e7a54cbbec167a157ada596 100644 (file)
@@ -1769,3 +1769,15 @@ pa_bool_t pa_alsa_pcm_is_hw(snd_pcm_t *pcm) {
 
     return snd_pcm_info_get_card(info) >= 0;
 }
+
+pa_bool_t pa_alsa_pcm_is_modem(snd_pcm_t *pcm) {
+    snd_pcm_info_t* info;
+    snd_pcm_info_alloca(&info);
+
+    pa_assert(pcm);
+
+    if (snd_pcm_info(pcm, info) < 0)
+        return FALSE;
+
+    return snd_pcm_info_get_class(info) == SND_PCM_CLASS_MODEM;
+}
index 5cad2958ac1d9ad0b8e890a19acb314ce0d00ee6..94f27d143810fcc62794e94e9ba1900e616bad0a 100644 (file)
@@ -141,4 +141,6 @@ char *pa_alsa_get_reserve_name(const char *device);
 
 pa_bool_t pa_alsa_pcm_is_hw(snd_pcm_t *pcm);
 
+pa_bool_t pa_alsa_pcm_is_modem(snd_pcm_t *pcm);
+
 #endif