ui/src/nt/TrestleOnNT.m3


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.