
PROCEDURE redrawDesk (tree: PtrObjTree,
                      index: CARDINAL,
                      prevState: OStateSet,
                      curState: OStateSet,
                      space: Rectangle,
                      clip: Rectangle,
                      parm: LONGWORD): OStateSet;
  BEGIN
    SetClipping (clip); (* Zeichenbereich auf zerstrten Bereich beschrnken *)
    UpdateScreen (* gesamten Schirm neu zeichnen - keine AES-Aufrufe machen! *)
  END redrawDesk;

(* mssen global sein: *)
VAR carrier: ObjHandler.ProgDefCarrier;
    stack: ARRAY [0..1000] OF CARDINAL;

BEGIN
  (* Desktop auf aktuelle Gre setzen, weil das RSC-Programm einen *)
  (* festen Wert eingesetzt hatte.                                  *)
  devParm:= DeviceParameter (dev);
  ObjHandler.SetCurrObjTree (ResourceAddr (treeRsrc, Desktop), FALSE);
  space:= ObjHandler.ObjectSpace (GEMGlobals.Root);
  space.w:= devParm^.rasterWidth + 1;
  space.h:= devParm^.rasterHeight + 1;
  ObjHandler.SetObjSpace (GEMGlobals.Root, space);

  (* Desktop-Update-Routine zuweisen *)
  wsp.bottom:= ADR (stack); wsp.length:= SIZE (stack);
  ObjHandler.MakeProgDefProc (carrier, redrawDesk, wsp);
  ObjHandler.SetProgDefSpec (GEMGlobals.Root, carrier, 0L);
END
