improved perfs and event management
This commit is contained in:
1 parent
667ed0c100
commit
bb99be5889
17 files changed
+626
-59
No files matched your search
@@ -743,6 +743,12 @@ struct App {
|
||||
/// it keeps for a second latch (it is counting retries, not time).
|
||||
int dbg_events_step = 0;
|
||||
int dbg_events_wait = 0;
|
||||
/// The event row the probe selected before it activated one, and how many rows were selected.
|
||||
/// Both are read back *after* the activation: a row pointer that is no longer the list's row 0,
|
||||
/// or a smaller count, says the activation rebuilt the list and so threw away the user's scroll
|
||||
/// position and their comparison selection.
|
||||
GtkListBoxRow* dbg_events_row0 = nullptr;
|
||||
int dbg_events_selected = 0;
|
||||
/// Which step of the plot-context-menu probe runs next (`UDPSCOPE_PROBE_ROWMENU_MS`), and the
|
||||
/// popover it is measuring.
|
||||
int dbg_rowmenu_step = 0;
|
||||
@@ -1097,7 +1103,13 @@ constexpr double kWirePick = 6.0;
|
||||
constexpr int kZoomGestureSteps = 8;
|
||||
constexpr int kZoomWindowSteps = 8;
|
||||
constexpr int kEventThumbW = 138;
|
||||
/// The row thumbnail's height floor and ceiling. A floor and not a fixed size: the stored preview is
|
||||
/// `44 px` per signal, so its proportions depend on how many signals the event has, and a row shows
|
||||
/// it at *its* aspect -- a one-signal event is a short row and a six-signal one a tall one. The
|
||||
/// ceiling is what keeps a wide event from making a row taller than the pane; the full picture is a
|
||||
/// hover away.
|
||||
constexpr int kEventThumbH = 46;
|
||||
constexpr int kEventThumbMaxH = 104;
|
||||
inline int g_stats_phase = 0;
|
||||
inline std::vector<std::uint64_t> g_stats_n_before;
|
||||
inline double g_trigrenum_edge = 0.0;
|
||||
@@ -1333,6 +1345,15 @@ GdkTexture* scale_texture(GdkTexture* source, int width, int height);
|
||||
EventThumbCache* event_thumb_cache(App& app);
|
||||
GdkTexture* event_preview_texture(App& app, const std::string& path);
|
||||
void refresh_events_pane(App& app);
|
||||
/// Re-marks which row is the event currently on screen, **without rebuilding the list**.
|
||||
///
|
||||
/// The mark is the only thing about a row that a replay changes -- the picture and the numbers
|
||||
/// are the file's -- and rebuilding the list to restate it threw away the scroll position and
|
||||
/// the selection with it, so reaching the thirtieth event meant scrolling to it again after
|
||||
/// every click, and a selection made for a comparison was lost by the act of looking at one of
|
||||
/// its members. Call this for a change of what is on screen, and `refresh_events_pane()` only
|
||||
/// for a change of what is *cached*.
|
||||
void mark_events_on_screen(App& app);
|
||||
void on_event_row_activated(GtkListBox*, GtkListBoxRow* row, gpointer user);
|
||||
GtkWidget* build_events_pane(App& app);
|
||||
gboolean tick(gpointer user);
|
||||
|
||||
Reference in new issue
Block a user