|
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 1012 of file allegro_builder.cpp.
|
inherited |
Definition at line 33 of file priority_thread_pool_task.h.
|
inline |
Definition at line 1015 of file allegro_builder.cpp.
References m_simplify.
|
inlineoverrideprivate |
Definition at line 1018 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.
This method blocks until all tasks are complete, and re-throws any exceptions thrown by the tasks.
Definition at line 52 of file priority_thread_pool_task.h.
|
inlineinherited |
Definition at line 42 of file priority_thread_pool_task.h.
|
inlineoverrideprivate |
Definition at line 1023 of file allegro_builder.cpp.
References SHAPE_POLY_SET::BooleanIntersection(), SHAPE_POLY_SET::ClearArcs(), SHAPE_POLY_SET::Fracture(), ZONE::GetBoardOutline(), 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, and ZONE::SetFilledPolysList().
|
privateinherited |
Definition at line 134 of file priority_thread_pool_task.h.
|
protectedinherited |
Definition at line 110 of file priority_thread_pool_task.h.
|
privateinherited |
Definition at line 135 of file priority_thread_pool_task.h.
|
private |
Definition at line 1040 of file allegro_builder.cpp.
Referenced by COMPLEX_FIRST_FILL_TASK(), and task().