Bug 134418 - REQUEST: removing mplayer hardcoded entries from kmplayer
Summary: REQUEST: removing mplayer hardcoded entries from kmplayer
Status: RESOLVED FIXED
Alias: None
Product: kmplayer
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Gentoo Packages Linux
: NOR normal
Target Milestone: ---
Assignee: Koos Vriezen
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-09-20 23:01 UTC by Deathwing00
Modified: 2006-09-30 11:09 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Deathwing00 2006-09-20 23:01:54 UTC
Version:           0.9.2, 0.9.3 (using KDE KDE 3.5.4)
Installed from:    Gentoo Packages
Compiler:          default-linux/x86/2006.1, gcc-4.1.1, glibc-2.4-r3, 2.6.17-gentoo-r7 i686 
OS:                Linux

This probably is happening since the beginning of kmplayer. There are quite a lot of entries to mplayer that are hardcoded into the source code. We are forced to create a large patch each time you release a new version of kmplayer in order to fix that. We would like to ask you to fix mplayer from being used hardcoded inside kmplayer.

The exact case is that on amd64 systems mplayer-bin is used as binary instead of mplayer. Fixing this will also improve the readability and maintenance of your source code. Hardcoded strings are rarely a nice solution.

Below you can see the affected lines for version 0.9.3 (final):



diff -U 4 -H -b -w -B -E -d -i -r kmplayer-0.9.3-orig/src/kmplayerapp.cpp kmplayer-0.9.3/src/kmplayerapp.cpp
--- kmplayer-0.9.3-orig/src/kmplayerapp.cpp     2006-09-20 21:51:19.000000000 +0200
+++ kmplayer-0.9.3/src/kmplayerapp.cpp  2006-09-20 21:57:12.000000000 +0200
@@ -425,9 +425,9 @@
     connect (m_broadcastconfig, SIGNAL (broadcastStopped()), this, SLOT (broadcastStopped()));
     initStatusBar();
     m_player->init (actionCollection ());
     m_player->players () ["xvideo"] = new XVideo(m_player,m_player->settings());
-    m_player->setProcess ("mplayer");
+    m_player->setProcess (MPLAYER_BIN);
     m_player->setRecorder ("mencoder");
     ListsSource * lstsrc = new ListsSource (m_player);
     m_player->sources () ["listssource"] = lstsrc;
     m_player->sources () ["dvdsource"] = new ::KMPlayerDVDSource(this, m_dvdmenu);
@@ -1688,9 +1688,9 @@
         return true;
     if (m_identified)
         return false;
     //kdDebug () << "scanning " << cstr << endl;
-    QRegExp * patterns = static_cast <KMPlayer::MPlayer *> (m_player->players () ["mplayer"])->configPage ()->m_patterns;
+    QRegExp * patterns = static_cast <KMPlayer::MPlayer *> (m_player->players () [MPLAYER_BIN])->configPage ()->m_patterns;
     QRegExp & langRegExp = patterns[KMPlayer::MPlayerPreferencesPage::pat_dvdlang];
     QRegExp & subtitleRegExp = patterns[KMPlayer::MPlayerPreferencesPage::pat_dvdsub];
     QRegExp & titleRegExp = patterns[KMPlayer::MPlayerPreferencesPage::pat_dvdtitle];
     QRegExp & chapterRegExp = patterns[KMPlayer::MPlayerPreferencesPage::pat_dvdchapter];
@@ -1991,9 +1991,9 @@
         return true;
     if (m_identified)
         return false;
     //kdDebug () << "scanning " << cstr << endl;
-    QRegExp * patterns = static_cast<KMPlayer::MPlayer *> (m_player->players () ["mplayer"])->configPage ()->m_patterns;
+    QRegExp * patterns = static_cast<KMPlayer::MPlayer *> (m_player->players () [MPLAYER_BIN])->configPage ()->m_patterns;
     QRegExp & trackRegExp = patterns [KMPlayer::MPlayerPreferencesPage::pat_vcdtrack];
     if (trackRegExp.search (str) > -1) {
         m_document->state = KMPlayer::Element::state_deferred;
         m_document->appendChild (new KMPlayer::GenericMrl (m_document, QString ("vcd://") + trackRegExp.cap (1), i18n ("Track ") + trackRegExp.cap (1)));
@@ -2089,9 +2089,9 @@
         return true;
     if (m_identified)
         return false;
     //kdDebug () << "scanning " << str << endl;
-    QRegExp * patterns = static_cast<KMPlayer::MPlayer *> (m_player->players () ["mplayer"])->configPage ()->m_patterns;
+    QRegExp * patterns = static_cast<KMPlayer::MPlayer *> (m_player->players () [MPLAYER_BIN])->configPage ()->m_patterns;
     QRegExp & trackRegExp = patterns [KMPlayer::MPlayerPreferencesPage::pat_cdromtracks];
     if (trackRegExp.search (str) > -1) {
         //if (m_document->state != KMPlayer::Element::state_deferred)
         //    m_document->defer ();
diff -U 4 -H -b -w -B -E -d -i -r kmplayer-0.9.3-orig/src/kmplayerconfig.cpp kmplayer-0.9.3/src/kmplayerconfig.cpp
--- kmplayer-0.9.3-orig/src/kmplayerconfig.cpp  2006-09-20 21:51:19.000000000 +0200
+++ kmplayer-0.9.3/src/kmplayerconfig.cpp       2006-09-20 21:57:54.000000000 +0200
@@ -127,9 +127,9 @@
     // configdialog should be destroyed when the view is destroyed
     //delete configdialog;
 }

-KDE_EXPORT const char * strMPlayerGroup = "MPlayer";
+KDE_EXPORT const char * strMPlayerGroup = MPLAYER_BIN;
 const char * strGeneralGroup = "General Options";
 static const char * strKeepSizeRatio = "Keep Size Ratio";
 static const char * strRememberSize = "Remember Size";
 static const char * strAutoResize = "Auto Resize";
diff -U 4 -H -b -w -B -E -d -i -r kmplayer-0.9.3-orig/src/kmplayer_def.h kmplayer-0.9.3/src/kmplayer_def.h
--- kmplayer-0.9.3-orig/src/kmplayer_def.h      2006-09-20 21:51:19.000000000 +0200
+++ kmplayer-0.9.3/src/kmplayer_def.h   2006-09-20 21:58:47.000000000 +0200
@@ -55,6 +55,6 @@
   #define KMPLAYER_EXPORT
   #define KMPLAYER_NO_EXPORT
 #endif

-
+#define MPLAYER_BIN "mplayer-bin"
 #endif //_KMPLAYER_DEF_H_
diff -U 4 -H -b -w -B -E -d -i -r kmplayer-0.9.3-orig/src/kmplayerpartbase.cpp kmplayer-0.9.3/src/kmplayerpartbase.cpp
--- kmplayer-0.9.3-orig/src/kmplayerpartbase.cpp        2006-09-20 21:51:19.000000000 +0200
+++ kmplayer-0.9.3/src/kmplayerpartbase.cpp     2006-09-20 21:59:49.000000000 +0200
@@ -121,9 +121,9 @@
    m_auto_controls (true),
    m_bPosSliderPressed (false),
    m_in_update_tree (false)
 {
-    m_players ["mplayer"] = new MPlayer (this, m_settings);
+    m_players [MPLAYER_BIN] = new MPlayer (this, m_settings);
     Xine * xine = new Xine (this, m_settings);
     m_players ["xine"] = xine;
     m_players ["gstreamer"] = new GStreamer (this, m_settings);
     m_recorders ["mencoder"] = new MEncoder (this, m_settings);
diff -U 4 -H -b -w -B -E -d -i -r kmplayer-0.9.3-orig/src/kmplayer_part.cpp kmplayer-0.9.3/src/kmplayer_part.cpp
--- kmplayer-0.9.3-orig/src/kmplayer_part.cpp   2006-09-20 21:51:19.000000000 +0200
+++ kmplayer-0.9.3/src/kmplayer_part.cpp        2006-09-20 22:00:13.000000000 +0200
@@ -317,9 +317,9 @@
     }
     bool group_member = !m_group.isEmpty () && m_group != QString::fromLatin1("_unique") && m_features != Feat_Unknown;
     if (!group_member || m_features & Feat_Viewer) {
         // not part of a group or we're the viewer
-        setProcess ("mplayer");
+        setProcess (MPLAYER_BIN);
         setRecorder ("mencoder");
         connectPanel (m_view->controlPanel ());
         if (m_features & Feat_StatusBar) {
             last_time_left = 0;
@@ -337,9 +337,9 @@
                 i = std::find_if (++i, e, pred)) {
             // found viewer and control part, exchange players now
             KMPlayerPart * vp = (m_features & Feat_Viewer) ? this : *i;
             KMPlayerPart * cp = (m_features & Feat_Viewer) ? *i : this;
-            setProcess ("mplayer");
+            setProcess (MPLAYER_BIN);
             cp->connectToPart (vp);
         }
     } else
         m_group.truncate (0);
@@ -1074,9 +1074,9 @@
         QTimer::singleShot (0, this, SLOT (finished ()));
         return;
     }
     init ();
-    m_player->setProcess ("mplayer");
+    m_player->setProcess (MPLAYER_BIN);
     if (m_player->process ()->grabPicture (m_url, 0))
         connect (m_player->process (), SIGNAL (grabReady (const QString &)),
                  this, SLOT (grabReady (const QString &)));
     else {
diff -U 4 -H -b -w -B -E -d -i -r kmplayer-0.9.3-orig/src/kmplayerprocess.cpp kmplayer-0.9.3/src/kmplayerprocess.cpp
--- kmplayer-0.9.3-orig/src/kmplayerprocess.cpp 2006-09-20 21:51:19.000000000 +0200
+++ kmplayer-0.9.3/src/kmplayerprocess.cpp      2006-09-20 22:02:59.000000000 +0200
@@ -349,9 +349,9 @@
     "dvdsource", "exitsource", "hrefsource", "introsource", "pipesource", "tvscanner", "tvsource", "urlsource", "vcdsource", "audiocdsource", 0L
 };

 KDE_NO_CDTOR_EXPORT MPlayer::MPlayer (QObject * parent, Settings * settings)
- : MPlayerBase (parent, settings, "mplayer"),
+ : MPlayerBase (parent, settings, MPLAYER_BIN),
    m_widget (0L),
    m_configpage (new MPlayerPreferencesPage (this)),
    aid (-1), sid (-1),
    m_needs_restarted (false) {
@@ -520,9 +520,9 @@
         *m_process << pipe << " | ";
     }
     QString exe = m_configpage->mplayer_path;
     if (exe.isEmpty ())
-        exe = "mplayer";
+        exe = MPLAYER_BIN;
     fprintf (stderr, "%s -wid %lu ", exe.ascii(), (unsigned long) widget ());
     *m_process << exe << " -wid " << QString::number (widget ());

     if (m_use_slave) {
@@ -622,9 +622,9 @@
     QString outdir = locateLocal ("data", "kmplayer/");
     m_grabfile = outdir + QString ("00000001.jpg");
     unlink (m_grabfile.ascii ());
     QString myurl (url.isLocalFile () ? getPath (url) : url.url ());
-    QString args ("mplayer ");
+    QString args ("mplayer-bin ");
     if (m_settings->mplayerpost090)
         args += "-vo jpeg:outdir=";
     else
         args += "-vo jpeg -jpeg outdir=";
@@ -921,9 +921,9 @@
     for (int i = 0; i < int (pat_last); i++)
         m_patterns[i].setPattern (config->readEntry
                 (_mplayer_patterns[i].name, _mplayer_patterns[i].pattern));
     config->setGroup (strMPlayerGroup);
-    mplayer_path = config->readEntry (strMPlayerPath, "mplayer");
+    mplayer_path = config->readEntry (strMPlayerPath, MPLAYER_BIN);
     additionalarguments = config->readEntry (strAddArgs);
     cachesize = config->readNumEntry (strCacheSize, 384);
     alwaysbuildindex = config->readBoolEntry (strAlwaysBuildIndex, false);
 }
@@ -952,9 +952,9 @@

 KDE_NO_EXPORT void MPlayerPreferencesPage::prefLocation (QString & item, QString & icon, QString & tab) {
     item = i18n ("General Options");
     icon = QString ("kmplayer");
-    tab = i18n ("MPlayer");
+    tab = i18n (MPLAYER_BIN);
 }

 KDE_NO_EXPORT QFrame * MPlayerPreferencesPage::prefPage (QWidget * parent) {
     m_configframe = new MPlayerPreferencesFrame (parent);
@@ -1052,9 +1052,9 @@
     QString args;
     m_use_slave = m_source->pipeCmd ().isEmpty ();
     if (!m_use_slave)
         args = m_source->pipeCmd () + QString (" | ");
-    args += QString ("mplayer ") + m_source->recordCmd ();
+    args += QString ("mplayer-bin ") + m_source->recordCmd ();
     // FIXME if (m_player->source () == source) // ugly
     //    m_player->stop ();
     QString myurl = url.isLocalFile () ? getPath (url) : url.url ();
     bool post090 = m_settings->mplayerpost090;
diff -U 4 -H -b -w -B -E -d -i -r kmplayer-0.9.3-orig/src/kmplayertvsource.cpp kmplayer-0.9.3/src/kmplayertvsource.cpp
--- kmplayer-0.9.3-orig/src/kmplayertvsource.cpp        2006-09-20 21:51:19.000000000 +0200
+++ kmplayer-0.9.3/src/kmplayertvsource.cpp     2006-09-20 22:08:59.000000000 +0200
@@ -697,9 +697,9 @@
     QString args;
     args.sprintf ("tv:// -tv driver=%s:device=%s -identify -frames 0", m_driver.ascii (), m_tvdevice->src.ascii ());
     m_tvsource->player ()->stop ();
     m_tvsource->player ()->process ()->initProcess (m_player->settings ()->defaultView ()->viewer ());
-    KMPlayer::Process *proc = m_tvsource->player ()->players () ["mplayer"];
+    KMPlayer::Process *proc = m_tvsource->player ()->players () [MPLAYER_BIN];
     proc->setSource (this);
     if (!static_cast <KMPlayer::MPlayer *> (proc)->run (args.ascii()))
         deactivate ();
 }


Thank you for your time.
Comment 1 Chris White 2006-09-20 23:08:45 UTC
*** This bug has been confirmed by popular vote. ***
Comment 2 Koos Vriezen 2006-09-20 23:18:46 UTC
Have you tried the MPlayer config tab in kmplayer's configure dialog? As of this 0.9.3 release, you should be able to set MPlayer's binary name (and even it's complete path)
Comment 3 Koos Vriezen 2006-09-30 11:09:31 UTC
No further comments, so considered fixed.