> -- Александр Ильин писал(а):
> Зачем два прохода по одному и тому же списку? Из описания не понятно, почему Omnicast не вызывает сразу хэндлер броадкаста.Меня смутили вот эти комментарии:
> -- Цитата:
> PROCEDURE (s: StdSequencer) Handle (VAR msg: ANYREC);	(* send message to all windows attached to s *)и
> -- Цитата:
> Window* = POINTER TO ABSTRACT RECORD			...			link-: Window;	(* ring of windows with same sequencer *)Судя по ним, между окном и секвенсером отношение многие-к-одному. Стало быть, чтоб не хранить списки окон у секвенсера и не блокировать сборку мусора, нужны дополнительные проходы.

Но чем больше я смотрю на PROCEDURE (h: Hook) Omnicast и PROCEDURE (s: StdSequencer) Handle, тем меньше мне понятно реализованное в них. В каркасе вызов w.BroadcastViewMsg делается только из секвенсера и только вот таким "извращённым" способом. Не понимаю. Может быть, это уже оффтоп.