diff --git a/src/io/pibinarylog.cpp b/src/io/pibinarylog.cpp index c8bcbca2..88dd04a9 100644 --- a/src/io/pibinarylog.cpp +++ b/src/io/pibinarylog.cpp @@ -359,6 +359,7 @@ bool PIBinaryLog::checkFileHeader() { PIBinaryLog::BinLogRecord PIBinaryLog::readRecord() { + logmutex.lock(); PIByteArray ba; BinLogRecord br; lastrecord.id = 0; @@ -369,6 +370,7 @@ PIBinaryLog::BinLogRecord PIBinaryLog::readRecord() { ba >> br.id >> br.size >> br.timestamp; } else { br.id = -1; + logmutex.unlock(); return br; } if (br.id > 0 && br.size > 0) { @@ -379,6 +381,7 @@ PIBinaryLog::BinLogRecord PIBinaryLog::readRecord() { lastrecord = br; if (br.id == 0) fileError(); moveIndex(index_pos.value(file.pos(), -1)); + logmutex.unlock(); return br; } @@ -497,12 +500,14 @@ bool PIBinaryLog::createIndex() { void PIBinaryLog::seekTo(int rindex) { + logmutex.lock(); if (rindex < index.size_s() && rindex >= 0) { file.seek(index[rindex].pos); moveIndex(index_pos.value(file.pos(), -1)); play_time = index[rindex].timestamp.toMilliseconds(); lastrecord.timestamp = index[rindex].timestamp; } + logmutex.unlock(); } diff --git a/src/io/pibinarylog.h b/src/io/pibinarylog.h index 47a1611b..554192dc 100644 --- a/src/io/pibinarylog.h +++ b/src/io/pibinarylog.h @@ -293,6 +293,7 @@ private: PIFile file; BinLogRecord lastrecord; PISystemTime startlogtime, play_delay, split_time; + PIMutex logmutex; double play_time, play_speed; llong split_size; int write_count, split_count, default_id, current_index;