Commit Graph

47 Commits

Author SHA1 Message Date
Seth Hillbrand 485e89f7a5 Finally found the intermittant QA crash
When loading footprints/zones in parallel, we cannot reference a static
vector that gets cleared by other threads.

It is unclear why this element was ever static to begin with (premature
optimization?) but it has been this way for a long time.  We never
noticed until we threaded load cycles, which gave the hatch a chance to
override itself and cause crashes

Fixes https://gitlab.com/kicad/code/kicad/issues/9888

(cherry picked from commit 8218f9ab44)
2022-05-06 11:53:49 -07:00
Seth Hillbrand 611311697e Revert "Fix another static variable instance"
This reverts commit 5bd3a9cca8.

Reverted in favor of cherry-picking the more complete fix
from 8218f9ab44
2022-05-06 11:53:21 -07:00
Seth Hillbrand 5bd3a9cca8 Fix another static variable instance
Premature optimization appears to be the issue.  When we threaded zone
handling and added multiple layers, we started overwriting the
pointbuffer variable, which was declared static for unknown reasons

Fixes https://gitlab.com/kicad/code/kicad/issues/9888
2022-05-06 11:49:57 -07:00
Seth Hillbrand e33bf78d96 Separate flashing check for connectivity
When building the connectivity database, we should not be using the
connectivity to check for shapes.

To make this deterministic, we introduce two flags (ALWAYS_FLASH and
NEVER_FLASH) that are used with connectivity building to determine
whether a pad is flashed for connectivity or not.  ZONE <-> PAD/VIA
connectivity will be checked with ALWAYS_FLASHED and all other
connectivity will be checked with NEVER_FLASHED if they are marked for
potential annular ring removal.  If they are not marked for removal,
they will be checked ALWAYS_FLASHED.

Fixes https://gitlab.com/kicad/code/kicad/issues/11114

(cherry picked from commit 442aae19d9)
2022-03-21 08:37:53 -07:00
Jeff Young 53bd87d792 Performance fixes for the board from hell....
(cherry picked from commit e4b56ab7f1)
2022-03-16 15:14:51 +00:00
Jeff Young 46d423a164 Must clear arcs before calling Clipper. 2022-03-05 15:40:30 +00:00
Jeff Young 6ccaf5e27d Flip all layers of a zone.
Fixes https://gitlab.com/kicad/code/kicad/issues/10621
2022-02-21 22:02:19 +00:00
Jeff Young 2498655cc5 Respect ERROR_OUTSIDE when inflating polygons.
Fixes https://gitlab.com/kicad/code/kicad/issues/10896

(cherry picked from commit e6c617b74d)
2022-02-21 17:32:25 +00:00
Jeff Young 7978c8c291 Allow Rule Areas on all physical layers.
Required to do things like modify silk_clearance rules.

(cherry picked from commit 8f670552a6)
2022-02-20 01:03:08 +00:00
Jeff Young 4657614e4f More wxString wide literals. 2022-02-04 23:12:09 +00:00
Jeff Young b883eee911 Use superclass's copy c'tor from within subclass copy c'tor.
Fixes https://gitlab.com/kicad/code/kicad/issues/10481

(cherry picked from commit 8c758aeeb5)
2022-02-03 15:00:39 +00:00
Jeff Young 22ba640c2b Remove locking from footprint editor.
Fixes https://gitlab.com/kicad/code/kicad/issues/9496
2021-10-31 16:33:03 +00:00
Wayne Stambaugh 1f7fd436a2 Move board object polygon code into the object source files.
Having the board object polygon code all defined in a separate file made
finding the polygon code for an object difficult to find.
2021-10-25 17:42:11 -04:00
Seth Hillbrand 95ec23247c Initialize zone vars in CTOR 2021-10-13 08:59:48 -07:00
Jeff Young 1a252b4f96 Add a compile error for ill-defined rules, and more performance.
Also adds const-safety to GetBoard().
2021-08-16 12:14:17 +01:00
jean-pierre charras 69322a18e7 Fix missing call to ClearArcs() 2021-08-09 09:16:04 +02:00
Jon Evans 2d9b06cbf9 Fix missing flatten step when filling zones with arcs
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8923
2021-08-08 15:09:12 -04:00
Jeff Young 6aaf4413b3 Fix kicad_string.h / string.cpp mismatch.
They don't define a KiCad string class, so the header file name was
somewhat misleading. But the fact that they didn't match definitely
made coding more difficult.
2021-07-29 16:03:25 +01:00
Jeff Young 46338403e7 Unwrap some std::library typedefs. 2021-07-28 22:16:38 +01:00
Wayne Stambaugh cf00319c85 More NULL expunging. 2021-07-20 07:27:18 -04:00
Jeff Young 24e54178db Make sure pin hittest regions don't get too hard to hit.
Fixes https://gitlab.com/kicad/code/kicad/issues/8616
2021-07-01 15:43:19 +01:00
Jeff Young 78d2e88f4b Beautify export STEP dialog. 2021-07-01 15:43:19 +01:00
Seth Hillbrand 3644224cb6 Build smoothed area at outline
The clearance to board edge will be set by the knockout routine.
Clipping twice can leave small imperfections in the edge that need to
get triangulated
2021-06-11 14:26:38 -07:00
Marek Roszko 10e60acf34 Clean up including of board_design_settings.h 2021-06-06 15:03:42 -04:00
Jon Evans f6d6b7d263 Harmonize property names for zone/footprint/pad clearance and thermals
Use "override" instead of "local" for better clarity.
2021-05-29 14:12:23 -04:00
Jeff Young 3b049b32cf Show if pads, zones, and dimensions are locked in the status bar.
Fixes https://gitlab.com/kicad/code/kicad/issues/8255
2021-04-21 19:58:18 +01:00
Roberto Fernandez Bautista a9eb83201e Remove ZONE::ClearFilledPolysList() and fix ZONE::Unfill()
ClearFilledPolysList is redundant and Unfill() was missing the clearing
of m_insulatedIslands

This fixes potential latent bugs in zone unfilling.
2021-03-21 20:13:20 +00:00
Jon Evans 18037e2f65 Rework bitmap system to load from archived PNGs
Bitmaps are now identified by an enum class instead of by pointers.
Bitmap loading and caching is now handled by a class in common, and
we no longer compile most bitmaps into the binary, so there is no
longer a bitmaps static library.

Instead, bitmaps are archived to a .tar.gz file which is installed
in ${KICAD_DATA}/resources/images.tar.gz

The source PNGs are checked in to Git as the original CPP files were,
so that people can build without the required dependencies to convert
SVGs to PNGs.

Initial support is also added for dark theme icons, although this
is not yet exposed in the GUI.

Stubs are present for multi-resolution image resources, but this is
not fully-baked yet and could use some refinement.
2021-03-11 08:37:35 -05:00
Wayne Stambaugh d160b30ff1 Pcbnew: add keepout helper methods to ZONE object. 2021-03-09 08:13:06 -05:00
Jeff Young 2bc10d58b5 Fix some cases where PCB_FP_ZONE_T was left out.
Fixes https://gitlab.com/kicad/code/kicad/issues/7615
2021-03-08 13:00:46 +00:00
Jeff Young 6272b48481 Make sure layer gets passed in to rules evaluation. 2021-02-08 14:53:49 +00:00
Jeff Young e26c912b86 Don't apply electrical clearance to non-copper zones.
Also removes a very old (and somewhat confusing) comment.

Fixes https://gitlab.com/kicad/code/kicad/issues/7404
2021-02-03 11:56:43 +00:00
Seth Hillbrand 1a3ab551cf Cleanup
FindLineSegmentIntersection() was refactored in 2012 but there are a few
uses that didn't get updated.  This finalizes the cleanup

Fixes https://gitlab.com/kicad/code/kicad/issues/7365
2021-01-31 15:55:52 -08:00
Jeff Young d8c7c8f700 Evaluate rules when fetching zone edge clearance. 2021-01-23 17:04:44 +00:00
Dominik Wernberger ac94d72d2d Add more const specifiers 2021-01-12 20:51:31 +00:00
Jon Evans d13de9c6c1 Zones: layer set must be initialized after m_isRuleArea
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6814
2020-12-24 11:29:23 -05:00
Jeff Young c66e373119 Cleanup of PCBNew message panel routines.
Also fixes bugs where invalid netclasses were reported as "Default",
and SMD pads were reported as having "0.0000" drills.
2020-11-30 14:38:06 +00:00
Jeff Young 6f3b0c452f Make sure unfilled zones get an MD5 hash.
Fixes https://gitlab.com/kicad/code/kicad/issues/6515
2020-11-26 20:21:46 +00:00
Jeff Young 0517f783e1 Ease i18n of zone descriptions. 2020-11-19 22:48:18 +00:00
Jeff Young 203c860f01 Ensure better smoothing for zones clipped by board edges. 2020-11-19 18:34:30 +00:00
Jeff Young c1d1c12b41 Simplify message panel code.
We've had the colours turned off for two releases now without any
screaming or gnashing of teeth, so it's time to clean up the code.
2020-11-18 17:32:40 +00:00
Marek Roszko 16e3e59495 Split out arrayDim and MIRROR templates from macros.h
These were not macros
2020-11-17 20:21:04 -05:00
Jeff Young 7bd31d5237 Naming conventions. 2020-11-14 18:26:03 +00:00
Jeff Young 8bae52d1c3 Correct naming conventions. 2020-11-14 14:29:11 +00:00
Jeff Young f5443de7f9 D_PAD -> PAD. 2020-11-13 15:16:24 +00:00
Jeff Young 84dd5108ba Remove some "class_" prefixes from files. 2020-11-13 15:16:23 +00:00
Jeff Young f7333ad64a Update some classnames including archaic zone names. 2020-11-12 10:31:25 +00:00
Renamed from pcbnew/class_zone.cpp (Browse further)