Main thread yield to graphics events

Flemming Nyboe flemming at nyboe.net
Wed Aug 12 08:35:41 CEST 2009


Hello,

I have an infinite while loop processing graphics in a figure. I'm trying to
break the loop when the user closes the figure, but it seems that the
execution thread never yields to the graphics events.

The below code does not end (print "done") when I close the figure.

1) is there a way to force a "do-events" where graphics events are given
time to fire?
2) alternatively, is there a way to detect if a keyboard key has been
pressed without waiting if not.

Regards
Flemming, Denmark

----------------
// detecting closed figure

function my_eventhandler(win,x,y,ibut)
  global run
  if ibut==-1000 then 
    run=0;
  end
endfunction

global run
run=1;

plot2d()
seteventhandler('my_eventhandler')
fh=gcf();

while run,
 if (length(winsid())==0) then
    run=0;
 end
 if ~is_handle_valid(fh) then
   run=0;
 end

 drawnow();
 sleep(2);

end

seteventhandler('') //suppress the event handler

printf('done\n');
----------------






More information about the users mailing list