[arch-commits] Commit in kdemultimedia/trunk (PKGBUILD fix-kmix-high-cpu.patch)

Andrea Scarpino andrea at archlinux.org
Mon Jan 2 11:12:52 UTC 2012


    Date: Monday, January 2, 2012 @ 06:12:52
  Author: andrea
Revision: 145818

Fix Kmix high cpu (KDEBUG#288675)

Added:
  kdemultimedia/trunk/fix-kmix-high-cpu.patch
Modified:
  kdemultimedia/trunk/PKGBUILD

-------------------------+
 PKGBUILD                |   11 +-
 fix-kmix-high-cpu.patch |  195 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 203 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2012-01-02 10:20:33 UTC (rev 145817)
+++ PKGBUILD	2012-01-02 11:12:52 UTC (rev 145818)
@@ -11,7 +11,7 @@
          'kdemultimedia-kscd'
          'kdemultimedia-mplayerthumbs')
 pkgver=4.7.95
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 url='http://www.kde.org'
 license=('GPL' 'LGPL' 'FDL')
@@ -19,11 +19,16 @@
 makedepends=('cmake' 'automoc4' 'kdelibs' 'tunepimp' 'ffmpeg' 'mplayer'
              'pulseaudio' 'libmusicbrainz3')
 source=("http://download.kde.org/unstable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2"
-        'mplayerthumbs.config')
+        'mplayerthumbs.config'
+        'fix-kmix-high-cpu.patch')
 sha1sums=('8c56f7bcbfd012492f97a3a827f97d07b7b6b390'
-          'ba016fa2563c14ffcba852c62506b66bfc6ee683')
+          'ba016fa2563c14ffcba852c62506b66bfc6ee683'
+          'd993b72004378aee84de3d410e9b25f91aa88138')
 
 build() {
+    cd "${srcdir}"/${pkgbase}-${pkgver}
+    patch -p0 -i "${srcdir}"/fix-kmix-high-cpu.patch
+
     cd ${srcdir}
 	mkdir build
 	cd build

Added: fix-kmix-high-cpu.patch
===================================================================
--- fix-kmix-high-cpu.patch	                        (rev 0)
+++ fix-kmix-high-cpu.patch	2012-01-02 11:12:52 UTC (rev 145818)
@@ -0,0 +1,195 @@
+Index: kmix/gui/mdwslider.h
+===================================================================
+--- kmix/gui/mdwslider.h	(revision 1270927)
++++ kmix/gui/mdwslider.h	(revision 1270928)
+@@ -56,7 +56,7 @@
+ 	       bool includePlayback, bool includeCapture,
+ 	       bool small, Qt::Orientation,
+ 	       QWidget* parent, ViewBase* view, ProfControl *pctl);
+-    ~MDWSlider() { }
++    virtual ~MDWSlider();
+ 
+     enum LabelType { LT_ALL, LT_FIRST_CAPTURE, LT_NONE };
+     void addActionToPopup( KAction *action );
+Index: kmix/gui/viewbase.cpp
+===================================================================
+--- kmix/gui/viewbase.cpp	(revision 1270927)
++++ kmix/gui/viewbase.cpp	(revision 1270928)
+@@ -128,13 +128,14 @@
+     // allow view to "polish" itself
+     constructionFinished();
+ 
+-   kDebug() << "CONNECT ViewBase count " << _mixers.size();
+-  foreach ( Mixer* mixer, _mixers )
+-  {
+-    kDebug(67100) << "CONNECT ViewBase controlschanged" << mixer->id(); 
+-   connect ( mixer, SIGNAL(controlChanged()), this, SLOT(refreshVolumeLevels()) );
+-   connect ( mixer, SIGNAL(controlsReconfigured(QString)), this, SLOT(controlsReconfigured(QString)) );
+-  }
++// Moved the following up one Level to KMixerWidget
++//   kDebug() << "CONNECT ViewBase count " << _mixers.size();
++//  foreach ( Mixer* mixer, _mixers )
++//  {
++//    kDebug(67100) << "CONNECT ViewBase controlschanged" << mixer->id();
++//   connect ( mixer, SIGNAL(controlChanged()), this, SLOT(refreshVolumeLevels()) );
++//   connect ( mixer, SIGNAL(controlsReconfigured(QString)), this, SLOT(controlsReconfigured(QString)) );
++//  }
+ 
+     
+ }
+@@ -217,10 +218,6 @@
+ 		setMixSet();
+ 		kDebug(67100) << "ViewBase::controlsReconfigured() " << mixer_ID << ": Recreating widgets (mixset contains: " << _mixSet->count() << ")";
+ 		createDeviceWidgets();
+-
+-		// We've done the low level stuff our selves but let elements
+-		// above know what has happened so they can reload config etc.
+-		emit redrawMixer(mixer_ID);
+ 	}
+ }
+ 
+Index: kmix/gui/kmixerwidget.h
+===================================================================
+--- kmix/gui/kmixerwidget.h	(revision 1270927)
++++ kmix/gui/kmixerwidget.h	(revision 1270928)
+@@ -75,6 +75,10 @@
+    void saveConfig( KConfig *config );
+    void loadConfig( KConfig *config );
+ 
++  private slots:
++    void controlsReconfiguredToplevel(QString mixerId);
++    void refreshVolumeLevelsToplevel();
++
+   private:
+    Mixer *_mixer;
+    QVBoxLayout *m_topLayout; // contains TabWidget
+@@ -82,6 +86,7 @@
+    ProfTab* _tab;
+    std::vector<ViewBase*> _views;
+    KActionCollection* _actionCollection;  // -<- applciations wide action collection
++   QWidget* _mainWindow;
+ 
+    
+    void createLayout(ViewBase::ViewFlags vflags);
+Index: kmix/gui/mixdevicewidget.h
+===================================================================
+--- kmix/gui/mixdevicewidget.h	(revision 1270927)
++++ kmix/gui/mixdevicewidget.h	(revision 1270928)
+@@ -47,7 +47,7 @@
+     MixDeviceWidget( MixDevice* md,
+                      bool small, Qt::Orientation orientation,
+                      QWidget* parent, ViewBase*, ProfControl * );
+-    ~MixDeviceWidget();
++    virtual ~MixDeviceWidget();
+ 
+     void addActionToPopup( KAction *action );
+ 
+Index: kmix/gui/mdwslider.cpp
+===================================================================
+--- kmix/gui/mdwslider.cpp	(revision 1270927)
++++ kmix/gui/mdwslider.cpp	(revision 1270928)
+@@ -81,6 +81,17 @@
+     update();
+ }
+ 
++MDWSlider::~MDWSlider()
++{
++	foreach( QAbstractSlider* slider, m_slidersPlayback)
++	{
++		delete slider;
++	}
++	foreach( QAbstractSlider* slider, m_slidersCapture)
++	{
++		delete slider;
++	}
++}
+ 
+ void MDWSlider::createActions()
+ {
+Index: kmix/gui/kmixerwidget.cpp
+===================================================================
+--- kmix/gui/kmixerwidget.cpp	(revision 1270927)
++++ kmix/gui/kmixerwidget.cpp	(revision 1270928)
+@@ -37,6 +37,7 @@
+ #include <ktabwidget.h>
+ 
+ // KMix
++#include "apps/kmix.h"
+ #include "gui/guiprofile.h"
+ #include "gui/kmixerwidget.h"
+ #include "gui/kmixtoolbox.h"
+@@ -58,6 +59,8 @@
+      m_topLayout(0), _guiprof(guiprof),
+      _actionCollection(actionCollection)
+ {
++	_mainWindow = parent;
++	//kDebug() << "kmixWindow created: parent=" << parent << ", parentWidget()=" << parentWidget();
+    if ( _mixer )
+    {
+       createLayout(vflags);
+@@ -169,13 +172,42 @@
+       connect( vbase, SIGNAL(toggleMenuBar()), parentWidget(), SLOT(toggleMenuBar()) );
+       // *this will be deleted on rebuildGUI(), so lets queue the signal
+       connect( vbase, SIGNAL(rebuildGUI())   , parentWidget(), SLOT(recreateGUIwithSavingView()), Qt::QueuedConnection );
+-      connect( vbase, SIGNAL(redrawMixer(QString)), parentWidget(), SLOT(redrawMixer(QString)), Qt::QueuedConnection );
++      //connect( vbase, SIGNAL(redrawMixer(QString)), parentWidget(), SLOT(redrawMixer(QString)), Qt::QueuedConnection );
++
++      kDebug() << "CONNECT ViewBase count " << vbase->getMixers().size();
++	  foreach ( Mixer* mixer, vbase->getMixers() )
++	  {
++	    kDebug(67100) << "CONNECT ViewBase controlschanged" << mixer->id();
++	   connect ( mixer, SIGNAL(controlChanged()), this, SLOT(refreshVolumeLevelsToplevel()) );
++	   connect ( mixer, SIGNAL(controlsReconfigured(QString)), this, SLOT(controlsReconfiguredToplevel(QString)) );
++	  }
+       return true;
+    }
+ }
+ 
++void KMixerWidget::controlsReconfiguredToplevel(QString mixerId)
++{
++	foreach ( ViewBase* vbase, _views)
++	{
++		vbase->controlsReconfigured(mixerId);
++	}
++	KMixWindow* kmixWindow = qobject_cast<KMixWindow*>(_mainWindow);
++	kDebug() << "kmixWindow to redraw: " << kmixWindow << ", not-casted=" << _mainWindow;
++	if (kmixWindow != 0)
++	{
++		kmixWindow->redrawMixer(mixerId);
++	}
++}
+ 
++void KMixerWidget::refreshVolumeLevelsToplevel()
++{
++	foreach ( ViewBase* vbase, _views)
++	{
++		vbase->refreshVolumeLevels();
++	}
++}
+ 
++
+ /**
+  * Returns the current View. Normally we have only one View, so we always return the first view.
+  * This method is only here for one reason: We can plug in an action in the main menu, so that
+Index: kmix/gui/viewbase.h
+===================================================================
+--- kmix/gui/viewbase.h	(revision 1270927)
++++ kmix/gui/viewbase.h	(revision 1270928)
+@@ -114,6 +114,8 @@
+    GUIProfile* guiProfile() { return _guiprof; };
+    KActionCollection* actionCollection() { return _actions; };
+ 
++   QSet<Mixer*>& getMixers() { return _mixers; };
++
+     /**
+      * Contains the widgets for the _mixSet. There is a 1:1 relationship, which means:
+      * _mdws[i] is the Widget for the MixDevice _mixSet[i] - please see ViewBase::createDeviceWidgets().
+@@ -124,7 +126,7 @@
+ 
+ signals:
+     void rebuildGUI();
+-    void redrawMixer( const QString& mixer_ID );
++    //void redrawMixer( const QString& mixer_ID );
+ 
+ 
+ protected:




More information about the arch-commits mailing list