Copyright (C) 1994, Digital Equipment Corp.
by Steve Glassman, Mark Manasse and Greg Nelson
<*PRAGMA LL*>
UNSAFE MODULE TrestleOnNT;
IMPORT NT, NTClientF, Thread, TrestleClass, TrestleComm, VBT, VBTClass, WinDef;
PROCEDURE HWND (v: VBT.T): WinDef.HWND =
BEGIN
LOOP
IF v = NIL THEN RETURN NT.CNULL END;
TYPECASE v.upRef OF
NTClientF.Child (ch) => IF ch # NIL THEN RETURN ch.hwnd END
ELSE (* skip *)
END;
v := v.parent
END
END HWND;
<*INLINE*> PROCEDURE Enter (t: Display) RAISES {TrestleComm.Failure} =
BEGIN
Thread.Acquire(t);
IF t.dead THEN Thread.Release(t); RAISE TrestleComm.Failure END
END Enter;
<*INLINE*> PROCEDURE Exit (t: Display; deltaCoverage: [-1 .. 1] := 0)
RAISES {TrestleComm.Failure} =
BEGIN
TRY
IF t.dead THEN RAISE TrestleComm.Failure END;
NTClientF.AdjustCoverage(t, deltaCoverage)
FINALLY
Thread.Release(t)
END
END Exit;
BEGIN
END TrestleOnNT.