Commit Graph

734 Commits

Author SHA1 Message Date
342ee71119 window: add separators in gear menu 2016-09-28 21:02:01 -07:00
b9b96184cd visualizers: wire zoom manager to visualizers
This gets the basic zoom control working. I anticipate we'll
need some additional changes once we land panning support.
2016-09-28 19:56:39 -07:00
aaf521ef1d window: set minimum zoom level 2016-09-28 18:11:32 -07:00
9bd3891d43 window: use floor() instead of ceil()
Otherwise we get 111% instead of 110%.
2016-09-28 18:08:34 -07:00
60e917a5d1 window: update zoom reset label to display current zoom 2016-09-28 18:06:33 -07:00
baf26fa0b6 build: add $LIBM to the sysprof binary 2016-09-28 18:06:00 -07:00
50bfd8db72 zoom: add plumbing for zoom to SpWindow
This uses the new ZoomManager to wire up zoom controls for the
main window. We had to switch away from GMenu to give ourselves
the control we will need for the zoom label of 100% which still
needs to be wired up.
2016-09-28 17:51:48 -07:00
e6ecad548a zoom-manager: add zoom manager to simplify zoom control
This will give us a single place to deal with the mechanics of
how zoom works, and then our UI code can simply apply the value
as necessary.
2016-09-28 17:13:24 -07:00
4d48f98f6d visualizer-ticks: remove extraneous assertion
This isn't exactly true anymore, so we need to remove it now
that we can have more interesting time spans.
2016-09-28 14:13:15 -07:00
7831b767d0 visualizer-view: shrink time range when necessary
If we don't have a minute worth of input, we should shrink the
visible area to exactly what we came across.

We still have the issue of the UI creating the capture file
before auth has completed, but we can fix that later so we
have a "semantically" correct start time.
2016-09-28 14:10:29 -07:00
527ad1476c cpu-visualizer: reset colors upon new reader
We want to reset our colors so that we look the same on
subsequent loads, which is what the user would expect.
2016-09-28 14:09:53 -07:00
baabf7692c color-cycle: add reset helper
This will reset the colors and move back to position 0.
2016-09-28 14:09:32 -07:00
388557cdfe window: expand for visualizers as necessary
We want the paned to expand for the visualizers so that the
UI looks natural as often as possible without scrolling.
2016-09-28 13:23:51 -07:00
b5fccca069 visualizer-view: add ::visualizer-added and ::visualizer-removed
These signals are emitted when a visualizer row has been added
or removed from the view. This might be handy if you want to
resize a paned based on the natural size of the visualizers.
2016-09-28 13:22:51 -07:00
337334e4fa visualizer-view: remove min height for rows
We will handle this in other areas, so we can drop this.
2016-09-28 13:22:25 -07:00
afbb2cd936 window: use GtkFileChooserNative
This helps remove gtk_dialog_run() in favor of
gtk_native_dialog_run() which safely handles issues with
the primary main loop making progress.
2016-09-28 12:30:29 -07:00
f8a0f2701e visualizer-view: add SpVisualizerView
This adds a new helper widget SpVisualizerView to simplify using
visualizers from applications using libsysprof-ui-2 such as
Builder.

We can manage the view range, zoom, etc from this widget going
forward.
2016-09-27 23:15:56 -07:00
2197a0c02e capture: add end time for captures
Update the end time when we flush the buffer to disk. Also add
a way to either incrementally get the end time or rely on the
header when possible.
2016-09-27 21:24:33 -07:00
4953731dd7 cpu-visualizer-row: choose color for row
For each CPU counter we come across, choose a new color from
the cycle.
2016-09-27 19:18:40 -07:00
f3cec0f8c1 line-visualizer-row: add color parameter for counter
Allow specifying a color for a counter that is added to the
visualizer.
2016-09-27 19:18:29 -07:00
e7e8e913b5 color-cycle: add color generator helper
We need a simple helper to choose colors for visualizers so
they do not overlap. This is just a simple cycle using some
predefined colors.

We should come up with something more unique in the future or
possibly do this with CSS and :nth-child(n) once we have access
to CSS nodes.
2016-09-27 19:16:07 -07:00
5a5bf1900f visualizer-ticks: adjust ticks opacity
We can lighten the ticks a bit here and still be theme agnostic.
2016-09-27 18:33:17 -07:00
21ed742215 line-visualizer-row: only queue draw when using widget style
We can avoid queuing a new draw request if we are not using
the default styling of the widget in the line drawing.
2016-09-27 18:30:55 -07:00
21db65167f line-visualizer-row: use default foreground to draw
When drawing lines, default to the foreground color of the
widget. This means we also need to queue a draw when the CSS
style has been updated.
2016-09-27 18:27:59 -07:00
7aee4c428b css: tweak css for visualizers
Just some style fixes that make things look better when playing
around with the paned and showing overscroll.
2016-09-27 17:22:05 -07:00
f2f03259a2 visualizer-ticks: set CSS element name to "ticks" 2016-09-27 17:21:49 -07:00
fa1a8d9276 visualizer-ticks: use color from GtkStyleContext
This should improve the coloring when used with a dark theme.
2016-09-27 17:21:28 -07:00
3a3b4f1fa0 visualizer-ticks: adjust line draw ordering
We want to draw the most important ticks on top, which will
improve things should we start using CSS to define styling.
2016-09-27 17:09:37 -07:00
857082b222 visualizer-ticks: tweak half-line positioning
Just to get things a bit more friendly should we choose even
line widths.
2016-09-27 17:08:52 -07:00
ad130db3d6 cpu-visualizer-row: hide if no counters were found
If we failed to locate any counters, then there isn't much we
can show the user here. So just hide the row.
2016-09-27 16:44:23 -07:00
984fac73b6 visualizer-ticks: adjust tick positioning and add 5sec span
Just some improvements to out positioning so things line up
as expected.
2016-09-27 16:38:17 -07:00
aa21c2379f visualizer-ticks: start on minimal ticks implementation
We need some sort of scale for content, so we will do this with
an overlay for now. However, we will also want something to be
able to do selections in the future.

This still needs some iteration for correctness, but this sort
of gets the ball rolling.
2016-09-27 15:42:26 -07:00
c24306349f line-visualizer-row: ignore css border
If a border is specified in CSS, we do not want to draw on
that. Make sure we adjust our allocation to take that into
account.
2016-09-27 15:40:46 -07:00
1dcb41f623 line-visualizer-row: use scaled surface when available
If we have not yet received our proper draw for the new size
allocation (likely right after the size allocate), then we can
just use the old surface but at a scaled value. This is handy
so that we don't block the main loop trying to do drawing of
lots of data points. Instead we just scale the image and wait
for the high-quality version to complete.
2016-09-26 23:24:17 -07:00
321fc18eee cpu-visualizer-row: stop after locating counters
In practice, we do a single counter definition for the CPU
definitions. So we can stop iterating the samples after we
successfully locate an item.
2016-09-26 22:14:44 -07:00
f600a96364 hostinfo: stash CPU usage 4x per second
Probably want to make this a tunable at some point, but this
makes things a bit better for graphing now.
2016-09-26 21:59:28 -07:00
573ba7bf51 line-visualizer-row: use cairo_curve_to()
This makes our line graph match more closely to the design
coming from Builder's cpu graph.
2016-09-26 21:57:33 -07:00
4bdbc46381 line-visualizer-row: simplify data point rendering
We can use some crafty scale/translations to simplify the
line drawing of data points.
2016-09-26 20:08:34 -07:00
63e7e1d1dd line-visualizer-row: remove debug code 2016-09-26 19:27:37 -07:00
bdc62bac1e visualizer-list: add SpVisualizerList
This simplifies the visualizer reader and time propagation. It
will also give us a single place to manage zoom levels when we
get to that.
2016-09-26 19:21:10 -07:00
24477d41cf line-visualizer: plumb off-screen rendering mechanics
This starts getting the mechanics in place for off screen
rendering using a cairo image surface. We create our own
point cache for storing x,y pairs and then simplify our
drawing based on that.
2016-09-26 17:38:47 -07:00
7e38d929da window: set y scale for graph 2016-09-26 17:38:29 -07:00
e537b84c29 cpu-visualizer: remove prepare vfunc
This is going away, at least in this form.
2016-09-26 17:37:59 -07:00
e4bc640a49 capture-cursor: reset reader upon creation
When creating our private reader copy, we need to reset the
reader so that we start at the beginning. Otherwise, we are
likely to be at the end of the capture (especially for in
memory captures).
2016-09-26 17:37:11 -07:00
a3257ed40b capture-condition: style cleanup
Just some nits and defensive programming.
2016-09-26 17:36:47 -07:00
571c2320da pointcache: add PointCache utility class
This is a simple cache that keeps x,y pairs for use when drawing
visualizers. To keep this generic, and save on memory, we simply
store the x,y coordinates as floats between 0.0 and 1.0. This
saves us roughly 50% on each data point over the 2 8-byte
numbers we would otherwise store.

Obviously, we could take this further and make some fancy index
storage with run-length-encode values, but this should work for
now and allow us to get more exotic later.
2016-09-26 17:34:58 -07:00
0a9193ab70 line-visualizer: remove legacy drawing code
This provides the plumbing to do the threaded drawing, we just
need to write the capture cursor and draw operations from the
pixman/cairo worker thread (and do so safely).
2016-09-25 15:37:00 -07:00
5ceff81d5d visualizer: add set_time_range() and get_time_range()
This allows the row to be notified of the visible range, which
can result from changing the zoom or a new reader being set.
2016-09-25 15:35:14 -07:00
1f07467800 capture-condition: add new AND condition
This requires that both the left and right condition evaluate
to TRUE. We obviously will want to add more of these for things
like OR, NOT, etc. However, we can add them as necessary since
they are fairly self contained patches.
2016-09-25 13:32:14 -07:00
7d0cce7bdf ui: remove legacy CSS selectors
Now that we bumped the gtk+ requirement, we can remove the old
CSS selectors that are obsolete.
2016-09-25 12:21:56 -07:00