[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Xl1200 as x server
Date: Thu, 2 Aug 90 18:55 EDT
From: miller@GEM.cam.nist.gov (Bruce R. Miller)
Date: Thu, 2 Aug 90 17:35 EDT
From: Barry Margolin <barmar@Think.COM>
Date: Thu, 2 Aug 90 14:23 EDT
From: miller@GEM.cam.nist.gov (Bruce R. Miller)
Just how does this work (for the X naive)?
It's all done through the magic of object-oriented programming. ...
barmar
Well, I didn't mean That naive ! :> (but thanks anyway)
Well, someone else who is may have been too embarrassed to ask.
What I had in mind was the following:
Not knowing the X protocol, it is not inherently obvious that the full
protocol used by TV and DW CAN be (practically) translated into the
appropriate X. That is to say, although equivalent functionality could
most likely be achieved in X at some level in the application, the TV/DW
protocol has been decomposed into certain operations, some of which may
have no equivalents. Take some random old TV-style application and it
is throwing all sorts of random messages, high-level and low, at the
window-stream. (I mean, can you honestly say that TV:windows HAD a
protocol? You and I both have spent LOTS of time figuring out what
messages were sent and who handled which parts in which order, before we
were `saved' by DW! "Lets see, If I put my-mixin right here between
tv:window-with-foo-usurped-but-no-scrolling and
tv:stream-input-from-kludged-borders-mixin, and define a whopper for
:update-vsp-for-changed-borders (hmm, what's the argument list), it just
might work") For it to work in X, ALL those messages have to be handled
by the X stream.
Most of the X functionality is spliced in at a level that even wizards
(except the ones who had to redesign it so that this would all work)
rarely play with (the only time I played at this level was to implement
key-click, and it doesn't work in Genera 8.0). It's at the screen and
console level, not the window level (the virtual console is a single X
window, with Genera managing the windows inside it), so none of those
funky window mixins are affected by it. DW is completely unaffected as
well, because it doesn't exist at this level.
The set of operations one can do on a screen or console is much smaller
than the operations that can be done on a window, and they map pretty
straightforwardly onto the X protocol. It's basically just drawing
lines and shapes, filling regions, drawing characters, and accepting
keyboard and mouse input.
An analogy from a more common communication environment is ASCII
terminals. Going from an ordinary Lispm console to an X terminal is
like going from a hardwired terminal to one connected by a modem.
Programs that just send and receive ASCII don't care what kind of wire
it goes over.
barmar