Rather than forcing each thread to iterate over the full nets list to
find the dirty items, we collect the dirty items first before asking the
threads to address them. This prevents thread spinning. We also
amortize the cost of calculating on an 8-net per thread basis rather
than 2.
Ensure that changes affecting fewer than 4 nets still get updates in the
ratsnest.
If those are indeed the cause and fix of the bug, then I'm pretty unlucky to have pulled the nightly at just the right time to get that problem to build PCBs with for the last month. :)
@Seth, thanks for taking a look. That seems plausible:
commit 38c5b025c8abdca b842587f54f2b64 317d47ca34
Author: Seth Hillbrand
Date: Wed Oct 17 17:05:30 2018 -0700
Ratsnest: iterate only over dirty nets
Rather than forcing each thread to iterate over the full nets list to
find the dirty items, we collect the dirty items first before asking the
threads to address them. This prevents thread spinning. We also
amortize the cost of calculating on an 8-net per thread basis rather
than 2.
and about 1 day and 10 commits or so later:
commit e1f30a3b382f91f 772483936b589c9 8b2bb67d6d
Author: Seth Hillbrand
Date: Thu Oct 18 17:11:58 2018 -0700
pcbnew: Fix single-net connectivity
Ensure that changes affecting fewer than 4 nets still get updates in the
ratsnest.
If those are indeed the cause and fix of the bug, then I'm pretty unlucky to have pulled the nightly at just the right time to get that problem to build PCBs with for the last month. :)