From a118487afaef3da1d62bffcbd91095ac342c846a Mon Sep 17 00:00:00 2001 From: Amar Takhar Date: Wed, 9 Feb 2011 21:53:37 +0000 Subject: [PATCH] Remove cache cleaning code from ffms, I'll eventually write something in libaegisub as we need cache cleaning for other areas too. (debug log, crash logs etc) Originally committed to SVN as r5330. --- aegisub/libmedia/common/ffms_common.cpp | 122 ------------------------ aegisub/libmedia/common/ffms_common.h | 18 ---- aegisub/libmedia/video/ffms_video.cpp | 5 - 3 files changed, 145 deletions(-) diff --git a/aegisub/libmedia/common/ffms_common.cpp b/aegisub/libmedia/common/ffms_common.cpp index 0e7955d70..463b85b19 100644 --- a/aegisub/libmedia/common/ffms_common.cpp +++ b/aegisub/libmedia/common/ffms_common.cpp @@ -263,128 +263,6 @@ std::string toHash = "XXX"; return "XXX"; } - -/// @brief Starts the cache cleaner thread -/// @return True on success, false if the thread could not be started. -bool FFmpegSourceProvider::CleanCache() { -/* - LOG_D("provider/ffmpegsource/cache") << "attempting to start thread"; - - FFmpegSourceCacheCleaner *CleaningThread = new FFmpegSourceCacheCleaner(this); - - if (CleaningThread->Create() != wxTHREAD_NO_ERROR) { - LOG_D("provider/ffmpegsource/cache") << "thread creation failed"; - delete CleaningThread; - CleaningThread = NULL; - return false; - } - if (CleaningThread->Run() != wxTHREAD_NO_ERROR) { - LOG_D("provider/ffmpegsource/cache") << "failed to start thread"; - delete CleaningThread; - CleaningThread = NULL; - return false; - } - - LOG_D("provider/ffmpegsource/cache") << "thread started successfully"; - return true; -*/ -} -/* - - -/// @brief constructor -/// @param par the parent provider -FFmpegSourceCacheCleaner::FFmpegSourceCacheCleaner(FFmpegSourceProvider *par) : wxThread(wxTHREAD_DETACHED) { - parent = par; -} - -/// @brief Cleans the ffms2 index cache folder -/// @return Returns non-0 on error, 0 otherwise. -wxThread::ExitCode FFmpegSourceCacheCleaner::Entry() { - wxMutexLocker lock(FFmpegSourceProvider::CleaningInProgress); - if (!lock.IsOk()) { - LOG_D("provider/ffmpegsource/cache") << "cleaning already in progress, thread exiting"; - return (wxThread::ExitCode)1; - } - - wxString cachedirname = StandardPaths::DecodePath(_T("?user/ffms2cache/")); - wxDir cachedir; - if (!cachedir.Open(cachedirname)) { - LOG_D("provider/ffmpegsource/cache") << "couldn't open cache directory " << cachedirname.c_str(); - return (wxThread::ExitCode)1; - } - - // sleep for a bit so we (hopefully) don't thrash the disk too much while indexing is in progress - wxThread::This()->Sleep(2000); - - // the option is in megabytes, we need bytes - // shift left by 20 is CLEARLY more efficient than multiplying by 1048576 - int64_t maxsize = OPT_GET("Provider/FFmpegSource/Cache/Size")->GetInt() << 20; - int64_t cursize = wxDir::GetTotalSize(cachedirname).GetValue(); - int maxfiles = OPT_GET("Provider/FFmpegSource/Cache/Files")->GetInt(); - - if (!cachedir.HasFiles(_T("*.ffindex"))) { - LOG_D("provider/ffmpegsource/cache") << "no index files in cache folder, exiting"; - return (wxThread::ExitCode)0; - } - - int deleted = 0; - int numfiles = 0; - std::multimap cachefiles; - wxString curfn_str; - wxFileName curfn; - wxDateTime curatime; - - // unusually paranoid sanity check - // (someone might have deleted the file(s) after we did HasFiles() above; does wxDir.Open() lock the dir?) - if (!cachedir.GetFirst(&curfn_str, _T("*.ffindex"), wxDIR_FILES)) { - LOG_D("provider/ffmpegsource/cache") << "undefined error"; - return (wxThread::ExitCode)1; - } - - numfiles++; - curfn = wxFileName(cachedirname, curfn_str); - curfn.GetTimes(&curatime, NULL, NULL); - // FIXME: will break when the time_t's wrap around!!1! - cachefiles.insert(std::pair(curatime.GetTicks(),curfn)); - - while (cachedir.GetNext(&curfn_str)) { - curfn = wxFileName(cachedirname, curfn_str); - curfn.GetTimes(&curatime, NULL, NULL); - cachefiles.insert(std::pair(curatime.GetTicks(),curfn)); - numfiles++; - - wxThread::This()->Sleep(250); - } - - if (numfiles <= maxfiles && cursize <= maxsize) { - LOG_D("provider/ffmpegsource/cache") << "cache does not need cleaning (maxsize=" << (int)maxsize << ", cursize=" << (int)cursize << "; maxfiles=" << maxfiles << "numfiles=" << numfiles << ",exiting"; - return (wxThread::ExitCode)0; - } - - for (std::multimap::iterator i = cachefiles.begin(); i != cachefiles.end(); i++) { - // stop cleaning? - if ((cursize <= maxsize && numfiles <= maxfiles) || numfiles <= 1) - break; - - int64_t fsize = i->second.GetSize().GetValue(); - if (!wxRemoveFile(i->second.GetFullPath())) { - LOG_D("provider/ffmpegsource/cache") << "failed to remove file " << i->second.GetFullPath().c_str(); - continue; - } - cursize -= fsize; - numfiles--; - deleted++; - - wxThread::This()->Sleep(250); - } - - LOG_D("provider/ffmpegsource/cache") << "deleted " << deleted << " files, exiting"; - - return (wxThread::ExitCode)0; -} -*/ - #endif // WITH_FFMPEGSOURCE diff --git a/aegisub/libmedia/common/ffms_common.h b/aegisub/libmedia/common/ffms_common.h index 9b20e0efe..581433892 100644 --- a/aegisub/libmedia/common/ffms_common.h +++ b/aegisub/libmedia/common/ffms_common.h @@ -58,7 +58,6 @@ namespace media { /// @class FFmpegSourceProvider /// @brief Base class for FFMS2 source providers; contains common functions etc class FFmpegSourceProvider { - friend class FFmpegSourceCacheCleaner; public: /// Logging level constants from avutil/log.h enum FFMS_LogLevel { @@ -79,10 +78,6 @@ public: // DialogProgress *ProgressDialog; }; - /// Mutex preventing two cache cleaner threads from running at the same time -// static wxMutex CleaningInProgress; - bool CleanCache(); - static int FFMS_CC UpdateIndexingProgress(int64_t Current, int64_t Total, void *Private); FFMS_Index *DoIndexing(FFMS_Indexer *Indexer, const std::string& Cachename, int Trackmask, FFMS_IndexErrorHandling IndexEH); @@ -95,19 +90,6 @@ public: virtual ~FFmpegSourceProvider() {} }; -/// @class FFmpegSourceCacheCleaner -/// @brief Implements index cache cleaning functionality for the FFMS2 providers -class FFmpegSourceCacheCleaner { -private: - FFmpegSourceProvider *parent; - -public: - FFmpegSourceCacheCleaner(FFmpegSourceProvider *par); - - ~FFmpegSourceCacheCleaner() {}; -// wxThread::ExitCode Entry(); -}; - #endif /* WITH_FFMPEGSOURCE */ } // namespace ffms diff --git a/aegisub/libmedia/video/ffms_video.cpp b/aegisub/libmedia/video/ffms_video.cpp index d97f2176e..2aaa49d24 100644 --- a/aegisub/libmedia/video/ffms_video.cpp +++ b/aegisub/libmedia/video/ffms_video.cpp @@ -167,11 +167,6 @@ void FFmpegSourceVideoProvider::LoadVideo(std::string filename) { // update access time of index file so it won't get cleaned away //XXX: wxFileName(CacheName).Touch(); - // we have now read the index and may proceed with cleaning the index cache - if (!CleanCache()) { - //do something? - } - // track number still not set? if (TrackNumber < 0) { // just grab the first track