This ensures the callgraph code has fewer items to look at. The first level
of filtering is done by the SysprofDocument bitset index for items
matching the type (via SysprofDocumentBitsetIndex). Then the new
SysprofTimeFilterModel filters the frames by time-span by binary searching
for the first and last indexes which match that time span, avoiding the
pathological case of linear search for the spans (which would inflate a
GObject for every element).
This is a model that expects the set to be in sorted order by time, and
requires that the items are a SysprofDocumentFrame. If that holds true,
it can binary search to find the correct frames based on a requested
time-span that is inclusive only of matching frames.
This is useful to dive down into data based on either the visible or
selected time span of a session without having to expensive GtkFilter
operations (which would look at every object in the set).
This is going to be used to bring the whole tracksview thing we did before
and make the selections work directly on charts. We can probably use the
same thing w/ a GtkOverlay and custom positioning to replace the old
usage too.
This gets it out of the callgrpah view so that it can live in the sidebar
area of a AdwOverlayNavigationView.
We allow the utility area to control the entire view (including the
toolbarview) so that we don't have to bind extra properties for titles,
and other random things.
This property is meant to hold accessory traceables that match the current
selection in the callgraph view. Eventually we want this bridged with the
callgraph sections to show something useful.
It can be handy to get system information from journald to correlate with
what is going on in applications. This simple journald tail GSource will
dispatch to our callback which can append the logs to the capture.
This uses a custom callback rather than the GSourceFunc because that seems
a bit annoying to use with recent GCC function equivalence checks.