e mixer fix - fix default mixer to pulse if there
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Sat, 14 Nov 2015 01:13:36 +0000 (10:13 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Sat, 14 Nov 2015 01:14:30 +0000 (10:14 +0900)
this makes e use the correct mixer backend if pulse is available as
opposed to using alsa going behind pulses back.

@fix

src/modules/mixer/e_mod_config.c

index 92751e19b09efbd2e5dbc4bc760208a026c06f4c..1dad09389a376844449f0a78c494a3eee92ab0a0 100644 (file)
@@ -127,7 +127,8 @@ _config_set(Emix_Config *config)
 void
 emix_config_init(emix_config_backend_changed cb, const void *userdata)
 {
-   const Eina_List *l;
+   const Eina_List *backends, *l;
+   const char *s;
 
    EINA_SAFETY_ON_FALSE_RETURN(emix_init());
    _emix_config_dd_new();
@@ -135,9 +136,25 @@ emix_config_init(emix_config_backend_changed cb, const void *userdata)
    if (!_config)
      {
         _config = E_NEW(Emix_Config, 1);
-        l = emix_backends_available();
-        if (l)
-          _config->backend = eina_stringshare_add(l->data);
+        backends = emix_backends_available();
+        // prefer pulseaudio as a packend if it exists as this is generally
+        // more useful, and a superset of ALSA. so if pulse is there, alsa
+        // is too - so choosing alsa if pulse is available is wrong (as a
+        // default) and leads to brokenness. in the case pulse is not
+        // around, alsa will then work
+        EINA_LIST_FOREACH(backends, l, s)
+          {
+             if (!strcmp(s, "PULSEAUDIO"))
+               {
+                  _config->backend = eina_stringshare_add(s);
+                  break;
+               }
+          }
+        if (!_config->backend)
+          {
+             if (backends)
+               _config->backend = eina_stringshare_add(backends->data);
+          }
      }
 
    if (_config->save == 0) _config->save = 1;