PlayNoiseImpl.mesa
Copyright Ó 1987, 1992 by Xerox Corporation. All rights reserved.
Last Edited by: Swinehart, June 4, 1992 10:23 pm PDT
Doug Terry, July 30, 1986 5:00:49 pm PDT
DIRECTORY
Process USING [ Detach, MsecToTicks, Pause ],
Rope USING [ ROPE ],
VoiceRope USING [ GetByInterest, Handle, Open, Play, VoiceRope ]
;
PlayNoiseImpl: CEDAR PROGRAM
IMPORTS Process, VoiceRope = {
reallyBoot: BOOL¬TRUE;
didOurBest: BOOL;
maxTime: CARDINAL ¬ 4000;
PlayTheRollbackButton: Booting.CheckpointProc = TRUSTED {
IF ~UserProfile.Boolean["Finch.NoisyBoot"] THEN RETURN;
PlayAButton["Rollback"];
IF ~reallyBoot THEN rejection ¬ "Just pretending";
};
PlayAButton: PROC[name: Rope.ROPE] = TRUSTED {
didOurBest ¬ FALSE;
Process.Detach[FORK ReallyPlayAButton[name]];
FOR i: NAT IN [0..100) DO
Process.Pause[Process.MsecToTicks[maxTime/100]];
IF didOurBest THEN EXIT;
ENDLOOP;
};
ReallyPlayAButton: PROC[name: Rope.ROPE] = {
C: PROC[complaint: Rope.ROPE] = {NULL}; -- Don't bother complaining.
handle: VoiceRope.Handle = VoiceRope.Open[Complain: C];
vr: VoiceRope.VoiceRope = VoiceRope.GetByInterest[handle: handle, class: "SysNoises", refID: name];
VoiceRope.Play[handle: handle, voiceRope: vr, wait: TRUE];
didOurBest ¬ TRUE;
};
}.
Doug Terry, July 30, 1986 5:00:08 pm PDT
Upgraded to use VoiceRope
changes to: DIRECTORY, PlayNoiseImpl, ReallyPlayAButton