[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

problem understanding without-interrupts...?




Problem with (without-interrupts...)?
-------------------------------------

I have created a function PLAYBACK that should show a sequence of
windows in which different dialog items are shown.
Each window in turn is opened, stays open for a predefined time
or a time proportional to its corresponding time interval,
displays its various colored dialog items, 
then is closed, before the next window is opened, etc.

The function looks something like this:

;;---
(defun PLAYBACK (&optional (delay nil))
  
  "Playback plays back the sequence of layouts for different time frames,
showing each for a duration proportional to the layout duration,
unless a constant delay has been specified."
  
  (declare (special project-1))
  
  (mapcar #'(lambda (the-interval)
              (collect-layout-data project-1 the-interval t)
              (sleep (if delay delay
                         (- (second the-interval)(first the-interval))))
              (window-close (front-window)))
          '((0 1)(1 5)(5 7))))
;;---

This function has the proper behavior when it is called from the 
listener. However, when I call it by attaching it to a menubar
item and selecting that item, only the windows are opened and
closed, and no dialog items are displayed. 

I must be missing something...????

Could someone explain to me why this is happening?
  and 
How I can fix this problem?

The same behavior exists when I add a without-interrupts to the
function as follows:

;;---
(defun PLAYBACK (&optional (delay nil))
  
  "Playback plays back the sequence of layouts for different time frames,
showing each for a duration proportional to the layout duration,
unless a constant delay has been specified. IDT and PPZ 3/10/94"
  
  (declare (special project-1))
  
  (without-interrupts 
           (mapcar #'(lambda (the-interval)
                       (collect-layout-data project-1 the-interval t)
                       (sleep (if delay delay
                                  (- (second the-interval)(first the-interval))))
                       (window-close (front-window)))
                   '((0 1)(1 5)(5 7)))))
;;---

So possibly I do not fully understand how without-interrupts works.

Thanks in advance for the help!

Iris