Commit Graph

173 Commits

Author SHA1 Message Date
52bc856be4 build: Add support for Meson 2016-12-01 02:34:11 -05:00
563a5e3e65 theme-manager: ensure that icons are loaded
This uses the theme manager to ensure that we add the icon path for
consumers of the library.
2016-11-23 19:19:43 -08:00
44ff1f0396 move icons to libsysprof resources 2016-11-23 19:15:38 -08:00
f11aaa189f capture-writer: finalize if allocate failed 2016-11-20 20:26:34 -08:00
e97499b2a4 capture-writer: use frame initializer function 2016-11-20 19:36:24 -08:00
63579451b5 alignment: set alignment on structs
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.
2016-11-15 22:18:09 -08:00
40eb9a2c4e callgraph-view: compare nodes by using data field
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.
2016-11-15 22:03:36 -08:00
fc237f0a9b callgraph-view: ensure expand is set for function label
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.
2016-11-12 14:22:27 -08:00
757a62c692 empty-state: allow action:// in labels
This allows us to have an action in the label that can execute a UI
element.
2016-10-17 20:03:46 -07:00
71e1134cbc capture-writer: ftruncate() when creating capture
We risk overwriting existing data leaving our file in a somewhat broken
state. So first ftruncate() to zero so we are starting from scratch.
2016-10-16 13:23:37 -07:00
392aa177b6 capture-writer: handle EAGAIN
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.
2016-10-15 10:26:36 -07:00
a760a6ca10 build: silence some cast-align warnings on ARM 2016-10-14 11:40:55 -07:00
4b95b38c0a capture-cursor: skip when no read delegate was found
If we were skipping due to no matching read delegate, then
we can just ignore any checks on that frame and move to the
next.
2016-10-12 01:35:13 -07:00
b10948a51a build: fix distcheck 2016-10-11 20:51:41 -07:00
20f9f47966 selection: rename SpVisualizerSelection to SpSelection
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.
2016-10-10 16:24:22 -07:00
c12c8bc345 visualizer-ticks: remove GdkWindow from ticks widget
This is preventing us from selecting using the region where the
ticks are drawn. This allows the GtkOverlay pass-through child
property to work.
2016-10-10 15:51:48 -07:00
3b61aefdce writer: flush before creating reader from writer
This ensures we have a valid end_time updated in the header
before creating a reader.
2016-10-10 01:48:00 -07:00
ceb7c02f93 sysprof-ui: add missing header to sysprof-ui.h 2016-10-09 20:31:10 -07:00
e239887a9b empty-state: make empty state labels changable 2016-10-09 15:12:50 -07:00
ff8ef76d38 theme-manager: remove debug code 2016-10-09 15:12:38 -07:00
034a7d881f visualizer-view: ensure types are registered
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.
2016-10-09 12:36:28 -07:00
3b2f2505d3 sysprof-ui: add missing header to public API 2016-10-09 12:36:17 -07:00
34f493d553 capture: use SpClock for current timestamp
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.
2016-10-08 20:29:16 -07:00
62189670af callgraph: update callgraph when selection changes
When the visualizer selection is changed, we can update the
callgraph to ensure all samples fall within the time range.
2016-10-08 20:09:49 -07:00
00b9b1fbf5 visualizer-selection: move selection to sysprof.h
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.
2016-10-08 20:08:56 -07:00
1e38dc7b37 callgraph-view: add missing get_profile() accessor 2016-10-08 19:20:45 -07:00
37edc29cbb callgraph-view: clear models when unloading 2016-10-08 19:20:30 -07:00
42b82f69c9 visualizer-selection: add visualizer helpers
Adds a copy helper (for thread access) and a contains helper.
2016-10-08 19:19:46 -07:00
7c55f379bb theme-manager: add SpThemeManager and use it for custom css
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.
2016-10-08 16:28:18 -07:00
7ca8493130 viewport: remove SpViewport
We didn't end up using this by using plain GtkViewport.
2016-10-08 16:27:27 -07:00
aa61c43547 visualizer-view: fix selections when scrolling
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.
2016-10-08 15:36:01 -07:00
70aeeb66bc visualizer-selection: initial visualizer selection support
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.
2016-10-08 13:40:12 -07:00
e85707f5c9 visualizer-ticks: make lines sharper
These multi-width lines were blurry, so for now just make them
1px wide.
2016-10-07 12:58:30 -07:00
8f613b5352 visualizer-ticks: fix msec value 2016-10-06 22:26:52 -07:00
72a8276faf visualizer-view: fix time range for ticks
This uses the graph_width to get the proper time range of the
visualizer row. Mostly, this is just complicated because we
the ticks to be an overlay rather than inline with the list
rows.
2016-10-06 21:03:01 -07:00
c5fb8b5fc9 visualizer-row: add private access to graph_width
Having this makes a few things easier now that we are relying
on pixel cache for scrolling.
2016-10-06 21:02:00 -07:00
51ed367b74 wip: visualizer work 2016-10-05 09:40:08 -07:00
6d9656e6fe visualizer-view: use queue_resize instead of queue_draw
We need everything to update from this widget down the widget
hierarchy so they all get redrawn. Queuing a resize will ensure
that happens.
2016-10-04 12:29:50 -07:00
8d8c879384 visualizer-view: add helper viewport for scrolling
We can avoid using the inline scrollbar in favor of overlay
scrolling if we bridge the adjustment into the GtkViewport.
This sadly requires us to subclass things to get it just
right.
2016-10-03 16:08:13 -07:00
59cbd8fc3f visualizer-view: fix logic on swapping times 2016-10-03 16:06:00 -07:00
6eee3343de visualizer-ticks: avoid FPE 2016-09-30 18:25:22 -07:00
974f0b45fb line-visualizer-row: adjust surface when time range changes
We can reuse the existing surface, but we need to render it
at an offset so that we aren't so shaky under scrolling.
2016-09-30 18:07:39 -07:00
fef48610da visualizer-row: allow begin/end time to be NULL 2016-09-30 17:33:33 -07:00
5adb7d6d2c multi-paned: only mark position if sequence is accepted
This fixes a bug where any time we touch the adjacent scrollbar,
the position of the paned gets set.
2016-09-30 17:11:29 -07:00
76b92cec99 visualizer-ticks: don't render 00:00:00.0000
If we are at the beginning of a capture, we would end up drawing
the msec because h/m/s were all zero. Make sure we also have a
non-zero msec or just fallback to regular timestamps.
2016-09-30 17:07:33 -07:00
5c53dd5d6e visualizer-view: avoid overscroll upon zoom change
When changing the zoom (zooming out), we could potentially
let the scrollbar be past the end. This looks pretty bad when
the GtkWindow doesn't clip correctly.

This just adjusts things so we push ourselves back into the
visible area.
2016-09-30 17:04:48 -07:00
e54c496f7d visualizer-view: set hscrollbar policy to never
Because we are using ListBox, we can't quite do scrolling the
way we'd like (naturally using the scrolled window). So for now
we need to just disable hscrolling here.

However, it would be nice if we could teach the viewport to
handle this correctly so that it wires up the
GtkScrollable:hscrollbar-adjustment to our internal one.
2016-09-30 16:59:11 -07:00
0d8f45f034 visualizer-ticks: draw position labels next to ticks
This adds label text next to important epochs. We determine
which epochs are important by trying to choose the waypoints
that had more than 2 epochs land in view.

This avoids showing numbers for multiple time-spans, but giving
enough context to be useful.
2016-09-30 16:54:17 -07:00
a20ba80f3d line-visualizer-row: disable time optimization
This is overactive because we could be zoomed in so far that we
don't pick up the adjacent frame. We need something more clever
that can pick up frames adjacent to the visible area of the
capture.
2016-09-30 14:02:58 -07:00
c116120563 visualizer-ticks: adjust ticks for capture epoch
We need to take into account the real start of the capture to
land the ticks in the right position. Add "epoch" concept
to SpVisualizerTicks for just this purpose.
2016-09-30 13:21:17 -07:00