When you say this, do you mean that the App is still running [in memory], just not actively updating the display or doing anything in particular?

Right, it just jumps out of the internal loop where it waits for keypresses and serial input and blocks on the WAITMENU ioctl until we are 'woken up'.

If so, then how much work to have it continue to "navigate" behind the scene, e.g. accepting NMEA sentences, parsing them and updating your co-ordinates - is that just replacing your "Wait buttons" call with a Poll keys? and then continue if none of the keys are actually pressed?

I'm not sure how much hijack likes it, but I can either set an alarm before blocking on WAITMENU, and when the ioctl returns with -1/EINTR we know that we haven't really hijacked the display, in which case we can just drain queued data from the serial point, recalculate position/distance to next waypoint and go back waiting.

If this doesn't work, I'll probably just fork off a thread that handles serial input and deals with location updates, while the main thread waits for hijack and handles the screen updates.
_________________________
40GB - serial #40104051 gpsapp