diff --git a/src/libsysprof-ui/sysprof-line-visualizer-row.c b/src/libsysprof-ui/sysprof-line-visualizer-row.c index 5488a453..3c7e3c28 100644 --- a/src/libsysprof-ui/sysprof-line-visualizer-row.c +++ b/src/libsysprof-ui/sysprof-line-visualizer-row.c @@ -79,6 +79,7 @@ typedef struct GdkRGBA background; guint use_default_style : 1; guint fill : 1; + guint use_dash : 1; } LineInfo; typedef struct @@ -113,6 +114,7 @@ enum { }; static GParamSpec *properties [N_PROPS]; +static gdouble dashes[] = { 1.0, 2.0 }; static void load_data_free (gpointer data) @@ -223,6 +225,9 @@ sysprof_line_visualizer_row_draw (GtkWidget *widget, cairo_set_line_width (cr, line_info->line_width); + if (line_info->use_dash) + cairo_set_dash (cr, dashes, G_N_ELEMENTS (dashes), 0); + if (line_info->fill) { gdk_cairo_set_source_rgba (cr, &line_info->background); @@ -818,3 +823,25 @@ sysprof_line_visualizer_row_set_fill (SysprofLineVisualizerRow *self, } } } + +void +sysprof_line_visualizer_row_set_dash (SysprofLineVisualizerRow *self, + guint counter_id, + gboolean use_dash) +{ + SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self); + + g_return_if_fail (SYSPROF_IS_LINE_VISUALIZER_ROW (self)); + + for (guint i = 0; i < priv->lines->len; i++) + { + LineInfo *info = &g_array_index (priv->lines, LineInfo, i); + + if (info->id == counter_id) + { + info->use_dash = !!use_dash; + sysprof_line_visualizer_row_queue_reload (self); + break; + } + } +} diff --git a/src/libsysprof-ui/sysprof-line-visualizer-row.h b/src/libsysprof-ui/sysprof-line-visualizer-row.h index 5d578d94..d27b1958 100644 --- a/src/libsysprof-ui/sysprof-line-visualizer-row.h +++ b/src/libsysprof-ui/sysprof-line-visualizer-row.h @@ -62,5 +62,9 @@ SYSPROF_AVAILABLE_IN_ALL void sysprof_line_visualizer_row_set_fill (SysprofLineVisualizerRow *self, guint counter_id, const GdkRGBA *color); +SYSPROF_AVAILABLE_IN_ALL +void sysprof_line_visualizer_row_set_dash (SysprofLineVisualizerRow *self, + guint counter_id, + gboolean use_dash); G_END_DECLS