Anvil::Loop
Die Ereignisschleife: Takt, Neuzeichnen und die zwei Feinheiten, die man sonst in jedem Projekt neu lernt — Drift-Korrektur und Resize-Entprellung.
Steht getrennt von App, damit eine Vollbild-Anwendung sie ohne die
Block- und Modal-Maschinerie benutzen kann.
Constants
Ein Fenster am Rand zu ziehen liefert ein WINCH pro Schritt. Auf jedes davon neu zu zeichnen ist verschwendete Arbeit und sieht wie Flackern aus; stattdessen wird abgewartet, bis so viele Poll-Fenster still geblieben sind.
Constructors
Die Ereignisquelle ist ein Proc statt des Backends, damit sich die Schleife ohne Terminal prüfen lässt — Takt und Entprellung sind genau die Logik, die man testen will, und sie hat mit echter Eingabe nichts zu tun.
Instance methods
Im Animationsbetrieb wird jeder Frame gezeichnet, sonst nur wenn etwas als schmutzig gemeldet wurde. Für eine Inline-App ist Letzteres richtig: im Leerlauf gibt es nichts zu zeichnen, und ein Werkzeug, das ohne Grund 60-mal pro Sekunde aufwacht, ist auf einem Laptop unhöflich.
Die Eingabequelle ist versiegt — ein geschlossenes Terminal, eine
abgespielte Skriptdatei. Anders als stop ist das eine Aussage über
die Welt, und alles, was auf eine Taste wartet, muss aufhören zu
warten: sonst hängt ein Fiber für immer an einer Frage, die niemand
mehr beantworten kann.
Wird gerufen, wenn die Größenänderung zur Ruhe gekommen ist — nicht bei jedem einzelnen WINCH.
Ein einzelnes Ereignis abholen, ohne die Schleife zu fahren — für
Abfragen, die vor run beantwortet werden müssen (ein Vertrauens-
Dialog beim Start etwa).