Le 17/03/2012 08:46, Kevin Fishburne a écrit : > 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? >
What happens if you use Lof() on the UDP socket to see if there is something to read? -- Benoît Minisini ------------------------------------------------------------------------------ This SF email is sponsosred by: Try Windows Azure free for 90 days Click Here http://p.sf.net/sfu/sfd2d-msazure _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user