[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] event getting corrupted





On Wed, Sep 16, 2009 at 6:33 PM, Bo Jangeborg <bo@xxxxxxxxxxx> wrote:
claudio canepa skrev:



On Wed, Sep 16, 2009 at 5:18 PM, Bo Jangeborg <bo@xxxxxxxxxxx <mailto:bo@xxxxxxxxxxx>> wrote:


       a ha
       Well, from where comes event ?


   event = pyg_event.poll()

   but note that a long can't have attributes and 13 lines above the
   error point I do :

   mouse_pos = event.pos

   and it works at that time


pyg_event.poll is pygame.event.poll ?
Yes


If the only fountain for events were the pygame event queue, the traceback coulnt happen:

a)
elif event.type is MOUSEBUTTONUP:
  -> dont, raises, so is not a long

b) the flow comes to
_,_,_ = self.mouse_button_up(event, mob_pos, mousemove)

c)into method mouse_button_up event will become a local variable. That variable is not assigned, at least in the code you show here.
d) the flow progress to the line
if event.button == 1:
where it raises AttributeError: 'long' object has no attribute 'button'

I see two possibilities here:

1. You snipped some code where event is assigned

No , you can see all the code, and event is not being assigned to.

2. ( wild possibility) the functions called in mouse_button_up will produce a *second* call with other parameters to the same function, and that call has a wrong event parameter. But, why the traceback not show additional calls in that case?
No , there are no such recursive calls to mouse_button_up
besides if the incoming event parameter was a long it should fail at mouse_pos = event.pos

My guess is that there is something over writing the event object at a lower level, possibly
caused by something I am doing.
Bo)

well, there is code after mouse_pos = event_pos.
I would add a 
assert type(event) is not long
after any function call in mouse_button_up to know when event is changed,
then drill down the offending function.

--
claxo