本文整理汇总了C++中CTextureDatabase::GetCachedTextureUrls方法的典型用法代码示例。如果您正苦于以下问题:C++ CTextureDatabase::GetCachedTextureUrls方法的具体用法?C++ CTextureDatabase::GetCachedTextureUrls怎么用?C++ CTextureDatabase::GetCachedTextureUrls使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CTextureDatabase
的用法示例。
在下文中一共展示了CTextureDatabase::GetCachedTextureUrls方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoWork
bool CTextureCleanupJob::DoWork()
{
CTextureDatabase db;
if (db.Open())
{
std::string path;
std::string fn;
std::string prevPath = "";
std::vector<std::string> pathContent;
XFILE::CSpecialProtocolDirectory thumbDir;
CFileItemList files;
int fileIdx = 0;
int totFileDel = 0;
int totDbDel = 0;
auto deleteFile = [&]()
{
std::string todel = files.Get(fileIdx)->GetPath();
CLog::Log(LOGDEBUG, "CTextureCleanupJob: deleting %s", todel.c_str());
XFILE::CFile::Delete(todel);
totFileDel++;
fileIdx++;
};
std::vector<std::pair<int, std::string>> urls = db.GetCachedTextureUrls();
for (const auto &url : urls)
{
std::string cachedurl = url.second;
URIUtils::Split(cachedurl, path, fn);
std::string cmpurl = "special://thumbnails/" + cachedurl;
if (path != prevPath)
{
while (fileIdx < files.Size())
deleteFile();
files.Clear();
thumbDir.GetDirectory(CURL("special://thumbnails/" + path), files);
files.Sort(SortByPath, SortOrderAscending);
prevPath = path;
fileIdx = 0;
}
while (fileIdx < files.Size() && files.Get(fileIdx)->GetPath() < cmpurl)
deleteFile();
if (fileIdx < files.Size() && files.Get(fileIdx)->GetPath() == cmpurl)
fileIdx++;
else
{
// No file for current entry; delete it
CLog::Log(LOGDEBUG, "CTextureCleanupJob: deleting from Db: %d / %s", url.first, cachedurl.c_str());
db.ClearCachedTexture(url.first, cachedurl);
totDbDel++;
}
}
while (fileIdx < files.Size())
deleteFile();
CLog::Log(LOGDEBUG, "CTextureCleanupJob: %d thumbnails deleted / %d db entries removed", totFileDel, totDbDel);
}
return true;
}