Skip to content

Commit

Permalink
Merge branch 'master' of git://github.com/xbmc/xbmc into dsplayer
Browse files Browse the repository at this point in the history
  • Loading branch information
ekyt committed Nov 28, 2012
2 parents f8087f0 + 99fa6fb commit dfce903
Show file tree
Hide file tree
Showing 9 changed files with 56 additions and 46 deletions.
14 changes: 7 additions & 7 deletions xbmc/interfaces/json-rpc/AudioLibrary.cpp
Expand Up @@ -557,7 +557,7 @@ JSONRPC_STATUS CAudioLibrary::Clean(const CStdString &method, ITransportLayer *t
return ACK;
}

bool CAudioLibrary::FillFileItem(const CStdString &strFilename, CFileItem &item, const CVariant &parameterObject /* = CVariant(CVariant::VariantTypeArray) */)
bool CAudioLibrary::FillFileItem(const CStdString &strFilename, CFileItemPtr &item, const CVariant &parameterObject /* = CVariant(CVariant::VariantTypeArray) */)
{
CMusicDatabase musicdatabase;
if (strFilename.empty() || !musicdatabase.Open())
Expand All @@ -570,10 +570,10 @@ bool CAudioLibrary::FillFileItem(const CStdString &strFilename, CFileItem &item,
if (!musicdatabase.GetAlbumInfo(albumid, album, NULL))
return false;

item.SetFromAlbum(album);
item->SetFromAlbum(album);

CFileItemList items;
items.Add(CFileItemPtr(&item));
items.Add(item);
if (GetAdditionalAlbumDetails(parameterObject, items, musicdatabase) != OK)
return false;
}
Expand All @@ -583,10 +583,10 @@ bool CAudioLibrary::FillFileItem(const CStdString &strFilename, CFileItem &item,
if (!musicdatabase.GetSongByFileName(strFilename, song))
return false;

item.SetFromSong(song);
item->SetFromSong(song);

CFileItemList items;
items.Add(CFileItemPtr(&item));
items.Add(item);
if (GetAdditionalSongDetails(parameterObject, items, musicdatabase) != OK)
return false;
}
Expand All @@ -606,11 +606,11 @@ bool CAudioLibrary::FillFileItemList(const CVariant &parameterObject, CFileItemL
int genreID = (int)parameterObject["genreid"].asInteger(-1);

bool success = false;
CFileItem fileItem;
CFileItemPtr fileItem(new CFileItem());
if (FillFileItem(file, fileItem, parameterObject))
{
success = true;
list.Add(CFileItemPtr(new CFileItem(fileItem)));
list.Add(fileItem);
}

if (artistID != -1 || albumID != -1 || genreID != -1)
Expand Down
2 changes: 1 addition & 1 deletion xbmc/interfaces/json-rpc/AudioLibrary.h
Expand Up @@ -53,7 +53,7 @@ namespace JSONRPC
static JSONRPC_STATUS Export(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
static JSONRPC_STATUS Clean(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);

static bool FillFileItem(const CStdString &strFilename, CFileItem &item, const CVariant &parameterObject = CVariant(CVariant::VariantTypeArray));
static bool FillFileItem(const CStdString &strFilename, CFileItemPtr &item, const CVariant &parameterObject = CVariant(CVariant::VariantTypeArray));
static bool FillFileItemList(const CVariant &parameterObject, CFileItemList &list);

static JSONRPC_STATUS GetAdditionalAlbumDetails(const CVariant &parameterObject, CFileItemList &items, CMusicDatabase &musicdatabase);
Expand Down
30 changes: 15 additions & 15 deletions xbmc/interfaces/json-rpc/FileOperations.cpp
Expand Up @@ -138,13 +138,13 @@ JSONRPC_STATUS CFileOperations::GetDirectory(const CStdString &method, ITranspor
}
else
{
CFileItem fileItem;
CFileItemPtr fileItem(new CFileItem());
if (FillFileItem(items[i], fileItem, media, parameterObject))
{
if (items[i]->m_bIsFolder)
filteredDirectories.Add(CFileItemPtr(new CFileItem(fileItem)));
filteredDirectories.Add(fileItem);
else
filteredFiles.Add(CFileItemPtr(new CFileItem(fileItem)));
filteredFiles.Add(fileItem);
}
else
{
Expand Down Expand Up @@ -214,7 +214,7 @@ JSONRPC_STATUS CFileOperations::GetFileDetails(const CStdString &method, ITransp

CFileItemPtr item = items.Get(file);
if (!URIUtils::IsUPnP(file))
FillFileItem(item, *item.get(), parameterObject["media"].asString(), parameterObject);
FillFileItem(item, item, parameterObject["media"].asString(), parameterObject);

// Check if the "properties" list exists
// and make sure it contains the "file"
Expand Down Expand Up @@ -263,24 +263,24 @@ JSONRPC_STATUS CFileOperations::Download(const CStdString &method, ITransportLay
return transport->Download(parameterObject["path"].asString().c_str(), result) ? OK : InvalidParams;
}

bool CFileOperations::FillFileItem(const CFileItemPtr &originalItem, CFileItem &item, CStdString media /* = "" */, const CVariant &parameterObject /* = CVariant(CVariant::VariantTypeArray) */)
bool CFileOperations::FillFileItem(const CFileItemPtr &originalItem, CFileItemPtr &item, CStdString media /* = "" */, const CVariant &parameterObject /* = CVariant(CVariant::VariantTypeArray) */)
{
if (originalItem.get() == NULL)
return false;

// copy all the available details
item = *originalItem;
*item = *originalItem;

bool status = false;
CStdString strFilename = originalItem->GetPath();
if (!strFilename.empty() && (CDirectory::Exists(strFilename) || CFile::Exists(strFilename)))
{
if (media.Equals("video"))
status = CVideoLibrary::FillFileItem(strFilename, item);
status = CVideoLibrary::FillFileItem(strFilename, item, parameterObject);
else if (media.Equals("music"))
status = CAudioLibrary::FillFileItem(strFilename, item, parameterObject);

if (status && item.GetLabel().empty())
if (status && item->GetLabel().empty())
{
CStdString label = originalItem->GetLabel();
if (label.empty())
Expand All @@ -291,7 +291,7 @@ bool CFileOperations::FillFileItem(const CFileItemPtr &originalItem, CFileItem &
label = URIUtils::GetFileName(strFilename);
}

item.SetLabel(label);
item->SetLabel(label);
}
else if (!status)
{
Expand All @@ -302,12 +302,12 @@ bool CFileOperations::FillFileItem(const CFileItemPtr &originalItem, CFileItem &
if (label.empty())
return false;

item.SetLabel(label);
item.SetPath(strFilename);
item.m_bIsFolder = isDir;
item->SetLabel(label);
item->SetPath(strFilename);
item->m_bIsFolder = isDir;
}
else
item = *originalItem.get();
*item = *originalItem;

status = true;
}
Expand Down Expand Up @@ -363,9 +363,9 @@ bool CFileOperations::FillFileItemList(const CVariant &parameterObject, CFileIte
list.Add(items[i]);
else
{
CFileItem fileItem;
CFileItemPtr fileItem(new CFileItem());
if (FillFileItem(items[i], fileItem, media, parameterObject))
list.Add(CFileItemPtr(new CFileItem(fileItem)));
list.Add(fileItem);
else if (media == "files")
list.Add(items[i]);
}
Expand Down
2 changes: 1 addition & 1 deletion xbmc/interfaces/json-rpc/FileOperations.h
Expand Up @@ -35,7 +35,7 @@ namespace JSONRPC
static JSONRPC_STATUS PrepareDownload(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
static JSONRPC_STATUS Download(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);

static bool FillFileItem(const CFileItemPtr &originalItem, CFileItem &item, CStdString media = "", const CVariant &parameterObject = CVariant(CVariant::VariantTypeArray));
static bool FillFileItem(const CFileItemPtr &originalItem, CFileItemPtr &item, CStdString media = "", const CVariant &parameterObject = CVariant(CVariant::VariantTypeArray));
static bool FillFileItemList(const CVariant &parameterObject, CFileItemList &list);
};
}
22 changes: 9 additions & 13 deletions xbmc/interfaces/json-rpc/PlayerOperations.cpp
Expand Up @@ -107,36 +107,32 @@ JSONRPC_STATUS CPlayerOperations::GetItem(const CStdString &method, ITransportLa
case Video:
case Audio:
{
if (g_application.CurrentFileItem().GetLabel().empty())
fileItem = CFileItemPtr(new CFileItem(g_application.CurrentFileItem()));
if (fileItem->GetLabel().empty())
{
CFileItem tmpItem = g_application.CurrentFileItem();
if (IsPVRChannel())
{
CPVRChannelPtr currentChannel;
if (g_PVRManager.GetCurrentChannel(currentChannel))
tmpItem = CFileItem(*currentChannel.get());
fileItem = CFileItemPtr(new CFileItem(*currentChannel.get()));
}
else if (player == Video)
{
if (!CVideoLibrary::FillFileItem(g_application.CurrentFile(), tmpItem))
if (!CVideoLibrary::FillFileItem(g_application.CurrentFile(), fileItem, parameterObject))
{
tmpItem = CFileItem(*g_infoManager.GetCurrentMovieTag());
tmpItem.SetPath(g_application.CurrentFileItem().GetPath());
fileItem = CFileItemPtr(new CFileItem(*g_infoManager.GetCurrentMovieTag()));
fileItem->SetPath(g_application.CurrentFileItem().GetPath());
}
}
else
{
if (!CAudioLibrary::FillFileItem(g_application.CurrentFile(), tmpItem, parameterObject))
if (!CAudioLibrary::FillFileItem(g_application.CurrentFile(), fileItem, parameterObject))
{
tmpItem = CFileItem(*g_infoManager.GetCurrentSongTag());
tmpItem.SetPath(g_application.CurrentFileItem().GetPath());
fileItem = CFileItemPtr(new CFileItem(*g_infoManager.GetCurrentSongTag()));
fileItem->SetPath(g_application.CurrentFileItem().GetPath());
}
}

fileItem = CFileItemPtr(new CFileItem(tmpItem));
}
else
fileItem = CFileItemPtr(new CFileItem(g_application.CurrentFileItem()));

if (IsPVRChannel())
break;
Expand Down
8 changes: 4 additions & 4 deletions xbmc/interfaces/json-rpc/VideoLibrary.cpp
Expand Up @@ -701,7 +701,7 @@ JSONRPC_STATUS CVideoLibrary::Clean(const CStdString &method, ITransportLayer *t
return ACK;
}

bool CVideoLibrary::FillFileItem(const CStdString &strFilename, CFileItem &item)
bool CVideoLibrary::FillFileItem(const CStdString &strFilename, CFileItemPtr &item, const CVariant &parameterObject /* = CVariant(CVariant::VariantTypeArray) */)
{
CVideoDatabase videodatabase;
if (strFilename.empty() || !videodatabase.Open())
Expand All @@ -711,7 +711,7 @@ bool CVideoLibrary::FillFileItem(const CStdString &strFilename, CFileItem &item)
if (!videodatabase.LoadVideoInfo(strFilename, details))
return false;

item.SetFromVideoInfoTag(details);
item->SetFromVideoInfoTag(details);
return true;
}

Expand All @@ -727,11 +727,11 @@ bool CVideoLibrary::FillFileItemList(const CVariant &parameterObject, CFileItemL
int musicVideoID = (int)parameterObject["musicvideoid"].asInteger(-1);

bool success = false;
CFileItem fileItem;
CFileItemPtr fileItem(new CFileItem());
if (FillFileItem(file, fileItem))
{
success = true;
list.Add(CFileItemPtr(new CFileItem(fileItem)));
list.Add(fileItem);
}

if (movieID > 0)
Expand Down
2 changes: 1 addition & 1 deletion xbmc/interfaces/json-rpc/VideoLibrary.h
Expand Up @@ -65,7 +65,7 @@ namespace JSONRPC
static JSONRPC_STATUS Export(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
static JSONRPC_STATUS Clean(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);

static bool FillFileItem(const CStdString &strFilename, CFileItem &item);
static bool FillFileItem(const CStdString &strFilename, CFileItemPtr &item, const CVariant &parameterObject = CVariant(CVariant::VariantTypeArray));
static bool FillFileItemList(const CVariant &parameterObject, CFileItemList &list);

private:
Expand Down
18 changes: 18 additions & 0 deletions xbmc/music/tags/TagLoaderTagLib.cpp
Expand Up @@ -44,12 +44,29 @@
#include "utils/URIUtils.h"
#include "utils/log.h"
#include "utils/StringUtils.h"
#include "utils/CharsetConverter.h"
#include "settings/AdvancedSettings.h"

using namespace std;
using namespace TagLib;
using namespace MUSIC_INFO;

class TagStringHandler : public ID3v2::Latin1StringHandler
{
public:
TagStringHandler() {}
virtual ~TagStringHandler() {}
virtual String parse(const ByteVector &data) const
{
CStdString strSource(data.data(), data.size());
CStdString strUTF8;
g_charsetConverter.unknownToUTF8(strSource, strUTF8);
return String(strUTF8, String::UTF8);
}
};

static const TagStringHandler StringHandler;

CTagLoaderTagLib::CTagLoaderTagLib()
{
}
Expand Down Expand Up @@ -84,6 +101,7 @@ bool CTagLoaderTagLib::Load(const string& strFileName, CMusicInfoTag& tag, Embed
return false;
}

ID3v2::Tag::setLatin1StringHandler(&StringHandler);
TagLib::File* file = NULL;
TagLib::APE::File* apeFile = NULL;
TagLib::ASF::File* asfFile = NULL;
Expand Down
4 changes: 0 additions & 4 deletions xbmc/settings/GUIWindowSettingsCategory.cpp
Expand Up @@ -3007,16 +3007,13 @@ void CGUIWindowSettingsCategory::FillInAudioDevices(CSetting* pSetting, bool Pas
m_AnalogAudioSinkMap["Error - no devices found"] = "null:";
}

int numberSinks = 0;

int selectedValue = -1;
AEDeviceList sinkList;
CAEFactory::EnumerateOutputDevices(sinkList, Passthrough);
#if !defined(TARGET_DARWIN)
if (sinkList.size()==0)
{
pControl->AddLabel("Error - no devices found", 0);
numberSinks = 1;
selectedValue = 0;
}
else
Expand All @@ -3040,7 +3037,6 @@ void CGUIWindowSettingsCategory::FillInAudioDevices(CSetting* pSetting, bool Pas
i++;
}

numberSinks = sinkList.size();
#if !defined(TARGET_DARWIN)
}
#endif
Expand Down

0 comments on commit dfce903

Please sign in to comment.