diff options
author | Damian Huckle <damianhuckle@hotmail.com> | 2012-06-01 22:34:02 -0400 |
---|---|---|
committer | Damian Huckle <damianhuckle@hotmail.com> | 2012-06-01 22:37:04 -0400 |
commit | 07ba3c14c5ecf1707a3574403a963d76b0566a21 (patch) | |
tree | ba7c296d710fd7bc34228d4f8f260a6b55e339f7 | |
parent | 58d5c9dc5383e9633a0583e5193b19fd30d2f785 (diff) |
Fix AnnouncementManager.cpp modifying song MusicInfoTag data erroneously from database when song is derived from cuesheet.
-rw-r--r-- | xbmc/FileItem.cpp | 10 | ||||
-rw-r--r-- | xbmc/FileItem.h | 3 | ||||
-rw-r--r-- | xbmc/interfaces/AnnouncementManager.cpp | 3 | ||||
-rw-r--r-- | xbmc/music/Song.cpp | 1 | ||||
-rw-r--r-- | xbmc/music/Song.h | 1 |
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 |