Atom Smash (AS) occasionally exhibits 4 to 5 second halt in the action. I am
trying to figure out why. I'm braindumping all the info I have on this
problem, but I'm pretty sure that this isn't enough info to diagnose the
problem. I'm looking for clever ways to track this down mostly, but if
anyone has magically experienced this exact same problem and has a solution,
super.
The symptoms are:
- Randomly, and infrequently, gameplay will freeze for 4 to 5 seconds, then
resume normally
- I have seen it happen on the emulator and real devices, on various OS
versions
- It sometimes happens shortly after starting up the app (within a minute or
two), it sometimes takes 20 minutes or more to happen, and sometimes seems
to never happen at all.
The environment is:
The app depends on nilEvents for its updates. During gameplay, EvtGetEvent
is called with an appropriate (and consistent) delay value to ensure that
nilEvents are sent to keep things moving.
The possibilities I have come up with are:
a) My code is doing something that takes 4 to 5 seconds and occurs randomly
b) My code is handling nilEvents improperly, causing the OS to occasionally
sit back for a bit and think
c) My code is doing something incorrectly with the hard keys, causing the OS
to occasionally sit back for a bit and think
d) The OS has normal 4-5 second pauses related to some sort of notification,
and you normally don't notice it
My analysis of each of the above is below:
a) (is it all my code?) Clearly I can't locate anything in my own code that
is causing this or I would have fixed it, but I am unsure how to determine
who or what is causing this pause in the first place, so I can't rule out my
code.
b) (is it nilEvents?) Many nilEvents are generated, and if they stop
flowing, this type of pause is what would result. However, SysHandleEvent
and MenuHandleEvent are given a crack at the nilEvents before my code gets
to them, so I think the OS is being fed properly.
c) (is it hard keys?) Hard keys are disabled with KeySetMask. Perhaps the OS
is stuffing these key events somewhere, and occasionally has to barf them?
If this were the case, I think the mystery pause would be more consistent.
d) (is it a normal OS pause?) I have seen normal OS pauses similar to this,
e.g. the stroke of midnight, but I have tried to correspond these delays to
some sort of time or alarm event with no luck. It seems pretty random, so I
don't think it's time based, but perhaps there is some other occasional
housekeeping that could cause such a pause?
Some things I haven't done yet:
Have not added code to detect a long pause (this should be easy to do - I
could track every event, then when a >1 sec pause happens, dump out the last
10 events)
Have not determined if an event (like a screen tap) breaks out of the 4-5
second pause (this would answer the question: "is it just not getting an
event for 5 seconds")
Thanks for any input!
Scott
Red Mercury, LLC
http://www.red-mercury.com
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palm.com/devzone/mailinglists.html