[Gambas-user] gb3: how to check if event is pending execution before it triggers

Kevin Fishburne kevinfishburne at ...1887...
Sat Mar 17 08:46:14 CET 2012


On 03/17/2012 03:05 AM, Bruce Bruen wrote:
> On Sat, 2012-03-17 at 02:04 -0400, Kevin Fishburne wrote:
>> Is there a way to check if an event is going to trigger in advance?
> Not in the known universe.  It would be nice though, Lotto numbers,
> stock price changes etc etc :-)
>
>> My startup procedure (GUI.Main) allows two event procedures to trigger,
>> Render.Screen_Draw (SDL) and Network.UDP_Read (UDP socket). When
>> Screen_Draw triggers I need to know if there are pending UDP packets so
>> I can avoid rendering the frame until those pending network events are
>> processed. The logic would look something like this:
>>
>> Public Sub Screen_Draw()
>>     If [there is data in the socket] Then Return
>>     [render a complete frame]
>> End
>>
>> Basically I need to give processing incoming UDP packets priority over
>> rendering frames since processing the packets is quick but rendering a
>> frame is slow. I only want it to render a frame when there are no
>> incoming UDP packets needing attention. I've been thinking about logical
>> ways to do this, but if there is some inherent GAMBAS way that would be
>> more elegant.
>>
> Could you use some global counter to achieve this?
> For every UDP packet received, inc the counter and dec it on UDP_Read
> (or zero it?)
> Then Screen_Draw need only check that the counter is zero.
>
> I don't really know whether this will work for you but from your
> description it does sound like a classic semaphore problem. ???

You're a funny guy. :) I need to control the order and priority of 
rendering a frame and reading a UDP packet, and it appears that using 
events takes this control completely out of my hands. I can easily have 
the rendering event not actually do any rendering, but is there a way to 
have a UDP read event similarly delay reading the UDP data for a later 
time? Basically, when Network.UDP_Read triggers, can I just exit and let 
it trigger again later when I'm ready to actually process it?

-- 
Kevin Fishburne
Eight Virtues
www: http://sales.eightvirtues.com
e-mail: sales at ...1887...
phone: (770) 853-6271





More information about the User mailing list