mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-03 03:11:57 +00:00
perf(l2): long lists build only the rows on screen
New message, Nodes (and its Scan popup), Admin and Messages show their items through one virtual list: a screenful of rows, handed to the next item as one scrolls out, the scroll extent from the items' heights. 256 contacts: 522 objects and ~950 ms of filling in (frames up to 96 ms) before, 19 objects at once now; a scrolled frame 28.5 -> 11.7 ms. Nodes 257 -> 49 objects. A new message rewrites Messages' rows in place (46 -> 20 ms) instead of building the screen again; it's rebuilt only when "Read all" comes or goes. A held row keeps what it shows until let go. Perf tools: -D PERF_LISTS, -D PERF_LIST_MUL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -314,14 +314,16 @@ private:
|
||||
bool homeMapFit();
|
||||
#ifdef UI_PERF_TEST
|
||||
void perfMap(bool reset = false);
|
||||
void perfNearbyAgain() { _nearby_sig = 0; refreshNearbyList(); }
|
||||
#endif
|
||||
void homeMapLayout();
|
||||
void homeMapLoop();
|
||||
void refreshHome();
|
||||
void homeSwipePoll();
|
||||
void buildChats();
|
||||
void refreshChats();
|
||||
void fillChats();
|
||||
void buildContacts();
|
||||
void contactRow(int i);
|
||||
void fill(void (UITask::*fn)(int), int from, int to);
|
||||
void then(void (UITask::*fn)(int), int arg);
|
||||
void fillStart(int n, int first, void (UITask::*row)(int));
|
||||
@@ -341,7 +343,6 @@ private:
|
||||
void buildKeyboardPage(lv_obj_t* body);
|
||||
void buildAboutPage(lv_obj_t* body);
|
||||
void buildAdminPick();
|
||||
void adminPickRow(int i);
|
||||
void buildOta();
|
||||
void refreshOta();
|
||||
void otaTick();
|
||||
@@ -350,8 +351,6 @@ private:
|
||||
bool wifiInUse() const; // a map download or an update holds the WiFi
|
||||
void buildNearby();
|
||||
void refreshNearbyList();
|
||||
void nearbyRow(int i);
|
||||
void nearbyRowSet(lv_obj_t* row, int i);
|
||||
uint32_t nearbySignature() const;
|
||||
void showScanPopup();
|
||||
void refreshScanPopup();
|
||||
|
||||
Reference in New Issue
Block a user