commit 10a0c18b8e3058144586880019b68ab4ea40ce78
Author: David Henningsson <david.henningsson@canonical.com>
Date:   Fri Dec 7 16:22:09 2012 +0530

    sound: Fix port handling for the unknown availability case
    
    The current code assumes that port availability transitions will be
    between YES and NO, and doesn't account for the fact that it may also be
    UNKNOWN. This causes spurious entries if the port availability
    transitions between YES and UNKNOWN.

diff --git a/panels/sound/gvc-mixer-control.c b/panels/sound/gvc-mixer-control.c
index 34ddc0c..2f6cf34 100644
--- a/panels/sound/gvc-mixer-control.c
+++ b/panels/sound/gvc-mixer-control.c
@@ -2138,7 +2138,7 @@ update_card (GvcMixerControl      *control,
                 else {
                         for (i = 0; i < info->n_ports; i++) {
                                 if (g_strcmp0 (card_port->port, info->ports[i]->name) == 0) {
-                                        if (card_port->available != info->ports[i]->available) {
+                                        if ((card_port->available == PA_PORT_AVAILABLE_NO) !=  (info->ports[i]->available == PA_PORT_AVAILABLE_NO)) {
                                                 card_port->available = info->ports[i]->available;
                                                 g_debug ("sync port availability on card %i, card port name '%s', new available value %i",
                                                           gvc_mixer_card_get_index (card),
