[arch-commits] Commit in mpd/trunk (2 files)

Gaetan Bisson bisson at nymeria.archlinux.org
Fri Nov 8 01:59:09 UTC 2013


    Date: Friday, November 8, 2013 @ 02:59:09
  Author: bisson
Revision: 199062

fix "stuck at next playlist entry" issue

Added:
  mpd/trunk/77c63511d8809f7785328138e7e3a50303302730.patch
Modified:
  mpd/trunk/PKGBUILD

------------------------------------------------+
 77c63511d8809f7785328138e7e3a50303302730.patch |   53 +++++++++++++++++++++++
 PKGBUILD                                       |    5 +-
 2 files changed, 57 insertions(+), 1 deletion(-)

Added: 77c63511d8809f7785328138e7e3a50303302730.patch
===================================================================
--- 77c63511d8809f7785328138e7e3a50303302730.patch	                        (rev 0)
+++ 77c63511d8809f7785328138e7e3a50303302730.patch	2013-11-08 01:59:09 UTC (rev 199062)
@@ -0,0 +1,53 @@
+From 77c63511d8809f7785328138e7e3a50303302730 Mon Sep 17 00:00:00 2001
+From: Max Kellermann <max at duempel.org>
+Date: Wed, 06 Nov 2013 22:30:29 +0000
+Subject: PlayerThread: reduce the number of DecoderThread wakeups
+
+After the number of decoded chunks has fallen below the threshold, the
+PlayerThread woke up the DecoderThread over and over.  This commit
+adds a boolean flag that avoids these duplicate wakeups, and thus
+reduces the number of system calls.
+---
+diff --git a/src/PlayerThread.cxx b/src/PlayerThread.cxx
+index e2e3ee3..cb3d6a9 100644
+--- a/src/PlayerThread.cxx
++++ b/src/PlayerThread.cxx
+@@ -69,6 +69,12 @@ class Player {
+ 	bool decoder_starting;
+ 
+ 	/**
++	 * Did we wake up the DecoderThread recently?  This avoids
++	 * duplicate wakeup calls.
++	 */
++	bool decoder_woken;
++
++	/**
+ 	 * is the player paused?
+ 	 */
+ 	bool paused;
+@@ -133,6 +139,7 @@ public:
+ 		:pc(_pc), dc(_dc), buffer(_buffer),
+ 		 buffering(true),
+ 		 decoder_starting(false),
++		 decoder_woken(false),
+ 		 paused(false),
+ 		 queued(true),
+ 		 output_open(false),
+@@ -861,8 +868,13 @@ Player::PlayNextChunk()
+ 	pc.Lock();
+ 	if (!dc.IsIdle() &&
+ 	    dc.pipe->GetSize() <= (pc.buffered_before_play +
+-				   buffer.GetSize() * 3) / 4)
+-		dc.Signal();
++				   buffer.GetSize() * 3) / 4) {
++		if (!decoder_woken) {
++			decoder_woken = true;
++			dc.Signal();
++		}
++	} else
++		decoder_woken = false;
+ 	pc.Unlock();
+ 
+ 	return true;
+--
+cgit v0.9.1-27-gd5a4

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2013-11-08 01:17:53 UTC (rev 199061)
+++ PKGBUILD	2013-11-08 01:59:09 UTC (rev 199062)
@@ -7,7 +7,7 @@
 
 pkgname=mpd
 pkgver=0.18.2
-pkgrel=1
+pkgrel=2
 pkgdesc='Flexible, powerful, server-side application for playing music'
 url='http://www.musicpd.org/'
 license=('GPL')
@@ -16,9 +16,11 @@
          'sqlite' 'jack' 'libmms' 'wavpack' 'avahi' 'libid3tag' 'yajl')
 makedepends=('doxygen')
 source=("http://www.musicpd.org/download/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz"{,.sig}
+        '77c63511d8809f7785328138e7e3a50303302730.patch'
         'tmpfiles.d'
         'conf')
 sha1sums=('116f4cf0147320abd5253435c4be134a1d5eace8' 'SKIP'
+          '361122fa0267fbfc1a37cc953f9aadfa55fa0193'
           'f4d5922abb69abb739542d8e93f4dfd748acdad7'
           '67c145c046cddd885630d72ce8ebe71f8321ff3b')
 
@@ -27,6 +29,7 @@
 
 prepare() {
 	cd "${srcdir}/${pkgname}-${pkgver}"
+	patch -R -p1 -i ../77c63511d8809f7785328138e7e3a50303302730.patch # http://bugs.musicpd.org/view.php?id=3860
 	sed 's:cdio/paranoia.h:cdio/paranoia/paranoia.h:g' -i src/input/CdioParanoiaInputPlugin.cxx
 }
 




More information about the arch-commits mailing list