From f559fa93d82a4426debfbd0638fb51ef5212e137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=8B=D1=87=D0=BA=D0=BE=D0=B2=20=D0=90=D0=BD=D0=B4?= =?UTF-8?q?=D1=80=D0=B5=D0=B9?= Date: Tue, 16 Feb 2016 13:11:26 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/pip@180 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- src/io/pibinarylog.cpp | 5 +++++ src/io/pibinarylog.h | 1 + 2 files changed, 6 insertions(+) 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;