Minor modifications on load audio CD, including better cleaning of objects

This commit is contained in:
Arnaud Bienner 2011-06-14 23:38:43 +00:00
parent 72c4c67ba2
commit 7fca5d37dc
57 changed files with 85 additions and 70 deletions

View File

@ -106,28 +106,34 @@ SongLoader::Result SongLoader::LoadAudioCD() {
GstElement *cdda = gst_element_make_from_uri (GST_URI_SRC, "cdda://", NULL);
if (cdda == NULL) {
qLog(Error) << "Error while creating CDDA GstElement";
return Error;
}
// Change the element's state to ready and paused, to be able to query it
if (gst_element_set_state(cdda, GST_STATE_READY) == GST_STATE_CHANGE_FAILURE
|| gst_element_set_state(cdda, GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE) {
|| gst_element_set_state(cdda, GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE) {
qLog(Error) << "Error while changing CDDA GstElement's state";
gst_object_unref(GST_OBJECT(cdda));
return Error;
}
// Get number of tracks
GstFormat fmt = gst_format_get_by_nick ("track");
GstFormat out_fmt = fmt;
gint64 num_tracks;
gint64 num_tracks = 0;
if (!gst_element_query_duration (cdda, &out_fmt, &num_tracks) || out_fmt != fmt) {
qLog(Error) << "Error while querying cdda GstElement";
gst_object_unref(GST_OBJECT(cdda));
return Error;
}
for (int track_number=1; track_number<=num_tracks; track_number++) {
for (int track_number = 1; track_number <= num_tracks; track_number++) {
// Init song
Song song;
guint64 duration;
guint64 duration = 0;
// quint64 == ulonglong and guint64 == ulong, therefore we must cast
if (gst_tag_list_get_uint64 (GST_CDDA_BASE_SRC(cdda)->tracks[track_number-1].tags, GST_TAG_DURATION, &duration)) {
if (gst_tag_list_get_uint64 (GST_CDDA_BASE_SRC(cdda)->tracks[track_number-1].tags,
GST_TAG_DURATION, &duration)) {
song.set_length_nanosec((quint64)duration);
}
song.set_valid(true);
@ -151,21 +157,29 @@ SongLoader::Result SongLoader::LoadAudioCD() {
gst_message_parse_tag (msg, &tags);
char *string_mb = NULL;
if (gst_tag_list_get_string (tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, &string_mb)) {
}
QString musicbrainz_discid(string_mb);
qLog(Info) << "MusicBrainz discid: " << musicbrainz_discid;
QString musicbrainz_discid(string_mb);
qLog(Info) << "MusicBrainz discid: " << musicbrainz_discid;
MusicBrainzClient *musicbrainz_client = new MusicBrainzClient(this);
connect(musicbrainz_client,
SIGNAL(Finished(const QString&, const QString&, MusicBrainzClient::ResultList)),
SLOT(AudioCDTagsLoaded(const QString&, const QString&, MusicBrainzClient::ResultList)));
musicbrainz_client->StartDiscIdRequest(musicbrainz_discid);
MusicBrainzClient *musicbrainz_client = new MusicBrainzClient(this);
connect(musicbrainz_client,
SIGNAL(Finished(const QString&, const QString&, MusicBrainzClient::ResultList)),
SLOT(AudioCDTagsLoaded(const QString&, const QString&, MusicBrainzClient::ResultList)));
musicbrainz_client->StartDiscIdRequest(musicbrainz_discid);
g_free(string_mb);
}
// Clean all the Gstreamer objects we have used: we don't need them anymore
gst_object_unref(GST_OBJECT(cdda));
gst_element_set_state (pipe, GST_STATE_NULL);
gst_object_unref(GST_OBJECT(pipe));
gst_object_unref(GST_OBJECT(msg));
gst_object_unref(GST_OBJECT(tags));
return Success;
}
void SongLoader::AudioCDTagsLoaded(const QString& artist, const QString& album,
MusicBrainzClient::ResultList results) {
const MusicBrainzClient::ResultList& results) {
// Remove previously added songs metadata, because there are not needed
// and that we are going to fill it with new (more complete) ones
songs_.clear();
@ -177,7 +191,7 @@ void SongLoader::AudioCDTagsLoaded(const QString& artist, const QString& album,
song.set_title(ret.title_);
song.set_length_nanosec(ret.duration_msec_ * kNsecPerMsec);
song.set_track(track_number);
// We need to set url: that's how playlist whill know what item to update
// We need to set url: that's how playlist will find the correct item to update
song.set_url(QUrl(QString("cdda://%1").arg(track_number++)));
songs_ << song;
}

View File

@ -72,7 +72,7 @@ private slots:
void Timeout();
void StopTypefind();
void AudioCDTagsLoaded(const QString& artist, const QString& album,
MusicBrainzClient::ResultList);
const MusicBrainzClient::ResultList& results);
private:
enum State {

View File

@ -86,7 +86,7 @@ void MusicBrainzClient::DiscIdRequestFinished() {
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
if (!reply)
return;
reply->deleteLater();
reply->deleteLater();
ResultList ret;
QString artist;

View File

@ -114,6 +114,7 @@ void SongLoaderInserter::AudioCDTagsLoaded(bool success) {
destination_->UpdateItems(loader->songs());
else
qLog(Error) << "Error while getting audio CD metadata from MusicBrainz";
deleteLater();
}
void SongLoaderInserter::PendingLoadFinished(bool success) {

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1930,7 +1930,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1955,7 +1955,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Покажи само първите"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1947,7 +1947,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1933,7 +1933,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1953,7 +1953,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1952,7 +1952,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Ukázat pouze první"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1919,7 +1919,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1957,7 +1957,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Nur die ersten"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1968,7 +1968,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Εμφάνιση μόνο του πρώτου"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1920,7 +1920,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1917,7 +1917,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1969,7 +1969,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Solo mostrar el primero"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1917,7 +1917,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1939,7 +1939,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1973,7 +1973,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Afficher seulement le premier"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1925,7 +1925,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1934,7 +1934,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "הצג רק את הראשון"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1952,7 +1952,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Samo prikaži prvi"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1954,7 +1954,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Csak a legelsőt mutassa"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1963,7 +1963,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Mostra solo la prima"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1942,7 +1942,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "先頭の未表示する"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1951,7 +1951,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Rodyti tik pirmą"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1928,7 +1928,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1962,7 +1962,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Alleen de eerste tonen."
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1916,7 +1916,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1955,7 +1955,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Pokaż tylko pierwsze"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1958,7 +1958,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Mostrar apenas a primeira"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1957,7 +1957,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Só mostrar o primeiro"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1952,7 +1952,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1951,7 +1951,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Показывать только первый"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1947,7 +1947,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Iba prvé zobraziť"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1950,7 +1950,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Pokaži le prve"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1924,7 +1924,7 @@ msgstr "ОГГ Ворбис"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1950,7 +1950,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Visa endast de första"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1949,7 +1949,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Sadece ilki göster"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1906,7 +1906,7 @@ msgstr ""
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1948,7 +1948,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Показувати лише перший"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1951,7 +1951,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr "Hiện số bài hát đầu tiên"
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1918,7 +1918,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -1920,7 +1920,7 @@ msgstr "Ogg Vorbis"
msgid "Only show the first"
msgstr ""
msgid "Open CD..."
msgid "Open &audio CD..."
msgstr ""
msgid "Open device"

View File

@ -661,7 +661,7 @@
</action>
<action name="action_open_cd">
<property name="text">
<string>Open CD...</string>
<string>Open &amp;audio CD...</string>
</property>
</action>
<action name="action_cover_manager">