Skip to content
  • Hui Wang's avatar
    stream-restore: Don't restore if the active_port is PA_AVAILABLE_NO · cbaeea4a
    Hui Wang authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
    
    
    We met two problems recently, one happened on a Lenovo machine with
    dual analogue codecs, the other happened on a Dell machine with
    a digital mic directly connected to PCH. The two problems are
    basically same, there is an internal mic and an external mic, the
    internal mic always shows up in the gnome-control-center, the external
    mic only shows up when it is plugged. After the external mic is
    plugged and users select it from gnome-control-center, the
    gnome-control-center will read all saved streams through extension_cb,
    and bind the source of external mic to all streams, after that the
    apps only record sound via the source of external mic, after the
    external mic is unplugged, the internal mic will automatically be
    selected since it is the only left input device in the
    gnome-control-center, since users don't select it, all streams are
    still bond the source of external mic. When users record sound via
    apps, they can't record any sound even the default_source is the
    source of internal mic and the internal mic is selected in the UI.
    
    It is very common that a machine has internal mic and external mic,
    but this problem didn't expose before, that is because both internal
    mic and external mic belong to one source, but for those two
    machines, the internal mic belongs to one source, while the external
    mic belongs to another source (they are in differnt codecs or one is
    in the codec and the other is from PCH),
    
    To fix it with a mininal change, we just check if the active_port is
    PA_AVAILABLE_NO or not when building a new stream, if it is, don't
    restore the device to the new built stream, let pa_source_output_new()
    decide the source device for this stream.
    
    And we also do the same change to sink_input.
    
    This change only affects the new built streams, it will not change
    the database, so the users' preference is still saved in the database,
    after the active_port is not PA_AVAILABLE_NO, the new streams will
    still restore to the preferred device.
    
    Signed-off-by: default avatarHui Wang <hui.wang@canonical.com>
    cbaeea4a