aboutsummaryrefslogtreecommitdiff
path: root/multimedia/kdemultimedia4
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/kdemultimedia4')
-rw-r--r--multimedia/kdemultimedia4/Makefile12
-rw-r--r--multimedia/kdemultimedia4/distinfo4
-rw-r--r--multimedia/kdemultimedia4/files/patch-svn1250843364
-rw-r--r--multimedia/kdemultimedia4/pkg-plist8
4 files changed, 379 insertions, 9 deletions
diff --git a/multimedia/kdemultimedia4/Makefile b/multimedia/kdemultimedia4/Makefile
index 3c1631d26e37..499bf8b194f7 100644
--- a/multimedia/kdemultimedia4/Makefile
+++ b/multimedia/kdemultimedia4/Makefile
@@ -23,20 +23,19 @@ LIB_DEPENDS= FLAC.10:${PORTSDIR}/audio/flac \
tunepimp.5:${PORTSDIR}/audio/libtunepimp \
xine.1:${PORTSDIR}/multimedia/libxine \
swscale.1:${PORTSDIR}/multimedia/ffmpeg
-RUN_DEPENDS= oggenc:${PORTSDIR}/audio/vorbis-tools
+
.if !defined(PACKAGE_BUILDING)
RUN_DEPENDS+= lame:${PORTSDIR}/audio/lame
.endif
LATEST_LINK= ${PORTNAME}4
-USE_BZIP2= yes
-USE_KDE4= kdelibs kdeprefix kdehier automoc4
+USE_KDE4= automoc4 kdehier kdelibs kdeprefix
KDE4_BUILDENV= yes
USE_QT_VER= 4
-QT_COMPONENTS= corelib opengl dbus qt3support designer network svg qtestlib \
- qmake_build moc_build rcc_build uic_build
-USE_OPENLDAP= yes
+QT_COMPONENTS= dbus qt3support svg xml \
+ moc_build qmake_build rcc_build uic_build
+USE_BZIP2= yes
MAKE_JOBS_SAFE= yes
OPTIONS= ALSA "Build with ALSA compatibility library" off \
@@ -53,6 +52,7 @@ LIB_DEPENDS+= asound.2:${PORTSDIR}/audio/alsa-lib
.if defined(WITH_PULSEAUDIO)
CMAKE_ARGS+= -DWITH_PulseAudio:BOOL=ON
LIB_DEPENDS+= pulse.0:${PORTSDIR}/audio/pulseaudio
+USE_GNOME= glib20
.else
CMAKE_ARGS+= -DWITH_PulseAudio:BOOL=OFF
.endif
diff --git a/multimedia/kdemultimedia4/distinfo b/multimedia/kdemultimedia4/distinfo
index a071c5e42efc..d494b5cb6fdb 100644
--- a/multimedia/kdemultimedia4/distinfo
+++ b/multimedia/kdemultimedia4/distinfo
@@ -1,2 +1,2 @@
-SHA256 (KDE/kdemultimedia-4.6.5.tar.bz2) = 7ab9afb233538e7065758b32cd13f52fee2b68306f4be3dead729f3ba93c9c58
-SIZE (KDE/kdemultimedia-4.6.5.tar.bz2) = 1611493
+SHA256 (KDE/kdemultimedia-4.7.2.tar.bz2) = a5a6e1101f4d8fc278791d63c4c91e261d60e995e67b4e8d901f2f93ba7be800
+SIZE (KDE/kdemultimedia-4.7.2.tar.bz2) = 1643403
diff --git a/multimedia/kdemultimedia4/files/patch-svn1250843 b/multimedia/kdemultimedia4/files/patch-svn1250843
new file mode 100644
index 000000000000..25b83e8b2d02
--- /dev/null
+++ b/multimedia/kdemultimedia4/files/patch-svn1250843
@@ -0,0 +1,364 @@
+--- ./kmix/backends/mixer_backend.cpp.orig 2011-08-30 10:51:10.757627695 +0200
++++ ./kmix/backends/mixer_backend.cpp 2011-08-30 11:02:19.000000000 +0200
+@@ -25,50 +25,54 @@
+ #include "core/mixer.h"
+ #include <QTimer>
+
++#define POLL_OSS_RATE_SLOW 1500
++#define POLL_OSS_RATE_FAST 50
++
++
+ #include "mixer_backend_i18n.cpp"
+
+ Mixer_Backend::Mixer_Backend(Mixer *mixer, int device) :
+- m_devnum (device) , m_isOpen(false), m_recommendedMaster(0), _mixer(mixer), _pollingTimer(0)
++m_devnum (device) , m_isOpen(false), m_recommendedMaster(0), _mixer(mixer), _pollingTimer(0)
+
+ {
+- // In all cases create a QTimer. We will use it once as a singleShot(), even if something smart
+- // like ::select() is possible (as in ALSA).
+- _pollingTimer = new QTimer(); // will be started on open() and stopped on close()
+- connect( _pollingTimer, SIGNAL(timeout()), this, SLOT(readSetFromHW()), Qt::QueuedConnection);
++ // In all cases create a QTimer. We will use it once as a singleShot(), even if something smart
++ // like ::select() is possible (as in ALSA).
++ _pollingTimer = new QTimer(); // will be started on open() and stopped on close()
++ connect( _pollingTimer, SIGNAL(timeout()), this, SLOT(readSetFromHW()), Qt::QueuedConnection);
+ }
+
+ Mixer_Backend::~Mixer_Backend()
+ {
+- delete _pollingTimer;
+- qDeleteAll(m_mixDevices);
+- m_mixDevices.clear();
++ delete _pollingTimer;
++ qDeleteAll(m_mixDevices);
++ m_mixDevices.clear();
+ }
+
+
+ bool Mixer_Backend::openIfValid() {
+- bool valid = false;
+- int ret = open();
+- if ( ret == 0 && (m_mixDevices.count() > 0 || _mixer->isDynamic())) {
+- valid = true;
+- // A better ID is now calculated in mixertoolbox.cpp, and set via setID(),
+- // but we want a somehow usable fallback just in case.
+-
+- if ( needsPolling() ) {
+- _pollingTimer->start(50);
+- }
+- else {
+- // The initial state must be read manually
+- QTimer::singleShot( 50, this, SLOT( readSetFromHW() ) );
+- }
+- } // cold be opened
+- else {
+- close();
+- }
+- return valid;
++ bool valid = false;
++ int ret = open();
++ if ( ret == 0 && (m_mixDevices.count() > 0 || _mixer->isDynamic())) {
++ valid = true;
++ // A better ID is now calculated in mixertoolbox.cpp, and set via setID(),
++ // but we want a somehow usable fallback just in case.
++
++ if ( needsPolling() ) {
++ _pollingTimer->start(POLL_OSS_RATE_FAST);
++ }
++ else {
++ // The initial state must be read manually
++ QTimer::singleShot( POLL_OSS_RATE_FAST, this, SLOT(readSetFromHW()) );
++ }
++ } // cold be opened
++ else {
++ close();
++ }
++ return valid;
+ }
+
+ bool Mixer_Backend::isOpen() {
+- return m_isOpen;
++ return m_isOpen;
+ }
+
+ /**
+@@ -77,7 +81,7 @@
+ * @return true, if there are changes. Otherwise false is returned.
+ */
+ bool Mixer_Backend::prepareUpdateFromHW() {
+- return true;
++ return true;
+ }
+
+
+@@ -90,47 +94,81 @@
+ * 2) When reconstructing any MixerWidget (e.g. DockIcon after applying preferences)
+ */
+ void Mixer_Backend::readSetFromHWforceUpdate() const {
+- _readSetFromHWforceUpdate = true;
++ _readSetFromHWforceUpdate = true;
+ }
+
+
+ /**
+ You can call this to retrieve the freshest information from the mixer HW.
+ This method is also called regulary by the mixer timer.
+-*/
++ */
+ void Mixer_Backend::readSetFromHW()
+ {
+- bool updated = prepareUpdateFromHW();
+- if ( (! updated) && (! _readSetFromHWforceUpdate) ) {
+- // Some drivers (ALSA) are smart. We don't need to run the following
+- // time-consuming update loop if there was no change
+- kDebug(67100) << "Mixer::readSetFromHW(): smart-update-tick";
+- return;
+- }
+- _readSetFromHWforceUpdate = false;
++ bool updated = prepareUpdateFromHW();
++ if ( (! updated) && (! _readSetFromHWforceUpdate) ) {
++ // Some drivers (ALSA) are smart. We don't need to run the following
++ // time-consuming update loop if there was no change
++ kDebug(67100) << "Mixer::readSetFromHW(): smart-update-tick";
++ return;
++ }
+
+- int ret = Mixer::OK;
++ //kDebug() << "---tick---" << QTime::currentTime();
++ _readSetFromHWforceUpdate = false;
+
+- int mdCount = m_mixDevices.count();
+- for(int i=0; i<mdCount ; ++i )
+- {
+- MixDevice *md = m_mixDevices[i];
+- ret = readVolumeFromHW( md->id(), md );
+- if (md->isEnum() ) {
+- /*
+- * This could be reworked:
+- * Plan: Read everything (incuding enum's) in readVolumeFromHW().
+- * readVolumeFromHW() should then be renamed to readHW().
+- */
+- md->setEnumId( enumIdHW(md->id()) );
+- }
+- }
+-
+- if ( ret == Mixer::OK )
++ int ret = Mixer::OK_UNCHANGED;
++
++ int mdCount = m_mixDevices.count();
++ for(int i=0; i<mdCount ; ++i )
++ {
++ MixDevice *md = m_mixDevices[i];
++ int retLoop = readVolumeFromHW( md->id(), md );
++ if (md->isEnum() ) {
++ /*
++ * This could be reworked:
++ * Plan: Read everything (incuding enum's) in readVolumeFromHW().
++ * readVolumeFromHW() should then be renamed to readHW().
++ */
++ md->setEnumId( enumIdHW(md->id()) );
++ }
++ if ( retLoop == Mixer::OK && ret == Mixer::OK_UNCHANGED )
++ {
++ ret = Mixer::OK;
++ }
++ else if ( retLoop != Mixer::OK && retLoop != Mixer::OK_UNCHANGED )
++ {
++ ret = retLoop;
++ }
++ }
++
++ if ( ret == Mixer::OK )
+ {
+ // We explicitely exclude Mixer::OK_UNCHANGED and Mixer::ERROR_READ
++ if ( needsPolling() )
++ {
++ _pollingTimer->setInterval(POLL_OSS_RATE_FAST);
++ QTime fastPollingEndsAt = QTime::currentTime ();
++ fastPollingEndsAt = fastPollingEndsAt.addSecs(5);
++ _fastPollingEndsAt = fastPollingEndsAt;
++ //_fastPollingEndsAt = fastPollingEndsAt;
++ kDebug() << "Start fast polling from " << QTime::currentTime() <<"until " << _fastPollingEndsAt;
++ }
+ emit controlChanged();
+ }
++
++ else
++ {
++ // This code path is entered on Mixer::OK_UNCHANGED and ERROR
++ if ( !_fastPollingEndsAt.isNull() )
++ {
++ if( _fastPollingEndsAt < QTime::currentTime () )
++ {
++ kDebug() << "End fast polling";
++ _fastPollingEndsAt = QTime();
++ if ( needsPolling() )
++ _pollingTimer->setInterval(POLL_OSS_RATE_SLOW);
++ }
++ }
++ }
+ }
+
+ /**
+@@ -139,19 +177,19 @@
+ * The users preference is NOT returned by this method - see the Mixer class for that.
+ */
+ MixDevice* Mixer_Backend::recommendedMaster() {
+- if ( m_recommendedMaster != 0 ) {
+- return m_recommendedMaster; // Backend has set a recommended master. Thats fine.
+- } // recommendation from Backend
+- else if ( m_mixDevices.count() > 0 ) {
+- return m_mixDevices.at(0); // Backend has NOT set a recommended master. Evil backend => lets help out.
+- } //first device (if exists)
+- else {
+- if ( !_mixer->isDynamic()) {
+- // This should never ever happen, as KMix doe NOT accept soundcards without controls
+- kError(67100) << "Mixer_Backend::recommendedMaster(): returning invalid master. This is a bug in KMix. Please file a bug report stating how you produced this." << endl;
+- }
+- return (MixDevice*)0;
+- }
++ if ( m_recommendedMaster != 0 ) {
++ return m_recommendedMaster; // Backend has set a recommended master. Thats fine.
++ } // recommendation from Backend
++ else if ( m_mixDevices.count() > 0 ) {
++ return m_mixDevices.at(0); // Backend has NOT set a recommended master. Evil backend => lets help out.
++ } //first device (if exists)
++ else {
++ if ( !_mixer->isDynamic()) {
++ // This should never ever happen, as KMix doe NOT accept soundcards without controls
++ kError(67100) << "Mixer_Backend::recommendedMaster(): returning invalid master. This is a bug in KMix. Please file a bug report stating how you produced this." << endl;
++ }
++ return (MixDevice*)0;
++ }
+ }
+
+ /**
+@@ -161,7 +199,7 @@
+ * code in its subclass (see Mixer_ALSA.cpp for an example).
+ */
+ void Mixer_Backend::setEnumIdHW(const QString& , unsigned int) {
+- return;
++ return;
+ }
+
+ /**
+@@ -171,55 +209,55 @@
+ * code in its subclass (see Mixer_ALSA.cpp for an example).
+ */
+ unsigned int Mixer_Backend::enumIdHW(const QString& ) {
+- return 0;
++ return 0;
+ }
+
+ /**
+ * Move the stream to a new destination
+ */
+ bool Mixer_Backend::moveStream( const QString& id, const QString& destId ) {
+- Q_UNUSED(id);
+- Q_UNUSED(destId);
+- return false;
++ Q_UNUSED(id);
++ Q_UNUSED(destId);
++ return false;
+ }
+
+ void Mixer_Backend::errormsg(int mixer_error)
+ {
+- QString l_s_errText;
+- l_s_errText = errorText(mixer_error);
+- kError() << l_s_errText << "\n";
++ QString l_s_errText;
++ l_s_errText = errorText(mixer_error);
++ kError() << l_s_errText << "\n";
+ }
+
+ int Mixer_Backend::id2num(const QString& id)
+ {
+- return id.toInt();
++ return id.toInt();
+ }
+
+ QString Mixer_Backend::errorText(int mixer_error)
+ {
+- QString l_s_errmsg;
+- switch (mixer_error)
+- {
+- case Mixer::ERR_PERM:
+- l_s_errmsg = i18n("kmix:You do not have permission to access the mixer device.\n" \
+- "Please check your operating systems manual to allow the access.");
+- break;
+- case Mixer::ERR_WRITE:
+- l_s_errmsg = i18n("kmix: Could not write to mixer.");
+- break;
+- case Mixer::ERR_READ:
+- l_s_errmsg = i18n("kmix: Could not read from mixer.");
+- break;
+- case Mixer::ERR_OPEN:
+- l_s_errmsg = i18n("kmix: Mixer cannot be found.\n" \
+- "Please check that the soundcard is installed and that\n" \
+- "the soundcard driver is loaded.\n");
+- break;
+- default:
+- l_s_errmsg = i18n("kmix: Unknown error. Please report how you produced this error.");
+- break;
+- }
+- return l_s_errmsg;
++ QString l_s_errmsg;
++ switch (mixer_error)
++ {
++ case Mixer::ERR_PERM:
++ l_s_errmsg = i18n("kmix:You do not have permission to access the mixer device.\n" \
++ "Please check your operating systems manual to allow the access.");
++ break;
++ case Mixer::ERR_WRITE:
++ l_s_errmsg = i18n("kmix: Could not write to mixer.");
++ break;
++ case Mixer::ERR_READ:
++ l_s_errmsg = i18n("kmix: Could not read from mixer.");
++ break;
++ case Mixer::ERR_OPEN:
++ l_s_errmsg = i18n("kmix: Mixer cannot be found.\n" \
++ "Please check that the soundcard is installed and that\n" \
++ "the soundcard driver is loaded.\n");
++ break;
++ default:
++ l_s_errmsg = i18n("kmix: Unknown error. Please report how you produced this error.");
++ break;
++ }
++ return l_s_errmsg;
+ }
+
+
+--- ./kmix/backends/mixer_backend.h.orig 2011-08-31 14:40:43.854565142 +0200
++++ ./kmix/backends/mixer_backend.h 2011-08-31 14:45:05.104683569 +0200
+@@ -22,6 +22,8 @@
+ #ifndef MIXER_BACKEND_H
+ #define MIXER_BACKEND_H
+
++#include <QTime>
++
+ #include "core/mixer.h"
+
+ class Mixer_Backend : public QObject
+@@ -140,6 +142,9 @@
+
+ protected slots:
+ virtual void readSetFromHW();
++
++private:
++ QTime _fastPollingEndsAt;
+ };
+
+ #endif
+--- ./kmix/core/mixer.h.orig 2011-08-30 10:43:44.917744648 +0200
++++ ./kmix/core/mixer.h 2011-08-30 10:48:24.467617529 +0200
+@@ -56,7 +56,7 @@
+ *
+ */
+ enum MixerError { OK=0, ERR_PERM=1, ERR_WRITE, ERR_READ,
+- ERR_OPEN, ERR_LASTERR, OK_UNCHANGED };
++ ERR_OPEN, OK_UNCHANGED };
+
+
+ Mixer( QString& ref_driverName, int device );
diff --git a/multimedia/kdemultimedia4/pkg-plist b/multimedia/kdemultimedia4/pkg-plist
index c4e92e58b51a..af3129e8d034 100644
--- a/multimedia/kdemultimedia4/pkg-plist
+++ b/multimedia/kdemultimedia4/pkg-plist
@@ -24,6 +24,7 @@ lib/kde4/libaudiocd_encoder_flac.so
lib/kde4/libaudiocd_encoder_lame.so
lib/kde4/libaudiocd_encoder_vorbis.so
lib/kde4/libaudiocd_encoder_wav.so
+lib/kde4/plasma_engine_mixer.so
lib/kde4/videopreview.so
lib/libaudiocdplugins.so
lib/libaudiocdplugins.so.5
@@ -47,6 +48,7 @@ share/apps/juk/jukui-rtl.rc
share/apps/juk/jukui.rc
share/apps/juk/pics/playing.png
share/apps/juk/pics/splash.png
+share/apps/juk/pics/theme.svg
share/apps/juk/pics/yahoo_credit.png
share/apps/kconf_update/audiocd.upd
share/apps/kconf_update/kcmcddb-emailsettings.upd
@@ -80,6 +82,7 @@ share/apps/kscd/skin/Chrome.svg
share/apps/kscd/skin/Obsidian-Coast.svg
share/apps/kscd/skin/Steel.svg
share/apps/kscd/skin/default.svg
+share/apps/plasma/services/mixer.operations
share/apps/solid/actions/dragonplayer-opendvd.desktop
share/apps/solid/actions/kscd-play-audiocd.desktop
share/apps/solid/actions/solid_audiocd.desktop
@@ -94,10 +97,12 @@ share/config.kcfg/kscd.kcfg
share/config.kcfg/libkcddb.kcfg
share/config.kcfg/mplayerthumbs.kcfg
share/config/dragonplayerrc
-share/dbus-1/interfaces/org.kde.KMix.xml
share/dbus-1/interfaces/org.kde.juk.collection.xml
share/dbus-1/interfaces/org.kde.juk.player.xml
share/dbus-1/interfaces/org.kde.juk.search.xml
+share/dbus-1/interfaces/org.kde.kmix.control.xml
+share/dbus-1/interfaces/org.kde.kmix.mixer.xml
+share/dbus-1/interfaces/org.kde.kmix.mixset.xml
share/dbus-1/interfaces/org.kde.kscd.cdplayer.xml
share/doc/HTML/en/dragonplayer/common
share/doc/HTML/en/dragonplayer/index.cache.bz2
@@ -170,6 +175,7 @@ share/kde4/services/ffmpegthumbs.desktop
share/kde4/services/kded/kmixd.desktop
share/kde4/services/kmixctrl_restore.desktop
share/kde4/services/libkcddb.desktop
+share/kde4/services/plasma-engine-mixer.desktop
share/kde4/services/videopreview.desktop
@dirrm share/doc/HTML/en/kmix
@dirrm share/doc/HTML/en/kioslave/audiocd