summaryrefslogtreecommitdiff
path: root/src/modules/rkt
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2023-07-17 13:54:46 -0700
committerVito Caputo <vcaputo@pengaru.com>2023-07-17 13:54:46 -0700
commiteb0a0bac1f8a78e5164aa07c2e0157d34733cec8 (patch)
tree0429b893260d1bf9f061985da1f0cff40d6fe3a6 /src/modules/rkt
parentb9450fa1b2baba41a912d3d57682df9e14b02530 (diff)
modules/rkt: limit Rocket reconnect frequency to 2HZ
On Linux I don't notice a significant affect on anything letting rkt try connect every frame when offline but in creative mode. On Windows however, Dan reported significant latencies in the Scener prompt responsiveness and visible slowdowns in this condition. I suspect the WIN32 Rocket library's sync_tcp_connect() code is the real problem here. But for now I can ameliorate things a bit by just hammering on that code path less when unconnected.
Diffstat (limited to 'src/modules/rkt')
-rw-r--r--src/modules/rkt/rkt.c9
-rw-r--r--src/modules/rkt/rkt.h1
2 files changed, 8 insertions, 2 deletions
diff --git a/src/modules/rkt/rkt.c b/src/modules/rkt/rkt.c
index 9aa18ee..4caa9ba 100644
--- a/src/modules/rkt/rkt.c
+++ b/src/modules/rkt/rkt.c
@@ -222,8 +222,13 @@ static void rkt_update_rocket(rkt_context_t *ctxt, unsigned ticks)
if (!s->connect)
return;
- if (!ctxt->connected || sync_update(ctxt->sync_device, ctxt->rocket_row, &rkt_sync_cb, ctxt) < 0)
- ctxt->connected = !sync_tcp_connect(ctxt->sync_device, s->host, s->port);
+ if (!ctxt->connected || sync_update(ctxt->sync_device, ctxt->rocket_row, &rkt_sync_cb, ctxt) < 0) {
+ /* limit connect attempts to 2HZ */
+ if (ticks - ctxt->last_connect >= 500) {
+ ctxt->connected = !sync_tcp_connect(ctxt->sync_device, s->host, s->port);
+ ctxt->last_connect = ticks;
+ }
+ }
}
diff --git a/src/modules/rkt/rkt.h b/src/modules/rkt/rkt.h
index 4ec8599..53b9eba 100644
--- a/src/modules/rkt/rkt.h
+++ b/src/modules/rkt/rkt.h
@@ -22,6 +22,7 @@ typedef struct rkt_context_t {
double rows_per_ms;
double rocket_row;
unsigned last_ticks;
+ unsigned last_connect; /* ticks at last connect attempt */
unsigned paused:1;
unsigned connected:1; /* currently connected to the RocketEditor */
size_t n_scenes;
© All Rights Reserved