Looking for a "wait until x or timeout" design pattern..

Ken Corey ken at kencorey.com
Sat Jan 28 03:53:40 EST 2012


I've been working on a pinch library for a week or so, and I have 
complained about the jerkiness. I am thinking that the problem is that 
it's /too/ repsonsive.

The instant one touch moves, it's causing the pinchMove event to be 
generated.  This is fine if nothing else truly has moved, but if the two 
move events are sent back to back, they should both be handled before 
sending a pinchMove message...not two different pinchMove events.

The pinchMove event should only be sent once the status of all the 
touches have been updated...but of course, we have no guarantee that 
there's a touchMove coming for each point, nor the order in which they 
will come...

So, in pseudo code, what I'd like to do is:

on touchMove i,x,y
   store x,y into positionArray[i]  -- update the postition for a touch

   wait until (got touch events from all touches) or \
	(30 milliseconds have passed)

   pinchMove blah,blah,blah
end touchMove

But the wait command seems to either wait 100 milliseconds or wait until 
<cond>, but not both.

Then I thought to provide a timeout with a 'send "timeout" in xx 
milliseconds', but cancel it if we got events on all touches first. 
Couldn't see how to cancel a pending send.

I guess I could break my timeout period down and do a series of shorter 
waits (sort of slow polling), with a fall-through at the end of the timeout.

Also, all other events still need to be handled in the normal 
way...can't lock the application for those 30 seconds.

Thoughts?

-Ken




More information about the use-livecode mailing list