mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
xbmc-pvr: update to xbmc-pvr-a62f4d4
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
72d3c2830a
commit
66ece117bf
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-pvr-theme-Confluence"
|
||||
PKG_VERSION="84817e6"
|
||||
PKG_VERSION="a62f4d4"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-pvr"
|
||||
PKG_VERSION="84817e6"
|
||||
PKG_VERSION="a62f4d4"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -1,255 +0,0 @@
|
||||
From ee1a1e2c428b5923da9c39f5a78bc9208e4f2047 Mon Sep 17 00:00:00 2001
|
||||
From: CrystalP <CrystalP@xbmc.org>
|
||||
Date: Mon, 2 Jan 2012 02:48:24 -0500
|
||||
Subject: [PATCH] [WIN] fix reporting system memory > 4GB. Need to use
|
||||
GlobalMemoryEx/MEMORYSTATUSEX instead of GlobalMemory
|
||||
|
||||
---
|
||||
xbmc/GUIInfoManager.cpp | 13 ++++----
|
||||
xbmc/guilib/TextureBundleXPR.cpp | 9 +++--
|
||||
xbmc/interfaces/python/xbmcmodule/xbmcmodule.cpp | 7 ++--
|
||||
xbmc/linux/PlatformDefs.h | 12 ++++----
|
||||
xbmc/linux/XSyncUtils.cpp | 36 ++++++++++-----------
|
||||
xbmc/linux/XSyncUtils.h | 2 +-
|
||||
xbmc/windows/GUIWindowDebugInfo.cpp | 11 ++++---
|
||||
7 files changed, 46 insertions(+), 44 deletions(-)
|
||||
|
||||
diff --git a/xbmc/GUIInfoManager.cpp b/xbmc/GUIInfoManager.cpp
|
||||
index 0e73d84..1faac26 100644
|
||||
--- a/xbmc/GUIInfoManager.cpp
|
||||
+++ b/xbmc/GUIInfoManager.cpp
|
||||
@@ -1393,21 +1393,22 @@ CStdString CGUIInfoManager::GetLabel(int info, int contextWindow)
|
||||
case SYSTEM_USED_MEMORY_PERCENT:
|
||||
case SYSTEM_TOTAL_MEMORY:
|
||||
{
|
||||
- MEMORYSTATUS stat;
|
||||
- GlobalMemoryStatus(&stat);
|
||||
- int iMemPercentFree = 100 - ((int)( 100.0f* (stat.dwTotalPhys - stat.dwAvailPhys)/stat.dwTotalPhys + 0.5f ));
|
||||
+ MEMORYSTATUSEX stat;
|
||||
+ stat.dwLength = sizeof(MEMORYSTATUSEX);
|
||||
+ GlobalMemoryStatusEx(&stat);
|
||||
+ int iMemPercentFree = 100 - ((int)( 100.0f* (stat.ullTotalPhys - stat.ullAvailPhys)/stat.ullTotalPhys + 0.5f ));
|
||||
int iMemPercentUsed = 100 - iMemPercentFree;
|
||||
|
||||
if (info == SYSTEM_FREE_MEMORY)
|
||||
- strLabel.Format("%luMB", (ULONG)(stat.dwAvailPhys/MB));
|
||||
+ strLabel.Format("%luMB", (ULONG)(stat.ullAvailPhys/MB));
|
||||
else if (info == SYSTEM_FREE_MEMORY_PERCENT)
|
||||
strLabel.Format("%i%%", iMemPercentFree);
|
||||
else if (info == SYSTEM_USED_MEMORY)
|
||||
- strLabel.Format("%luMB", (ULONG)((stat.dwTotalPhys - stat.dwAvailPhys)/MB));
|
||||
+ strLabel.Format("%luMB", (ULONG)((stat.ullTotalPhys - stat.ullAvailPhys)/MB));
|
||||
else if (info == SYSTEM_USED_MEMORY_PERCENT)
|
||||
strLabel.Format("%i%%", iMemPercentUsed);
|
||||
else if (info == SYSTEM_TOTAL_MEMORY)
|
||||
- strLabel.Format("%luMB", (ULONG)(stat.dwTotalPhys/MB));
|
||||
+ strLabel.Format("%luMB", (ULONG)(stat.ullTotalPhys/MB));
|
||||
}
|
||||
break;
|
||||
case SYSTEM_SCREEN_MODE:
|
||||
diff --git a/xbmc/guilib/TextureBundleXPR.cpp b/xbmc/guilib/TextureBundleXPR.cpp
|
||||
index d6df822..037b4c6 100644
|
||||
--- a/xbmc/guilib/TextureBundleXPR.cpp
|
||||
+++ b/xbmc/guilib/TextureBundleXPR.cpp
|
||||
@@ -279,10 +279,11 @@ bool CTextureBundleXPR::LoadFile(const CStdString& Filename, CAutoTexBuffer& Unp
|
||||
if (!buffer || !UnpackedBuf.Set((BYTE*)XPhysicalAlloc(file->second.UnpackedSize, MAXULONG_PTR, 128, PAGE_READWRITE)))
|
||||
{ // failed due to lack of memory
|
||||
#ifndef _LINUX
|
||||
- MEMORYSTATUS stat;
|
||||
- GlobalMemoryStatus(&stat);
|
||||
- CLog::Log(LOGERROR, "Out of memory loading texture: %s (need %lu bytes, have %lu bytes)", name.c_str(),
|
||||
- file->second.UnpackedSize + file->second.PackedSize, stat.dwAvailPhys);
|
||||
+ MEMORYSTATUSEX stat;
|
||||
+ stat.dwLength = sizeof(MEMORYSTATUSEX);
|
||||
+ GlobalMemoryStatusEx(&stat);
|
||||
+ CLog::Log(LOGERROR, "Out of memory loading texture: %s (need %lu bytes, have %"PRIu64" bytes)", name.c_str(),
|
||||
+ file->second.UnpackedSize + file->second.PackedSize, stat.ullAvailPhys);
|
||||
#elif defined(__APPLE__) || defined(__FreeBSD__)
|
||||
CLog::Log(LOGERROR, "Out of memory loading texture: %s (need %d bytes)", name.c_str(),
|
||||
file->second.UnpackedSize + file->second.PackedSize);
|
||||
diff --git a/xbmc/interfaces/python/xbmcmodule/xbmcmodule.cpp b/xbmc/interfaces/python/xbmcmodule/xbmcmodule.cpp
|
||||
index 22ebe2e..910b0cc 100644
|
||||
--- a/xbmc/interfaces/python/xbmcmodule/xbmcmodule.cpp
|
||||
+++ b/xbmc/interfaces/python/xbmcmodule/xbmcmodule.cpp
|
||||
@@ -434,9 +434,10 @@
|
||||
|
||||
PyObject* XBMC_GetFreeMem(PyObject *self, PyObject *args)
|
||||
{
|
||||
- MEMORYSTATUS stat;
|
||||
- GlobalMemoryStatus(&stat);
|
||||
- return PyInt_FromLong( stat.dwAvailPhys / ( 1024 * 1024 ) );
|
||||
+ MEMORYSTATUSEX stat;
|
||||
+ stat.dwLength = sizeof(MEMORYSTATUSEX);
|
||||
+ GlobalMemoryStatusEx(&stat);
|
||||
+ return PyInt_FromLong( stat.ullAvailPhys / ( 1024 * 1024 ) );
|
||||
}
|
||||
|
||||
// getCpuTemp() method
|
||||
diff --git a/xbmc/linux/PlatformDefs.h b/xbmc/linux/PlatformDefs.h
|
||||
index 8910bbc..aaed576 100644
|
||||
--- a/xbmc/linux/PlatformDefs.h
|
||||
+++ b/xbmc/linux/PlatformDefs.h
|
||||
@@ -423,18 +423,18 @@ struct _stati64 {
|
||||
#define _stat stat
|
||||
|
||||
// Memory
|
||||
-typedef struct _MEMORYSTATUS
|
||||
+typedef struct _MEMORYSTATUSEX
|
||||
{
|
||||
DWORD dwLength;
|
||||
DWORD dwMemoryLoad;
|
||||
|
||||
uint64_t dwTotalPhys;
|
||||
uint64_t dwAvailPhys;
|
||||
- uint64_t dwTotalPageFile;
|
||||
- uint64_t dwAvailPageFile;
|
||||
- uint64_t dwTotalVirtual;
|
||||
- uint64_t dwAvailVirtual;
|
||||
-} MEMORYSTATUS, *LPMEMORYSTATUS;
|
||||
+ uint64_t ullTotalPageFile;
|
||||
+ uint64_t ullAvailPageFile;
|
||||
+ uint64_t ullTotalVirtual;
|
||||
+ uint64_t ullAvailVirtual;
|
||||
+} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
|
||||
|
||||
// Common HRESULT values
|
||||
#ifndef NOERROR
|
||||
diff --git a/xbmc/linux/XSyncUtils.cpp b/xbmc/linux/XSyncUtils.cpp
|
||||
index 454ff85..19c4b5a 100644
|
||||
--- a/xbmc/linux/XSyncUtils.cpp
|
||||
+++ b/xbmc/linux/XSyncUtils.cpp
|
||||
@@ -47,13 +47,12 @@
|
||||
static FILE* procMeminfoFP = NULL;
|
||||
#endif
|
||||
|
||||
-void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
|
||||
+void GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer)
|
||||
{
|
||||
if (!lpBuffer)
|
||||
return;
|
||||
|
||||
- memset(lpBuffer, 0, sizeof(MEMORYSTATUS));
|
||||
- lpBuffer->dwLength = sizeof(MEMORYSTATUS);
|
||||
+ memset(lpBuffer, 0, sizeof(MEMORYSTATUSEX));
|
||||
|
||||
#ifdef __APPLE__
|
||||
uint64_t physmem;
|
||||
@@ -63,7 +62,7 @@ void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
|
||||
|
||||
// Total physical memory.
|
||||
if (sysctl(mib, miblen, &physmem, &len, NULL, 0) == 0 && len == sizeof (physmem))
|
||||
- lpBuffer->dwTotalPhys = physmem;
|
||||
+ lpBuffer->ullTotalPhys = physmem;
|
||||
|
||||
// Virtual memory.
|
||||
mib[0] = CTL_VM; mib[1] = VM_SWAPUSAGE;
|
||||
@@ -71,8 +70,8 @@ void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
|
||||
len = sizeof(struct xsw_usage);
|
||||
if (sysctl(mib, miblen, &swap, &len, NULL, 0) == 0)
|
||||
{
|
||||
- lpBuffer->dwAvailPageFile = swap.xsu_avail;
|
||||
- lpBuffer->dwTotalVirtual = lpBuffer->dwTotalPhys + swap.xsu_total;
|
||||
+ lpBuffer->ullAvailPageFile = swap.xsu_avail;
|
||||
+ lpBuffer->ullTotalVirtual = lpBuffer->ullTotalPhys + swap.xsu_total;
|
||||
}
|
||||
|
||||
// In use.
|
||||
@@ -89,8 +88,8 @@ void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
|
||||
{
|
||||
uint64_t used = (vm_stat.active_count + vm_stat.inactive_count + vm_stat.wire_count) * pageSize;
|
||||
|
||||
- lpBuffer->dwAvailPhys = lpBuffer->dwTotalPhys - used;
|
||||
- lpBuffer->dwAvailVirtual = lpBuffer->dwAvailPhys; // FIXME.
|
||||
+ lpBuffer->ullAvailPhys = lpBuffer->ullTotalPhys - used;
|
||||
+ lpBuffer->ullAvailVirtual = lpBuffer->ullAvailPhys; // FIXME.
|
||||
}
|
||||
}
|
||||
#elif defined(__FreeBSD__)
|
||||
@@ -101,8 +100,8 @@ void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
|
||||
/* physmem */
|
||||
len = sizeof(physmem);
|
||||
if (sysctlbyname("hw.physmem", &physmem, &len, NULL, 0) == 0) {
|
||||
- lpBuffer->dwTotalPhys = physmem;
|
||||
- lpBuffer->dwTotalVirtual = physmem;
|
||||
+ lpBuffer->ullTotalPhys = physmem;
|
||||
+ lpBuffer->ullTotalVirtual = physmem;
|
||||
}
|
||||
/* pagesize */
|
||||
len = sizeof(pagesize);
|
||||
@@ -122,11 +121,11 @@ void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
|
||||
mem_free *= pagesize;
|
||||
|
||||
/* mem_avail = mem_inactive + mem_cache + mem_free */
|
||||
- lpBuffer->dwAvailPhys = mem_inactive + mem_cache + mem_free;
|
||||
- lpBuffer->dwAvailVirtual = mem_inactive + mem_cache + mem_free;
|
||||
+ lpBuffer->ullAvailPhys = mem_inactive + mem_cache + mem_free;
|
||||
+ lpBuffer->ullAvailVirtual = mem_inactive + mem_cache + mem_free;
|
||||
|
||||
if (sysctlbyname("vm.stats.vm.v_swappgsout", &swap_free, &len, NULL, 0) == 0)
|
||||
- lpBuffer->dwAvailPageFile = swap_free * pagesize;
|
||||
+ lpBuffer->ullAvailPageFile = swap_free * pagesize;
|
||||
#else
|
||||
struct sysinfo info;
|
||||
char name[32];
|
||||
@@ -159,12 +158,11 @@ void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
|
||||
rewind(procMeminfoFP);
|
||||
fflush(procMeminfoFP);
|
||||
}
|
||||
- lpBuffer->dwLength = sizeof(MEMORYSTATUS);
|
||||
- lpBuffer->dwAvailPageFile = (info.freeswap * info.mem_unit);
|
||||
- lpBuffer->dwAvailPhys = ((info.freeram + info.bufferram) * info.mem_unit);
|
||||
- lpBuffer->dwAvailVirtual = ((info.freeram + info.bufferram) * info.mem_unit);
|
||||
- lpBuffer->dwTotalPhys = (info.totalram * info.mem_unit);
|
||||
- lpBuffer->dwTotalVirtual = (info.totalram * info.mem_unit);
|
||||
+ lpBuffer->ullAvailPageFile = (info.freeswap * info.mem_unit);
|
||||
+ lpBuffer->ullAvailPhys = ((info.freeram + info.bufferram) * info.mem_unit);
|
||||
+ lpBuffer->ullAvailVirtual = ((info.freeram + info.bufferram) * info.mem_unit);
|
||||
+ lpBuffer->ullTotalPhys = (info.totalram * info.mem_unit);
|
||||
+ lpBuffer->ullTotalVirtual = (info.totalram * info.mem_unit);
|
||||
#endif
|
||||
}
|
||||
|
||||
diff --git a/xbmc/linux/XSyncUtils.h b/xbmc/linux/XSyncUtils.h
|
||||
index c8effa2..f3ad36f 100644
|
||||
--- a/xbmc/linux/XSyncUtils.h
|
||||
+++ b/xbmc/linux/XSyncUtils.h
|
||||
@@ -36,7 +36,7 @@
|
||||
#define WAIT_ABANDONED ((STATUS_ABANDONED_WAIT_0 ) + 0 )
|
||||
#define WAIT_ABANDONED_0 ((STATUS_ABANDONED_WAIT_0 ) + 0 )
|
||||
|
||||
-void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer);
|
||||
+void GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer);
|
||||
|
||||
#endif
|
||||
|
||||
diff --git a/xbmc/windows/GUIWindowDebugInfo.cpp b/xbmc/windows/GUIWindowDebugInfo.cpp
|
||||
index 1b2bafa..916b032 100644
|
||||
--- a/xbmc/windows/GUIWindowDebugInfo.cpp
|
||||
+++ b/xbmc/windows/GUIWindowDebugInfo.cpp
|
||||
@@ -97,17 +97,18 @@ void CGUIWindowDebugInfo::Process(unsigned int currentTime, CDirtyRegionList &di
|
||||
CStdString info;
|
||||
if (LOG_LEVEL_DEBUG_FREEMEM <= g_advancedSettings.m_logLevel)
|
||||
{
|
||||
- MEMORYSTATUS stat;
|
||||
- GlobalMemoryStatus(&stat);
|
||||
+ MEMORYSTATUSEX stat;
|
||||
+ stat.dwLength = sizeof(MEMORYSTATUSEX);
|
||||
+ GlobalMemoryStatusEx(&stat);
|
||||
CStdString profiling = CGUIControlProfiler::IsRunning() ? " (profiling)" : "";
|
||||
CStdString strCores = g_cpuInfo.GetCoresUsageString();
|
||||
#if !defined(_LINUX)
|
||||
- info.Format("LOG: %sxbmc.log\nMEM: %d/%d KB - FPS: %2.1f fps\nCPU: %s%s", g_settings.m_logFolder.c_str(),
|
||||
- stat.dwAvailPhys/1024, stat.dwTotalPhys/1024, g_infoManager.GetFPS(), strCores.c_str(), profiling.c_str());
|
||||
+ info.Format("LOG: %sxbmc.log\nMEM: %"PRIu64"/%"PRIu64" KB - FPS: %2.1f fps\nCPU: %s%s", g_settings.m_logFolder.c_str(),
|
||||
+ stat.ullAvailPhys/1024, stat.ullTotalPhys/1024, g_infoManager.GetFPS(), strCores.c_str(), profiling.c_str());
|
||||
#else
|
||||
double dCPU = m_resourceCounter.GetCPUUsage();
|
||||
info.Format("LOG: %sxbmc.log\nMEM: %"PRIu64"/%"PRIu64" KB - FPS: %2.1f fps\nCPU: %s (CPU-XBMC %4.2f%%%s)", g_settings.m_logFolder.c_str(),
|
||||
- stat.dwAvailPhys/1024, stat.dwTotalPhys/1024, g_infoManager.GetFPS(), strCores.c_str(), dCPU, profiling.c_str());
|
||||
+ stat.ullAvailPhys/1024, stat.ullTotalPhys/1024, g_infoManager.GetFPS(), strCores.c_str(), dCPU, profiling.c_str());
|
||||
#endif
|
||||
}
|
||||
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,27 +0,0 @@
|
||||
From 2f91d0ca3735ab9b1abbfe6e3c6613e56951b7d2 Mon Sep 17 00:00:00 2001
|
||||
From: wsoltys <wiso@xbmc.org>
|
||||
Date: Mon, 2 Jan 2012 11:13:02 +0100
|
||||
Subject: [PATCH] fixed: Linux compiler error (hopefully)
|
||||
|
||||
---
|
||||
xbmc/linux/PlatformDefs.h | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/linux/PlatformDefs.h b/xbmc/linux/PlatformDefs.h
|
||||
index aaed576..33d1c96 100644
|
||||
--- a/xbmc/linux/PlatformDefs.h
|
||||
+++ b/xbmc/linux/PlatformDefs.h
|
||||
@@ -428,8 +428,8 @@ struct _stati64 {
|
||||
DWORD dwLength;
|
||||
DWORD dwMemoryLoad;
|
||||
|
||||
- uint64_t dwTotalPhys;
|
||||
- uint64_t dwAvailPhys;
|
||||
+ uint64_t ullTotalPhys;
|
||||
+ uint64_t ullAvailPhys;
|
||||
uint64_t ullTotalPageFile;
|
||||
uint64_t ullAvailPageFile;
|
||||
uint64_t ullTotalVirtual;
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 32df6ef9fc30cd2215e2a0886ceb5dab368ee31a Mon Sep 17 00:00:00 2001
|
||||
From: arnova <nospam@void.org>
|
||||
Date: Mon, 2 Jan 2012 11:41:02 +0100
|
||||
Subject: [PATCH] fixed: Linux compiler error (again)
|
||||
|
||||
---
|
||||
xbmc/GUIInfoManager.cpp | 7 ++++---
|
||||
1 files changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/xbmc/GUIInfoManager.cpp b/xbmc/GUIInfoManager.cpp
|
||||
index 1faac26..0102008 100644
|
||||
--- a/xbmc/GUIInfoManager.cpp
|
||||
+++ b/xbmc/GUIInfoManager.cpp
|
||||
@@ -1708,9 +1708,10 @@ bool CGUIInfoManager::GetInt(int &value, int info, int contextWindow, const CGUI
|
||||
case SYSTEM_FREE_MEMORY:
|
||||
case SYSTEM_USED_MEMORY:
|
||||
{
|
||||
- MEMORYSTATUS stat;
|
||||
- GlobalMemoryStatus(&stat);
|
||||
- int memPercentUsed = (int)( 100.0f* (stat.dwTotalPhys - stat.dwAvailPhys)/stat.dwTotalPhys + 0.5f );
|
||||
+ MEMORYSTATUSEX stat;
|
||||
+ stat.dwLength = sizeof(MEMORYSTATUSEX);
|
||||
+ GlobalMemoryStatusEx(&stat);
|
||||
+ int memPercentUsed = (int)( 100.0f* (stat.ullTotalPhys - stat.ullAvailPhys)/stat.ullTotalPhys + 0.5f );
|
||||
if (info == SYSTEM_FREE_MEMORY)
|
||||
value = 100 - memPercentUsed;
|
||||
else
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,40 +0,0 @@
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
|
||||
index d4892b5..697431c 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
|
||||
@@ -943,6 +943,7 @@ bool CVDPAU::ConfigVDPAU(AVCodecContext* avctx, int ref_frames)
|
||||
|
||||
m_vdpauOutputMethod = OUTPUT_NONE;
|
||||
|
||||
+ m_binterlacedFrame = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1203,8 +1204,14 @@ int CVDPAU::Decode(AVCodecContext *avctx, AVFrame *pFrame)
|
||||
m_DVDVideoPics.pop();
|
||||
}
|
||||
|
||||
+ if (!m_binterlacedFrame && m_DVDVideoPics.front().iFlags & DVP_FLAG_INTERLACED)
|
||||
+ {
|
||||
+ m_binterlacedFrame = m_DVDVideoPics.front().iFlags & DVP_FLAG_INTERLACED;
|
||||
+ CLog::Log(LOGNOTICE, "CVDPAU::ConfigOutputMethod: detected interlaced frame");
|
||||
+ }
|
||||
+
|
||||
if (mode == VS_DEINTERLACEMODE_FORCE
|
||||
- || (mode == VS_DEINTERLACEMODE_AUTO && m_DVDVideoPics.front().iFlags & DVP_FLAG_INTERLACED))
|
||||
+ || (mode == VS_DEINTERLACEMODE_AUTO && m_binterlacedFrame))
|
||||
{
|
||||
if((method == VS_INTERLACEMETHOD_AUTO_ION
|
||||
|| method == VS_INTERLACEMETHOD_VDPAU_BOB
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
|
||||
index 2056de1..fc1b9d0 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
|
||||
@@ -209,6 +209,7 @@ public:
|
||||
uint32_t max_references;
|
||||
Display* m_Display;
|
||||
bool vdpauConfigured;
|
||||
+ bool m_binterlacedFrame;
|
||||
|
||||
|
||||
VdpVideoMixerPictureStructure m_mixerfield;
|
@ -1,103 +0,0 @@
|
||||
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
|
||||
index 36eb715..c776f65 100644
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -4322,7 +4322,7 @@ void CApplication::CheckScreenSaverAndDPMS()
|
||||
WakeUpScreenSaver();
|
||||
}
|
||||
else if (maybeScreensaver
|
||||
- && elapsed > g_guiSettings.GetInt("screensaver.time") * 60)
|
||||
+ && elapsed > g_guiSettings.GetInt("screensaver.time") * 10)
|
||||
{
|
||||
ActivateScreenSaver();
|
||||
}
|
||||
diff --git a/xbmc/filesystem/DirectoryCache.cpp b/xbmc/filesystem/DirectoryCache.cpp
|
||||
index e3fb399..84bc32e 100644
|
||||
--- a/xbmc/filesystem/DirectoryCache.cpp
|
||||
+++ b/xbmc/filesystem/DirectoryCache.cpp
|
||||
@@ -67,7 +67,7 @@ bool CDirectoryCache::GetDirectory(const CStdString& strPath, CFileItemList &ite
|
||||
{
|
||||
CSingleLock lock (m_cs);
|
||||
|
||||
- CStdString storedPath = strPath;
|
||||
+ CStdString storedPath = URIUtils::SubstitutePath(strPath);
|
||||
URIUtils::RemoveSlashAtEnd(storedPath);
|
||||
|
||||
ciCache i = m_cache.find(storedPath);
|
||||
@@ -106,7 +106,7 @@ void CDirectoryCache::SetDirectory(const CStdString& strPath, const CFileItemLis
|
||||
// this is the best solution for now.
|
||||
CSingleLock lock (m_cs);
|
||||
|
||||
- CStdString storedPath = strPath;
|
||||
+ CStdString storedPath = URIUtils::SubstitutePath(strPath);
|
||||
URIUtils::RemoveSlashAtEnd(storedPath);
|
||||
|
||||
ClearDirectory(storedPath);
|
||||
@@ -130,7 +130,7 @@ void CDirectoryCache::ClearDirectory(const CStdString& strPath)
|
||||
{
|
||||
CSingleLock lock (m_cs);
|
||||
|
||||
- CStdString storedPath = strPath;
|
||||
+ CStdString storedPath = URIUtils::SubstitutePath(strPath);
|
||||
URIUtils::RemoveSlashAtEnd(storedPath);
|
||||
|
||||
iCache i = m_cache.find(storedPath);
|
||||
@@ -142,7 +142,7 @@ void CDirectoryCache::ClearSubPaths(const CStdString& strPath)
|
||||
{
|
||||
CSingleLock lock (m_cs);
|
||||
|
||||
- CStdString storedPath = strPath;
|
||||
+ CStdString storedPath = URIUtils::SubstitutePath(strPath);
|
||||
URIUtils::RemoveSlashAtEnd(storedPath);
|
||||
|
||||
iCache i = m_cache.begin();
|
||||
diff --git a/xbmc/filesystem/File.cpp b/xbmc/filesystem/File.cpp
|
||||
index 415f2bf..375226e 100644
|
||||
--- a/xbmc/filesystem/File.cpp
|
||||
+++ b/xbmc/filesystem/File.cpp
|
||||
@@ -217,16 +217,15 @@ bool CFile::Open(const CStdString& strFileName, unsigned int flags)
|
||||
try
|
||||
{
|
||||
bool bPathInCache;
|
||||
- CURL url2(strFileName);
|
||||
- if (url2.GetProtocol() == "zip")
|
||||
- url2.SetOptions("");
|
||||
- if (!g_directoryCache.FileExists(url2.Get(), bPathInCache) )
|
||||
+ CURL url(URIUtils::SubstitutePath(strFileName));
|
||||
+ if (url.GetProtocol() == "zip")
|
||||
+ url.SetOptions("");
|
||||
+ if (!g_directoryCache.FileExists(url.Get(), bPathInCache) )
|
||||
{
|
||||
if (bPathInCache)
|
||||
return false;
|
||||
}
|
||||
|
||||
- CURL url(URIUtils::SubstitutePath(strFileName));
|
||||
if ( (flags & READ_NO_CACHE) == 0 && URIUtils::IsInternetStream(url) && !CUtil::IsPicture(strFileName) )
|
||||
m_flags |= READ_CACHED;
|
||||
|
||||
@@ -344,7 +343,7 @@ bool CFile::OpenForWrite(const CStdString& strFileName, bool bOverWrite)
|
||||
|
||||
bool CFile::Exists(const CStdString& strFileName, bool bUseCache /* = true */)
|
||||
{
|
||||
- CURL url;
|
||||
+ CURL url(URIUtils::SubstitutePath(strFileName));
|
||||
|
||||
try
|
||||
{
|
||||
@@ -354,14 +353,12 @@ bool CFile::Exists(const CStdString& strFileName, bool bUseCache /* = true */)
|
||||
if (bUseCache)
|
||||
{
|
||||
bool bPathInCache;
|
||||
- if (g_directoryCache.FileExists(strFileName, bPathInCache) )
|
||||
+ if (g_directoryCache.FileExists(url.Get(), bPathInCache) )
|
||||
return true;
|
||||
if (bPathInCache)
|
||||
return false;
|
||||
}
|
||||
|
||||
- url = URIUtils::SubstitutePath(strFileName);
|
||||
-
|
||||
auto_ptr<IFile> pFile(CFileFactory::CreateLoader(url));
|
||||
if (!pFile.get())
|
||||
return false;
|
@ -1,29 +0,0 @@
|
||||
From 067004b0301366cb4bafc22dff21ec396e044bb7 Mon Sep 17 00:00:00 2001
|
||||
From: arnova <arnova@void.org>
|
||||
Date: Wed, 21 Dec 2011 13:59:13 +0100
|
||||
Subject: [PATCH] [SDL] fixed: Crash when mixer fails to initialise
|
||||
|
||||
---
|
||||
xbmc/guilib/GUIAudioManager.cpp | 6 ++++--
|
||||
1 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/guilib/GUIAudioManager.cpp b/xbmc/guilib/GUIAudioManager.cpp
|
||||
index 83f4e40..db58426 100644
|
||||
--- a/xbmc/guilib/GUIAudioManager.cpp
|
||||
+++ b/xbmc/guilib/GUIAudioManager.cpp
|
||||
@@ -73,8 +73,10 @@ void CGUIAudioManager::Initialize(int iDevice)
|
||||
#elif defined(HAS_SDL_AUDIO)
|
||||
Mix_CloseAudio();
|
||||
if (Mix_OpenAudio(44100, AUDIO_S16, 2, 4096))
|
||||
- CLog::Log(LOGERROR, "Unable to open audio mixer");
|
||||
- Mix_Volume(0, (int)(128.f * (g_settings.m_nVolumeLevel - VOLUME_MINIMUM) / (float)(VOLUME_MAXIMUM - VOLUME_MINIMUM)));
|
||||
+ CLog::Log(LOGERROR, "Unable to open audio mixer");
|
||||
+ else
|
||||
+ Mix_Volume(0, (int)(128.f * (g_settings.m_nVolumeLevel - VOLUME_MINIMUM) / (float)(VOLUME_MAXIMUM - VOLUME_MINIMUM)));
|
||||
+
|
||||
m_bInitialized = true;
|
||||
#endif
|
||||
}
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,69 +0,0 @@
|
||||
diff --git a/xbmc/filesystem/DllLibCurl.cpp b/xbmc/filesystem/DllLibCurl.cpp
|
||||
index f93e693..65ecad8 100644
|
||||
--- a/xbmc/filesystem/DllLibCurl.cpp
|
||||
+++ b/xbmc/filesystem/DllLibCurl.cpp
|
||||
@@ -39,7 +39,7 @@ bool DllLibCurlGlobal::Load()
|
||||
CSingleLock lock(m_critSection);
|
||||
if(g_curlReferences > 0)
|
||||
{
|
||||
- g_curlReferences++;
|
||||
+ //g_curlReferences++;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -56,13 +56,16 @@ bool DllLibCurlGlobal::Load()
|
||||
}
|
||||
|
||||
/* check idle will clean up the last one */
|
||||
- g_curlReferences = 2;
|
||||
+ //g_curlReferences = 2;
|
||||
+ g_curlReferences = 1;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void DllLibCurlGlobal::Unload()
|
||||
{
|
||||
+ return;
|
||||
+ /*
|
||||
CSingleLock lock(m_critSection);
|
||||
if (--g_curlReferences == 0)
|
||||
{
|
||||
@@ -75,19 +78,22 @@ void DllLibCurlGlobal::Unload()
|
||||
DllDynamic::Unload();
|
||||
}
|
||||
|
||||
- /* CheckIdle will clear this one up */
|
||||
+ // CheckIdle will clear this one up
|
||||
if(g_curlReferences == 1)
|
||||
g_curlTimeout = XbmcThreads::SystemClockMillis();
|
||||
+ */
|
||||
}
|
||||
|
||||
void DllLibCurlGlobal::CheckIdle()
|
||||
{
|
||||
/* avoid locking section here, to avoid stalling gfx thread on loads*/
|
||||
+ return;
|
||||
+ /*
|
||||
if(g_curlReferences == 0)
|
||||
return;
|
||||
|
||||
CSingleLock lock(m_critSection);
|
||||
- /* 20 seconds idle time before closing handle */
|
||||
+ // 20 seconds idle time before closing handle
|
||||
const unsigned int idletime = 30000;
|
||||
|
||||
VEC_CURLSESSIONS::iterator it = m_sessions.begin();
|
||||
@@ -112,9 +118,10 @@ void DllLibCurlGlobal::CheckIdle()
|
||||
it++;
|
||||
}
|
||||
|
||||
- /* check if we should unload the dll */
|
||||
+ // check if we should unload the dll
|
||||
if(g_curlReferences == 1 && XbmcThreads::SystemClockMillis() - g_curlTimeout > idletime)
|
||||
Unload();
|
||||
+ */
|
||||
}
|
||||
|
||||
void DllLibCurlGlobal::easy_aquire(const char *protocol, const char *hostname, CURL_HANDLE** easy_handle, CURLM** multi_handle)
|
||||
|
@ -1,63 +0,0 @@
|
||||
From 505b702af7025ad977558e75d25764744c47f5a3 Mon Sep 17 00:00:00 2001
|
||||
From: vdrfan <vdrfan-nospam-@xbmc.org>
|
||||
Date: Wed, 28 Dec 2011 00:31:07 +0100
|
||||
Subject: [PATCH] fixed: reverted File.cpp parts of
|
||||
23607e247c0074d88464a39eca643897550cb70 as they were
|
||||
causing troubles
|
||||
|
||||
---
|
||||
xbmc/filesystem/File.cpp | 14 ++++++++------
|
||||
1 files changed, 8 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/xbmc/filesystem/File.cpp b/xbmc/filesystem/File.cpp
|
||||
index 375226e..ef16255 100644
|
||||
--- a/xbmc/filesystem/File.cpp
|
||||
+++ b/xbmc/filesystem/File.cpp
|
||||
@@ -217,15 +217,16 @@ bool CFile::Open(const CStdString& strFileName, unsigned int flags)
|
||||
try
|
||||
{
|
||||
bool bPathInCache;
|
||||
- CURL url(URIUtils::SubstitutePath(strFileName));
|
||||
- if (url.GetProtocol() == "zip")
|
||||
- url.SetOptions("");
|
||||
- if (!g_directoryCache.FileExists(url.Get(), bPathInCache) )
|
||||
+ CURL url2(strFileName);
|
||||
+ if (url2.GetProtocol() == "zip")
|
||||
+ url2.SetOptions("");
|
||||
+ if (!g_directoryCache.FileExists(url2.Get(), bPathInCache) )
|
||||
{
|
||||
if (bPathInCache)
|
||||
return false;
|
||||
}
|
||||
|
||||
+ CURL url(URIUtils::SubstitutePath(strFileName));
|
||||
if ( (flags & READ_NO_CACHE) == 0 && URIUtils::IsInternetStream(url) && !CUtil::IsPicture(strFileName) )
|
||||
m_flags |= READ_CACHED;
|
||||
|
||||
@@ -343,7 +344,7 @@ bool CFile::OpenForWrite(const CStdString& strFileName, bool bOverWrite)
|
||||
|
||||
bool CFile::Exists(const CStdString& strFileName, bool bUseCache /* = true */)
|
||||
{
|
||||
- CURL url(URIUtils::SubstitutePath(strFileName));
|
||||
+ CURL url;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -353,12 +354,13 @@ bool CFile::Exists(const CStdString& strFileName, bool bUseCache /* = true */)
|
||||
if (bUseCache)
|
||||
{
|
||||
bool bPathInCache;
|
||||
- if (g_directoryCache.FileExists(url.Get(), bPathInCache) )
|
||||
+ if (g_directoryCache.FileExists(strFileName, bPathInCache) )
|
||||
return true;
|
||||
if (bPathInCache)
|
||||
return false;
|
||||
}
|
||||
|
||||
+ url = URIUtils::SubstitutePath(strFileName);
|
||||
auto_ptr<IFile> pFile(CFileFactory::CreateLoader(url));
|
||||
if (!pFile.get())
|
||||
return false;
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,121 +0,0 @@
|
||||
From 71a2ad0ebd13e0e2d5e830170705f9290cd06c51 Mon Sep 17 00:00:00 2001
|
||||
From: Lee Pollock <scudlee@gmail.com>
|
||||
Date: Tue, 29 Nov 2011 19:01:56 +0000
|
||||
Subject: [PATCH] Rearrange Autorun.cpp so audio cds actually play on
|
||||
PlayDVD()
|
||||
|
||||
---
|
||||
xbmc/Autorun.cpp | 52 ++++++++++++++++++++++++++++++++--------------------
|
||||
xbmc/Autorun.h | 2 +-
|
||||
2 files changed, 33 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/xbmc/Autorun.cpp b/xbmc/Autorun.cpp
|
||||
index 292c66d..f7ae918 100644
|
||||
--- a/xbmc/Autorun.cpp
|
||||
+++ b/xbmc/Autorun.cpp
|
||||
@@ -69,38 +69,25 @@ void CAutorun::ExecuteAutorun( bool bypassSettings, bool ignoreplaying, bool sta
|
||||
g_application.ResetScreenSaver();
|
||||
g_application.WakeUpScreenSaverAndDPMS(); // turn off the screensaver if it's active
|
||||
|
||||
- if ( pInfo->IsAudio( 1 ) )
|
||||
- {
|
||||
- if( !bypassSettings && !g_guiSettings.GetBool("audiocds.autorun") )
|
||||
- return;
|
||||
-
|
||||
- if (!g_passwordManager.IsMasterLockUnlocked(false))
|
||||
- if (g_settings.GetCurrentProfile().musicLocked())
|
||||
- return ;
|
||||
-
|
||||
- RunCdda();
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- RunMedia(bypassSettings, startFromBeginning);
|
||||
- }
|
||||
+ RunMedia(bypassSettings, startFromBeginning);
|
||||
}
|
||||
|
||||
-void CAutorun::RunCdda()
|
||||
+bool CAutorun::RunCdda()
|
||||
{
|
||||
CFileItemList vecItems;
|
||||
|
||||
auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( "cdda://local/" ) );
|
||||
if ( !pDir->GetDirectory( "cdda://local/", vecItems ) )
|
||||
- return ;
|
||||
+ return false;
|
||||
|
||||
if ( vecItems.Size() <= 0 )
|
||||
- return ;
|
||||
+ return false;
|
||||
|
||||
g_playlistPlayer.ClearPlaylist(PLAYLIST_MUSIC);
|
||||
g_playlistPlayer.Add(PLAYLIST_MUSIC, vecItems);
|
||||
g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC);
|
||||
g_playlistPlayer.Play();
|
||||
+ return true;
|
||||
}
|
||||
|
||||
void CAutorun::RunMedia(bool bypassSettings, bool startFromBeginning)
|
||||
@@ -167,8 +154,22 @@ bool CAutorun::RunDisc(IDirectory* pDir, const CStdString& strDrive, int& nAdded
|
||||
// is this a root folder we have to check the content to determine a disc type
|
||||
if( bRoot )
|
||||
{
|
||||
+ // check for audio cd first
|
||||
+ CCdInfo* pInfo = g_mediaManager.GetCdInfo();
|
||||
+
|
||||
+ if ( pInfo->IsAudio( 1 ) )
|
||||
+ {
|
||||
+ if( !bypassSettings && !g_guiSettings.GetBool("audiocds.autorun") )
|
||||
+ return false;
|
||||
|
||||
- // check root folders first, for normal structured dvd's
|
||||
+ if (!g_passwordManager.IsMasterLockUnlocked(false))
|
||||
+ if (g_settings.GetCurrentProfile().musicLocked())
|
||||
+ return false;
|
||||
+ bPlaying = RunCdda();
|
||||
+ return bPlaying;
|
||||
+ }
|
||||
+
|
||||
+ // check root folders next, for normal structured dvd's
|
||||
for (int i = 0; i < vecItems.Size(); i++)
|
||||
{
|
||||
CFileItemPtr pItem = vecItems[i];
|
||||
@@ -390,9 +391,20 @@ bool CAutorun::IsEnabled() const
|
||||
|
||||
bool CAutorun::PlayDisc(const CStdString& path, bool startFromBeginning)
|
||||
{
|
||||
+ int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size();
|
||||
int nAddedToPlaylist = 0;
|
||||
auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( path ));
|
||||
- return RunDisc(pDir.get(), path, nAddedToPlaylist, true, true, startFromBeginning);
|
||||
+ bool bPlaying = RunDisc(pDir.get(), path, nAddedToPlaylist, true, true, startFromBeginning);
|
||||
+ if ( !bPlaying && nAddedToPlaylist > 0 )
|
||||
+ {
|
||||
+ CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 );
|
||||
+ g_windowManager.SendMessage( msg );
|
||||
+ g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC);
|
||||
+ // Start playing the items we inserted
|
||||
+ g_playlistPlayer.Play(nSize);
|
||||
+ bPlaying = true;
|
||||
+ }
|
||||
+ return bPlaying;
|
||||
}
|
||||
|
||||
bool CAutorun::PlayDiscAskResume(const CStdString& path)
|
||||
diff --git a/xbmc/Autorun.h b/xbmc/Autorun.h
|
||||
index 39f34ae..7280d9d 100644
|
||||
--- a/xbmc/Autorun.h
|
||||
+++ b/xbmc/Autorun.h
|
||||
@@ -56,7 +56,7 @@ class CAutorun
|
||||
void HandleAutorun();
|
||||
static void ExecuteAutorun(bool bypassSettings = false, bool ignoreplaying = false, bool startFromBeginning = false);
|
||||
protected:
|
||||
- static void RunCdda();
|
||||
+ static bool RunCdda();
|
||||
static void RunMedia(bool bypassSettings, bool startFromBeginning);
|
||||
static bool RunDisc(XFILE::IDirectory* pDir, const CStdString& strDrive, int& nAddedToPlaylist, bool bRoot, bool bypassSettings, bool startFromBeginning);
|
||||
bool m_bEnable;
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,228 +0,0 @@
|
||||
From 89135dd485e785fc4fa43e6919d9920696bc1f41 Mon Sep 17 00:00:00 2001
|
||||
From: Voyager-xbmc <patrick.middag@telenet.be>
|
||||
Date: Sun, 25 Dec 2011 21:00:27 +0100
|
||||
Subject: [PATCH] Fixed resume function on DVD discs and refactoring PlayDisc
|
||||
to include/replace RunMedia functionality
|
||||
|
||||
---
|
||||
xbmc/Application.cpp | 8 +++--
|
||||
xbmc/Autorun.cpp | 65 +++++++++++++--------------------
|
||||
xbmc/Autorun.h | 5 +--
|
||||
xbmc/dialogs/GUIDialogContextMenu.cpp | 4 +-
|
||||
xbmc/interfaces/Builtins.cpp | 2 +-
|
||||
xbmc/utils/SaveFileStateJob.h | 7 ++--
|
||||
6 files changed, 39 insertions(+), 52 deletions(-)
|
||||
|
||||
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
|
||||
index 6c12234..99c4e6c 100644
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -3544,7 +3544,9 @@ bool CApplication::PlayFile(const CFileItem& item, bool bRestart)
|
||||
#ifdef HAS_DVD_DRIVE
|
||||
// Display the Play Eject dialog
|
||||
if (CGUIDialogPlayEject::ShowAndGetInput(item))
|
||||
- return MEDIA_DETECT::CAutorun::PlayDiscAskResume(item.GetPath());
|
||||
+ // PlayDiscAskResume takes path to disc. No parameter means default DVD drive.
|
||||
+ // Can't do better as CGUIDialogPlayEject calls CMediaManager::IsDiscInDrive, which assumes default DVD drive anyway
|
||||
+ return MEDIA_DETECT::CAutorun::PlayDiscAskResume();
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
@@ -3640,9 +3642,9 @@ bool CApplication::PlayFile(const CFileItem& item, bool bRestart)
|
||||
options.starttime = 0.0f;
|
||||
CBookmark bookmark;
|
||||
CStdString path = item.GetPath();
|
||||
- if (item.IsDVD())
|
||||
+ if (item.HasVideoInfoTag() && item.GetVideoInfoTag()->m_strFileNameAndPath.Find("removable://") == 0)
|
||||
path = item.GetVideoInfoTag()->m_strFileNameAndPath;
|
||||
- if (item.HasProperty("original_listitem_url") && URIUtils::IsPlugin(item.GetProperty("original_listitem_url").asString()))
|
||||
+ else if (item.HasProperty("original_listitem_url") && URIUtils::IsPlugin(item.GetProperty("original_listitem_url").asString()))
|
||||
path = item.GetProperty("original_listitem_url").asString();
|
||||
if(dbs.GetResumeBookMark(path, bookmark))
|
||||
{
|
||||
diff --git a/xbmc/Autorun.cpp b/xbmc/Autorun.cpp
|
||||
index f7ae918..8eef37e 100644
|
||||
--- a/xbmc/Autorun.cpp
|
||||
+++ b/xbmc/Autorun.cpp
|
||||
@@ -69,7 +69,7 @@ void CAutorun::ExecuteAutorun( bool bypassSettings, bool ignoreplaying, bool sta
|
||||
g_application.ResetScreenSaver();
|
||||
g_application.WakeUpScreenSaverAndDPMS(); // turn off the screensaver if it's active
|
||||
|
||||
- RunMedia(bypassSettings, startFromBeginning);
|
||||
+ PlayDisc("", bypassSettings, startFromBeginning);
|
||||
}
|
||||
|
||||
bool CAutorun::RunCdda()
|
||||
@@ -90,42 +90,47 @@ bool CAutorun::RunCdda()
|
||||
return true;
|
||||
}
|
||||
|
||||
-void CAutorun::RunMedia(bool bypassSettings, bool startFromBeginning)
|
||||
+bool CAutorun::PlayDisc(const CStdString& path, bool bypassSettings, bool startFromBeginning)
|
||||
{
|
||||
if ( !bypassSettings && !g_guiSettings.GetBool("audiocds.autorun") && !g_guiSettings.GetBool("dvds.autorun"))
|
||||
- return ;
|
||||
+ return false;
|
||||
|
||||
int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size();
|
||||
int nAddedToPlaylist = 0;
|
||||
-#ifdef _WIN32
|
||||
- auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( g_mediaManager.TranslateDevicePath("") ));
|
||||
- bool bPlaying = RunDisc(pDir.get(), g_mediaManager.TranslateDevicePath(""), nAddedToPlaylist, true, bypassSettings, startFromBeginning);
|
||||
-#else
|
||||
- CCdInfo* pInfo = g_mediaManager.GetCdInfo();
|
||||
|
||||
- if ( pInfo == NULL )
|
||||
- return ;
|
||||
+ CStdString mediaPath = path;
|
||||
|
||||
- bool bPlaying;
|
||||
- if (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))
|
||||
- {
|
||||
- auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( "iso9660://" ));
|
||||
- bPlaying = RunDisc(pDir.get(), "iso9660://", nAddedToPlaylist, true, bypassSettings, startFromBeginning);
|
||||
- }
|
||||
- else
|
||||
+#ifdef _WIN32
|
||||
+ if (mediaPath.IsEmpty())
|
||||
+ mediaPath = g_mediaManager.TranslateDevicePath("");
|
||||
+
|
||||
+#else
|
||||
+ if (mediaPath.IsEmpty())
|
||||
{
|
||||
- auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( "D:\\" ) );
|
||||
- bPlaying = RunDisc(pDir.get(), "D:\\", nAddedToPlaylist, true, bypassSettings, startFromBeginning);
|
||||
+ CCdInfo* pInfo = g_mediaManager.GetCdInfo();
|
||||
+ if ( pInfo == NULL )
|
||||
+ return false;
|
||||
+
|
||||
+ if (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))
|
||||
+ mediaPath = "iso9660://";
|
||||
+ else
|
||||
+ mediaPath = "D:\\"; // Is this XBOX remnant??
|
||||
}
|
||||
#endif
|
||||
+
|
||||
+ auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( mediaPath ));
|
||||
+ bool bPlaying = RunDisc(pDir.get(), mediaPath, nAddedToPlaylist, true, bypassSettings, startFromBeginning);
|
||||
+
|
||||
if ( !bPlaying && nAddedToPlaylist > 0 )
|
||||
{
|
||||
CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 );
|
||||
g_windowManager.SendMessage( msg );
|
||||
g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC);
|
||||
// Start playing the items we inserted
|
||||
- g_playlistPlayer.Play(nSize);
|
||||
+ return g_playlistPlayer.Play(nSize);
|
||||
}
|
||||
+
|
||||
+ return bPlaying;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -389,27 +394,9 @@ bool CAutorun::IsEnabled() const
|
||||
return m_bEnable;
|
||||
}
|
||||
|
||||
-bool CAutorun::PlayDisc(const CStdString& path, bool startFromBeginning)
|
||||
-{
|
||||
- int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size();
|
||||
- int nAddedToPlaylist = 0;
|
||||
- auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( path ));
|
||||
- bool bPlaying = RunDisc(pDir.get(), path, nAddedToPlaylist, true, true, startFromBeginning);
|
||||
- if ( !bPlaying && nAddedToPlaylist > 0 )
|
||||
- {
|
||||
- CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 );
|
||||
- g_windowManager.SendMessage( msg );
|
||||
- g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC);
|
||||
- // Start playing the items we inserted
|
||||
- g_playlistPlayer.Play(nSize);
|
||||
- bPlaying = true;
|
||||
- }
|
||||
- return bPlaying;
|
||||
-}
|
||||
-
|
||||
bool CAutorun::PlayDiscAskResume(const CStdString& path)
|
||||
{
|
||||
- return PlayDisc(path, !CanResumePlayDVD(path) || CGUIDialogYesNo::ShowAndGetInput(341, -1, -1, -1, 13404, 12021));
|
||||
+ return PlayDisc(path, true, !CanResumePlayDVD(path) || CGUIDialogYesNo::ShowAndGetInput(341, -1, -1, -1, 13404, 12021));
|
||||
}
|
||||
|
||||
bool CAutorun::CanResumePlayDVD(const CStdString& path)
|
||||
diff --git a/xbmc/Autorun.h b/xbmc/Autorun.h
|
||||
index 7280d9d..693476e 100644
|
||||
--- a/xbmc/Autorun.h
|
||||
+++ b/xbmc/Autorun.h
|
||||
@@ -48,8 +48,8 @@ class CAutorun
|
||||
CAutorun();
|
||||
virtual ~CAutorun();
|
||||
static bool CanResumePlayDVD(const CStdString& path);
|
||||
- static bool PlayDisc(const CStdString& path, bool startFromBeginning);
|
||||
- static bool PlayDiscAskResume(const CStdString& path);
|
||||
+ static bool PlayDisc(const CStdString& path="", bool bypassSettings = false, bool startFromBeginning = false);
|
||||
+ static bool PlayDiscAskResume(const CStdString& path="");
|
||||
bool IsEnabled() const;
|
||||
void Enable();
|
||||
void Disable();
|
||||
@@ -57,7 +57,6 @@ class CAutorun
|
||||
static void ExecuteAutorun(bool bypassSettings = false, bool ignoreplaying = false, bool startFromBeginning = false);
|
||||
protected:
|
||||
static bool RunCdda();
|
||||
- static void RunMedia(bool bypassSettings, bool startFromBeginning);
|
||||
static bool RunDisc(XFILE::IDirectory* pDir, const CStdString& strDrive, int& nAddedToPlaylist, bool bRoot, bool bypassSettings, bool startFromBeginning);
|
||||
bool m_bEnable;
|
||||
};
|
||||
diff --git a/xbmc/dialogs/GUIDialogContextMenu.cpp b/xbmc/dialogs/GUIDialogContextMenu.cpp
|
||||
index 1d28a76..092591a 100644
|
||||
--- a/xbmc/dialogs/GUIDialogContextMenu.cpp
|
||||
+++ b/xbmc/dialogs/GUIDialogContextMenu.cpp
|
||||
@@ -393,10 +393,10 @@ bool CGUIDialogContextMenu::OnContextButton(const CStdString &type, const CFileI
|
||||
|
||||
#ifdef HAS_DVD_DRIVE
|
||||
case CONTEXT_BUTTON_PLAY_DISC:
|
||||
- return MEDIA_DETECT::CAutorun::PlayDisc(item->GetPath(), true); // restart
|
||||
+ return MEDIA_DETECT::CAutorun::PlayDisc(item->GetPath(), true, true); // restart
|
||||
|
||||
case CONTEXT_BUTTON_RESUME_DISC:
|
||||
- return MEDIA_DETECT::CAutorun::PlayDisc(item->GetPath(), false);// resume
|
||||
+ return MEDIA_DETECT::CAutorun::PlayDisc(item->GetPath(), true, false); // resume
|
||||
|
||||
case CONTEXT_BUTTON_EJECT_DISC:
|
||||
#ifdef _WIN32
|
||||
diff --git a/xbmc/interfaces/Builtins.cpp b/xbmc/interfaces/Builtins.cpp
|
||||
index 2b940d6..2667f69 100644
|
||||
--- a/xbmc/interfaces/Builtins.cpp
|
||||
+++ b/xbmc/interfaces/Builtins.cpp
|
||||
@@ -941,7 +941,7 @@ int CBuiltins::Execute(const CStdString& execString)
|
||||
bool restart = false;
|
||||
if (params.size() > 0 && params[0].CompareNoCase("restart") == 0)
|
||||
restart = true;
|
||||
- CAutorun::PlayDisc(g_mediaManager.GetDiscPath(), restart);
|
||||
+ CAutorun::PlayDisc(g_mediaManager.GetDiscPath(), true, restart);
|
||||
#endif
|
||||
}
|
||||
else if (execute.Equals("ripcd"))
|
||||
diff --git a/xbmc/utils/SaveFileStateJob.h b/xbmc/utils/SaveFileStateJob.h
|
||||
index 1504a74..534ef4b 100644
|
||||
--- a/xbmc/utils/SaveFileStateJob.h
|
||||
+++ b/xbmc/utils/SaveFileStateJob.h
|
||||
@@ -24,13 +24,12 @@ class CSaveFileStateJob : public CJob
|
||||
bool CSaveFileStateJob::DoWork()
|
||||
{
|
||||
CStdString progressTrackingFile = m_item.GetPath();
|
||||
- if (m_item.HasProperty("original_listitem_url") &&
|
||||
+ if (m_item.HasVideoInfoTag() && m_item.GetVideoInfoTag()->m_strFileNameAndPath.Find("removable://") == 0)
|
||||
+ progressTrackingFile = m_item.GetVideoInfoTag()->m_strFileNameAndPath; // this variable contains removable:// suffixed by disc label+uniqueid or is empty if label not uniquely identified
|
||||
+ else if (m_item.HasProperty("original_listitem_url") &&
|
||||
URIUtils::IsPlugin(m_item.GetProperty("original_listitem_url").asString()))
|
||||
progressTrackingFile = m_item.GetProperty("original_listitem_url").asString();
|
||||
|
||||
- if (m_item.IsDVD())
|
||||
- progressTrackingFile = m_item.GetVideoInfoTag()->m_strFileNameAndPath; // this variable contains removable:// suffixed by disc label+uniqueid or is empty if label not uniquely identified
|
||||
-
|
||||
if (progressTrackingFile != "")
|
||||
{
|
||||
if (m_item.IsVideo())
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,124 +0,0 @@
|
||||
From ee8b61c8687ad6a2c0c58c476b69d1b58364d43c Mon Sep 17 00:00:00 2001
|
||||
From: elupus <elupus@xbmc.org>
|
||||
Date: Wed, 28 Dec 2011 22:34:33 +0100
|
||||
Subject: [PATCH] fixed: cdda/dvd playdisk (attempt 4)
|
||||
|
||||
It still needs more work..
|
||||
---
|
||||
xbmc/Autorun.cpp | 62 +++++++++++++----------------------------------------
|
||||
xbmc/Autorun.h | 1 -
|
||||
2 files changed, 15 insertions(+), 48 deletions(-)
|
||||
|
||||
diff --git a/xbmc/Autorun.cpp b/xbmc/Autorun.cpp
|
||||
index 8eef37e..4f49ff0 100644
|
||||
--- a/xbmc/Autorun.cpp
|
||||
+++ b/xbmc/Autorun.cpp
|
||||
@@ -42,6 +42,7 @@
|
||||
#include "video/VideoDatabase.h"
|
||||
#include "dialogs/GUIDialogYesNo.h"
|
||||
#include "utils/URIUtils.h"
|
||||
+#include "utils/log.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace XFILE;
|
||||
@@ -72,24 +73,6 @@ void CAutorun::ExecuteAutorun( bool bypassSettings, bool ignoreplaying, bool sta
|
||||
PlayDisc("", bypassSettings, startFromBeginning);
|
||||
}
|
||||
|
||||
-bool CAutorun::RunCdda()
|
||||
-{
|
||||
- CFileItemList vecItems;
|
||||
-
|
||||
- auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( "cdda://local/" ) );
|
||||
- if ( !pDir->GetDirectory( "cdda://local/", vecItems ) )
|
||||
- return false;
|
||||
-
|
||||
- if ( vecItems.Size() <= 0 )
|
||||
- return false;
|
||||
-
|
||||
- g_playlistPlayer.ClearPlaylist(PLAYLIST_MUSIC);
|
||||
- g_playlistPlayer.Add(PLAYLIST_MUSIC, vecItems);
|
||||
- g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC);
|
||||
- g_playlistPlayer.Play();
|
||||
- return true;
|
||||
-}
|
||||
-
|
||||
bool CAutorun::PlayDisc(const CStdString& path, bool bypassSettings, bool startFromBeginning)
|
||||
{
|
||||
if ( !bypassSettings && !g_guiSettings.GetBool("audiocds.autorun") && !g_guiSettings.GetBool("dvds.autorun"))
|
||||
@@ -98,24 +81,24 @@ bool CAutorun::PlayDisc(const CStdString& path, bool bypassSettings, bool startF
|
||||
int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size();
|
||||
int nAddedToPlaylist = 0;
|
||||
|
||||
- CStdString mediaPath = path;
|
||||
+ CStdString mediaPath;
|
||||
+
|
||||
+ CCdInfo* pInfo = g_mediaManager.GetCdInfo(path);
|
||||
+ if (pInfo == NULL)
|
||||
+ return false;
|
||||
+
|
||||
+ if (mediaPath.IsEmpty() && pInfo->IsAudio(1))
|
||||
+ mediaPath = "cdda://local/";
|
||||
+
|
||||
+ if (mediaPath.IsEmpty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1)))
|
||||
+ mediaPath = "iso9660://";
|
||||
|
||||
-#ifdef _WIN32
|
||||
if (mediaPath.IsEmpty())
|
||||
- mediaPath = g_mediaManager.TranslateDevicePath("");
|
||||
+ mediaPath = path;
|
||||
|
||||
-#else
|
||||
+#ifdef _WIN32
|
||||
if (mediaPath.IsEmpty())
|
||||
- {
|
||||
- CCdInfo* pInfo = g_mediaManager.GetCdInfo();
|
||||
- if ( pInfo == NULL )
|
||||
- return false;
|
||||
-
|
||||
- if (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))
|
||||
- mediaPath = "iso9660://";
|
||||
- else
|
||||
- mediaPath = "D:\\"; // Is this XBOX remnant??
|
||||
- }
|
||||
+ mediaPath = g_mediaManager.TranslateDevicePath("");
|
||||
#endif
|
||||
|
||||
auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( mediaPath ));
|
||||
@@ -159,21 +142,6 @@ bool CAutorun::RunDisc(IDirectory* pDir, const CStdString& strDrive, int& nAdded
|
||||
// is this a root folder we have to check the content to determine a disc type
|
||||
if( bRoot )
|
||||
{
|
||||
- // check for audio cd first
|
||||
- CCdInfo* pInfo = g_mediaManager.GetCdInfo();
|
||||
-
|
||||
- if ( pInfo->IsAudio( 1 ) )
|
||||
- {
|
||||
- if( !bypassSettings && !g_guiSettings.GetBool("audiocds.autorun") )
|
||||
- return false;
|
||||
-
|
||||
- if (!g_passwordManager.IsMasterLockUnlocked(false))
|
||||
- if (g_settings.GetCurrentProfile().musicLocked())
|
||||
- return false;
|
||||
- bPlaying = RunCdda();
|
||||
- return bPlaying;
|
||||
- }
|
||||
-
|
||||
// check root folders next, for normal structured dvd's
|
||||
for (int i = 0; i < vecItems.Size(); i++)
|
||||
{
|
||||
diff --git a/xbmc/Autorun.h b/xbmc/Autorun.h
|
||||
index 693476e..4461b74 100644
|
||||
--- a/xbmc/Autorun.h
|
||||
+++ b/xbmc/Autorun.h
|
||||
@@ -56,7 +56,6 @@ class CAutorun
|
||||
void HandleAutorun();
|
||||
static void ExecuteAutorun(bool bypassSettings = false, bool ignoreplaying = false, bool startFromBeginning = false);
|
||||
protected:
|
||||
- static bool RunCdda();
|
||||
static bool RunDisc(XFILE::IDirectory* pDir, const CStdString& strDrive, int& nAddedToPlaylist, bool bRoot, bool bypassSettings, bool startFromBeginning);
|
||||
bool m_bEnable;
|
||||
};
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,25 +0,0 @@
|
||||
From e441ca60e52ce8bdeb50538ef6b048ee196935e2 Mon Sep 17 00:00:00 2001
|
||||
From: Voyager-xbmc <patrick.middag@telenet.be>
|
||||
Date: Thu, 29 Dec 2011 08:34:08 +0100
|
||||
Subject: [PATCH] Fix remaining dvd resume issue and soft eject problem
|
||||
|
||||
---
|
||||
xbmc/Autorun.cpp | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/xbmc/Autorun.cpp b/xbmc/Autorun.cpp
|
||||
index 4f49ff0..4bd823f 100644
|
||||
--- a/xbmc/Autorun.cpp
|
||||
+++ b/xbmc/Autorun.cpp
|
||||
@@ -97,7 +97,7 @@ bool CAutorun::PlayDisc(const CStdString& path, bool bypassSettings, bool startF
|
||||
mediaPath = path;
|
||||
|
||||
#ifdef _WIN32
|
||||
- if (mediaPath.IsEmpty())
|
||||
+ if (mediaPath.IsEmpty() || mediaPath.CompareNoCase("iso9660://") == 0)
|
||||
mediaPath = g_mediaManager.TranslateDevicePath("");
|
||||
#endif
|
||||
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,72 +0,0 @@
|
||||
From 38fa2ee5403310b381a6ac35859af4bed0c3e567 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Mon, 19 Dec 2011 20:27:13 +0100
|
||||
Subject: [PATCH] dvdplayer: use selection streams to calculate HasVideo and
|
||||
HasAudio
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDPlayer.cpp | 12 ++++--------
|
||||
xbmc/cores/dvdplayer/DVDPlayer.h | 6 +++---
|
||||
2 files changed, 7 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
index 6061909..4e3ea71 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
@@ -131,7 +131,7 @@ bool CSelectionStreams::Get(StreamType type, CDemuxStream::EFlags flag, Selectio
|
||||
return false;
|
||||
}
|
||||
|
||||
-int CSelectionStreams::IndexOf(StreamType type, int source, int id)
|
||||
+int CSelectionStreams::IndexOf(StreamType type, int source, int id) const
|
||||
{
|
||||
CSingleLock lock(m_section);
|
||||
int count = -1;
|
||||
@@ -153,7 +153,7 @@ int CSelectionStreams::IndexOf(StreamType type, int source, int id)
|
||||
return -1;
|
||||
}
|
||||
|
||||
-int CSelectionStreams::IndexOf(StreamType type, CDVDPlayer& p)
|
||||
+int CSelectionStreams::IndexOf(StreamType type, CDVDPlayer& p) const
|
||||
{
|
||||
if (p.m_pInputStream && p.m_pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD))
|
||||
{
|
||||
@@ -2255,16 +2255,12 @@ bool CDVDPlayer::IsPaused() const
|
||||
|
||||
bool CDVDPlayer::HasVideo() const
|
||||
{
|
||||
- if (m_pInputStream)
|
||||
- {
|
||||
- if (m_pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD) || m_CurrentVideo.id >= 0) return true;
|
||||
- }
|
||||
- return false;
|
||||
+ return m_SelectionStreams.Count(STREAM_VIDEO) > 0 ? true : false;
|
||||
}
|
||||
|
||||
bool CDVDPlayer::HasAudio() const
|
||||
{
|
||||
- return (m_CurrentAudio.id >= 0);
|
||||
+ return m_SelectionStreams.Count(STREAM_AUDIO) > 0 ? true : false;
|
||||
}
|
||||
|
||||
bool CDVDPlayer::IsPassthrough() const
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.h b/xbmc/cores/dvdplayer/DVDPlayer.h
|
||||
index 9ceca9c..4afb5e2 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayer.h
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayer.h
|
||||
@@ -119,9 +119,9 @@ class CSelectionStreams
|
||||
}
|
||||
std::vector<SelectionStream> m_Streams;
|
||||
|
||||
- int IndexOf (StreamType type, int source, int id);
|
||||
- int IndexOf (StreamType type, CDVDPlayer& p);
|
||||
- int Count (StreamType type) { return IndexOf(type, STREAM_SOURCE_NONE, -1) + 1; }
|
||||
+ int IndexOf (StreamType type, int source, int id) const;
|
||||
+ int IndexOf (StreamType type, CDVDPlayer& p) const;
|
||||
+ int Count (StreamType type) const { return IndexOf(type, STREAM_SOURCE_NONE, -1) + 1; }
|
||||
SelectionStream& Get (StreamType type, int index);
|
||||
bool Get (StreamType type, CDemuxStream::EFlags flag, SelectionStream& out);
|
||||
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,28 +0,0 @@
|
||||
From 566136bb6a26ed6ef753434f31ef633de449cefc Mon Sep 17 00:00:00 2001
|
||||
From: CrystalP <CrystalP@xbmc.org>
|
||||
Date: Sun, 25 Dec 2011 21:34:27 -0500
|
||||
Subject: [PATCH] fix playback of dvd, dvd iso and video_ts
|
||||
|
||||
m_SelectionStreams is empty when playing a DVD or iso image of a dvd.
|
||||
m_SelectionStreams doesn't contain video streams when playing a video_ts
|
||||
folder.
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDPlayer.cpp | 2 ++
|
||||
1 files changed, 2 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
index 4e3ea71..b868cd0 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
@@ -2255,6 +2255,8 @@ bool CDVDPlayer::IsPaused() const
|
||||
|
||||
bool CDVDPlayer::HasVideo() const
|
||||
{
|
||||
+ if (m_pInputStream && m_pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD)) return true;
|
||||
+
|
||||
return m_SelectionStreams.Count(STREAM_VIDEO) > 0 ? true : false;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,20 +0,0 @@
|
||||
commit bee67c6b7129a6764c964a93e35e33b7cf2b35ea
|
||||
Author: spiff <spiff@xbmc.org>
|
||||
Date: Wed Jan 18 16:33:47 2012 +0100
|
||||
|
||||
fixed: don't deref null pointers, not even in release builds
|
||||
|
||||
diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp
|
||||
index dc5c366..a7d96c0 100644
|
||||
--- a/xbmc/addons/AddonInstaller.cpp
|
||||
+++ b/xbmc/addons/AddonInstaller.cpp
|
||||
@@ -262,6 +262,9 @@ void CAddonInstaller::InstallFromXBMCRepo(const set<CStdString> &addonIDs)
|
||||
bool CAddonInstaller::CheckDependencies(const AddonPtr &addon)
|
||||
{
|
||||
assert(addon.get());
|
||||
+ if (!addon)
|
||||
+ return false;
|
||||
+
|
||||
ADDONDEPS deps = addon->GetDeps();
|
||||
CAddonDatabase database;
|
||||
database.Open();
|
@ -1,54 +0,0 @@
|
||||
From 895d659a6accdae7eb668eebe9426e4820f5928a Mon Sep 17 00:00:00 2001
|
||||
From: vdrfan <vdrfan-nospam-@xbmc.org>
|
||||
Date: Fri, 30 Dec 2011 00:29:16 +0100
|
||||
Subject: [PATCH] fixed: service addons are not started after installation
|
||||
(fixes #12378)
|
||||
|
||||
---
|
||||
xbmc/addons/AddonInstaller.cpp | 16 ++++++++++++++++
|
||||
1 files changed, 16 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp
|
||||
index 7de9eee..9272386 100644
|
||||
--- a/xbmc/addons/AddonInstaller.cpp
|
||||
+++ b/xbmc/addons/AddonInstaller.cpp
|
||||
@@ -20,6 +20,7 @@
|
||||
*/
|
||||
|
||||
#include "AddonInstaller.h"
|
||||
+#include "Service.h"
|
||||
#include "utils/log.h"
|
||||
#include "utils/URIUtils.h"
|
||||
#include "Util.h"
|
||||
@@ -419,6 +420,14 @@ bool CAddonInstallJob::OnPreInstall()
|
||||
g_application.getApplicationMessenger().ExecBuiltIn("UnloadSkin", true);
|
||||
return true;
|
||||
}
|
||||
+
|
||||
+ if (m_addon->Type() == ADDON_SERVICE)
|
||||
+ {
|
||||
+ boost::shared_ptr<CService> service = boost::dynamic_pointer_cast<CService>(m_addon);
|
||||
+ if (service)
|
||||
+ service->Stop();
|
||||
+ return true;
|
||||
+ }
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -511,6 +520,13 @@ void CAddonInstallJob::OnPostInstall(bool reloadAddon)
|
||||
g_application.getApplicationMessenger().ExecBuiltIn("ReloadSkin");
|
||||
}
|
||||
}
|
||||
+
|
||||
+ if (m_addon->Type() == ADDON_SERVICE)
|
||||
+ {
|
||||
+ boost::shared_ptr<CService> service = boost::dynamic_pointer_cast<CService>(m_addon);
|
||||
+ if (service)
|
||||
+ service->Start();
|
||||
+ }
|
||||
}
|
||||
|
||||
void CAddonInstallJob::ReportInstallError(const CStdString& addonID,
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,124 +0,0 @@
|
||||
From 825175e4a300ea1409cc288f675c570b2cc4b46a Mon Sep 17 00:00:00 2001
|
||||
From: elupus <elupus@xbmc.org>
|
||||
Date: Wed, 28 Dec 2011 21:16:02 +0100
|
||||
Subject: [PATCH] changed: avoid including Autorun.h all over xbmc
|
||||
|
||||
---
|
||||
xbmc/Application.cpp | 4 +++-
|
||||
xbmc/Application.h | 8 ++++++--
|
||||
xbmc/music/windows/GUIWindowMusicSongs.cpp | 1 +
|
||||
xbmc/pictures/GUIWindowPictures.cpp | 1 +
|
||||
xbmc/video/windows/GUIWindowVideoBase.cpp | 1 +
|
||||
xbmc/windows/GUIWindowFileManager.cpp | 1 +
|
||||
6 files changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
|
||||
index 99c4e6c..1f39273 100644
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -364,10 +364,12 @@
|
||||
m_bEnableLegacyRes = false;
|
||||
m_bSystemScreenSaverEnable = false;
|
||||
m_pInertialScrollingHandler = new CInertialScrollingHandler();
|
||||
+ m_Autorun = new CAutorun();
|
||||
}
|
||||
|
||||
CApplication::~CApplication(void)
|
||||
{
|
||||
+ delete m_Autorun;
|
||||
delete m_currentStack;
|
||||
|
||||
#ifdef HAS_KARAOKE
|
||||
@@ -4794,7 +4796,7 @@ void CApplication::ProcessSlow()
|
||||
#ifdef HAS_DVD_DRIVE
|
||||
// checks whats in the DVD drive and tries to autostart the content (xbox games, dvd, cdda, avi files...)
|
||||
if (!IsPlayingVideo())
|
||||
- m_Autorun.HandleAutorun();
|
||||
+ m_Autorun->HandleAutorun();
|
||||
#endif
|
||||
|
||||
// update upnp server/renderer states
|
||||
diff --git a/xbmc/Application.h b/xbmc/Application.h
|
||||
index d4bb9b3..5c08305 100644
|
||||
--- a/xbmc/Application.h
|
||||
+++ b/xbmc/Application.h
|
||||
@@ -38,6 +38,11 @@
|
||||
typedef boost::shared_ptr<IAddon> AddonPtr;
|
||||
}
|
||||
|
||||
+namespace MEDIA_DETECT
|
||||
+{
|
||||
+ class CAutorun;
|
||||
+}
|
||||
+
|
||||
#include "cores/IPlayer.h"
|
||||
#include "cores/playercorefactory/PlayerCoreFactory.h"
|
||||
#include "PlayListPlayer.h"
|
||||
@@ -47,7 +52,6 @@
|
||||
#ifdef _WIN32
|
||||
#include "win32/WIN32Util.h"
|
||||
#endif
|
||||
-#include "Autorun.h"
|
||||
#include "video/Bookmark.h"
|
||||
#include "utils/Stopwatch.h"
|
||||
#include "ApplicationMessenger.h"
|
||||
@@ -211,7 +215,7 @@ class CApplication : public CXBApplicationEx, public IPlayerCallback, public IMs
|
||||
#endif
|
||||
|
||||
#ifdef HAS_DVD_DRIVE
|
||||
- MEDIA_DETECT::CAutorun m_Autorun;
|
||||
+ MEDIA_DETECT::CAutorun* m_Autorun;
|
||||
#endif
|
||||
|
||||
#if !defined(_WIN32) && defined(HAS_DVD_DRIVE)
|
||||
diff --git a/xbmc/music/windows/GUIWindowMusicSongs.cpp b/xbmc/music/windows/GUIWindowMusicSongs.cpp
|
||||
index b5c032d..e5e3b7e 100644
|
||||
--- a/xbmc/music/windows/GUIWindowMusicSongs.cpp
|
||||
+++ b/xbmc/music/windows/GUIWindowMusicSongs.cpp
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "guilib/LocalizeStrings.h"
|
||||
#include "utils/log.h"
|
||||
#include "utils/URIUtils.h"
|
||||
+#include "Autorun.h"
|
||||
|
||||
#define CONTROL_BTNVIEWASICONS 2
|
||||
#define CONTROL_BTNSORTBY 3
|
||||
diff --git a/xbmc/pictures/GUIWindowPictures.cpp b/xbmc/pictures/GUIWindowPictures.cpp
|
||||
index 2518976..707faca 100644
|
||||
--- a/xbmc/pictures/GUIWindowPictures.cpp
|
||||
+++ b/xbmc/pictures/GUIWindowPictures.cpp
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "utils/TimeUtils.h"
|
||||
#include "utils/log.h"
|
||||
#include "utils/URIUtils.h"
|
||||
+#include "Autorun.h"
|
||||
|
||||
#define CONTROL_BTNVIEWASICONS 2
|
||||
#define CONTROL_BTNSORTBY 3
|
||||
diff --git a/xbmc/video/windows/GUIWindowVideoBase.cpp b/xbmc/video/windows/GUIWindowVideoBase.cpp
|
||||
index 9f7c6a1..0512ad7 100644
|
||||
--- a/xbmc/video/windows/GUIWindowVideoBase.cpp
|
||||
+++ b/xbmc/video/windows/GUIWindowVideoBase.cpp
|
||||
@@ -65,6 +65,7 @@
|
||||
#include "GUIUserMessages.h"
|
||||
#include "addons/Skin.h"
|
||||
#include "storage/MediaManager.h"
|
||||
+#include "Autorun.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace XFILE;
|
||||
diff --git a/xbmc/windows/GUIWindowFileManager.cpp b/xbmc/windows/GUIWindowFileManager.cpp
|
||||
index 67e5330..e9d8896 100644
|
||||
--- a/xbmc/windows/GUIWindowFileManager.cpp
|
||||
+++ b/xbmc/windows/GUIWindowFileManager.cpp
|
||||
@@ -58,6 +58,7 @@
|
||||
#include "utils/FileOperationJob.h"
|
||||
#include "utils/FileUtils.h"
|
||||
#include "utils/URIUtils.h"
|
||||
+#include "Autorun.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace XFILE;
|
||||
--
|
||||
1.7.5.4
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,29 +0,0 @@
|
||||
From dda8fc7e4312acc0353c320174a6c7a009b4c57f Mon Sep 17 00:00:00 2001
|
||||
From: CrystalP <CrystalP@xbmc.org>
|
||||
Date: Mon, 26 Dec 2011 14:17:03 -0500
|
||||
Subject: [PATCH] fix crypted dvd playback
|
||||
|
||||
with recent changes to playdisc, CDVDInputStreamNavigator::Open now
|
||||
receives a full path, which must be truncated more completely or libdvdcss
|
||||
won't be able to decrypt.
|
||||
---
|
||||
.../DVDInputStreams/DVDInputStreamNavigator.cpp | 3 +++
|
||||
1 files changed, 3 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
index d4cc77b..b9f42ca 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
@@ -80,6 +80,9 @@ bool CDVDInputStreamNavigator::Open(const char* strFile, const std::string& cont
|
||||
{
|
||||
strDVDFile[strlen(strDVDFile) - 13] = '\0';
|
||||
}
|
||||
+ if (strncasecmp(strDVDFile + strlen(strDVDFile) - 8, "VIDEO_TS", 8) == 0)
|
||||
+ strDVDFile[strlen(strDVDFile) - 9] = '\0';
|
||||
+
|
||||
#if defined(__APPLE__) && !defined(__arm__)
|
||||
// if physical DVDs, libdvdnav wants "/dev/rdiskN" device name for OSX,
|
||||
// strDVDFile will get realloc'ed and replaced IF this is a physical DVD.
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,38 +0,0 @@
|
||||
From 994a4cb70a9437105ef9c176d5d79939382d22e8 Mon Sep 17 00:00:00 2001
|
||||
From: Gregor Fuis <gregor.fuis@gmail.com>
|
||||
Date: Mon, 2 Jan 2012 17:13:54 +0100
|
||||
Subject: [PATCH] tvheadend pvr client: retry connecting within timout
|
||||
|
||||
---
|
||||
xbmc/pvrclients/tvheadend/HTSPConnection.cpp | 10 +++++++++-
|
||||
1 files changed, 9 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/xbmc/pvrclients/tvheadend/HTSPConnection.cpp b/xbmc/pvrclients/tvheadend/HTSPConnection.cpp
|
||||
index 5f5865d..4adb45b 100644
|
||||
--- a/xbmc/pvrclients/tvheadend/HTSPConnection.cpp
|
||||
+++ b/xbmc/pvrclients/tvheadend/HTSPConnection.cpp
|
||||
@@ -57,12 +57,20 @@ bool CHTSPConnection::Connect()
|
||||
if (m_bIsConnected)
|
||||
return true;
|
||||
|
||||
+ cTimeMs RetryTimeout;
|
||||
char errbuf[1024];
|
||||
int errlen = sizeof(errbuf);
|
||||
|
||||
XBMC->Log(LOG_DEBUG, "%s - connecting to '%s', port '%d'", __FUNCTION__, m_strHostname.c_str(), m_iPortnumber);
|
||||
|
||||
- m_fd = tcp_connect(m_strHostname.c_str(), m_iPortnumber, errbuf, errlen, m_iConnectTimeout);
|
||||
+ m_fd = INVALID_SOCKET;
|
||||
+ while (m_fd == INVALID_SOCKET && RetryTimeout.Elapsed() < (uint)m_iConnectTimeout * 1000)
|
||||
+ {
|
||||
+ m_fd = tcp_connect(m_strHostname.c_str(), m_iPortnumber, errbuf, errlen,
|
||||
+ m_iConnectTimeout * 1000 - RetryTimeout.Elapsed());
|
||||
+ cCondWait::SleepMs(100);
|
||||
+ }
|
||||
+
|
||||
if(m_fd == INVALID_SOCKET)
|
||||
{
|
||||
XBMC->Log(LOG_ERROR, "%s - failed to connect to the backend (%s)", __FUNCTION__, errbuf);
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 949162c47809bb7e9ae2e2b24aad7776a737ecc4 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Op den Kamp <lars@opdenkamp.eu>
|
||||
Date: Tue, 3 Jan 2012 02:09:37 +0100
|
||||
Subject: [PATCH] pvr: remove deleted channels from the internal group too.
|
||||
closes #366
|
||||
|
||||
---
|
||||
xbmc/pvr/channels/PVRChannelGroup.cpp | 5 +----
|
||||
1 files changed, 1 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/xbmc/pvr/channels/PVRChannelGroup.cpp b/xbmc/pvr/channels/PVRChannelGroup.cpp
|
||||
index 9748fb0..0f74527 100644
|
||||
--- a/xbmc/pvr/channels/PVRChannelGroup.cpp
|
||||
+++ b/xbmc/pvr/channels/PVRChannelGroup.cpp
|
||||
@@ -608,11 +608,8 @@ bool CPVRChannelGroup::RemoveDeletedChannels(const CPVRChannelGroup &channels)
|
||||
/* since it was not found in the internal group, it was deleted from the backend */
|
||||
channel->Delete();
|
||||
}
|
||||
- else
|
||||
- {
|
||||
- erase(begin() + iChannelPtr);
|
||||
- }
|
||||
|
||||
+ erase(begin() + iChannelPtr);
|
||||
m_bChanged = true;
|
||||
bReturn = true;
|
||||
}
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,165 +0,0 @@
|
||||
From 3daa7b4ea1ef04a347d660f4c696beaaeb30a83e Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Fri, 6 Jan 2012 16:07:30 +0100
|
||||
Subject: [PATCH] vdpau: fix segfault on recovery
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 74 +++++++++++++++---------
|
||||
1 files changed, 46 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
|
||||
index 823686c..efd05de 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
|
||||
@@ -207,6 +207,16 @@ void CVDPAU::Close()
|
||||
FiniVDPAUOutput();
|
||||
FiniVDPAUProcs();
|
||||
|
||||
+ while (!m_videoSurfaces.empty())
|
||||
+ {
|
||||
+ vdpau_render_state *render = m_videoSurfaces.back();
|
||||
+ m_videoSurfaces.pop_back();
|
||||
+ if (render->bitstream_buffers_allocated)
|
||||
+ m_dllAvUtil.av_freep(&render->bitstream_buffers);
|
||||
+ render->bitstream_buffers_allocated = 0;
|
||||
+ free(render);
|
||||
+ }
|
||||
+
|
||||
g_Windowing.Unregister(this);
|
||||
m_dllAvUtil.Unload();
|
||||
}
|
||||
@@ -698,10 +708,13 @@ void CVDPAU::InitVDPAUProcs()
|
||||
VdpStatus vdp_st;
|
||||
|
||||
// Create Device
|
||||
+ // tested on 64bit Ubuntu 11.10 and it deadlocked without this
|
||||
+ XLockDisplay(m_Display);
|
||||
vdp_st = dl_vdp_device_create_x11(m_Display, //x_display,
|
||||
mScreen, //x_screen,
|
||||
&vdp_device,
|
||||
&vdp_get_proc_address);
|
||||
+ XUnlockDisplay(m_Display);
|
||||
|
||||
CLog::Log(LOGNOTICE,"vdp_device = 0x%08x vdp_st = 0x%08x",vdp_device,vdp_st);
|
||||
if (vdp_st != VDP_STATUS_OK)
|
||||
@@ -779,16 +792,6 @@ void CVDPAU::InitVDPAUProcs()
|
||||
|
||||
void CVDPAU::FiniVDPAUProcs()
|
||||
{
|
||||
- while (!m_videoSurfaces.empty())
|
||||
- {
|
||||
- vdpau_render_state *render = m_videoSurfaces.back();
|
||||
- m_videoSurfaces.pop_back();
|
||||
- if (render->bitstream_buffers_allocated)
|
||||
- m_dllAvUtil.av_freep(&render->bitstream_buffers);
|
||||
- render->bitstream_buffers_allocated = 0;
|
||||
- free(render);
|
||||
- }
|
||||
-
|
||||
if (vdp_device == VDP_INVALID_HANDLE) return;
|
||||
|
||||
VdpStatus vdp_st;
|
||||
@@ -827,16 +830,14 @@ void CVDPAU::FiniVDPAUOutput()
|
||||
return;
|
||||
decoder = VDP_INVALID_HANDLE;
|
||||
|
||||
- while (!m_videoSurfaces.empty())
|
||||
+ for (unsigned int i = 0; i < m_videoSurfaces.size(); ++i)
|
||||
{
|
||||
- vdpau_render_state *render = m_videoSurfaces.back();
|
||||
- m_videoSurfaces.pop_back();
|
||||
- if (render->bitstream_buffers_allocated)
|
||||
- m_dllAvUtil.av_freep(&render->bitstream_buffers);
|
||||
- render->bitstream_buffers_allocated = 0;
|
||||
- vdp_st = vdp_video_surface_destroy(render->surface);
|
||||
- render->surface = VDP_INVALID_HANDLE;
|
||||
- free(render);
|
||||
+ vdpau_render_state *render = m_videoSurfaces[i];
|
||||
+ if (render->surface != VDP_INVALID_HANDLE)
|
||||
+ {
|
||||
+ vdp_st = vdp_video_surface_destroy(render->surface);
|
||||
+ render->surface = VDP_INVALID_HANDLE;
|
||||
+ }
|
||||
if (CheckStatus(vdp_st, __LINE__))
|
||||
return;
|
||||
}
|
||||
@@ -999,14 +1000,14 @@ bool CVDPAU::FiniOutputMethod()
|
||||
{
|
||||
CLog::Log(LOGDEBUG, "GLX: Destroying glPixmap");
|
||||
glXDestroyPixmap(m_Display, m_glPixmap);
|
||||
- m_glPixmap = NULL;
|
||||
+ m_glPixmap = None;
|
||||
}
|
||||
|
||||
if (m_Pixmap)
|
||||
{
|
||||
CLog::Log(LOGDEBUG, "GLX: Destroying XPixmap");
|
||||
XFreePixmap(m_Display, m_Pixmap);
|
||||
- m_Pixmap = NULL;
|
||||
+ m_Pixmap = None;
|
||||
}
|
||||
|
||||
outputSurface = presentSurface = VDP_INVALID_HANDLE;
|
||||
@@ -1086,7 +1087,8 @@ bool CVDPAU::IsSurfaceValid(vdpau_render_state *render)
|
||||
{
|
||||
// find render state in queue
|
||||
bool found(false);
|
||||
- for(unsigned int i = 0; i < m_videoSurfaces.size(); ++i)
|
||||
+ unsigned int i;
|
||||
+ for(i = 0; i < m_videoSurfaces.size(); ++i)
|
||||
{
|
||||
if(m_videoSurfaces[i] == render)
|
||||
{
|
||||
@@ -1094,7 +1096,18 @@ bool CVDPAU::IsSurfaceValid(vdpau_render_state *render)
|
||||
break;
|
||||
}
|
||||
}
|
||||
- return found;
|
||||
+ if (!found)
|
||||
+ {
|
||||
+ CLog::Log(LOGERROR,"%s - video surface not found", __FUNCTION__);
|
||||
+ return false;
|
||||
+ }
|
||||
+ if (m_videoSurfaces[i]->surface == VDP_INVALID_HANDLE)
|
||||
+ {
|
||||
+ m_videoSurfaces[i]->state = 0;
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ return true;
|
||||
}
|
||||
|
||||
int CVDPAU::FFGetBuffer(AVCodecContext *avctx, AVFrame *pic)
|
||||
@@ -1140,11 +1153,17 @@ int CVDPAU::FFGetBuffer(AVCodecContext *avctx, AVFrame *pic)
|
||||
CLog::Log(LOGWARNING, "CVDPAU::FFGetBuffer - calloc failed");
|
||||
return -1;
|
||||
}
|
||||
+ render->surface = VDP_INVALID_HANDLE;
|
||||
+ vdp->m_videoSurfaces.push_back(render);
|
||||
+ }
|
||||
+
|
||||
+ if (render->surface == VDP_INVALID_HANDLE)
|
||||
+ {
|
||||
vdp_st = vdp->vdp_video_surface_create(vdp->vdp_device,
|
||||
- vdp->vdp_chroma_type,
|
||||
- avctx->coded_width,
|
||||
- avctx->coded_height,
|
||||
- &render->surface);
|
||||
+ vdp->vdp_chroma_type,
|
||||
+ avctx->coded_width,
|
||||
+ avctx->coded_height,
|
||||
+ &render->surface);
|
||||
vdp->CheckStatus(vdp_st, __LINE__);
|
||||
if (vdp_st != VDP_STATUS_OK)
|
||||
{
|
||||
@@ -1152,7 +1171,6 @@ int CVDPAU::FFGetBuffer(AVCodecContext *avctx, AVFrame *pic)
|
||||
CLog::Log(LOGERROR, "CVDPAU::FFGetBuffer - No Video surface available could be created");
|
||||
return -1;
|
||||
}
|
||||
- vdp->m_videoSurfaces.push_back(render);
|
||||
}
|
||||
|
||||
if (render == NULL)
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,121 +0,0 @@
|
||||
From ac6a16ff11ba6087cba773938c34558a4bce4837 Mon Sep 17 00:00:00 2001
|
||||
From: Jonathan Marshall <jmarshall@never.you.mind>
|
||||
Date: Wed, 18 Jan 2012 11:48:17 +1300
|
||||
Subject: [PATCH] Fix finding of local thumbs/fanart for VIDEO_TS/BDMV items
|
||||
in the parent folder
|
||||
|
||||
---
|
||||
xbmc/FileItem.cpp | 45 +++++++++++++++++++++++++++++++--------------
|
||||
xbmc/FileItem.h | 14 ++++++++++++++
|
||||
2 files changed, 45 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/xbmc/FileItem.cpp b/xbmc/FileItem.cpp
|
||||
index 8e2f1df..c21c0f4 100644
|
||||
--- a/xbmc/FileItem.cpp
|
||||
+++ b/xbmc/FileItem.cpp
|
||||
@@ -2112,25 +2112,11 @@ void CFileItemList::StackFolders()
|
||||
if (!dvdPath.IsEmpty())
|
||||
{
|
||||
// NOTE: should this be done for the CD# folders too?
|
||||
- /* set the thumbnail based on folder */
|
||||
- item->SetCachedVideoThumb();
|
||||
- if (!item->HasThumbnail())
|
||||
- item->SetUserVideoThumb();
|
||||
-
|
||||
item->m_bIsFolder = false;
|
||||
item->SetPath(dvdPath);
|
||||
item->SetLabel2("");
|
||||
item->SetLabelPreformated(true);
|
||||
m_sortMethod = SORT_METHOD_NONE; /* sorting is now broken */
|
||||
-
|
||||
- /* override the previously set thumb if video_ts.ifo has any */
|
||||
- /* otherwise user can't set icon on the stacked file as that */
|
||||
- /* will allways be set on the video_ts.ifo file */
|
||||
- CStdString thumb(item->GetCachedVideoThumb());
|
||||
- if(CFile::Exists(thumb))
|
||||
- item->SetThumbnailImage(thumb);
|
||||
- else
|
||||
- item->SetUserVideoThumb();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2646,6 +2632,15 @@ CStdString CFileItem::GetUserVideoThumb() const
|
||||
if (CFile::Exists(fileThumb))
|
||||
return fileThumb;
|
||||
|
||||
+ if (IsOpticalMediaFile())
|
||||
+ { // special case for optical media "folders" - check the parent folder (or parent of parent)
|
||||
+ // TODO: A better way to handle this would be to treat stacked folders as folders rather than files.
|
||||
+ CFileItem item(GetLocalMetadataPath(), true);
|
||||
+ CStdString thumb(item.GetUserVideoThumb());
|
||||
+ if (!thumb.IsEmpty())
|
||||
+ return thumb;
|
||||
+ }
|
||||
+
|
||||
// 2. - check movie.tbn, as long as it's not a folder
|
||||
if (!m_bIsFolder)
|
||||
{
|
||||
@@ -2886,6 +2881,12 @@ CStdString CFileItem::GetLocalFanart() const
|
||||
|
||||
CFileItemList items;
|
||||
CDirectory::GetDirectory(strDir, items, g_settings.m_pictureExtensions, false, false, DIR_CACHE_ALWAYS, false, true);
|
||||
+ if (IsOpticalMediaFile())
|
||||
+ { // grab from the optical media parent folder as well - see GetUserVideoThumb
|
||||
+ CFileItemList moreItems;
|
||||
+ CDirectory::GetDirectory(GetLocalMetadataPath(), moreItems, g_settings.m_pictureExtensions, false, false, DIR_CACHE_ALWAYS, false, true);
|
||||
+ items.Append(moreItems);
|
||||
+ }
|
||||
|
||||
CStdStringArray fanarts;
|
||||
StringUtils::SplitString(g_advancedSettings.m_fanartImages, "|", fanarts);
|
||||
@@ -2912,6 +2913,22 @@ CStdString CFileItem::GetLocalFanart() const
|
||||
return "";
|
||||
}
|
||||
|
||||
+CStdString CFileItem::GetLocalMetadataPath() const
|
||||
+{
|
||||
+ if (m_bIsFolder && !IsFileFolder())
|
||||
+ return m_strPath;
|
||||
+
|
||||
+ CStdString parent(URIUtils::GetParentPath(m_strPath));
|
||||
+ CStdString parentFolder(parent);
|
||||
+ URIUtils::RemoveSlashAtEnd(parentFolder);
|
||||
+ parentFolder = URIUtils::GetFileName(parentFolder);
|
||||
+ if (parentFolder == "VIDEO_TS" || parentFolder == "BDMV")
|
||||
+ { // go back up another one
|
||||
+ parent = URIUtils::GetParentPath(parent);
|
||||
+ }
|
||||
+ return parent;
|
||||
+}
|
||||
+
|
||||
CStdString CFileItem::GetCachedFanart() const
|
||||
{
|
||||
return CThumbnailCache::GetFanart(*this);
|
||||
diff --git a/xbmc/FileItem.h b/xbmc/FileItem.h
|
||||
index d621880..c5a748b 100644
|
||||
--- a/xbmc/FileItem.h
|
||||
+++ b/xbmc/FileItem.h
|
||||
@@ -258,6 +258,20 @@ class CFileItem :
|
||||
void SetUserVideoThumb();
|
||||
void SetUserMusicThumb(bool alwaysCheckRemote = false);
|
||||
|
||||
+ /*! \brief Get the path where we expect local metadata to reside.
|
||||
+ For a folder, this is just the existing path (eg tvshow folder)
|
||||
+ For a file, this is the parent path, with exceptions made for VIDEO_TS and BDMV files
|
||||
+
|
||||
+ Three cases are handled:
|
||||
+
|
||||
+ /foo/bar/movie_name/file_name -> /foo/bar/movie_name/
|
||||
+ /foo/bar/movie_name/VIDEO_TS/file_name -> /foo/bar/movie_name/
|
||||
+ /foo/bar/movie_name/BDMV/file_name -> /foo/bar/movie_name/
|
||||
+
|
||||
+ \sa URIUtils::GetParentPath
|
||||
+ */
|
||||
+ CStdString GetLocalMetadataPath() const;
|
||||
+
|
||||
// finds a matching local trailer file
|
||||
CStdString FindTrailer() const;
|
||||
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,38 +0,0 @@
|
||||
From fb3128b24683e3b700f10aa3f8e3c58eb0a2c41a Mon Sep 17 00:00:00 2001
|
||||
From: Jonathan Marshall <jmarshall@never.you.mind>
|
||||
Date: Thu, 19 Jan 2012 12:18:17 +1300
|
||||
Subject: [PATCH] fix movie.nfo not being picked up in the movie folder of
|
||||
bluray or dvd rips
|
||||
|
||||
---
|
||||
xbmc/video/VideoInfoScanner.cpp | 13 +++----------
|
||||
1 files changed, 3 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/xbmc/video/VideoInfoScanner.cpp b/xbmc/video/VideoInfoScanner.cpp
|
||||
index 4534aa1..5cf75a9 100644
|
||||
--- a/xbmc/video/VideoInfoScanner.cpp
|
||||
+++ b/xbmc/video/VideoInfoScanner.cpp
|
||||
@@ -1445,17 +1445,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if (!nfoFile.IsEmpty() && item->IsOpticalMediaFile())
|
||||
+ if (nfoFile.IsEmpty() && item->IsOpticalMediaFile())
|
||||
{
|
||||
- CStdString parent(URIUtils::GetParentPath(item->GetPath()));
|
||||
- CStdString parentFolder(parent);
|
||||
- URIUtils::RemoveSlashAtEnd(parentFolder);
|
||||
- if (parentFolder == "VIDEO_TS" || parentFolder == "BDMV")
|
||||
- { // check for movie.nfo in the parent folder
|
||||
- parent = URIUtils::GetParentPath(parent);
|
||||
- CFileItem parentDirectory(parent, true);
|
||||
- nfoFile = GetnfoFile(&parentDirectory, true);
|
||||
- }
|
||||
+ CFileItem parentDirectory(item->GetLocalMetadataPath(), true);
|
||||
+ nfoFile = GetnfoFile(&parentDirectory, true);
|
||||
}
|
||||
}
|
||||
// folders (or stacked dvds) can take any nfo file if there's a unique one
|
||||
--
|
||||
1.7.5.4
|
||||
|
Loading…
x
Reference in New Issue
Block a user