Okay, using git bisect I narrowed it down to this commit:
Author: Eric S. Raymond <address@hidden
Date: Tue Jan 15 06:52:23 2013 -0500
Do *not* clear DOPs every time a satellite picture comes from the receiver.
Required a regression-test rebuild.
The immediate reason for this was Savannah bug bug #37810:
satellites_used always zero via gpsd socket with multi nmea GSA/GSV. As the
user reporting said:
The "satellites_used" field in a "struct gps_data_t" filled in by
"gps_read" is always returning zero.
This module emits GNGSA messages in a group of three. My information
is that the first GNGSA pertains to GPS, second to GLONASS, third to
QZSS. It also emits GSV messages using talker id's GL,GP,QZ.
The larger point is that DOPs are likely to be valid for longer than
a GSV reporting cycle; they change only slowly as the actual sat
configuration does. So it makes sense to retain them.
That last paragraph leaves me wondering if I have a bug in my expectations - as I understood it, epx and epy should reflect the current reception conditions (which can change depending on receiver location, tree cover, etc), and not just the satellite configuration. Is that an incorrect assumption?
I don't want to report this as a bug if it's really just a misunderstanding on my part - obviously esr knows a whole lot more about this stuff than I do, so that latter case is more likely...