rpms/mixxx/F-18 mixxx-1.11.0-20130517bzr.patch, NONE, 1.1 .cvsignore, 1.10, 1.11 mixxx.spec, 1.14, 1.15 sources, 1.10, 1.11 mixxx-1.10.0-gcc47.patch, 1.1, NONE mixxx-1.9.2-norpath.patch, 1.1, NONE

Steven Boswell ulatekh at rpmfusion.org
Thu May 23 03:12:45 CEST 2013


Author: ulatekh

Update of /cvs/free/rpms/mixxx/F-18
In directory old02.ovh.rpmfusion.lan:/tmp/cvs-serv27928/F-18

Modified Files:
	.cvsignore mixxx.spec sources 
Added Files:
	mixxx-1.11.0-20130517bzr.patch 
Removed Files:
	mixxx-1.10.0-gcc47.patch mixxx-1.9.2-norpath.patch 
Log Message:
Updated to 1.11.0


mixxx-1.11.0-20130517bzr.patch:
 plugins/soundsourcem4a/SConscript          |    3 
 res/translations/mixxx.ts                  |  117 ++++++++++++++---------------
 res/translations/mixxx/mixxx.pot           |   18 ++--
 src/dlgprefrecord.cpp                      |    6 +
 src/library/autodjfeature.cpp              |    5 -
 src/library/baseexternallibraryfeature.cpp |    2 
 src/library/baseplaylistfeature.cpp        |    4 
 src/library/basesqltablemodel.cpp          |    2 
 src/library/dao/playlistdao.cpp            |   65 ++++++++++++----
 src/library/dao/playlistdao.h              |    6 -
 src/library/legacylibraryimporter.cpp      |    3 
 src/library/playlistfeature.cpp            |    6 -
 src/library/playlisttablemodel.cpp         |    4 
 src/library/setlogfeature.cpp              |   10 +-
 src/recording/enginerecord.cpp             |   20 +++-
 src/widget/wtracktableview.cpp             |    2 
 vamp-plugins/SConscript                    |    2 
 17 files changed, 165 insertions(+), 110 deletions(-)

--- NEW FILE mixxx-1.11.0-20130517bzr.patch ---
--- mixxx-1.11.0/plugins/soundsourcem4a/SConscript	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/plugins/soundsourcem4a/SConscript	2013-05-12 15:26:10.683778000 -0700
@@ -15,7 +15,6 @@
     "soundsourcem4a.cpp",  # MP4/M4A Support through FAAD/libmp4v2
 ]
 
-
 #Tell SCons to build the SoundSourceM4A plugin
 #=========================
 if int(build.flags['faad']):
@@ -24,7 +23,7 @@
     conf = Configure(env)
 
     have_mp4v2_h = conf.CheckHeader('mp4v2/mp4v2.h')
-    have_mp4 = (have_mp4v2_h and conf.CheckLib(['mp4v2', 'libmp4v2'])) or \
+    have_mp4 = conf.CheckLib(['mp4v2', 'libmp4v2']) or \
         conf.CheckLib('mp4')
 
     have_faad = conf.CheckLib(['faad', 'libfaad'])
--- mixxx-1.11.0/res/translations/mixxx/mixxx.pot	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/res/translations/mixxx/mixxx.pot	2013-05-10 16:13:51.948412000 -0700
@@ -2,7 +2,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-14 06:50+0200\n"
+"POT-Creation-Date: 2013-05-10 08:29+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -3204,28 +3204,28 @@
 msgstr ""
 
 #: MidiController#1
-msgid "MixxxControl not found"
+msgid "MixxxControl(s) not found"
 msgstr ""
 
 #: MidiController#2
-msgid "The MixxxControl '%1, %2' specified in the loaded mapping is invalid."
+msgid ""
+"One or more MixxxControls specified in the outputs section of the loaded "
+"preset were invalid."
 msgstr ""
 
 #: MidiController#3
-msgid ""
-"The MIDI output message 0x%1 0x%2 will not be bound.\n"
-"(Click Show Details for hints.)"
+msgid "Some LEDs or other feedback may not work correctly."
 msgstr ""
 
 #: MidiController#4
-msgid "* Check to see that the MixxxControl name is spelled correctly in the "
+msgid "* Check to see that the MixxxControl names are spelled correctly in the "
 "mapping file (.xml)\n"
 msgstr ""
 
 #: MidiController#5
 msgid ""
-"* Make sure the MixxxControl you're trying to use actually exists. Visit "
-"this wiki page for a complete list:"
+"* Make sure the MixxxControls in question actually exist. Visit this wiki "
+"page for a complete list: "
 msgstr ""
 
 #: MixxxApp#1
--- mixxx-1.11.0/res/translations/mixxx.ts	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/res/translations/mixxx.ts	2013-05-10 16:13:51.948412000 -0700
@@ -94,7 +94,7 @@
     </message>
     <message>
         <location filename="../../src/library/baseplaylistfeature.cpp" line="57"/>
-        <location filename="../../src/library/baseplaylistfeature.cpp" line="332"/>
+        <location filename="../../src/library/baseplaylistfeature.cpp" line="330"/>
         <source>Export Playlist</source>
         <translation type="unfinished"></translation>
     </message>
@@ -161,7 +161,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/baseplaylistfeature.cpp" line="334"/>
+        <location filename="../../src/library/baseplaylistfeature.cpp" line="332"/>
         <source>M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -169,107 +169,107 @@
 <context>
     <name>BaseSqlTableModel</name>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="47"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="48"/>
         <source>Played</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="49"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="50"/>
         <source>Artist</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="51"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="52"/>
         <source>Title</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="53"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="54"/>
         <source>Album</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="55"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="56"/>
         <source>Genre</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="57"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="58"/>
         <source>Composer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="59"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="60"/>
         <source>Year</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="61"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="62"/>
         <source>Type</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="63"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="64"/>
         <source>Location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="65"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="66"/>
         <source>Comment</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="67"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="68"/>
         <source>Duration</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="69"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="70"/>
         <source>Rating</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="71"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="72"/>
         <source>Bitrate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="73"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="74"/>
         <source>BPM</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="75"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="76"/>
         <source>Track #</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="77"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="78"/>
         <source>Date Added</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="79"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="80"/>
         <source>#</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="81"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="82"/>
         <source>Timestamp</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="83"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="84"/>
         <source>Key</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="85"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="86"/>
         <source>BPM Lock</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/basesqltablemodel.cpp" line="88"/>
+        <location filename="../../src/library/basesqltablemodel.cpp" line="89"/>
         <source>Preview</source>
         <translation type="unfinished"></translation>
     </message>
@@ -444,27 +444,27 @@
 <context>
     <name>ControllerEngine</name>
     <message>
-        <location filename="../../src/controllers/controllerengine.cpp" line="535"/>
+        <location filename="../../src/controllers/controllerengine.cpp" line="529"/>
         <source>Uncaught exception at line %1 in file %2: %3</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/controllers/controllerengine.cpp" line="541"/>
+        <location filename="../../src/controllers/controllerengine.cpp" line="535"/>
         <source>Uncaught exception at line %1 in passed code: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/controllers/controllerengine.cpp" line="561"/>
+        <location filename="../../src/controllers/controllerengine.cpp" line="555"/>
         <source>Controller script error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/controllers/controllerengine.cpp" line="562"/>
+        <location filename="../../src/controllers/controllerengine.cpp" line="556"/>
         <source>A control you just used is not working properly.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/controllers/controllerengine.cpp" line="563"/>
+        <location filename="../../src/controllers/controllerengine.cpp" line="557"/>
         <source>&lt;html&gt;(The script code needs to be fixed.)&lt;br&gt;For now, you can:&lt;ul&gt;&lt;li&gt;Ignore this error for this session but you may experience erratic behavior&lt;/li&gt;&lt;li&gt;Try to recover by resetting your controller&lt;/li&gt;&lt;/ul&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -568,7 +568,7 @@
     </message>
     <message>
         <location filename="../../src/library/cratefeature.cpp" line="85"/>
-        <location filename="../../src/library/cratefeature.cpp" line="562"/>
+        <location filename="../../src/library/cratefeature.cpp" line="559"/>
         <source>Crates</source>
         <translation type="unfinished"></translation>
     </message>
@@ -579,7 +579,7 @@
     </message>
     <message>
         <location filename="../../src/library/cratefeature.cpp" line="48"/>
-        <location filename="../../src/library/cratefeature.cpp" line="493"/>
+        <location filename="../../src/library/cratefeature.cpp" line="490"/>
         <source>Export Crate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -630,27 +630,27 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/cratefeature.cpp" line="495"/>
+        <location filename="../../src/library/cratefeature.cpp" line="492"/>
         <source>M3U Playlist (*.m3u);;M3U8 Playlist (*.m3u8);;PLS Playlist (*.pls);;Text CSV (*.csv);;Readable Text (*.txt)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/cratefeature.cpp" line="563"/>
+        <location filename="../../src/library/cratefeature.cpp" line="560"/>
         <source>Crates are a great way to help organize the music you want to DJ with.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/cratefeature.cpp" line="564"/>
+        <location filename="../../src/library/cratefeature.cpp" line="561"/>
         <source>Make a crate for your next gig, for your favorite electrohouse tracks, or for your most requested songs.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/cratefeature.cpp" line="565"/>
+        <location filename="../../src/library/cratefeature.cpp" line="562"/>
         <source>Crates let you organize your music however you&apos;d like!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/library/cratefeature.cpp" line="568"/>
+        <location filename="../../src/library/cratefeature.cpp" line="565"/>
         <source>Create new crate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3880,30 +3880,29 @@
 <context>
     <name>MidiController</name>
     <message>
-        <location filename="../../src/controllers/midi/midicontroller.cpp" line="116"/>
-        <source>MixxxControl not found</source>
+        <location filename="../../src/controllers/midi/midicontroller.cpp" line="139"/>
+        <source>MixxxControl(s) not found</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/controllers/midi/midicontroller.cpp" line="117"/>
-        <source>The MixxxControl &apos;%1, %2&apos; specified in the loaded mapping is invalid.</source>
+        <location filename="../../src/controllers/midi/midicontroller.cpp" line="140"/>
+        <source>One or more MixxxControls specified in the outputs section of the loaded preset were invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/controllers/midi/midicontroller.cpp" line="120"/>
-        <source>The MIDI output message 0x%1 0x%2 will not be bound.
-(Click Show Details for hints.)</source>
+        <location filename="../../src/controllers/midi/midicontroller.cpp" line="142"/>
+        <source>Some LEDs or other feedback may not work correctly.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/controllers/midi/midicontroller.cpp" line="124"/>
-        <source>* Check to see that the MixxxControl name is spelled correctly in the mapping file (.xml)
+        <location filename="../../src/controllers/midi/midicontroller.cpp" line="143"/>
+        <source>* Check to see that the MixxxControl names are spelled correctly in the mapping file (.xml)
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/controllers/midi/midicontroller.cpp" line="127"/>
-        <source>* Make sure the MixxxControl you&apos;re trying to use actually exists. Visit this wiki page for a complete list:</source>
+        <location filename="../../src/controllers/midi/midicontroller.cpp" line="146"/>
+        <source>* Make sure the MixxxControls in question actually exist. Visit this wiki page for a complete list: </source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -4298,7 +4297,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/mixxx.cpp" line="1809"/>
+        <location filename="../../src/mixxx.cpp" line="1812"/>
         <source>A sampler is currently playing. Exit Mixxx?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4410,44 +4409,44 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/mixxx.cpp" line="1621"/>
+        <location filename="../../src/mixxx.cpp" line="1624"/>
         <source>Error in skin file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/mixxx.cpp" line="1622"/>
+        <location filename="../../src/mixxx.cpp" line="1625"/>
         <source>The selected skin cannot be loaded.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/mixxx.cpp" line="1757"/>
+        <location filename="../../src/mixxx.cpp" line="1760"/>
         <source>OpenGL Direct Rendering</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/mixxx.cpp" line="1758"/>
+        <location filename="../../src/mixxx.cpp" line="1761"/>
         <source>Direct rendering is not enabled on your machine.&lt;br&gt;&lt;br&gt;This means that the waveform displays will be very&lt;br&gt;&lt;b&gt;slow and may tax your CPU heavily&lt;/b&gt;. Either update your&lt;br&gt;configuration to enable direct rendering, or disable&lt;br&gt;the waveform displays in the Mixxx preferences by selecting&lt;br&gt;&quot;Empty&quot; as the waveform display in the &apos;Interface&apos; section.&lt;br&gt;&lt;br&gt;NOTE: If you use NVIDIA hardware,&lt;br&gt;direct rendering may not be present, but you should&lt;br&gt;not experience degraded performance.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/mixxx.cpp" line="1800"/>
-        <location filename="../../src/mixxx.cpp" line="1808"/>
-        <location filename="../../src/mixxx.cpp" line="1817"/>
+        <location filename="../../src/mixxx.cpp" line="1803"/>
+        <location filename="../../src/mixxx.cpp" line="1811"/>
+        <location filename="../../src/mixxx.cpp" line="1820"/>
         <source>Confirm Exit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/mixxx.cpp" line="1801"/>
+        <location filename="../../src/mixxx.cpp" line="1804"/>
         <source>A deck is currently playing. Exit Mixxx?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/mixxx.cpp" line="1818"/>
+        <location filename="../../src/mixxx.cpp" line="1821"/>
         <source>The preferences window is still open.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/mixxx.cpp" line="1819"/>
+        <location filename="../../src/mixxx.cpp" line="1822"/>
         <source>Discard any changes and exit Mixxx?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6022,12 +6021,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/widget/wtracktableview.cpp" line="485"/>
+        <location filename="../../src/widget/wtracktableview.cpp" line="487"/>
         <source>Load to Deck %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/widget/wtracktableview.cpp" line="503"/>
+        <location filename="../../src/widget/wtracktableview.cpp" line="506"/>
         <source>Sampler %1</source>
         <translation type="unfinished"></translation>
     </message>
--- mixxx-1.11.0/src/dlgprefrecord.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/dlgprefrecord.cpp	2013-05-13 08:15:55.212095000 -0700
@@ -98,9 +98,11 @@
     else if (format == ENCODING_MP3)
         radioMp3->setChecked(true);
 #endif
-#ifdef SF_FORMAT_FLAC
     else if (format == ENCODING_AIFF)
         radioAiff->setChecked(true);
+#ifdef SF_FORMAT_FLAC
+    else if (format == ENCODING_FLAC)
+        radioFlac->setChecked(true);
 #endif
     else //Invalid, so set default and save
     {
@@ -109,6 +111,8 @@
         config->set(ConfigKey(RECORDING_PREF_KEY, "Encoding"), ConfigValue(ENCODING_WAVE));
     }
 
+    loadMetaData();
+
     //Connections
     connect(SliderQuality,    SIGNAL(valueChanged(int)), this,  SLOT(slotSliderQuality()));
     connect(SliderQuality,    SIGNAL(sliderMoved(int)), this,   SLOT(slotSliderQuality()));
--- mixxx-1.11.0/src/library/autodjfeature.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/library/autodjfeature.cpp	2013-05-12 15:26:10.683778000 -0700
@@ -88,8 +88,9 @@
             trackIds.removeAt(trackId--);
         }
     }
-    m_playlistDao.appendTracksToPlaylist(trackIds, playlistId);
-    return true;
+
+    // Return whether the tracks were appended.
+    return m_playlistDao.appendTracksToPlaylist(trackIds, playlistId);
 }
 
 bool AutoDJFeature::dragMoveAccept(QUrl url) {
--- mixxx-1.11.0/src/library/baseexternallibraryfeature.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/library/baseexternallibraryfeature.cpp	2013-05-12 15:26:10.683778000 -0700
@@ -93,6 +93,7 @@
             // Start at position 2 because position 1 was already loaded to the deck
             playlistDao.insertTrackIntoPlaylist(track->getId(), autoDJId, i+2);
         } else {
+            // TODO(XXX): Care whether the append succeeded.
             playlistDao.appendTrackToPlaylist(track->getId(), autoDJId);
         }
     }
@@ -142,6 +143,7 @@
             if (index.isValid()) {
                 qDebug() << pPlaylistModelToAdd->getTrackLocation(index);
                 TrackPointer track = pPlaylistModelToAdd->getTrack(index);
+                // TODO(XXX): Care whether the append succeeded.
                 playlistDao.appendTrackToPlaylist(track->getId(), playlistId);
             }
         }
--- mixxx-1.11.0/src/library/baseplaylistfeature.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/library/baseplaylistfeature.cpp	2013-05-12 15:26:10.683778000 -0700
@@ -188,9 +188,9 @@
     } while (!validNameGiven);
 
     int newPlaylistId = m_playlistDao.createPlaylist(name);
-    m_playlistDao.copyPlaylistTracks(oldPlaylistId, newPlaylistId);
 
-    if (newPlaylistId != -1) {
+    if (newPlaylistId != -1 &&
+        m_playlistDao.copyPlaylistTracks(oldPlaylistId, newPlaylistId)) {
         emit(showTrackModel(m_pPlaylistTableModel));
     }
 }
--- mixxx-1.11.0/src/library/basesqltablemodel.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/library/basesqltablemodel.cpp	2013-05-13 08:15:55.212095000 -0700
@@ -471,7 +471,7 @@
             } else if (column == fieldIndex(PLAYLISTTRACKSTABLE_DATETIMEADDED)) {
                 QDateTime gmtDate = value.toDateTime();
                 gmtDate.setTimeSpec(Qt::UTC);
-                value = gmtDate.toLocalTime().time();
+                value = gmtDate.toLocalTime();
             } else if (column == fieldIndex(LIBRARYTABLE_BPM_LOCK)) {
                 value = value.toBool();
             }
--- mixxx-1.11.0/src/library/dao/playlistdao.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/library/dao/playlistdao.cpp	2013-05-12 15:26:10.683778000 -0700
@@ -177,7 +177,7 @@
     return false;
 }
 
-void PlaylistDAO::appendTracksToPlaylist(QList<int> trackIds, int playlistId) {
+bool PlaylistDAO::appendTracksToPlaylist(QList<int> trackIds, int playlistId) {
     // qDebug() << "PlaylistDAO::appendTracksToPlaylist"
     //          << QThread::currentThread() << m_database.connectionName();
 
@@ -203,6 +203,7 @@
         query.bindValue(":position", insertPosition++);
         if (!query.exec()) {
             LOG_FAILED_QUERY(query);
+            return false;
         }
     }
 
@@ -215,12 +216,13 @@
         emit(trackAdded(playlistId, trackId, insertPosition++));
     }
     emit(changed(playlistId));
+    return true;
 }
 
-void PlaylistDAO::appendTrackToPlaylist(int trackId, int playlistId) {
+bool PlaylistDAO::appendTrackToPlaylist(int trackId, int playlistId) {
     QList<int> tracks;
     tracks.append(trackId);
-    appendTracksToPlaylist(tracks, playlistId);
+    return appendTracksToPlaylist(tracks, playlistId);
 }
 
 /** Find out how many playlists exist. */
@@ -523,6 +525,7 @@
     if (bTop) {
         insertTracksIntoPlaylist(ids, autoDJId, 2);
     } else {
+        // TODO(XXX): Care whether the append succeeded.
         appendTracksToPlaylist(ids, autoDJId);
     }
 }
@@ -549,23 +552,59 @@
     return previousPlaylistId;
 }
 
-void PlaylistDAO::copyPlaylistTracks(int sourcePlaylistID, int targetPlaylistId) {
-    // Query Tracks from the source Playlist
-    QSqlQuery query(m_database);
-    query.prepare("SELECT track_id FROM PlaylistTracks "
-                  "WHERE playlist_id = :plid");
-    query.bindValue(":plid", sourcePlaylistID);
+bool PlaylistDAO::copyPlaylistTracks(int sourcePlaylistID, int targetPlaylistID) {
+    // Start the transaction
+    ScopedTransaction transaction(m_database);
+
+    // Copy the new tracks after the last track in the target playlist.
+    int positionOffset = getMaxPosition(targetPlaylistID);
+
+    // Copy the tracks from one playlist to another, adjusting the position of
+    // each copied track, and preserving the date/time added.
+    // INSERT INTO PlaylistTracks (playlist_id, track_id, position, pl_datetime_added) SELECT :target_plid, track_id, position + :position_offset, pl_datetime_added FROM PlaylistTracks WHERE playlist_id = :source_plid;
+    QSqlQuery query(m_database);
+    query.prepare(QString("INSERT INTO " PLAYLIST_TRACKS_TABLE
+        " (%1, %2, %3, %4) SELECT :target_plid, %2, "
+        "%3 + :position_offset, %4 FROM " PLAYLIST_TRACKS_TABLE
+        " WHERE %1 = :source_plid")
+        .arg(PLAYLISTTRACKSTABLE_PLAYLISTID)        // %1
+        .arg(PLAYLISTTRACKSTABLE_TRACKID)           // %2
+        .arg(PLAYLISTTRACKSTABLE_POSITION)          // %3
+        .arg(PLAYLISTTRACKSTABLE_DATETIMEADDED));   // %4
+    query.bindValue(":position_offset", positionOffset);
+    query.bindValue(":source_plid", sourcePlaylistID);
+    query.bindValue(":target_plid", targetPlaylistID);
 
     if (!query.exec()) {
         LOG_FAILED_QUERY(query);
-        return;
+        return false;
     }
 
-    QList<int> trackIds;
+    // Query each added track and its new position.
+    // SELECT track_id, position FROM PlaylistTracks WHERE playlist_id = :target_plid AND position > :position_offset;
+    query.prepare(QString("SELECT %2, %3 FROM " PLAYLIST_TRACKS_TABLE
+        " WHERE %1 = :target_plid AND %3 > :position_offset")
+        .arg(PLAYLISTTRACKSTABLE_PLAYLISTID)    // %1
+        .arg(PLAYLISTTRACKSTABLE_TRACKID)       // %2
+        .arg(PLAYLISTTRACKSTABLE_POSITION));    // %3
+    query.bindValue(":target_plid", targetPlaylistID);
+    query.bindValue(":position_offset", positionOffset);
+    if (!query.exec()) {
+        LOG_FAILED_QUERY(query);
+        return false;
+    }
+
+    // Commit the transaction
+    transaction.commit();
+
+    // Let subscribers know about each added track.
     while (query.next()) {
-        trackIds.append(query.value(0).toInt());
+        int copiedTrackId = query.value(0).toInt();
+        int copiedPosition = query.value(1).toInt();
+        emit(trackAdded(targetPlaylistID, copiedTrackId, copiedPosition));
     }
-    appendTracksToPlaylist(trackIds, targetPlaylistId);
+    emit(changed(targetPlaylistID));
+    return true;
 }
 
 int PlaylistDAO::getMaxPosition(int playlistId) {
--- mixxx-1.11.0/src/library/dao/playlistdao.h	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/library/dao/playlistdao.h	2013-05-12 15:26:10.683778000 -0700
@@ -44,9 +44,9 @@
     // Find out the state of a playlist lock
     bool isPlaylistLocked(int playlistId);
     // Append a list of tracks to a playlist
-    void appendTracksToPlaylist(QList<int> trackIds, int playlistId);
+    bool appendTracksToPlaylist(QList<int> trackIds, int playlistId);
     // Append a track to a playlist
-    void appendTrackToPlaylist(int trackId, int playlistId);
+    bool appendTrackToPlaylist(int trackId, int playlistId);
     // Find out how many playlists exist.
     unsigned int playlistCount();
     // Find out the name of the playlist at the given Id
@@ -79,7 +79,7 @@
     // hidden. Returns -1 if no such playlist exists.
     int getPreviousPlaylist(int currentPlaylistId, HiddenType hidden);
     // Append all the tracks in the source playlist to the target playlist.
-    void copyPlaylistTracks(int sourcePlaylistID, int targetPlaylistId);
+    bool copyPlaylistTracks(int sourcePlaylistID, int targetPlaylistID);
     // Returns the number of tracks in the given playlist.
     int tracksInPlaylist(int playlistId);
   signals:
--- mixxx-1.11.0/src/library/legacylibraryimporter.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/library/legacylibraryimporter.cpp	2013-05-12 15:26:10.683778000 -0700
@@ -171,7 +171,8 @@
                 int dbTrackId = m_trackDao.getTrackId(trackLocation);
 
                 if (dbTrackId >= 0) {
-                    //Add it to the database's playlist.
+                    // Add it to the database's playlist.
+                    // TODO(XXX): Care if the append succeeded.
                     m_playlistDao.appendTrackToPlaylist(dbTrackId, playlistId);
                 }
             }
--- mixxx-1.11.0/src/library/playlistfeature.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/library/playlistfeature.cpp	2013-05-12 15:26:10.683778000 -0700
@@ -117,10 +117,8 @@
         }
     }
 
-    // appendTracksToPlaylist doesn't return whether it succeeded, so assume it
-    // did.
-    m_playlistDao.appendTracksToPlaylist(trackIds, playlistId);
-    return true;
+    // Return whether appendTracksToPlaylist succeeded.
+    return m_playlistDao.appendTracksToPlaylist(trackIds, playlistId);
 }
 
 bool PlaylistFeature::dragMoveAcceptChild(const QModelIndex& index, QUrl url) {
--- mixxx-1.11.0/src/library/playlisttablemodel.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/library/playlisttablemodel.cpp	2013-05-12 15:26:10.683778000 -0700
@@ -109,10 +109,10 @@
         return false;
     }
 
-    m_playlistDao.appendTrackToPlaylist(trackId, m_iPlaylistId);
+    bool bSuccess = m_playlistDao.appendTrackToPlaylist(trackId, m_iPlaylistId);
 
     select(); //Repopulate the data model.
-    return true;
+    return bSuccess;
 }
 
 int PlaylistTableModel::addTracks(const QModelIndex& index, QList<QString> locations) {
--- mixxx-1.11.0/src/library/setlogfeature.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/library/setlogfeature.cpp	2013-05-12 15:26:10.683778000 -0700
@@ -202,10 +202,11 @@
                     m_playlistId = previousPlaylistId;
                 }
                 qDebug() << "slotJoinWithPrevious() current:" << currentPlaylistId << " previous:" << previousPlaylistId;
-                m_playlistDao.copyPlaylistTracks(currentPlaylistId, previousPlaylistId);
-                m_playlistDao.deletePlaylist(currentPlaylistId);
-                slotPlaylistTableChanged(previousPlaylistId); // For moving selection
-                emit(showTrackModel(m_pPlaylistTableModel));
+                if (m_playlistDao.copyPlaylistTracks(currentPlaylistId, previousPlaylistId)) {
+                    m_playlistDao.deletePlaylist(currentPlaylistId);
+                    slotPlaylistTableChanged(previousPlaylistId); // For moving selection
+                    emit(showTrackModel(m_pPlaylistTableModel));
+                }
             }
         }
     }
@@ -255,6 +256,7 @@
             // View needs a refresh
             m_pPlaylistTableModel->appendTrack(currentPlayingTrackId);
         } else {
+            // TODO(XXX): Care whether the append succeeded.
             m_playlistDao.appendTrackToPlaylist(currentPlayingTrackId,
                                                 m_playlistId);
         }
--- mixxx-1.11.0/src/recording/enginerecord.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/recording/enginerecord.cpp	2013-05-13 08:15:55.212095000 -0700
@@ -38,6 +38,8 @@
  *                                                                         *
  ***************************************************************************/
 
+const int kMetaDataLifeTimeout = 16;
+
 EngineRecord::EngineRecord(ConfigObject<ConfigValue> * _config)
 {
     m_config = _config;
@@ -124,15 +126,13 @@
  */
 bool EngineRecord::metaDataHasChanged()
 {
-    TrackPointer pTrack;
-
-    if ( m_iMetaDataLife < 16 ) {
+    if (m_iMetaDataLife < kMetaDataLifeTimeout) {
         m_iMetaDataLife++;
         return false;
     }
     m_iMetaDataLife = 0;
 
-    pTrack = PlayerInfo::Instance().getCurrentPlayingTrack();
+    TrackPointer pTrack = PlayerInfo::Instance().getCurrentPlayingTrack();
     if ( !pTrack )
         return false;
 
@@ -173,6 +173,10 @@
             m_recReady->slotSet(RECORD_ON);
             emit(isRecording(true)); //will notify the RecordingManager
 
+            // Since we just started recording, timeout and clear the metadata.
+            m_iMetaDataLife = kMetaDataLifeTimeout;
+            m_pCurrentTrack = TrackPointer();
+
             if (m_bCueIsEnabled) {
                 openCueFile();
                 m_cuesamplepos = 0;
@@ -210,6 +214,10 @@
 }
 
 void EngineRecord::writeCueLine() {
+    if (!m_pCurrentTrack) {
+        return;
+    }
+
     // account for multiple channels
     unsigned long samplerate = m_samplerate->get() * 2;
     // CDDA is specified as having 75 frames a second
@@ -228,9 +236,9 @@
         .toLatin1()
     );
 
-    m_cuefile.write(QString("    TITLE %1\n")
+    m_cuefile.write(QString("    TITLE \"%1\"\n")
         .arg(m_pCurrentTrack->getTitle()).toLatin1());
-    m_cuefile.write(QString("    PERFORMER %1\n")
+    m_cuefile.write(QString("    PERFORMER \"%1\"\n")
         .arg(m_pCurrentTrack->getArtist()).toLatin1());
 
     // Woefully inaccurate (at the seconds level anyways).
--- mixxx-1.11.0/src/widget/wtracktableview.cpp	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/src/widget/wtracktableview.cpp	2013-05-12 15:26:10.683778000 -0700
@@ -1025,6 +1025,7 @@
         playlistDao.insertTracksIntoPlaylist(trackIds,
                                             iAutoDJPlaylistId, 2);
     } else {
+        // TODO(XXX): Care whether the append succeeded.
         playlistDao.appendTracksToPlaylist(
             trackIds, iAutoDJPlaylistId);
     }
@@ -1089,6 +1090,7 @@
         }
     }
     if (trackIds.size() > 0) {
+        // TODO(XXX): Care whether the append succeeded.
         playlistDao.appendTracksToPlaylist(trackIds, iPlaylistId);
     }
 }
--- mixxx-1.11.0/vamp-plugins/SConscript	2013-05-08 16:20:26.000000000 -0700
+++ mixxx-upstream/vamp-plugins/SConscript	2013-05-17 07:46:13.646439000 -0700
@@ -51,7 +51,7 @@
     if not conf.CheckLib('vamp-sdk'):
         INTERNAL_VAMP_PATH = '#lib/vamp-2.3'
         # For header includes
-        build.env.Append(CPPPATH=[INTERNAL_VAMP_PATH])
+        env.Append(CPPPATH=[INTERNAL_VAMP_PATH])
         sdk_src_path = '%s/src/vamp-sdk' % INTERNAL_VAMP_PATH
         mixxxminimal_sources.extend(path % sdk_src_path for path in
                                     ['%s/PluginAdapter.cpp',


Index: .cvsignore
===================================================================
RCS file: /cvs/free/rpms/mixxx/F-18/.cvsignore,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- .cvsignore	4 Feb 2013 20:38:12 -0000	1.10
+++ .cvsignore	23 May 2013 01:12:44 -0000	1.11
@@ -1 +1,2 @@
-mixxx-1.10.1-src.tar.gz
+mixxx-1.11.0-20130517bzr.tar.bz2
+mixxx-1.11.0-src.tar.gz


Index: mixxx.spec
===================================================================
RCS file: /cvs/free/rpms/mixxx/F-18/mixxx.spec,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- mixxx.spec	4 Feb 2013 20:38:12 -0000	1.14
+++ mixxx.spec	23 May 2013 01:12:44 -0000	1.15
@@ -1,17 +1,17 @@
-%global _with_bpm     1
-%global _with_libgpod 1
-
 Name:           mixxx
-Version:        1.10.1
+Version:        1.11.0
 Release:        1%{?dist}
 Summary:        Mixxx is open source software for DJ'ing
 
 Group:          Applications/Multimedia
 License:        GPLv2+
 URL:            http://www.mixxx.org
-Source0:        http://downloads.mixxx.org/mixxx-%{version}/mixxx-%{version}-src.tar.gz
-Patch0:         mixxx-1.9.2-norpath.patch
-Patch1:         mixxx-1.10.0-gcc47.patch
+Source0:        http://downloads.mixxx.org/mixxx-%{version}/%{name}-%{version}-src.tar.gz
+Patch0:         %{name}-%{version}-20130517bzr.patch
+# Updated manual...build it yourself with:
+# 1) bzr checkout lp:~mixxxdevelopers/mixxx/manual-1.11.x
+# 2) cd manual-1.11.x; make html; make latexpdf; make latexpdf
+Source1:        %{name}-%{version}-20130517bzr.tar.bz2
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 #Build tools
@@ -29,14 +29,15 @@
 BuildRequires:  libmad-devel
 BuildRequires:  libmp4v2-devel
 BuildRequires:  libsndfile-devel
+BuildRequires:  libusb1-devel
 BuildRequires:  libvorbis-devel
 BuildRequires:  portaudio-devel
 BuildRequires:  portmidi-devel
+BuildRequires:  protobuf-devel
 BuildRequires:  taglib-devel
 BuildRequires:  flac-devel
 
 #Optionals Requirements
-BuildRequires:  ffmpeg-devel
 BuildRequires:  libshout-devel
 #BuildRequires:  python-devel
 #BuildRequires:  lua-devel, tolua++-devel
@@ -59,8 +60,19 @@
 
 %prep
 %setup -q
-%patch0 -p1 -b .norpath
-%patch1 -p1 -b .gcc47
+%patch0 -p1
+%setup -T -D -a 1
+
+# Fix file permissions.  (Already fixed upstream.)
+chmod -x \
+    "res/controllers/Vestax VCI-300.midi.xml" \
+    "res/controllers/Vestax-VCI-300-scripts.js" \
+    "res/skins/Outline1024x600-Netbook/CHANGELOG.txt" \
+    "res/skins/Outline1024x600-Netbook/skin.xml" \
+    "res/skins/Outline1024x768-XGA/CHANGELOG.txt" \
+    "res/skins/Outline1024x768-XGA/skin.xml" \
+    "res/skins/Outline800x480-WVGA/skin.xml"
+
 
 
 %build
@@ -73,6 +85,7 @@
   shoutcast=1 hifieq=1 script=0 optimize=0 \
 
 
+
 %install
 rm -rf $RPM_BUILD_ROOT
 
@@ -80,6 +93,7 @@
 export CXXFLAGS=$RPM_OPT_FLAGS
 scons %{?_smp_mflags} \
   install_root=$RPM_BUILD_ROOT%{_prefix} \
+  qtdir=%{_qt4_prefix} \
   prefix=%{_prefix} install
 
 desktop-file-install --vendor ""  \
@@ -101,12 +115,13 @@
 %doc Mixxx-Manual.pdf
 %{_bindir}/%{name}
 %{_datadir}/%{name}/
+%{_libdir}/%{name}/plugins/vamp/libmixxxminimal.so
 %{_datadir}/applications/mixxx.desktop
 %{_datadir}/pixmaps/mixxx-icon.png
 
 %changelog
-* Wed Jul 11 2012 Nicolas Chauvet <kwizart at gmail.com> - 1.10.1-1
-- Update to 1.10.1
+* Fri May 17 2013 Steven Boswell <ulatekh at yahoo.com> - 1.11.0-1
+- Update to 1.11.0
 
 * Thu May 03 2012 Nicolas Chauvet <kwizart at gmail.com> - 1.10.0-1
 - Update to 1.10.0


Index: sources
===================================================================
RCS file: /cvs/free/rpms/mixxx/F-18/sources,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- sources	4 Feb 2013 20:38:12 -0000	1.10
+++ sources	23 May 2013 01:12:44 -0000	1.11
@@ -1 +1,2 @@
-765bc5216ec8102c2186dd3ea80187a9  mixxx-1.10.1-src.tar.gz
+021072cebcac0cbe2e0f0ea57554c4e5  mixxx-1.11.0-20130517bzr.tar.bz2
+89ee8ba60824919d8dd1194287bda259  mixxx-1.11.0-src.tar.gz


--- mixxx-1.10.0-gcc47.patch DELETED ---


--- mixxx-1.9.2-norpath.patch DELETED ---


More information about the rpmfusion-commits mailing list