Permalink
Browse files

Merge remote-tracking branch 'upstream-ro/master'

  • Loading branch information...
opdenkamp committed Aug 7, 2012
2 parents d2042a8 + bb8c4fa commit 18abdbeaef66f43452edb093dc2aad4bc297b384
Showing with 1,056 additions and 578 deletions.
  1. +1 −1 XBMC-ATV2.xcodeproj/project.pbxproj
  2. +1 −1 XBMC-IOS.xcodeproj/project.pbxproj
  3. +2 −2 XBMC.xcodeproj/project.pbxproj
  4. +1 −0 docs/README.ios
  5. +3 −1 docs/README.linux
  6. +2 −0 docs/README.osx
  7. +8 −3 xbmc/Application.cpp
  8. +13 −24 xbmc/FileItem.cpp
  9. +1 −1 xbmc/GUIInfoManager.cpp
  10. +2 −1 xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp
  11. +20 −10 xbmc/cores/AudioEngine/Utils/AEStreamInfo.cpp
  12. +1 −1 xbmc/cores/VideoRenderers/BaseRenderer.cpp
  13. +2 −1 xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.cpp
  14. +14 −1 xbmc/cores/dvdplayer/DVDPlayer.cpp
  15. +3 −6 xbmc/dialogs/GUIDialogKeyboardGeneric.cpp
  16. +2 −2 xbmc/dialogs/GUIDialogKeyboardGeneric.h
  17. +2 −0 xbmc/dialogs/GUIDialogSmartPlaylistEditor.cpp
  18. +1 −1 xbmc/dialogs/GUIDialogSmartPlaylistRule.cpp
  19. +1 −1 xbmc/filesystem/MusicDatabaseDirectory/DirectoryNodeArtist.cpp
  20. +8 −1 xbmc/guilib/GUIKeyboardFactory.cpp
  21. +20 −147 xbmc/guilib/Geometry.h
  22. +5 −9 xbmc/interfaces/Builtins.cpp
  23. +3 −3 xbmc/interfaces/http-api/XBMChttp.cpp
  24. +58 −16 xbmc/interfaces/json-rpc/AudioLibrary.cpp
  25. +2 −4 xbmc/interfaces/json-rpc/FileItemHandler.cpp
  26. +125 −65 xbmc/interfaces/json-rpc/ServiceDescription.h
  27. +101 −24 xbmc/interfaces/json-rpc/VideoLibrary.cpp
  28. +0 −1 xbmc/interfaces/json-rpc/VideoLibrary.h
  29. +79 −17 xbmc/interfaces/json-rpc/methods.json
  30. +2 −2 xbmc/interfaces/json-rpc/notifications.json
  31. +43 −46 xbmc/interfaces/json-rpc/types.json
  32. +2 −2 xbmc/interfaces/python/xbmcmodule/xbmcmodule.cpp
  33. +84 −27 xbmc/music/MusicDatabase.cpp
  34. +1 −1 xbmc/music/MusicDatabase.h
  35. +1 −1 xbmc/music/infoscanner/MusicInfoScanner.cpp
  36. +6 −6 xbmc/music/tags/MusicInfoTag.cpp
  37. +1 −1 xbmc/network/websocket/WebSocketV13.cpp
  38. +4 −0 xbmc/osx/IOSScreenManager.mm
  39. +3 −3 xbmc/osx/ios/IOSKeyboardView.h
  40. +6 −0 xbmc/pictures/GUIDialogPictureInfo.cpp
  41. +6 −1 xbmc/playlists/PlayListFactory.cpp
  42. +117 −0 xbmc/playlists/PlayListM3U.cpp
  43. +7 −1 xbmc/playlists/PlayListM3U.h
  44. +40 −16 xbmc/playlists/SmartPlayList.cpp
  45. +1 −1 xbmc/settings/Settings.cpp
  46. +2 −0 xbmc/utils/DatabaseUtils.cpp
  47. +1 −1 xbmc/utils/DatabaseUtils.h
  48. +207 −82 xbmc/video/VideoDatabase.cpp
  49. +12 −12 xbmc/video/VideoDatabase.h
  50. +19 −24 xbmc/video/VideoInfoTag.cpp
  51. +2 −2 xbmc/video/VideoInfoTag.h
  52. +6 −0 xbmc/windowing/windows/WinEventsWin32.cpp
  53. +2 −5 xbmc/windowing/windows/WinSystemWin32.cpp
@@ -6598,7 +6598,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "if [ ${XCODE_VERSION_MINOR} -gt 400 ]\nthen\n TARGET_OUTPUT_DIR=\"${PROJECT_DIR}/build/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}\"\n mkdir -p \"${TARGET_OUTPUT_DIR}\"\n\n ln -sf \"${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}\" \"${TARGET_OUTPUT_DIR}/\"\n ln -sf \"${BUILT_PRODUCTS_DIR}/${DWARF_DSYM_FILE_NAME}\" \"${TARGET_OUTPUT_DIR}/\"\nfi";
+ shellScript = "if [ ${XCODE_VERSION_MINOR} -gt 400 ]\nthen\n TARGET_OUTPUT_DIR=\"${PROJECT_DIR}/build/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}\"\n mkdir -p \"${TARGET_OUTPUT_DIR}\"\n if [ \"${BUILT_PRODUCTS_DIR}\" != \"${TARGET_OUTPUT_DIR}\" ]\n then\n rm -rf \"${TARGET_OUTPUT_DIR}/${FULL_PRODUCT_NAME}\"\n rm -rf \"${TARGET_OUTPUT_DIR}/${DWARF_DSYM_FILE_NAME}\"\n ln -s \"${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}\" \"${TARGET_OUTPUT_DIR}/\" || true\n ln -s \"${BUILT_PRODUCTS_DIR}/${DWARF_DSYM_FILE_NAME}\" \"${TARGET_OUTPUT_DIR}/\" || true\n fi\nfi";
};
F589B48B128A696700D8079E /* copy root files */ = {
isa = PBXShellScriptBuildPhase;
@@ -6586,7 +6586,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "if [ ${XCODE_VERSION_MINOR} -gt 400 ]\nthen\n TARGET_OUTPUT_DIR=\"${PROJECT_DIR}/build/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}\"\n mkdir -p \"${TARGET_OUTPUT_DIR}\"\n\n ln -sf \"${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}\" \"${TARGET_OUTPUT_DIR}/\"\n ln -sf \"${BUILT_PRODUCTS_DIR}/${DWARF_DSYM_FILE_NAME}\" \"${TARGET_OUTPUT_DIR}/\"\nfi";
+ shellScript = "if [ ${XCODE_VERSION_MINOR} -gt 400 ]\nthen\n TARGET_OUTPUT_DIR=\"${PROJECT_DIR}/build/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}\"\n mkdir -p \"${TARGET_OUTPUT_DIR}\"\n\n if [ \"${BUILT_PRODUCTS_DIR}\" != \"${TARGET_OUTPUT_DIR}\" ]\n then\n rm -rf \"${TARGET_OUTPUT_DIR}/${FULL_PRODUCT_NAME}\"\n rm -rf \"${TARGET_OUTPUT_DIR}/${DWARF_DSYM_FILE_NAME}\"\n ln -s \"${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}\" \"${TARGET_OUTPUT_DIR}/\" || true\n ln -s \"${BUILT_PRODUCTS_DIR}/${DWARF_DSYM_FILE_NAME}\" \"${TARGET_OUTPUT_DIR}/\" || true\n fi\nfi";
};
3234980612AF0B3400657FF1 /* codesign */ = {
isa = PBXShellScriptBuildPhase;
@@ -6631,7 +6631,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "if [ ${XCODE_VERSION_MINOR} -gt 400 ]\nthen\n TARGET_OUTPUT_DIR=\"${PROJECT_DIR}/build/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}\"\n mkdir -p \"${TARGET_OUTPUT_DIR}\"\n\n ln -sf \"${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}\" \"${TARGET_OUTPUT_DIR}/\"\n ln -sf \"${BUILT_PRODUCTS_DIR}/${DWARF_DSYM_FILE_NAME}\" \"${TARGET_OUTPUT_DIR}/\"\nfi";
+ shellScript = "if [ ${XCODE_VERSION_MINOR} -gt 400 ]\nthen\n TARGET_OUTPUT_DIR=\"${PROJECT_DIR}/build/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}\"\n mkdir -p \"${TARGET_OUTPUT_DIR}\"\n\n if [ \"${BUILT_PRODUCTS_DIR}\" != \"${TARGET_OUTPUT_DIR}\" ]\n then\n rm -rf \"${TARGET_OUTPUT_DIR}/${FULL_PRODUCT_NAME}\"\n rm -rf \"${TARGET_OUTPUT_DIR}/${DWARF_DSYM_FILE_NAME}\"\n ln -s \"${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}\" \"${TARGET_OUTPUT_DIR}/\" || true\n ln -s \"${BUILT_PRODUCTS_DIR}/${DWARF_DSYM_FILE_NAME}\" \"${TARGET_OUTPUT_DIR}/\" || true\n fi\nfi";
};
1D64E5FC157BD76F001ACEBE /* genoutputdirlink */ = {
isa = PBXShellScriptBuildPhase;
@@ -6645,7 +6645,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "if [ ${XCODE_VERSION_MINOR} -gt 400 ]\nthen\n TARGET_OUTPUT_DIR=\"${PROJECT_DIR}/build/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}\"\n mkdir -p \"${TARGET_OUTPUT_DIR}\"\n\n ln -sf \"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}\" \"${TARGET_OUTPUT_DIR}/\"\n ln -sf \"${BUILT_PRODUCTS_DIR}/${PROJECT_NAME}${DWARF_DSYM_FILE_NAME}\" \"${TARGET_OUTPUT_DIR}/\"\nfi";
+ shellScript = "if [ ${XCODE_VERSION_MINOR} -gt 400 ]\nthen\n TARGET_OUTPUT_DIR=\"${PROJECT_DIR}/build/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}\"\n mkdir -p \"${TARGET_OUTPUT_DIR}\"\n\n if [ \"${BUILT_PRODUCTS_DIR}\" != \"${TARGET_OUTPUT_DIR}\" ]\n then\n rm -rf \"${TARGET_OUTPUT_DIR}/${PRODUCT_NAME}\"\n rm -rf \"${TARGET_OUTPUT_DIR}/${PROJECT_NAME}${DWARF_DSYM_FILE_NAME}\"\n ln -s \"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}\" \"${TARGET_OUTPUT_DIR}/\" || true\n ln -s \"${BUILT_PRODUCTS_DIR}/${PROJECT_NAME}${DWARF_DSYM_FILE_NAME}\" \"${TARGET_OUTPUT_DIR}/\" || true\n fi\nfi";
};
6E2FACC70E26E22400DF79EA /* copy frameworks */ = {
isa = PBXShellScriptBuildPhase;
View
@@ -80,6 +80,7 @@ from the step 3.1.
$ make -C tools/darwin/depends/xbmc
$ make clean
$ make xcode_depends
+ $ make -C lib/addons/script.module.pil
-----------------------------------------------------------------------------
4.1 Using Xcode
View
@@ -98,7 +98,9 @@ Tip: by adding -j<number> to the make command, you describe how many
$ make -j2
-.3 $ make install
+.3 $ make -C lib/addons/script.module.pil
+
+.4 $ make install
This will install XBMC in the prefix provided in 4.1 as well as a launcher script.
View
@@ -94,6 +94,7 @@ first. This is a simple step and involves the following:
$ make -C tools/darwin/depends/xbmc
$ make clean
$ make xcode_depends
+ $ make -C lib/addons/script.module.pil
4.b Compilation by using command-line building via make (experimental)
@@ -175,6 +176,7 @@ developers).
$ cd $HOME/XBMC
$ export XBMC_HOME=`pwd`
$ make xcode_depends
+ $ make -C lib/addons/script.module.pil
$ xcodebuild -sdk macosx10.7 -project XBMC.xcodeproj -target XBMC.app ONLY_ACTIVE_ARCH=YES \
ARCHS=x86_64 VALID_ARCHS=x86_64 -configuration Release build
View
@@ -1367,7 +1367,7 @@ bool CApplication::Initialize()
CLog::Log(LOGINFO, "removing tempfiles");
CUtil::RemoveTempFiles();
- // if the user shutoff the xbox during music scan
+ // if the user shutoff the system during music scan
// restore the settings
if (g_settings.m_bMyMusicIsScanning)
{
@@ -5688,8 +5688,13 @@ float CApplication::GetPercentage() const
float CApplication::GetCachePercentage() const
{
if (IsPlaying() && m_pPlayer)
- return m_pPlayer->GetCachePercentage();
-
+ {
+ // Note that the player returns a relative cache percentage and we want an absolute percentage
+ // We also need to take into account the stack's total time vs. currently playing file's total time
+ float stackedTotalTime = (float) GetTotalTime();
+ if (stackedTotalTime > 0.0f)
+ return min( 100.0f, GetPercentage() + (m_pPlayer->GetCachePercentage() * m_pPlayer->GetTotalTime() / stackedTotalTime ) );
+ }
return 0.0f;
}
View
@@ -1530,8 +1530,7 @@ void CFileItemList::SetFastLookup(bool fastLookup)
for (unsigned int i=0; i < m_items.size(); i++)
{
CFileItemPtr pItem = m_items[i];
- CStdString path(pItem->GetPath()); path.ToLower();
- m_map.insert(MAPFILEITEMSPAIR(path, pItem));
+ m_map.insert(MAPFILEITEMSPAIR(pItem->GetPath(), pItem));
}
}
if (!fastLookup && m_fastLookup)
@@ -1543,15 +1542,14 @@ bool CFileItemList::Contains(const CStdString& fileName) const
{
CSingleLock lock(m_lock);
- // checks case insensitive
- CStdString checkPath(fileName); checkPath.ToLower();
if (m_fastLookup)
- return m_map.find(checkPath) != m_map.end();
+ return m_map.find(fileName) != m_map.end();
+
// slow method...
for (unsigned int i = 0; i < m_items.size(); i++)
{
const CFileItemPtr pItem = m_items[i];
- if (pItem->GetPath().Equals(checkPath))
+ if (pItem->GetPath().Equals(fileName))
return true;
}
return false;
@@ -1592,9 +1590,7 @@ void CFileItemList::Add(const CFileItemPtr &pItem)
m_items.push_back(pItem);
if (m_fastLookup)
{
- CStdString path(pItem->GetPath());
- path.ToLower();
- m_map.insert(MAPFILEITEMSPAIR(path, pItem));
+ m_map.insert(MAPFILEITEMSPAIR(pItem->GetPath(), pItem));
}
}
@@ -1612,8 +1608,7 @@ void CFileItemList::AddFront(const CFileItemPtr &pItem, int itemPosition)
}
if (m_fastLookup)
{
- CStdString path(pItem->GetPath()); path.ToLower();
- m_map.insert(MAPFILEITEMSPAIR(path, pItem));
+ m_map.insert(MAPFILEITEMSPAIR(pItem->GetPath(), pItem));
}
}
@@ -1628,8 +1623,7 @@ void CFileItemList::Remove(CFileItem* pItem)
m_items.erase(it);
if (m_fastLookup)
{
- CStdString path(pItem->GetPath()); path.ToLower();
- m_map.erase(path);
+ m_map.erase(pItem->GetPath());
}
break;
}
@@ -1645,8 +1639,7 @@ void CFileItemList::Remove(int iItem)
CFileItemPtr pItem = *(m_items.begin() + iItem);
if (m_fastLookup)
{
- CStdString path(pItem->GetPath()); path.ToLower();
- m_map.erase(path);
+ m_map.erase(pItem->GetPath());
}
m_items.erase(m_items.begin() + iItem);
}
@@ -1724,11 +1717,9 @@ CFileItemPtr CFileItemList::Get(const CStdString& strPath)
{
CSingleLock lock(m_lock);
- CStdString pathToCheck(strPath); pathToCheck.ToLower();
-
if (m_fastLookup)
{
- IMAPFILEITEMS it=m_map.find(pathToCheck);
+ IMAPFILEITEMS it=m_map.find(strPath);
if (it != m_map.end())
return it->second;
@@ -1738,7 +1729,7 @@ CFileItemPtr CFileItemList::Get(const CStdString& strPath)
for (unsigned int i = 0; i < m_items.size(); i++)
{
CFileItemPtr pItem = m_items[i];
- if (pItem->GetPath().Equals(pathToCheck))
+ if (pItem->GetPath().Equals(strPath))
return pItem;
}
@@ -1748,12 +1739,10 @@ CFileItemPtr CFileItemList::Get(const CStdString& strPath)
const CFileItemPtr CFileItemList::Get(const CStdString& strPath) const
{
CSingleLock lock(m_lock);
-
- CStdString pathToCheck(strPath); pathToCheck.ToLower();
-
+
if (m_fastLookup)
{
- map<CStdString, CFileItemPtr>::const_iterator it=m_map.find(pathToCheck);
+ map<CStdString, CFileItemPtr>::const_iterator it=m_map.find(strPath);
if (it != m_map.end())
return it->second;
@@ -1763,7 +1752,7 @@ const CFileItemPtr CFileItemList::Get(const CStdString& strPath) const
for (unsigned int i = 0; i < m_items.size(); i++)
{
CFileItemPtr pItem = m_items[i];
- if (pItem->GetPath().Equals(pathToCheck))
+ if (pItem->GetPath().Equals(strPath))
return pItem;
}
View
@@ -2005,7 +2005,7 @@ bool CGUIInfoManager::GetBool(int condition1, int contextWindow, const CGUIListI
if (item && condition >= LISTITEM_START && condition < LISTITEM_END)
bReturn = GetItemBool(item, condition);
// Ethernet Link state checking
- // Will check if the Xbox has a Ethernet Link connection! [Cable in!]
+ // Will check if system has a Ethernet Link connection! [Cable in!]
// This can used for the skinner to switch off Network or Inter required functions
else if ( condition == SYSTEM_ALWAYS_TRUE)
bReturn = true;
@@ -644,8 +644,9 @@ void CAESinkDirectSound::CheckPlayStatus()
if (!(status & DSBSTATUS_PLAYING) && m_CacheLen != 0) // If we have some data, see if we can start playback
{
HRESULT hr = m_pBuffer->Play(0, 0, DSBPLAY_LOOPING);
- dserr2str(hr);
CLog::Log(LOGDEBUG,__FUNCTION__ ": Resuming Playback");
+ if (FAILED(hr))
+ CLog::Log(LOGERROR, __FUNCTION__": Failed to play the DirectSound buffer: %s", dserr2str(hr));
}
}
@@ -64,16 +64,26 @@ static const uint32_t DTSSampleRates[DTS_SFREQ_COUNT] =
};
CAEStreamInfo::CAEStreamInfo() :
- m_bufferSize(0),
- m_skipBytes (0),
- m_coreOnly (false),
- m_needBytes (0),
- m_syncFunc (&CAEStreamInfo::DetectType),
- m_hasSync (false),
- m_sampleRate(0),
- m_dtsBlocks (0),
- m_dataType (STREAM_TYPE_NULL),
- m_packFunc (NULL)
+ m_bufferSize (0),
+ m_skipBytes (0),
+ m_coreOnly (false),
+ m_needBytes (0),
+ m_syncFunc (&CAEStreamInfo::DetectType),
+ m_hasSync (false),
+ m_sampleRate (0),
+ m_outputRate (0),
+ m_outputChannels(0),
+ m_channelMap (CAEChannelInfo()),
+ m_channels (0),
+ m_coreSize (0),
+ m_dtsBlocks (0),
+ m_dtsPeriod (0),
+ m_fsize (0),
+ m_repeat (0),
+ m_substreams (0),
+ m_dataType (STREAM_TYPE_NULL),
+ m_dataIsLE (false),
+ m_packFunc (NULL)
{
m_dllAvUtil.Load();
m_dllAvUtil.av_crc_init(m_crcTrueHD, 0, 16, 0x2D, sizeof(m_crcTrueHD));
@@ -276,7 +276,7 @@ inline void CBaseRenderer::ReorderDrawPoints()
}
- int diff = (m_destRect.Height() - m_destRect.Width()) / 2;
+ int diff = (int) ((m_destRect.Height() - m_destRect.Width()) / 2);
for (int destIdx=0, srcIdx=pointOffset; destIdx < 4; destIdx++)
{
@@ -66,7 +66,8 @@ CDVDInputStream* CDVDFactoryInputStream::CreateInputStream(IDVDPlayer* pPlayer,
|| file.substr(0, 6) == "tcp://"
|| file.substr(0, 6) == "mms://"
|| file.substr(0, 7) == "mmst://"
- || file.substr(0, 7) == "mmsh://")
+ || file.substr(0, 7) == "mmsh://"
+ || (item.IsInternetStream() && item.IsType(".m3u8")))
return new CDVDInputStreamFFmpeg();
else if(file.substr(0, 8) == "sling://"
|| file.substr(0, 7) == "myth://"
@@ -78,6 +78,7 @@
#include "storage/MediaManager.h"
#include "dialogs/GUIDialogBusy.h"
#include "dialogs/GUIDialogKaiToast.h"
+#include "xbmc/playlists/PlayListM3U.h"
#include "utils/StringUtils.h"
#include "Util.h"
#include "LangInfo.h"
@@ -551,6 +552,18 @@ bool CDVDPlayer::OpenInputStream()
m_filename = g_mediaManager.TranslateDevicePath("");
}
retry:
+ // before creating the input stream, if this is an HLS playlist then get the
+ // most appropriate bitrate based on our network settings
+ if (filename.Left(7) == "http://" && filename.Right(5) == ".m3u8")
+ {
+ // get the available bandwidth (as per user settings)
+ int maxrate = g_guiSettings.GetInt("network.bandwidth");
+ if(maxrate <= 0)
+ maxrate = INT_MAX;
+
+ // determine the most appropriate stream
+ m_filename = PLAYLIST::CPlayListM3U::GetBestBandwidthStream(m_filename, (size_t)maxrate);
+ }
m_pInputStream = CDVDFactoryInputStream::CreateInputStream(this, m_filename, m_mimetype);
if(m_pInputStream == NULL)
{
@@ -2600,7 +2613,7 @@ float CDVDPlayer::GetPercentage()
float CDVDPlayer::GetCachePercentage()
{
CSingleLock lock(m_StateSection);
- return min(100.0, GetPercentage() + m_State.cache_offset * 100);
+ return m_State.cache_offset * 100; // NOTE: Percentage returned is relative
}
void CDVDPlayer::SetAVDelay(float fValue)
@@ -86,7 +86,7 @@ void CGUIDialogKeyboardGeneric::OnInitWindow()
}
// set heading
- if (!m_strHeading.IsEmpty())
+ if (!m_strHeading.empty())
{
SET_CONTROL_LABEL(CTL_LABEL_HEADING, m_strHeading);
SET_CONTROL_VISIBLE(CTL_LABEL_HEADING);
@@ -616,12 +616,9 @@ void CGUIDialogKeyboardGeneric::OnOK()
Close();
}
-void CGUIDialogKeyboardGeneric::SetHeading(const CVariant &heading)
+void CGUIDialogKeyboardGeneric::SetHeading(const std::string &heading)
{
- if (heading.isString())
- m_strHeading = heading.asString();
- else if (heading.isInteger() && heading.asInteger())
- m_strHeading = g_localizeStrings.Get((uint32_t)heading.asInteger());
+ m_strHeading = heading;
}
int CGUIDialogKeyboardGeneric::GetWindowId() const
@@ -38,7 +38,7 @@ class CGUIDialogKeyboardGeneric : public CGUIDialog, public CGUIKeyboard
//CGUIDialog Interface
virtual void FrameMove();
- void SetHeading(const CVariant& heading);
+ void SetHeading(const std::string& heading);
void SetText(const CStdString& aTextString);
CStdString GetText() const;
bool IsConfirmed() { return m_bIsConfirmed; };
@@ -78,7 +78,7 @@ class CGUIDialogKeyboardGeneric : public CGUIDialog, public CGUIKeyboard
unsigned int m_lastRemoteClickTime;
WORD m_lastRemoteKeyClicked;
int m_indexInSeries;
- CStdString m_strHeading;
+ std::string m_strHeading;
static const char* s_charsSeries[10];
@@ -496,6 +496,8 @@ bool CGUIDialogSmartPlaylistEditor::EditPlaylist(const CStdString &path, const C
}
editor->m_playlist = playlist;
+ if (editor->m_playlist.m_playlistRules.size() <= 0)
+ editor->m_playlist.m_playlistRules.push_back(CSmartPlaylistRule());
editor->m_path = path;
editor->Initialize();
editor->DoModal(g_windowManager.GetActiveWindow());
@@ -135,7 +135,7 @@ void CGUIDialogSmartPlaylistRule::OnBrowse()
else if (m_rule.m_field == FieldArtist || m_rule.m_field == FieldAlbumArtist)
{
if (m_type.Equals("songs") || m_type.Equals("mixed") || m_type.Equals("albums"))
- database.GetArtistsNav("musicdb://2/",items,-1,m_rule.m_field == FieldAlbumArtist);
+ database.GetArtistsNav("musicdb://2/", items, m_rule.m_field == FieldAlbumArtist, -1);
if (m_type.Equals("musicvideos") || m_type.Equals("mixed"))
{
CFileItemList items2;
@@ -56,7 +56,7 @@ bool CDirectoryNodeArtist::GetContent(CFileItemList& items) const
CQueryParams params;
CollectQueryParams(params);
- bool bSuccess = musicdatabase.GetArtistsNav(BuildPath(), items, params.GetGenreId(), !g_guiSettings.GetBool("musiclibrary.showcompilationartists"));
+ bool bSuccess = musicdatabase.GetArtistsNav(BuildPath(), items, !g_guiSettings.GetBool("musiclibrary.showcompilationartists"), params.GetGenreId());
musicdatabase.Close();
Oops, something went wrong.

0 comments on commit 18abdbe

Please sign in to comment.