Hello community,

here is the log from the commit of package kmix for openSUSE:Factory checked in 
at 2013-07-22 17:17:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kmix (Old)
 and      /work/SRC/openSUSE:Factory/.kmix.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kmix"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kmix/kmix.changes        2013-07-08 
07:32:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.kmix.new/kmix.changes   2013-07-22 
17:17:15.000000000 +0200
@@ -1,0 +2,7 @@
+Mon Jul 15 08:13:30 UTC 2013 - [email protected]
+
+- Update to 4.10.95
+ * KDE 4.11 RC 1 release
+ * See http://www.kde.org/announcements/announce-4.11-rc1.php
+
+-------------------------------------------------------------------

Old:
----
  kmix-4.10.90.tar.xz

New:
----
  kmix-4.10.95.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kmix.spec ++++++
--- /var/tmp/diff_new_pack.XhIFab/_old  2013-07-22 17:17:16.000000000 +0200
+++ /var/tmp/diff_new_pack.XhIFab/_new  2013-07-22 17:17:16.000000000 +0200
@@ -27,7 +27,7 @@
 License:        GPL-2.0+
 Group:          Productivity/Multimedia/Sound/Mixers
 Url:            http://www.kde.org
-Version:        4.10.90
+Version:        4.10.95
 Release:        0
 Source0:        %{name}-%{version}.tar.xz
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ kmix-4.10.90.tar.xz -> kmix-4.10.95.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kmix-4.10.90/backends/mixer_backend.cpp 
new/kmix-4.10.95/backends/mixer_backend.cpp
--- old/kmix-4.10.90/backends/mixer_backend.cpp 2013-06-25 20:35:45.000000000 
+0200
+++ new/kmix-4.10.95/backends/mixer_backend.cpp 2013-07-10 01:19:39.000000000 
+0200
@@ -170,7 +170,8 @@
 
        foreach (shared_ptr<MixDevice> md, m_mixDevices )
        {
-         bool debugMe = (md->id() == "PCM:0" );
+         //bool debugMe = (md->id() == "PCM:0" );
+         bool debugMe = false;
          if (debugMe) kDebug() << "Old PCM:0 playback state" << md->isMuted()
            << ", vol=" << 
md->playbackVolume().getAvgVolumePercent(Volume::MALL);
            
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kmix-4.10.90/backends/mixer_mpris2.cpp 
new/kmix-4.10.95/backends/mixer_mpris2.cpp
--- old/kmix-4.10.90/backends/mixer_mpris2.cpp  2013-06-10 20:54:14.000000000 
+0200
+++ new/kmix-4.10.95/backends/mixer_mpris2.cpp  2013-07-10 01:19:39.000000000 
+0200
@@ -52,6 +52,8 @@
        _id = "Playback Streams";
        _mixer->setDynamic();
        addAllRunningPlayersAndInitHotplug();
+
+       //connect(this, SIGNAL(controlChanged()), SLOT(readSetFromHW()), 
Qt::QueuedConnection);
        return 0;
 }
 
@@ -154,7 +156,12 @@
 }
 
 
-
+/**
+ * A slot that processes data from the MPrisAppdata that emit the signal.
+ *
+ * @param The  emitting MPrisAppdata
+ * @param newVolume The new volume
+ */
 void Mixer_MPRIS2::volumeChanged(MPrisAppdata* mad, double newVolume)
 {
        shared_ptr<MixDevice> md = m_mixDevices.get(mad->id);
@@ -175,11 +182,14 @@
        Volume& vol = md->playbackVolume();
        vol.setVolume( Volume::LEFT, volumePercentage);
        md->setMuted(volumePercentage == 0);
-       emit controlChanged();
+//     emit controlChanged();
+       ControlManager::instance().announce(_mixer->id(), 
ControlChangeType::Volume, QString("MixerMPRIS2.volumeChanged"));
+
        kDebug() << "changed i2" << volumePercentage;
        //  md->playbackVolume().setVolume(vol);
 }
 
+// The following is an example message for an incoming volume change:
 /*
 signal sender=:1.125 -> dest=(null destination) serial=503 
path=/org/mpris/MediaPlayer2; interface=org.freedesktop.DBus.Properties; 
member=PropertiesChanged
    string "org.mpris.MediaPlayer2.Player"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kmix-4.10.90/backends/mixer_mpris2.h 
new/kmix-4.10.95/backends/mixer_mpris2.h
--- old/kmix-4.10.90/backends/mixer_mpris2.h    2013-06-10 20:54:14.000000000 
+0200
+++ new/kmix-4.10.95/backends/mixer_mpris2.h    2013-07-10 01:19:39.000000000 
+0200
@@ -67,10 +67,7 @@
   virtual void setEnumIdHW(const QString& id, unsigned int);
   virtual unsigned int enumIdHW(const QString& id);
   virtual bool moveStream( const QString& id, const QString& destId );
-#ifdef __GNUC__
-#warning MPRIS2 currently uses Polling mode. Method needsPolling() must be 
overwritten again. Polling needs too much CPU.
-#endif
-  //virtual bool needsPolling() { return false; } // TODO cesken
+  virtual bool needsPolling() { return false; }
 
   virtual int mediaPlay(QString id);
   virtual int mediaPrev(QString id);
@@ -80,6 +77,13 @@
 public slots:
     void volumeChanged(MPrisAppdata *mad, double);
     void newMediaPlayer(QString name, QString oldOwner, QString newOwner);
+//private slots:
+       /**
+        * This transports any changes to the world outside this bakcend. It is 
connected to the slot readSetFromHW()
+        * from the base class.
+        */
+//     void controlChanged();
+
 private:
     int addAllRunningPlayersAndInitHotplug();
     void notifyToReconfigureControls();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kmix-4.10.90/backends/mixer_pulse.cpp 
new/kmix-4.10.95/backends/mixer_pulse.cpp
--- old/kmix-4.10.90/backends/mixer_pulse.cpp   2013-05-28 21:31:29.000000000 
+0200
+++ new/kmix-4.10.95/backends/mixer_pulse.cpp   2013-07-10 01:19:39.000000000 
+0200
@@ -769,9 +769,59 @@
 
 void Mixer_PULSE::emitControlsReconfigured()
 {
+       //      emit controlsReconfigured(_mixer->id());
+    // Do not emit directly to ensure all connected slots are executed
+    // in their own event loop.
+
+       /*
+        * Bug 309464:
+        *
+        * Comment by cesken: I am not really sure what the comment above means.
+        *  1) IIRC coling told me "otherwise KMix crashes".
+        *  2) There are also bug reports that heavily indicate the crash when 
operation the "move stream" from a popup
+        *     menu.
+        *  3) I don't know what the "executed in their own event loop" means. 
Are we in a "wrong" thread here (PA),
+        *     which is not suitable for GUI code?!?
+        *
+        * Work note: Ouch. it means PA thread makes direct calls via 
announce(), and do even GUI code. OUCH. Redo this comments!
+        *
+        *  Conclusions:
+        *  a) It seems there seems to be some object deletion hazard with a 
QMenu (the one for "move stream")
+        *  b)  I do not see why executing it Queued is better, because you can 
never know when it is actually being
+        *      executed: it could be "right now". It looks like Qt currently 
executes it after the QMenu hazard has
+        *      resolved itselves miracously.
+        *  c) I am definitely strongly opposed on this "execute later" 
approach. It is pure gambling IMO and might be
+        *     broken any time (from DEBUG to RELEASE build, or by a new Qt or 
KDE version).
+        *
+        *     TODO Somebody with more Qt and PA internal insight might help to 
clear up things here.
+        *
+        *  Temporary solution: Do the QueuedConnection until we really know 
hat is going on. But the called code
+        *                      pulseControlsReconfigured() will then do the 
standard announce() so that every part of
+        *                      KMix automatically gets updated.
+        *
+        */
+    QMetaObject::invokeMethod(this,
+                              "pulseControlsReconfigured",
+                              Qt::QueuedConnection);
+
+//    QMetaObject::invokeMethod(this,
+//                              "pulseControlsReconfigured",
+//                              Qt::QueuedConnection,
+//                              Q_ARG(QString, _mixer->id()));
+}
+
+void Mixer_PULSE::pulseControlsReconfigured()
+{
+       kDebug() << "Reconfigure " << _mixer->id();
     ControlManager::instance().announce(_mixer->id(), 
ControlChangeType::ControlList, getDriverName());
 }
 
+void Mixer_PULSE::pulseControlsReconfigured(QString mixerId)
+{
+       kDebug() << "Reconfigure " << mixerId;
+    ControlManager::instance().announce(mixerId, 
ControlChangeType::ControlList, getDriverName());
+}
+
 void Mixer_PULSE::addWidget(int index, bool isAppStream)
 {
     devmap* map = get_widget_map(m_devnum, index);
@@ -1366,3 +1416,4 @@
         return "PulseAudio";
 }
 
+#include "mixer_pulse.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kmix-4.10.90/backends/mixer_pulse.h 
new/kmix-4.10.95/backends/mixer_pulse.h
--- old/kmix-4.10.90/backends/mixer_pulse.h     2013-05-28 21:31:29.000000000 
+0200
+++ new/kmix-4.10.95/backends/mixer_pulse.h     2013-07-10 01:19:39.000000000 
+0200
@@ -45,6 +45,8 @@
 
 class Mixer_PULSE : public Mixer_Backend
 {
+    Q_OBJECT
+
     public:
         Mixer_PULSE(Mixer *mixer, int devnum);
         virtual ~Mixer_PULSE();
@@ -77,6 +79,11 @@
         void addDevice(devinfo& dev, bool = false);
         bool connectToDaemon();
         void emitControlsReconfigured();
+
+   protected slots:
+        void pulseControlsReconfigured(QString mixerId);
+        void pulseControlsReconfigured();
+
 public:
         void reinit();
 
Files old/kmix-4.10.90/doc/index.cache.bz2 and 
new/kmix-4.10.95/doc/index.cache.bz2 differ

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to