|
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 3874 of file allegro_builder.cpp.
|
inherited |
Definition at line 36 of file priority_thread_pool_task.h.
|
inline |
Definition at line 3877 of file allegro_builder.cpp.
References m_simplify.
|
inlineoverrideprivate |
Definition at line 3880 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 52 of file priority_thread_pool_task.h.
|
inlineinherited |
Definition at line 45 of file priority_thread_pool_task.h.
|
inlineoverrideprivate |
Definition at line 3885 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 129 of file priority_thread_pool_task.h.
|
protectedinherited |
Definition at line 105 of file priority_thread_pool_task.h.
|
privateinherited |
Definition at line 130 of file priority_thread_pool_task.h.
|
private |
Definition at line 3902 of file allegro_builder.cpp.
Referenced by COMPLEX_FIRST_FILL_TASK(), and task().