[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdemultimedia/kmix
From:       Christian Esken <esken () kde ! org>
Date:       2011-07-21 23:15:32
Message-ID: 20110721231532.E78E1AC890 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1242602 by esken:

Imlement multi-backend intialization (aka "backend filter")

 M  +2 -1      apps/kmix.cpp  
 M  +1 -0      apps/kmix.h  
 M  +1 -1      apps/kmixctrl.cpp  
 M  +2 -1      apps/kmixd.cpp  
 M  +1 -0      apps/kmixd.h  
 M  +3 -3      core/mixdevice.cpp  
 M  +21 -3     core/mixertoolbox.cpp  
 M  +2 -1      core/mixertoolbox.h  
 M  +8 -10     gui/kmixdockwidget.cpp  


--- trunk/KDE/kdemultimedia/kmix/apps/kmix.cpp #1242601:1242602
@@ -89,7 +89,7 @@
     KGlobal::locale()->insertCatalog( QLatin1String( "kmix-controls" ));
     initWidgets();
     initPrefDlg();
-    MixerToolBox::instance()->initMixer(m_multiDriverMode, m_hwInfoString);
+    MixerToolBox::instance()->initMixer(m_multiDriverMode, m_backendFilter, \
                m_hwInfoString);
     KMixDeviceManager *theKMixDeviceManager = KMixDeviceManager::instance();
     initActionsAfterInitMixer(); // init actions that require initialized mixer \
backend(s).  
@@ -434,6 +434,7 @@
     //}
     QString mixerIgnoreExpression = config.readEntry( "MixerIgnoreExpression", \
                "Modem" );
     MixerToolBox::instance()->setMixerIgnoreExpression(mixerIgnoreExpression);
+    m_backendFilter = config.readEntry<>( "Backends", QList<QString>() );
 
     if ( orientationString == "Horizontal" )
         m_toplevelOrientation  = Qt::Horizontal;
--- trunk/KDE/kdemultimedia/kmix/apps/kmix.h #1242601:1242602
@@ -123,6 +123,7 @@
    QString m_defaultCardOnStart;
    bool m_dontSetDefaultCardOnStart;
    QLabel      *m_errorLabel;
+   QList<QString> m_backendFilter;
    ViewDockAreaPopup *_dockAreaPopup;
    unsigned int m_configVersion;
    void showVolumeDisplay();
--- trunk/KDE/kdemultimedia/kmix/apps/kmixctrl.cpp #1242601:1242602
@@ -57,7 +57,7 @@
 
    // create mixers
    QString dummyStringHwinfo;
-   MixerToolBox::instance()->initMixer(false, dummyStringHwinfo);
+   MixerToolBox::instance()->initMixer(false, QList<QString>(), dummyStringHwinfo);
 
    // load volumes
    if ( args->isSet("restore") )
--- trunk/KDE/kdemultimedia/kmix/apps/kmixd.cpp #1242601:1242602
@@ -100,7 +100,7 @@
    //KGlobal::locale()->insertCatalog( QLatin1String( "kmix-controls" ));
    //initWidgets();
    //initPrefDlg();
-   MixerToolBox::instance()->initMixer(m_multiDriverMode, m_hwInfoString);
+   MixerToolBox::instance()->initMixer(m_multiDriverMode, m_backendFilter, \
m_hwInfoString);  KMixDeviceManager *theKMixDeviceManager = \
KMixDeviceManager::instance();  //recreateGUI(false);
    fixConfigAfterRead();
@@ -222,6 +222,7 @@
       Mixer::setGlobalMaster(mixerMasterCard, masterDev, true);
    //}
    QString mixerIgnoreExpression = config.readEntry( "MixerIgnoreExpression", \
"Modem" ); +   m_backendFilter = config.readEntry<>( "Backends", QList<QString>() );
    MixerToolBox::instance()->setMixerIgnoreExpression(mixerIgnoreExpression);
 }
 
--- trunk/KDE/kdemultimedia/kmix/apps/kmixd.h #1242601:1242602
@@ -84,6 +84,7 @@
    bool m_dontSetDefaultCardOnStart;
    unsigned int m_configVersion;
    //void increaseOrDecreaseVolume(bool increase);
+   QList<QString> m_backendFilter;
 
   private slots:
    void saveConfig();
--- trunk/KDE/kdemultimedia/kmix/core/mixdevice.cpp #1242601:1242602
@@ -212,9 +212,9 @@
 void MixDevice::setRecSource(bool value)   { _captureVolume.setSwitch( value ); }
 bool MixDevice::isEnum()                   { return ( ! _enumValues.empty() ); }
 
-int MixDevice::mediaPlay() { mixer()->mediaPlay(_id); }
-int MixDevice::mediaPrev() { mixer()->mediaPrev(_id); }
-int MixDevice::mediaNext() { mixer()->mediaNext(_id); }
+int MixDevice::mediaPlay() { return mixer()->mediaPlay(_id); }
+int MixDevice::mediaPrev() { return mixer()->mediaPrev(_id); }
+int MixDevice::mediaNext() { return mixer()->mediaNext(_id); }
 
 bool MixDevice::operator==(const MixDevice& other) const
 {
--- trunk/KDE/kdemultimedia/kmix/core/mixertoolbox.cpp #1242601:1242602
@@ -70,12 +70,24 @@
  * @par multiDriverMode Whether the Mixer scan should try more all backendends.
  *          'true' means to scan all backends. 'false' means: After scanning the
  *          current backend the next backend is only scanned if no Mixers were found \
yet. + * @par backendList Activated backends (typically a value from the kmixrc or a \
                default)
  * @par ref_hwInfoString Here a descripitive text of the scan is returned (Hardware \
                Information)
  */
-void MixerToolBox::initMixer(bool multiDriverMode, QString& ref_hwInfoString)
+void MixerToolBox::initMixer(bool multiDriverMode, QList<QString> backendList, \
QString& ref_hwInfoString)  {
-   //kDebug(67100) << "IN MixerToolBox::initMixer()";
+    initMixerInternal(multiDriverMode, backendList, ref_hwInfoString);
+    if ( Mixer::mixers().isEmpty() )
+      initMixerInternal(multiDriverMode, QList<QString>(), ref_hwInfoString);  // \
try again without filter +}
 
+
+/**
+ * 
+ */
+void MixerToolBox::initMixerInternal(bool multiDriverMode, QList<QString> \
backendList, QString& ref_hwInfoString) +{  
+   bool useBackendFilter = ( ! backendList.isEmpty() );
+
    // Find all mixers and initialize them
    int drvNum = Mixer::numDrivers();
 
@@ -111,7 +123,13 @@
    {
       QString driverName = Mixer::driverName(drv);
       kDebug(67100) << "Looking for mixers with the : " << driverName << " driver";
+      if ( useBackendFilter && ! backendList.contains(driverName) )
+      {
+	  kDebug() << "Skipping " << driverName << " (filtered)";
+	  continue;
+      }
 
+
       if ( autodetectionFinished ) {
          // inner loop indicates that we are finished => sane exit from outer loop
          break;
@@ -129,7 +147,7 @@
          bool mixerAccepted = possiblyAddMixer(mixer);
    
          /* Lets decide if the autoprobing shall end (BTW: In multiDriver mode we \
                scan all devices, so no check is necessary) */
-         if ( ! multiDriverMode ) {
+         if ( (! multiDriverMode) && ( ! useBackendFilter) ) {
             // In Single-Driver-mode we only need to check after we reached \
devNumMax  if ( dev == devNumMax && Mixer::mixers().count() != 0 )
                 autodetectionFinished = true; // highest device number of driver and \
                a Mixer => finished
--- trunk/KDE/kdemultimedia/kmix/core/mixertoolbox.h #1242601:1242602
@@ -42,7 +42,8 @@
 
    public:
       static MixerToolBox* instance();
-      void initMixer(bool, QString&);
+      void initMixer(bool, QList<QString> backendList, QString&);
+      void initMixerInternal(bool, QList<QString> backendList, QString&);
       void deinitMixer();
       bool possiblyAddMixer(Mixer *mixer);
       void removeMixer(Mixer *mixer);
--- trunk/KDE/kdemultimedia/kmix/gui/kmixdockwidget.cpp #1242601:1242602
@@ -387,17 +387,15 @@
   MixDevice *md = Mixer::getGlobalMasterMD();
   if ( md != 0 )
   {
-      Volume vol = md->playbackVolume();
-      if ( md->playbackVolume().hasVolume() )
-         vol = md->playbackVolume();
-      else
-         vol = md->captureVolume();
-
+      Volume &vol = ( md->playbackVolume().hasVolume() ) ?  md->playbackVolume() : \
md->captureVolume();  int inc = vol.maxVolume() / 20;
 
     if ( inc < 1 ) inc = 1;
 
-    vol.changeAllVolumes( (inc * delta) / 120 );
+    long int cv = inc * (delta / 120 );
+    kDebug() << "twe: " << cv << " : " << vol;
+    vol.changeAllVolumes(cv);
+    kDebug() << "twe: " << cv << " : " << vol;
 /*    for ( int i = 0; i < vol.count(); i++ ) {
         int newVal = vol[i] + (inc * (delta / 120));
         if( newVal < 0 ) newVal = 0;
@@ -410,11 +408,11 @@
         _audioPlayer->setCurrentSource(fileName);
         _audioPlayer->play();
     }
-      if ( md->playbackVolume().hasVolume() )
+/*      if ( md->playbackVolume().hasVolume() )
          md->playbackVolume().setVolume(vol);
       else
-         md->captureVolume().setVolume(vol);
-    m_mixer->commitVolumeChange(md);
+         md->captureVolume().setVolume(vol);;*/
+    md->mixer()->commitVolumeChange(md);
     setVolumeTip();
   }
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic