From 2a178f416fa88e813ca30fd223b7c7655850148a Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 6 Apr 2023 14:16:28 +1000 Subject: [PATCH] tools/demo-server: only print now if we actually have events And move it to the start of the loop so we print the current timestamp followed by processing the incoming events (if any). These events thus should have timestamps less than now. --- tools/eis-demo-server.c | 17 ++++++++++++++--- tools/eis-demo-server.h | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/tools/eis-demo-server.c b/tools/eis-demo-server.c index 4415314..a2b284b 100644 --- a/tools/eis-demo-server.c +++ b/tools/eis-demo-server.c @@ -352,6 +352,8 @@ eis_demo_server_printf_handle_event(struct eis_demo_server *server, eis_client_get_name(client)); eis_demo_client_new(server, client); + if (!is_sender) + server->nreceiver_clients++; /* insert sophisticated authentication here */ eis_client_connect(client); @@ -368,6 +370,10 @@ eis_demo_server_printf_handle_event(struct eis_demo_server *server, case EIS_EVENT_CLIENT_DISCONNECT: { struct eis_client *client = eis_event_get_client(e); + bool is_sender = eis_client_is_sender(client); + + if (!is_sender) + server->nreceiver_clients--; colorprint("client %s disconnected\n", eis_client_get_name(client)); eis_client_disconnect(client); @@ -657,7 +663,14 @@ int main(int argc, char **argv) .revents = 0, }; - while (!stop && poll(&fds, 1, 1000) > -1) { + int nevents; + while (!stop && (nevents = poll(&fds, 1, 1000)) > -1) { + if (nevents == 0 && server.nreceiver_clients == 0) + continue; + + uint64_t now = eis_now(eis); + colorprint("now: %" PRIu64 "\n", now); + eis_dispatch(eis); while (true) { @@ -671,8 +684,6 @@ int main(int argc, char **argv) } struct eis_demo_client *democlient; - uint64_t now = eis_now(eis); - colorprint("now: %" PRIu64 "\n", now); const int interval = ms2us(12); /* events are 12ms apart */ list_for_each(democlient, &server.clients, link) { diff --git a/tools/eis-demo-server.h b/tools/eis-demo-server.h index 00adefd..18a1bac 100644 --- a/tools/eis-demo-server.h +++ b/tools/eis-demo-server.h @@ -57,6 +57,7 @@ struct eis_demo_server { } handler; struct list clients; + unsigned int nreceiver_clients; }; #if HAVE_LIBEVDEV