[Libreoffice-commits] online.git: loolwsd/TileCache.cpp loolwsd/TileCache.hpp
Mihai Varga
mihai.varga at collabora.com
Wed Aug 12 06:08:11 PDT 2015
loolwsd/TileCache.cpp | 4 ++++
loolwsd/TileCache.hpp | 5 +++++
2 files changed, 9 insertions(+)
New commits:
commit 3e0a3d9ed6bd612e56ab38d8189f63ed2fe35af7
Author: Mihai Varga <mihai.varga at collabora.com>
Date: Wed Aug 12 15:31:02 2015 +0300
loolwsd: use a mutex when moving/removing tiles form the cache
diff --git a/loolwsd/TileCache.cpp b/loolwsd/TileCache.cpp
index 95bb2f5..01714a4 100644
--- a/loolwsd/TileCache.cpp
+++ b/loolwsd/TileCache.cpp
@@ -151,9 +151,11 @@ void TileCache::documentSaved()
for (const auto& it : _toBeRemoved)
File(persistentDirName + "/" + it).remove();
+ _cacheMutex.lock();
// then move the new tiles from the Editing cache to Persistent
for (auto tileIterator = DirectoryIterator(cacheDirName(true)); tileIterator != DirectoryIterator(); ++tileIterator)
tileIterator->moveTo(persistentDirName);
+ _cacheMutex.unlock();
// update status
_toBeRemoved.clear();
@@ -195,6 +197,7 @@ void TileCache::invalidateTiles(int part, int x, int y, int width, int height)
File editingDir(editingDirName);
if (editingDir.exists() && editingDir.isDirectory())
{
+ _cacheMutex.lock();
for (auto tileIterator = DirectoryIterator(editingDir); tileIterator != DirectoryIterator(); ++tileIterator)
{
std::string fileName = tileIterator.path().getFileName();
@@ -203,6 +206,7 @@ void TileCache::invalidateTiles(int part, int x, int y, int width, int height)
File(tileIterator.path()).remove();
}
}
+ _cacheMutex.unlock();
}
// in the Persistent cache, add to _toBeRemoved for removal on save
diff --git a/loolwsd/TileCache.hpp b/loolwsd/TileCache.hpp
index ca3a51f..1e01078 100644
--- a/loolwsd/TileCache.hpp
+++ b/loolwsd/TileCache.hpp
@@ -17,6 +17,9 @@
#include <Poco/File.h>
#include <Poco/Timestamp.h>
+#include <Poco/Mutex.h>
+
+using Poco::FastMutex;
/** Handles the cache for tiles of one document.
@@ -86,6 +89,8 @@ private:
/// Set of tiles that we want to remove from the Persistent cache on the next save.
std::set<std::string> _toBeRemoved;
+
+ Poco::FastMutex _cacheMutex;
};
#endif
More information about the Libreoffice-commits
mailing list