From c1fe67b74cd0ffeb5c84322426b74581f8c01fb4 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Fri, 30 Jun 2023 16:10:36 -0700 Subject: [PATCH] libsysprof-gtk: update normalized series when axis changes --- .../sysprof-normalized-series.c | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/libsysprof-gtk/sysprof-normalized-series.c b/src/libsysprof-gtk/sysprof-normalized-series.c index 9e3c83b8..f63046d6 100644 --- a/src/libsysprof-gtk/sysprof-normalized-series.c +++ b/src/libsysprof-gtk/sysprof-normalized-series.c @@ -219,6 +219,8 @@ sysprof_normalized_series_invalidate (SysprofNormalizedSeries *self) egg_bitset_add_range (self->missing, 0, n_items); g_list_model_items_changed (G_LIST_MODEL (self), 0, n_items, n_items); + + sysprof_normalized_series_maybe_update (self); } } @@ -440,11 +442,29 @@ sysprof_normalized_series_set_axis (SysprofNormalizedSeries *self, g_return_if_fail (SYSPROF_IS_NORMALIZED_SERIES (self)); g_return_if_fail (!axis || SYSPROF_IS_AXIS (axis)); - if (g_set_object (&self->axis, axis)) + if (self->axis == axis) + return; + + if (self->axis) { - g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_AXIS]); - sysprof_normalized_series_invalidate (self); + g_clear_signal_handler (&self->range_changed_handler, self->axis); + g_clear_object (&self->axis); } + + if (axis) + { + self->axis = g_object_ref (axis); + self->range_changed_handler = + g_signal_connect_object (axis, + "range-changed", + G_CALLBACK (sysprof_normalized_series_invalidate), + self, + G_CONNECT_SWAPPED); + } + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_AXIS]); + + sysprof_normalized_series_invalidate (self); } /**