aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamian Huckle <damianhuckle@hotmail.com>2012-06-01 22:34:02 -0400
committerDamian Huckle <damianhuckle@hotmail.com>2012-06-01 22:37:04 -0400
commit07ba3c14c5ecf1707a3574403a963d76b0566a21 (patch)
treeba7c296d710fd7bc34228d4f8f260a6b55e339f7
parent58d5c9dc5383e9633a0583e5193b19fd30d2f785 (diff)
Fix AnnouncementManager.cpp modifying song MusicInfoTag data erroneously from database when song is derived from cuesheet.
-rw-r--r--xbmc/FileItem.cpp10
-rw-r--r--xbmc/FileItem.h3
-rw-r--r--xbmc/interfaces/AnnouncementManager.cpp3
-rw-r--r--xbmc/music/Song.cpp1
-rw-r--r--xbmc/music/Song.h1
5 files changed, 17 insertions, 1 deletions
diff --git a/xbmc/FileItem.cpp b/xbmc/FileItem.cpp
index 8605c8777e..fd184ef954 100644
--- a/xbmc/FileItem.cpp
+++ b/xbmc/FileItem.cpp
@@ -75,6 +75,7 @@ CFileItem::CFileItem(const CSong& song)
m_lStartOffset = song.iStartOffset;
m_lEndOffset = song.iEndOffset;
m_strThumbnailImage = song.strThumb;
+ m_bIsCueSong = song.bIsCueSong;
}
CFileItem::CFileItem(const CStdString &path, const CAlbum& album)
@@ -258,6 +259,7 @@ const CFileItem& CFileItem::operator=(const CFileItem& item)
m_bIsShareOrDrive = item.m_bIsShareOrDrive;
m_dateTime = item.m_dateTime;
m_dwSize = item.m_dwSize;
+ m_bIsCueSong = item.m_bIsCueSong;
if (item.HasMusicInfoTag())
{
m_musicInfoTag = GetMusicInfoTag();
@@ -309,6 +311,7 @@ const CFileItem& CFileItem::operator=(const CFileItem& item)
m_extrainfo = item.m_extrainfo;
m_specialSort = item.m_specialSort;
m_bIsAlbum = item.m_bIsAlbum;
+ m_bIsCueSong = item.m_bIsCueSong;
return *this;
}
@@ -348,6 +351,7 @@ void CFileItem::Reset()
m_pictureInfoTag=NULL;
m_extrainfo.Empty();
m_specialSort = SORT_NORMALLY;
+ m_bIsCueSong = false;
SetInvalid();
}
@@ -1154,6 +1158,11 @@ bool CFileItem::IsAlbum() const
return m_bIsAlbum;
}
+bool CFileItem::IsCUESong() const
+{
+ return m_bIsCueSong;
+}
+
void CFileItem::UpdateInfo(const CFileItem &item, bool replaceLabels /*=true*/)
{
if (item.HasVideoInfoTag())
@@ -1939,6 +1948,7 @@ void CFileItemList::FilterCueItems()
{ // must be the last song
song.iDuration = (tag.GetDuration() * 75 - song.iStartOffset + 37) / 75;
}
+ song.bIsCueSong = true;
// add this item to the list
itemstoadd.push_back(song);
}
diff --git a/xbmc/FileItem.h b/xbmc/FileItem.h
index 77ac0fb1b5..2f91083c69 100644
--- a/xbmc/FileItem.h
+++ b/xbmc/FileItem.h
@@ -294,6 +294,8 @@ public:
bool IsSamePath(const CFileItem *item) const;
bool IsAlbum() const;
+
+ bool IsCUESong() const;
private:
// Gets the previously cached thumb file (with existence checks)
CStdString GetPreviouslyCachedMusicThumb() const;
@@ -327,6 +329,7 @@ private:
CVideoInfoTag* m_videoInfoTag;
CPictureInfoTag* m_pictureInfoTag;
bool m_bIsAlbum;
+ bool m_bIsCueSong;
};
/*!
diff --git a/xbmc/interfaces/AnnouncementManager.cpp b/xbmc/interfaces/AnnouncementManager.cpp
index a6d8b76626..356b0beb57 100644
--- a/xbmc/interfaces/AnnouncementManager.cpp
+++ b/xbmc/interfaces/AnnouncementManager.cpp
@@ -153,7 +153,8 @@ void CAnnouncementManager::Announce(AnnouncementFlag flag, const char *sender, c
// TODO: Can be removed once this is properly handled when starting playback of a file
if (id <= 0 && !item->GetPath().empty() &&
- (!item->HasProperty(LOOKUP_PROPERTY) || item->GetProperty(LOOKUP_PROPERTY).asBoolean()))
+ (!item->HasProperty(LOOKUP_PROPERTY) || item->GetProperty(LOOKUP_PROPERTY).asBoolean()) &&
+ (!item->IsCUESong())) //Prevent changing song info when it's from cue sheet
{
CMusicDatabase musicdatabase;
if (musicdatabase.Open())
diff --git a/xbmc/music/Song.cpp b/xbmc/music/Song.cpp
index b3cafba447..7c3da0875d 100644
--- a/xbmc/music/Song.cpp
+++ b/xbmc/music/Song.cpp
@@ -55,6 +55,7 @@ CSong::CSong(CMusicInfoTag& tag)
iKaraokeDelay = 0; //! Karaoke song lyrics-music delay in 1/10 seconds.
iArtistId = -1;
iAlbumId = -1;
+ bIsCueSong = 0;
}
CSong::CSong()
diff --git a/xbmc/music/Song.h b/xbmc/music/Song.h
index b25803f42f..4790057e15 100644
--- a/xbmc/music/Song.h
+++ b/xbmc/music/Song.h
@@ -95,6 +95,7 @@ public:
int iEndOffset;
int iArtistId;
int iAlbumId;
+ bool bIsCueSong;
// Karaoke-specific information
long iKaraokeNumber; //! Karaoke song number to "select by number". 0 for non-karaoke