From 460519c0750daa91c2b4d7b0875909c707df8018 Mon Sep 17 00:00:00 2001 From: peri4 Date: Sun, 8 May 2022 16:35:01 +0300 Subject: [PATCH] PISingleApplication fix and optimize --- libs/main/system/pisingleapplication.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libs/main/system/pisingleapplication.cpp b/libs/main/system/pisingleapplication.cpp index 5bff0f6b..56d6ca80 100644 --- a/libs/main/system/pisingleapplication.cpp +++ b/libs/main/system/pisingleapplication.cpp @@ -49,10 +49,10 @@ bool PISingleApplication::isFirst() const { void PISingleApplication::sendMessage(const PIByteArray & m) { waitFirst(); PIByteArray ba; - int lm[2] = {0, 0}; + int lm[3] = {0, 0, 0}; for (;;) { - shm->read(lm, 8); - if (lm[1] == 0) break; + shm->read(lm, 12); + if (lm[2] == 0) break; piMSleep(10); } ba << sacnt << sacnt << int(1) << m; @@ -85,10 +85,12 @@ void PISingleApplication::run() { int st_[2] = {sacnt, sacnt}; shm->write(st_, 8); //piCoutObj << "write" << sacnt; - readed = shm->readAll(); - int t1(0), t2(0), nm(0); - readed >> t1 >> t2 >> nm; - if (nm != 0 && t1 == t2) { + int ri[3] = {0, 0, 0}; + const int hdr_sz = sizeof(int) * 3; + shm->read(ri, hdr_sz); + if (ri[2] != 0 && ri[0] == ri[1]) { + readed.resize(shm->size() - hdr_sz); + shm->read(readed.data(), readed.size(), hdr_sz); PIByteArray msg; readed >> msg; if (!msg.isEmpty()) {