Windows XP.
________________________________________
From: [email protected] [[email protected]] On Behalf Of 
RenĂ© Dudfield [[email protected]]
Sent: Wednesday, March 17, 2010 1:02 PM
To: [email protected]
Subject: Re: [pygame] pygame missing mouse events

hi,

which OS are you using?

cheers,

On Thu, Mar 18, 2010 at 12:58 AM, Wakefield, Robert 
<[email protected]<mailto:[email protected]>> wrote:
I've been trying to handle mouse support using pygame, and I've found that 
clicks are being missed outright.  I've tested my code thoroughly* and the 
problem is on the pygame end.  I have included the relevant code below.  Thank 
you in advance.

* - To be clear here, I've tried everything I can think of with no effect.  
This includes disabling all code other than the key check in gameLoop(), and 
also disabling the call to 'handleInputEvent()' so that only the print 
statements remain.  I still miss click events, with the print sometimes giving 
me two presses before a release or vice versa.  I only click the left mouse 
button, so it's not a false positive, and I've checked the length of the event 
queue and never seen it rise past single digits (sometimes 2-3 due to mouse 
motion and other events).  Framerates are fairly constant (+/- 1 FPS @ ~60FPS 
total), and Key events print a normal press/release pattern just fine.  The 
mouse issue resulted in bad code functionality, so this is a serious issue for 
adding mouse support.

def gameLoop():
   done = False
   while not done:
       #... snip
       res = checkKeysGUI()    # check what keys are pressed, HW-level
       #... snip
   return 0

def checkKeysGUI():
   ''' check the SDL Event Queue '''
   for event in pygame.event.get():
       if event.type == SYSWMEVENT:
           pass

       elif event.type == QUIT:      # Quit Button, the big red X
           handleAppQuit()

       elif(event.type == MOUSEMOTION):
           ''' check the mouse buttons; TODO: do we need to act if mouse 
enters/leaves window?'''
           updateMouse(event.pos[0], event.pos[1]) # [0] = X, [1] = Y

       elif(event.type == MOUSEBUTTONUP or event.type == MOUSEBUTTONDOWN):
           ''' we actually have a mouse click, dispatch it to handlers'''
           pressed = (event.type == MOUSEBUTTONDOWN)
           ''' **DEBUG ONLY** '''
           if(pressed):
               print('keypress')
           else:
               print('keyrelease')
           if not (handleInputEvent(kdef5.MOUSEMAP[event.button], pressed)):
               return False

       elif(event.type == KEYUP or event.type == KEYDOWN):
           ''' check the keyboard keys vs. our keymap '''
           pressed = (event.type == KEYDOWN)
           ''' **DEBUG ONLY** '''
           if(pressed):
               print('keypress')
           else:
               print('keyrelease')
           if not (handleInputEvent(kdef5.KEYMAP[event.key], pressed)):
               return False

       return True

Reply via email to