diff options
Diffstat (limited to 'multimedia/kdemultimedia4')
-rw-r--r-- | multimedia/kdemultimedia4/Makefile | 12 | ||||
-rw-r--r-- | multimedia/kdemultimedia4/distinfo | 4 | ||||
-rw-r--r-- | multimedia/kdemultimedia4/files/patch-svn1250843 | 364 | ||||
-rw-r--r-- | multimedia/kdemultimedia4/pkg-plist | 8 |
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 |