Added mutex to YACReaderClientConnectionWorker, syncronized access to DB

This commit is contained in:
Luis Ángel San Martín 2013-08-29 13:22:00 +02:00
parent 8800595073
commit 38f934e4c6
2 changed files with 6 additions and 0 deletions

View File

@ -11,6 +11,8 @@
using namespace YACReader; using namespace YACReader;
QMutex YACReaderClientConnectionWorker::dbMutex;
YACReaderLocalServer::YACReaderLocalServer(QObject *parent) : YACReaderLocalServer::YACReaderLocalServer(QObject *parent) :
QThread(parent) QThread(parent)
{ {
@ -145,12 +147,14 @@ void YACReaderClientConnectionWorker::run()
void YACReaderClientConnectionWorker::getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & siblings) void YACReaderClientConnectionWorker::getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & siblings)
{ {
QMutexLocker locker(&dbMutex);
comic = DBHelper::getComicInfo(DBHelper::getLibrariesNames().at(libraryId), comic.id); comic = DBHelper::getComicInfo(DBHelper::getLibrariesNames().at(libraryId), comic.id);
siblings = DBHelper::getSiblings(DBHelper::getLibrariesNames().at(libraryId), comic.parentId); siblings = DBHelper::getSiblings(DBHelper::getLibrariesNames().at(libraryId), comic.parentId);
} }
void YACReaderClientConnectionWorker::updateComic(quint64 libraryId, ComicDB & comic) void YACReaderClientConnectionWorker::updateComic(quint64 libraryId, ComicDB & comic)
{ {
QMutexLocker locker(&dbMutex);
DBHelper::update(DBHelper::getLibrariesNames().at(libraryId), comic.info); DBHelper::update(DBHelper::getLibrariesNames().at(libraryId), comic.info);
emit comicUpdated(libraryId, comic); emit comicUpdated(libraryId, comic);
} }

View File

@ -3,6 +3,7 @@
#include <QObject> #include <QObject>
#include <QThread> #include <QThread>
#include <QMutex>
class QLocalServer; class QLocalServer;
class QLocalSocket; class QLocalSocket;
@ -35,6 +36,7 @@ public:
signals: signals:
void comicUpdated(quint64 libraryId, const ComicDB & comic); void comicUpdated(quint64 libraryId, const ComicDB & comic);
private: private:
static QMutex dbMutex;
void run(); void run();
void getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & sibling); void getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & sibling);