diff --git a/Makefile b/Makefile index 7a6c18a..177fdae 100644 --- a/Makefile +++ b/Makefile @@ -20,8 +20,8 @@ TARGETS = pixelflut-render pixelflut-bench all: $(TARGETS) -pixelflut-render: new.c pixelflut.h - $(CC) $(STD) $(OPT) -pthread $(WARN) $(EXTRA) -o $@ new.c +pixelflut-render: pixelflut.c pixelflut.h + $(CC) $(STD) $(OPT) -pthread $(WARN) $(EXTRA) -o $@ pixelflut.c pixelflut-bench: bench.c pixelflut.h $(CC) $(STD) $(OPT) -pthread $(WARN) $(EXTRA) -o $@ bench.c diff --git a/pixelflut.c b/pixelflut.c index 1a8b2e6..466c2f0 100644 --- a/pixelflut.c +++ b/pixelflut.c @@ -65,7 +65,7 @@ #define FRAME_BYTES (FRAME_PIXELS * FRAME_CHANNELS) /* Top-left corner where the frame is drawn on the shared wall. */ -#define CANVAS_OFFSET_X 1200 +#define CANVAS_OFFSET_X 80 #define CANVAS_OFFSET_Y 40 /* Number of datagrams needed to cover a whole frame once. */ @@ -231,15 +231,21 @@ static void *worker_main(void *arg) /* Transient back-pressure. Back off briefly so the queue * drains (rather than spinning on failing syscalls), then * resend the same batch - no need to repaint. */ - usleep(200); + usleep(100); continue; case ECONNREFUSED: break; /* stale ICMP on connected UDP; repaint and retry */ + case EHOSTUNREACH: /* display down / IPv6 ND unresolved */ + case ENETUNREACH: + case EHOSTDOWN: + case ENETDOWN: + usleep(100000); + break; default: perror("sendmmsg"); break; } - break; /* ECONNREFUSED / unexpected: stop, repaint, retry */ + break; } } diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..d0eef33 --- /dev/null +++ b/run.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +./pixelflut-render ix1 2