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@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)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><html>(The script code needs to be
fixed.)<br>For now, you can:<ul><li>Ignore this
error for this session but you may experience erratic
behavior</li><li>Try to recover by resetting your
controller</li></ul></html></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'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 '%1, %2' 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'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.<br><br>This means that the waveform displays will be
very<br><b>slow and may tax your CPU
heavily</b>. Either update your<br>configuration to enable
direct rendering, or disable<br>the waveform displays in the Mixxx
preferences by selecting<br>"Empty" as the waveform
display in the 'Interface'
section.<br><br>NOTE: If you use NVIDIA
hardware,<br>direct rendering may not be present, but you
should<br>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(a)gmail.com> - 1.10.1-1
-- Update to 1.10.1
+* Fri May 17 2013 Steven Boswell <ulatekh(a)yahoo.com> - 1.11.0-1
+- Update to 1.11.0
* Thu May 03 2012 Nicolas Chauvet <kwizart(a)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 ---