GGSlackProcess.mesa
Formerly named: GGDrawProcess.mesa
Last edited by Pier on February 18, 1986 2:10:25 pm PST
Last edited by Bier on January 6, 1986 11:22:02 pm PST
Copyright © 1985 by Xerox Corporation. All rights reserved.
Contents: A flexible setup for processing mouse input as fast as you can (but no faster). Used to synchronize mouse point processing with the mousepoint. If the processing algorithms become faster, this procedure will still do the right thing.
DIRECTORY
Menus, GGBasicTypes, GGInterfaceTypes, Rope;
GGSlackProcess: CEDAR DEFINITIONS =
BEGIN
GargoyleData: TYPE = GGInterfaceTypes.GargoyleData;
Point: TYPE = GGBasicTypes.Point;
EventProc: TYPE = PROC [event: LIST OF REF ANY, gargoyleData: GargoyleData];
MouseEventProc: TYPE = PROC [input: LIST OF REF ANY, gargoyleData: GargoyleData, worldPt: Point];
EventNotifyProc: TYPE = PROC [notice: LIST OF REF ANY];
QueueInputAction: PROC [callBack: MouseEventProc, inputAction: LIST OF REF ANY, worldPt: Point, gargoyleData: GargoyleData];
Queues the (mouse) action and returns immediately. The action is guaranteed to be done eventually (unless the queue overflows).
QueueOrBashInputAction: PROC [callBack: MouseEventProc, inputAction: LIST OF REF ANY, worldPt: Point, gargoyleData: GargoyleData];
Queues the (mouse) action and returns immediately. If this mouse action is right behind another of the same type, it replaces it.
QueueInputActionNoPoint: PROC [callBack: EventProc, inputAction: LIST OF REF ANY, gargoyleData: GargoyleData];
For actions generated from menu points (i.e. not from mouse points. Behaves like QueueInputAction.
QueueOrBashInputActionNoPoint: PROC [callBack: EventProc, inputAction: LIST OF REF ANY, gargoyleData: GargoyleData];
For actions generated from menu points (i.e. not from mouse points. Behaves like QueueOrBashInputAction.
QueueInputActionAndWait: PROC [callBack: MouseEventProc, inputAction: LIST OF REF ANY, worldPt: Point, gargoyleData: GargoyleData];
Queues the action, and does not return until it is accomplished. Useful when so many calls are planned that the slack queue is sure to overflow with QueueInputAction.
RegisterEventNotifyProc: PROC [proc: EventNotifyProc];
Registers a procedure with SlackProcess that the client may call whenever it wants to during a client-defined action. The argument to the EventNotifyProc will indicate to that proc (by some client-defined convention) what happened.
EventNotify: PROC [notice: LIST OF REF ANY];
Causes the previously registered EventNotifyProc to be called with the notice list.
Restart: PROC [];
Creates a new slack process. Call this procedure if a bug in the slack process forces it to be aborted.
SlackProcess keeps a ring buffer of recent input actions for debugging purposes
It is currently in bed with Gargoyle and will have to be excised before release
LogRawMouse: PROC [point: Point];
OutputLog: PROC [];
SlackProcess keeps a log of all actions, which can be played back to recreate the session.
It is currently in bed with Gargoyle and will have to be excised before release
OpenSessionLog: PROC [fileName: Rope.ROPE];
CloseSessionLog: PROC [];
END.