diff options
author | ulion <ulion2002@gmail.com> | 2013-05-10 09:13:57 +0800 |
---|---|---|
committer | ulion <ulion2002@gmail.com> | 2013-05-10 09:15:33 +0800 |
commit | 48666eb3454980a46a4e7b52de23bcd0b00b16ab (patch) | |
tree | 425076ee260d211a4b93e56812f3e72797d480dc | |
parent | 91983a4a3c7d3a3610e72615a74a90ec46a55582 (diff) |
When using double cache, do not increase the total memory cost.
-rw-r--r-- | xbmc/filesystem/FileCache.cpp | 12 |
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); |