static size_t SingleStep() { switch (State) { case GCS_Pause: MarkRoot(); // Start a new collection return 0; case GCS_Propagate: if (Gray != NULL) { return PropagateMark(); } else { // no more gray objects Atomic(); // finish mark phase return 0; } case GCS_Sweep: { size_t old = AllocBytes; size_t finalize_count; SweepPos = SweepList(SweepPos, GCSWEEPMAX, &finalize_count); if (*SweepPos == NULL) { // Nothing more to sweep? State = GCS_Finalize; } assert(old >= AllocBytes); Estimate -= old - AllocBytes; return (GCSWEEPMAX - finalize_count) * GCSWEEPCOST + finalize_count * GCFINALIZECOST; } case GCS_Finalize: State = GCS_Pause; // end collection Dept = 0; return 0; default: assert(0); return 0; } }
void WifiListWidget::UpdateList() { status.Clear(); if (EnsureConnected()) { wpa_supplicant.Status(status); for (auto &i : networks) i.old_visible = i.old_configured = true; UpdateScanResults(); UpdateConfigured(); /* remove items that are still marked as "old" */ SweepList(); } else networks.clear(); GetList().SetLength(networks.size()); UpdateButtons(); }