diff --git a/src/libsysprof-gtk/sysprof-time-series-item.c b/src/libsysprof-gtk/sysprof-time-series-item.c index ccb88a2d..c663a96e 100644 --- a/src/libsysprof-gtk/sysprof-time-series-item.c +++ b/src/libsysprof-gtk/sysprof-time-series-item.c @@ -32,7 +32,10 @@ struct _SysprofTimeSeriesItem enum { PROP_0, + PROP_DURATION, PROP_ITEM, + PROP_TIME, + PROP_END_TIME, N_PROPS }; @@ -66,6 +69,18 @@ sysprof_time_series_item_get_property (GObject *object, g_value_set_object (value, self->item); break; + case PROP_DURATION: + g_value_set_int64 (value, sysprof_time_series_item_get_duration (self)); + break; + + case PROP_TIME: + g_value_set_int64 (value, sysprof_time_series_item_get_time (self)); + break; + + case PROP_END_TIME: + g_value_set_int64 (value, sysprof_time_series_item_get_end_time (self)); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -84,6 +99,21 @@ sysprof_time_series_item_class_init (SysprofTimeSeriesItemClass *klass) G_TYPE_OBJECT, (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + properties [PROP_TIME] = + g_param_spec_int64 ("time", NULL, NULL, + G_MININT64, G_MAXINT64, 0, + (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + + properties [PROP_END_TIME] = + g_param_spec_int64 ("end-time", NULL, NULL, + G_MININT64, G_MAXINT64, 0, + (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + + properties [PROP_DURATION] = + g_param_spec_int64 ("duration", NULL, NULL, + G_MININT64, G_MAXINT64, 0, + (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_properties (object_class, N_PROPS, properties); } @@ -123,20 +153,41 @@ sysprof_time_series_item_get_item (SysprofTimeSeriesItem *self) return self->item; } -void -sysprof_time_series_item_get_time_value (SysprofTimeSeriesItem *self, - GValue *time_value) +gint64 +sysprof_time_series_item_get_time (SysprofTimeSeriesItem *self) { - g_return_if_fail (SYSPROF_IS_TIME_SERIES_ITEM (self)); + GValue value = G_VALUE_INIT; + gint64 ret; - gtk_expression_evaluate (self->time_expression, self->item, time_value); + g_return_val_if_fail (SYSPROF_IS_TIME_SERIES_ITEM (self), 0); + + g_value_init (&value, G_TYPE_INT64); + gtk_expression_evaluate (self->time_expression, self->item, &value); + ret = g_value_get_int64 (&value); + g_value_unset (&value); + + return ret; } -void -sysprof_time_series_item_get_duration_value (SysprofTimeSeriesItem *self, - GValue *duration_value) +gint64 +sysprof_time_series_item_get_duration (SysprofTimeSeriesItem *self) { - g_return_if_fail (SYSPROF_IS_TIME_SERIES_ITEM (self)); + GValue value = G_VALUE_INIT; + gint64 ret; - gtk_expression_evaluate (self->duration_expression, self->item, duration_value); + g_return_val_if_fail (SYSPROF_IS_TIME_SERIES_ITEM (self), 0); + + g_value_init (&value, G_TYPE_INT64); + gtk_expression_evaluate (self->duration_expression, self->item, &value); + ret = g_value_get_int64 (&value); + g_value_unset (&value); + + return ret; +} + +gint64 +sysprof_time_series_item_get_end_time (SysprofTimeSeriesItem *self) +{ + return sysprof_time_series_item_get_time (self) + + sysprof_time_series_item_get_duration (self); } diff --git a/src/libsysprof-gtk/sysprof-time-span-layer.c b/src/libsysprof-gtk/sysprof-time-span-layer.c index f67046dd..2ae9bd32 100644 --- a/src/libsysprof-gtk/sysprof-time-span-layer.c +++ b/src/libsysprof-gtk/sysprof-time-span-layer.c @@ -179,7 +179,7 @@ sysprof_time_span_layer_get_property (GObject *object, break; case PROP_SERIES: - g_value_set_boxed (value, sysprof_time_span_layer_get_series (self)); + g_value_set_object (value, sysprof_time_span_layer_get_series (self)); break; default: @@ -210,7 +210,7 @@ sysprof_time_span_layer_set_property (GObject *object, break; case PROP_SERIES: - sysprof_time_span_layer_set_series (self, g_value_get_boxed (value)); + sysprof_time_span_layer_set_series (self, g_value_get_object (value)); break; default: @@ -246,9 +246,9 @@ sysprof_time_span_layer_class_init (SysprofTimeSpanLayerClass *klass) (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS)); properties[PROP_SERIES] = - g_param_spec_boxed ("series", NULL, NULL, - SYSPROF_TYPE_TIME_SERIES, - (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS)); + g_param_spec_object ("series", NULL, NULL, + SYSPROF_TYPE_TIME_SERIES, + (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS)); g_object_class_install_properties (object_class, N_PROPS, properties); }