From 290e95b76ab83c435d059e484d9d0fbacd024562 Mon Sep 17 00:00:00 2001 From: Edward Emelianov Date: Mon, 20 Mar 2023 11:52:28 +0300 Subject: [PATCH] fixed bug in broken image over net --- client.c | 14 ++++++++++++-- locale/ru/messages.po | 2 +- socket.c | 2 ++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/client.c b/client.c index 4c1cbf8..554fb99 100644 --- a/client.c +++ b/client.c @@ -317,8 +317,17 @@ static void *grabnext(void _U_ *arg){ // daemon grabbing images through the net expstate = CAMERA_CAPTURE; SENDMSG(CMD_EXPSTATE "=%d", CAMERA_CAPTURE); // start capture double timeout = GP->exptime + CLIENT_TIMEOUT, t0 = dtime(); + useconds_t sleept = 500000; // 0.5s + if(GP->exptime < 0.5){ + sleept = (useconds_t)(GP->exptime * 500000.); + if(sleept < 1000) sleept = 1000; + } while(dtime() - t0 < timeout){ - SENDMSG(CMD_EXPSTATE); + DBG("SLEEP!"); + usleep(sleept); + //SENDMSG(CMD_EXPSTATE); + getans(sock); + DBG("EXPSTATE ===> %d", expstate); if(expstate != CAMERA_CAPTURE) break; } if(dtime() - t0 >= timeout || expstate != CAMERA_FRAMERDY){ @@ -326,7 +335,8 @@ static void *grabnext(void _U_ *arg){ // daemon grabbing images through the net continue; } DBG("Frame ready"); - sendstrmessage(sock, CMD_GETIMAGE); + while(readmsg(sock)); // clear all incoming data + sendstrmessage(sock, CMD_GETIMAGE); // ask for image if(imbufsz < imdatalen){ DBG("Reallocate memory from %d to %d", imbufsz, imdatalen); ima.data = realloc(ima.data, imdatalen); diff --git a/locale/ru/messages.po b/locale/ru/messages.po index 0393b57..9f045fb 100644 --- a/locale/ru/messages.po +++ b/locale/ru/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-09 11:35+0300\n" +"POT-Creation-Date: 2023-03-20 11:45+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/socket.c b/socket.c index 10dafe8..139308f 100644 --- a/socket.c +++ b/socket.c @@ -136,6 +136,8 @@ int start_socket(int isserver, char *path, int isnet){ int sendimage(int fd, uint16_t *data, int l){ if(fd < 1 || !data || l < 1) return TRUE; // empty message DBG("send new image (size=%d) to fd %d", l, fd); +//strncpy((char*)data, "TEST image data\n", 17); +//l = 16; if(l != send(fd, data, l, MSG_NOSIGNAL)){ WARN("write()"); LOGWARN("write()");