aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorulion <ulion2002@gmail.com>2013-05-10 09:13:57 +0800
committerulion <ulion2002@gmail.com>2013-05-10 09:15:33 +0800
commit48666eb3454980a46a4e7b52de23bcd0b00b16ab (patch)
tree425076ee260d211a4b93e56812f3e72797d480dc
parent91983a4a3c7d3a3610e72615a74a90ec46a55582 (diff)
When using double cache, do not increase the total memory cost.
-rw-r--r--xbmc/filesystem/FileCache.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/xbmc/filesystem/FileCache.cpp b/xbmc/filesystem/FileCache.cpp
index b8df3227d9..5dfd38d877 100644
--- a/xbmc/filesystem/FileCache.cpp
+++ b/xbmc/filesystem/FileCache.cpp
@@ -88,8 +88,16 @@ CFileCache::CFileCache(bool useDoubleCache) : CThread("FileCache")
if (g_advancedSettings.m_cacheMemBufferSize == 0)
m_pCache = new CSimpleFileCache();
else
- m_pCache = new CCircularCache(g_advancedSettings.m_cacheMemBufferSize
- , std::max<unsigned int>( g_advancedSettings.m_cacheMemBufferSize / 4, 1024 * 1024));
+ {
+ size_t front = g_advancedSettings.m_cacheMemBufferSize;
+ size_t back = std::max<size_t>( g_advancedSettings.m_cacheMemBufferSize / 4, 1024 * 1024);
+ if (useDoubleCache)
+ {
+ front = front / 2;
+ back = back / 2;
+ }
+ m_pCache = new CCircularCache(front, back);
+ }
if (useDoubleCache)
{
m_pCache = new CSimpleDoubleCache(m_pCache);