|
KiCad PCB EDA Suite
|
Priority task dispatcher for zone fills - we want to do the biggest ones first. More...
Public Types | |
| using | ItemT |
Public Member Functions | |
| COMPLEX_FIRST_FILL_TASK (bool aSimplify) | |
| void | SetReporter (PROGRESS_REPORTER *aReporter) |
| void | Execute (std::vector< FILL_INFO > &aItems) |
| Call this to execute the task on all items in aItems, using the thread pool and dispatching the tasks in order of descending priority as determined by comparePriority() implemented by the derived class. | |
Protected Attributes | |
| PROGRESS_REPORTER * | m_reporter |
Private Member Functions | |
| int | computePriorityKey (const FILL_INFO &a) const override |
| size_t | task (FILL_INFO &fillInfo) override |
Private Attributes | |
| bool | m_simplify |
| BS::priority_t | m_highestPriority |
| std::chrono::milliseconds | m_reporterInterval |
Priority task dispatcher for zone fills - we want to do the biggest ones first.
On average, sorting the largest zones first is slightly faster (5-10%) on large boards.
However, if you allow the large zones to be assigned at random, as they basically will be if they are handled later in the process, there's a chance the very biggest zones will end up consecutive in the same thread which could be a substantial penalty.
Definition at line 1015 of file allegro_builder.cpp.
|
inherited |
Definition at line 32 of file priority_thread_pool_task.h.
|
inline |
Definition at line 1018 of file allegro_builder.cpp.
References m_simplify.
|
inlineoverrideprivate |
Definition at line 1021 of file allegro_builder.cpp.
References ALLEGRO::BOARD_BUILDER::ZONE_FILL_HANDLER::FILL_INFO::m_CombinedFill, and SHAPE_POLY_SET::TotalVertices().
|
inlineinherited |
Call this to execute the task on all items in aItems, using the thread pool and dispatching the tasks in order of descending priority as determined by comparePriority() implemented by the derived class.
Definition at line 48 of file priority_thread_pool_task.h.
|
inlineinherited |
Definition at line 41 of file priority_thread_pool_task.h.
|
inlineoverrideprivate |
Definition at line 1026 of file allegro_builder.cpp.
References SHAPE_POLY_SET::BooleanIntersection(), SHAPE_POLY_SET::ClearArcs(), SHAPE_POLY_SET::Fracture(), ALLEGRO::BOARD_BUILDER::ZONE_FILL_HANDLER::FILL_INFO::m_CombinedFill, ALLEGRO::BOARD_BUILDER::ZONE_FILL_HANDLER::FILL_INFO::m_Layer, m_simplify, ALLEGRO::BOARD_BUILDER::ZONE_FILL_HANDLER::FILL_INFO::m_Zone, ZONE::Outline(), and ZONE::SetFilledPolysList().
|
privateinherited |
Definition at line 125 of file priority_thread_pool_task.h.
|
protectedinherited |
Definition at line 101 of file priority_thread_pool_task.h.
|
privateinherited |
Definition at line 126 of file priority_thread_pool_task.h.
|
private |
Definition at line 1043 of file allegro_builder.cpp.
Referenced by COMPLEX_FIRST_FILL_TASK(), and task().