This uses an alternate idea for setting the structure alignments. Lets
see if this silents the ARM builder cast alignment issues.
GSlice (which is what is used for GObjects) guarantees a 2-pointer size
allocation, which means we can be ensured that the alignment is at least
8 bytes.
We could have multiple StackNodes that point at the same data. However
we might not have pointer equality. This uses the data pointer that nodes
point at to determine equality.
Using the .ui file to create the name cell does not allow us to set the
expand property (it defaults to FALSE and cannot be changed). So instead,
we just add the cell manually like we do for the tag cell.
This field is opportunistic, so failure isn't a big deal, but we can at
least try again in an EAGAIN case. Should also squash a compiler warning
about unused results.
Overview of changes in Sysprof 3.22.1
=====================================
Changes since 3.22.0
* A new data source called "hostinfo" has been added. It records various
CPU datapoints as "counters" in the sysprof capture.
* A new visualizers abstraction has been added so that we can start
providing new ways to look at profiler data.
* A CPU visualizer has been added which renders datapoints recorded
from the hostinfo data source.
* Selecting ranges of the visualizer will update the callgraph limiting
stacktrace samples, to the given time range.
* Missing headers are now installed which may be needed by applications
using libsysprof-ui.
* A keyboard shortcuts dialog has been added.
* A theme manager has been added to allow us to provide custom CSS for
various themes. Currently, we have additional styling added for
Adwaita and Adwaita-dark.
We want this in sysprof.h (without UI components) so that we
can use it to filter things in profilers. Therefore, we don't
need to make it namespaced to "visualizers" since a time range
selection is a fairly straightforward, and non-UI confined
implementation.
So that Builder can depend on our recent visualizer work, we
can bump the version now here. We will release 3.22.1 before
too long anyway, so its fine to bump the number now and just
update news/tag for release.
These have the chance of being dropped unless we export them
here manually. We probably should change how we export symbols
so this isn't required in the future.
It is important that our capture current time matches the
same clock we are using for events. Otherwise we could have
drift between CLOCK_MONOTONIC and CLOCK_MONOTONIC_RAW.
This allows us to use the selection in profile components
without the use of Gtk.
We will probably end up renaming this class to SpSelection or
something like that.
We want to set some custom backgrounds for the visualizers, and
those need to track with the current theme. SpThemeManager will
watch the systems theme changes (including dark theme) and
update the loaded CSS resources as necessary.
If we have a scrolled view, we might be a bit off on the
selected range until this commit. This adjusts for the scrolled
area and ensures that both ticks and selections land in the
right place.
This gets started on allowing the user to select a region.
Nothing is yet responding to the changes in selection, but
that can come later.
Ideally, we will truncate (or mark rows invisible/insensitive)
if they do not fall within the selected time region.