Commit Graph

99 Commits

Author SHA1 Message Date
85b233d0d8 libsysprof-gtk: fix getter for value 2023-06-20 13:25:26 -07:00
075c8e664d libsysprof-gtk: break value at x,y coord into helper 2023-06-20 13:01:07 -07:00
b125f4e6e9 libsysprof-gtk: highlight item on motion 2023-06-20 12:46:15 -07:00
d68f2ff87a libsysprof-gtk: add snapshot_motion to chart layer
This allows snapshoting the motion highlight separate from the rest of the
layer so that we can have better render tree diffs. Otherwise we risk
having to snapshot a large dataset from the chart layer itself rather than
just the hightlight areas that changed.
2023-06-20 12:45:43 -07:00
86f5fc6338 libsysprof-gtk: create depth chart for samples 2023-06-20 11:50:05 -07:00
0cdb97973a libsysprof-gtk: implement some basic depth chart drawing 2023-06-20 11:49:53 -07:00
d0d19cff39 libsysprof-analyze: use doubles for reference data
We only want to move to float for the internal 0..1 positions which are
used to draw to the screen (to reduce how much data we hold on to). But for
the data we need to calculate those 0..1 positions, we want better
precision for large numbers. Use double for all of those.
2023-06-20 11:49:22 -07:00
e05dcdde03 libsysprof-gtk: start on test for charts 2023-06-20 11:10:43 -07:00
2a27bae70b libsysprof-gtk: add session object to chart 2023-06-20 11:10:33 -07:00
23944627ea libsysprof-gtk: be safer about multiple dispose calls 2023-06-20 11:09:59 -07:00
dcdc859759 libsysprof-gtk: add chart headers to toplevel header 2023-06-20 11:09:25 -07:00
92d3d5901d libsysprof-gtk: janitorial cleanup 2023-06-20 11:09:05 -07:00
d7e889ebc8 libsysprof-gtk: ensure layer has allotment for private struct 2023-06-20 11:04:40 -07:00
43ec0e48f5 libsysprof-gtk: start on some loading progress 2023-06-19 19:00:22 -07:00
9d6c60a0d6 libsysprof-gtk: add thread toggle for callgraph test 2023-06-18 14:05:44 -07:00
d4efcb04fa libsysprof-gtk: add column for process id
I wish we had a thread-id for messages, but that would require changing
the capture format and/or add a new frame type.
2023-06-18 13:51:35 -07:00
1e3345ae42 libsysprof-gtk: select time range when activating mark w/ duration 2023-06-16 17:28:44 -07:00
01876ed3b9 libsysprof-gtk: always show time for start column
But allow hiding it for the duration column.
2023-06-16 17:21:28 -07:00
bbd832015e libsysprof-gtk: start on chart + layers
The goal here is to be able to connect data series such as
SysprofTimeSeries or SysprofXYSeries to various chart layers. Those
chart layers get stacked in a SysprofChart.

Some glue code will be necessary to go from frames into data series but
we can experiment with how to automate that later on.
2023-06-16 17:00:31 -07:00
f53fb38d69 libsysprof-gtk: remove selections from mark chart
This doesn't benefit from a selection currently.
2023-06-16 15:56:02 -07:00
0f113eaad7 libsysprof-gtk: remove debug code 2023-06-16 15:54:00 -07:00
be36f36a0a libsysprof-gtk: select mark time range on double click 2023-06-16 15:52:57 -07:00
ac9a95a92b libsysprof-gtk: add sysprof_session_select_time()
This allows changing the time to a specific section within the document
time span.

It may also update the visible time to include the selected time.
2023-06-16 15:52:39 -07:00
dc4d15442f libsysprof-gtk: allow last item to have text 2023-06-16 15:51:43 -07:00
81453a3ec7 libsysprof-gtk: fix notify of time selection 2023-06-16 15:51:33 -07:00
5c178d0672 libsysprof-gtk: janitorial cleanup 2023-06-16 15:18:28 -07:00
b66791fbcd libsysprof-gtk: draw some information under the pointer 2023-06-16 15:17:30 -07:00
ca892b4f5f libsysprof-gtk: tweak rendering to use CSS named colors
We still don't want to fully rely on the CSS machinery because that would
require widgets, which is far too heavy for the number of render nodes we
need to regularly draw.
2023-06-16 14:52:36 -07:00
906e81ec02 libsysprof-gtk: tweak row title alignment 2023-06-16 13:58:19 -07:00
5839d46694 libsysprof-gtk: draw diamonds above squares 2023-06-16 13:58:02 -07:00
266c15a4e1 libsysprof-gtk: fix duration render and cull text
We don't need to render text in most cases. Additionally, that requires
inflating a GObject to extract from the capture.

Instead, try to determine if we will even want to render the text before
causing any of that work to happen.

Also setup the pixel range for the layout so it may ellipsize as necessary.
2023-06-16 13:38:43 -07:00
87e28a6062 libsysprof-gtk: use timeseries for rendering chart marks
This allows us to pre-calculate the values and re-use them, while also
allowing for us to avoid inflating GObject's for marks unless it becomes
necessary to access additional information.
2023-06-16 13:08:31 -07:00
aa3aacc721 libsysprof-gtk: add intermediate chart item
This will give us a place to deal with filtering as well as caching
points based on the selected time range.
2023-06-16 10:54:43 -07:00
a3e08b441f libsysprof-gtk: map in the mark chart item
This gets the auto-filtering into account, but we still need to get the
drawing of time ranges to use the proper timespan.
2023-06-15 17:49:32 -07:00
f2f47b12d7 libsysprof-gtk: make chart row use :model property
This will allow us to make a map model and then bind from that after
filtering based on selection.
2023-06-15 17:14:03 -07:00
5e18436a15 libsysprof-gtk: add SysprofMarkChartItem
The goal here is to use a map list model to convert to these and then to
use the session filter to apply the selection.
2023-06-15 17:08:38 -07:00
b718e3ac9e libsysprof-gtk: set session time range from document
This will eventually get updated as selections are made, and various other
components can adapt to that change.
2023-06-15 16:43:49 -07:00
d4da036f73 libsysprof-analyze: move timespan to analyze library
That way we can use it for the document itself, and have it update the
timespan of the recording in case it didn't get updated due to ctrl+c or
something prematurely stopping.
2023-06-15 16:43:17 -07:00
9eca425a25 libsysprof-gtk: add timespan to session
We want to be able to monitor this from session observers to be able to
update the visible area and/or what is rendered.
2023-06-15 16:32:12 -07:00
d458d312a3 libsysprof-gtk: start on a chart row
This is just playing around to get things to render. There is much to do
to ensure that we interact with this well (and cache some values for
faster generation on allocation changes).
2023-06-15 16:15:11 -07:00
7568c31fcf libsysprof-gtk: use listview instead of columnview
We don't really want the columnview headers at all, so just use listview
and we'll use our inscription to control the size of the name "column".
2023-06-15 13:28:03 -07:00
1455876835 libsysprof-analyze: make mark catalog work with sections
This allows us more flexibility with creating sections usin the flatten
list model as the rows need to contain the data for the headers.
2023-06-15 13:19:18 -07:00
2fb3815af3 libsysprof-gtk: tweak sizing and expansion 2023-06-15 12:45:54 -07:00
a25b7a8141 libsysprof-gtk: add columnview header-factory experiment 2023-06-15 12:34:49 -07:00
8558cd1b58 libsysprof-gtk: remove marktable stiple
This doesn't work when you have recycling rows because even/odd isn't
stable. Additionally, the hover highlight is generally enough to be able
to give yourself a guide to read across columns.
2023-06-14 22:38:42 -07:00
b0742d1368 libsysprof-gtk: tweak styling for marktable 2023-06-14 22:31:59 -07:00
11387e5a55 libsysprof-gtk: add scaffolding for chart widget
This doesn't yet render things, but it starts to get the plumbing in place
so that we can create a custom row type and then consume the marks
catalog from SysprofDocument eventually.
2023-06-14 22:23:18 -07:00
c8ac9fe984 libsysprof-gtk: fix usec/msec groupings 2023-06-14 17:29:18 -07:00
fb1a1b40ee libsysprof-gtk: add sorting for remaining marks columns 2023-06-14 17:21:32 -07:00
344247bf80 libsysprof-gtk: setup default sort for start column
These may not be in order as sometimes threads record at different rates
as well as marks being tacked on at the end from a memfd.
2023-06-14 17:17:03 -07:00