[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#681236: [kmix] Fix select master channel for multiple cards



Package: kmix
Version: 4:4.8.4-2
Severity: normal
Tags: patch

--- Please enter the report below this line. ---

On some settups where there are multiple soundcards with simillar name, the 
master select dialog gets confused to which card to assign the master channel. 
The patch is using Mixer->id() instead of readableName().

Already sended to kde for review, see https://git.reviewboard.kde.org/r/105496/.

--- System information. ---
Architecture: amd64
Kernel:       Linux 3.4.4-amonsul+

Debian Release: wheezy/sid
  500 unstable        ftp.cz.debian.org 
  500 unstable        debian.cihar.com 
  500 unstable        deb.opera.com 
    1 experimental    ftp.cz.debian.org 

--- Package information. ---
Depends                                    (Version) | Installed
====================================================-+-=========================
kde-runtime                                          | 4:4.8.4-1
libasound2                               (>= 1.0.16) | 1.0.25-3
libc6                                       (>= 2.4) | 2.13-34
libkdecore5                               (>= 4:4.8) | 4:4.8.4-3
libkdeui5                                 (>= 4:4.8) | 4:4.8.4-3
libphonon4                  (>= 4:4.6.0really4.3.80) | 4:4.6.0.0-2
libplasma3                                (>= 4:4.8) | 4:4.8.4-3
libpulse-mainloop-glib0                  (>= 0.99.1) | 2.0-3
libpulse0                                (>= 0.99.1) | 2.0-3
libqt4-dbus                             (>= 4:4.6.1) | 4:4.8.2-1
libqt4-xml                              (>= 4:4.5.3) | 4:4.8.2-1
libqtcore4                              (>= 4:4.8.0) | 4:4.8.2-1
libqtgui4                               (>= 4:4.6.1) | 4:4.8.2-1
libsolid4                                 (>= 4:4.8) | 4:4.8.4-3
libstdc++6                                (>= 4.4.0) | 4.7.1-4
phonon                                               | 4:4.6.0.0-2


Package's Recommends field is empty.

Package's Suggests field is empty.
diff --git a/gui/dialogselectmaster.cpp b/gui/dialogselectmaster.cpp
index a5e5f45..16bf619 100644
--- a/gui/dialogselectmaster.cpp
+++ b/gui/dialogselectmaster.cpp
@@ -88,7 +88,7 @@ void DialogSelectMaster::createWidgets(Mixer *ptr_mixer)
         for( int i =0; i<Mixer::mixers().count(); i++ )
         {
             Mixer *mixer = (Mixer::mixers())[i];
-            m_cMixer->addItem( mixer->readableName() );
+            m_cMixer->addItem( mixer->readableName(), mixer->id() );
          } // end for all_Mixers
         // Make the current Mixer the current item in the ComboBox
         int findIndex = m_cMixer->findText( ptr_mixer->readableName() );
@@ -120,16 +120,11 @@ void DialogSelectMaster::createWidgets(Mixer *ptr_mixer)
  */
 void DialogSelectMaster::createPageByID(int mixerId)
 {
-  //kDebug(67100) << "DialogSelectMaster::createPage()";
-    QString selectedMixerName = m_cMixer->itemText(mixerId);
-    for( int i =0; i<Mixer::mixers().count(); i++ )
-    {
-        Mixer *mixer = (Mixer::mixers())[i];
-        if ( mixer->readableName() == selectedMixerName ) {
-            createPage(mixer);
-            break;
-        }
-    } // for
+    QString mixer_id = m_cMixer->itemData(mixerId).toString();
+    Mixer * mixer = Mixer::findMixer(mixer_id);
+
+    if ( mixer != NULL )
+        createPage(mixer);
 }
 
 /**
@@ -203,16 +198,9 @@ void DialogSelectMaster::apply()
     }
     else if ( Mixer::mixers().count() > 1 ) {
         // find mixer that is currently active in the ComboBox
-        QString selectedMixerName = m_cMixer->itemText(m_cMixer->currentIndex());
-        
-        for( int i =0; i<Mixer::mixers().count(); i++ )
-        {
-            mixer = (Mixer::mixers())[i];
-            if ( mixer->readableName() == selectedMixerName ) {
-                mixer = (Mixer::mixers())[i];
-                break;
-            }
-        } // for
+        int idx = m_cMixer->currentIndex();
+        QString mixer_id = m_cMixer->itemData(idx).toString();
+        mixer = Mixer::findMixer(mixer_id);
     }
    
     QAbstractButton* button =  m_buttonGroupForScrollView->checkedButton();

Reply to: