DRAWMUX(2)DRAWMUX(2)NAMEdrawmux - multiplex stream of draw requests
SYNOPSIS
include "drawmux.m";
drawmux := load Drawmux Drawmux->PATH;
init: fn(): (string, ref Draw->Display);
newviewer: fn(fd: ref Sys->FD);
DESCRIPTION
Drawmux puts itself between the invoking application and /dev/draw (see
draw(3)), so that the contents of the current display can be replicated
elsewhere.
Init returns a new Display (see draw-display(2)) representing a connec‐
tion to a virtual display device. Subsequent Draw requests to that
display (see draw-intro(2)) are forwarded to the underlying draw(3)
device to appear on the physical display, but can also replicated else‐
where, typically in a window on a remote display.
Newviewer prepares the virtual display end of a Drawmux connection for
each new viewer of the display created by a previous call to init. The
file descriptor fd is a connection to the viewer. The remote viewer
must first write 24 bytes on that connection, containing two decimal
numbers (each 11 digits and a space), giving the identifier of a public
screen on the viewer's display, on which newviewer will replicate the
Drawmux display, and the log (base 2) of the number of bits per pixel
for windows created on that screen. The remote viewer must then use
Sys->export (see sys-export(2)) to export its /dev/draw, which
newviewer expects to find as the root of the exported hierarchy. Sub‐
sequent draw operations on the Drawmux display will be replicated on
the public screen exported by the viewer. Shutting down the connection
shuts down the multiplexor for that viewer.
SEE ALSOwm-dmview(1), draw-intro(2), draw(3)DRAWMUX(2)