start only player class with ramp 83/17383/1
authorJanos Kovacs <jankovac503@gmail.com>
Thu, 20 Feb 2014 15:23:00 +0000 (17:23 +0200)
committerJaska Uimonen <jaska.uimonen@helsinki.fi>
Thu, 20 Feb 2014 15:23:00 +0000 (17:23 +0200)
Change-Id: I4d3d02b7994be98b0614d4dd07fd5b0101c188a4

murphy/classify.c
murphy/classify.h
murphy/discover.c

index 2ff89a2..156e342 100644 (file)
@@ -616,6 +616,29 @@ bool pa_classify_multiplex_stream(mir_node *node)
     return false;
 }
 
+bool pa_classify_ramping_stream(mir_node *node)
+{
+    static bool ramping[mir_application_class_end] = {
+        [ mir_player  ] = true,
+    };
+    
+    mir_node_type class;
+
+    pa_assert(node);
+
+    if (node->implement == mir_stream && node->direction == mir_input) {
+        class = node->type;
+
+        if (class > mir_application_class_begin &&
+            class < mir_application_class_end)
+        {
+            return ramping[class];
+        }
+    }
+
+    return false;
+}
+
 const char *pa_classify_loopback_stream(mir_node *node)
 {
     const char *role[mir_device_class_end - mir_device_class_begin] = {
index cfe4430..7942765 100644 (file)
@@ -35,6 +35,7 @@ mir_node_type pa_classify_guess_stream_node_type(struct userdata *,
 mir_node_type pa_classify_guess_application_class(mir_node *);
 
 bool pa_classify_multiplex_stream(mir_node *);
+bool pa_classify_ramping_stream(mir_node *);
 
 const char *pa_classify_loopback_stream(mir_node *);
 
index 8e0330a..3c6b5e9 100644 (file)
@@ -907,12 +907,13 @@ bool pa_discover_preroute_sink_input(struct userdata *u,
         pa_utils_set_stream_routing_properties(pl, type, data->sink);
     }
 
+    memset(&fake, 0, sizeof(fake));
+    fake.direction = mir_input;
+    fake.implement = mir_stream;
+    fake.type      = type;
+
     if (!data->sink) {
-        memset(&fake, 0, sizeof(fake));
-        fake.direction = mir_input;
-        fake.implement = mir_stream;
         fake.channels  = data->channel_map.channels;
-        fake.type      = type;
         fake.zone      = pa_utils_get_zone(data->proplist);
         fake.visible   = true;
         fake.available = true;
@@ -952,8 +953,10 @@ bool pa_discover_preroute_sink_input(struct userdata *u,
             return true;
     }
 
-    pa_log_debug("set sink-input ramp-muted");
-    data->flags |= PA_SINK_INPUT_START_RAMP_MUTED;
+    if (pa_classify_ramping_stream(&fake)) {
+        pa_log_debug("set sink-input ramp-muted");
+        data->flags |= PA_SINK_INPUT_START_RAMP_MUTED;
+    }
 
     return true;
 }