mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
wip: visualizer work
This commit is contained in:
@ -85,77 +85,6 @@ sp_visualizer_view_row_removed (SpVisualizerView *self,
|
||||
g_signal_emit (self, signals [VISUALIZER_REMOVED], 0, widget);
|
||||
}
|
||||
|
||||
static void
|
||||
sp_visualizer_view_set_time_range (SpVisualizerView *self,
|
||||
gint64 begin_time,
|
||||
gint64 end_time)
|
||||
{
|
||||
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self);
|
||||
|
||||
g_assert (SP_IS_VISUALIZER_VIEW (self));
|
||||
|
||||
if (end_time < begin_time)
|
||||
{
|
||||
gint64 tmp = begin_time;
|
||||
begin_time = end_time;
|
||||
end_time = tmp;
|
||||
}
|
||||
|
||||
sp_visualizer_list_set_time_range (priv->list, begin_time, end_time);
|
||||
sp_visualizer_ticks_set_time_range (priv->ticks, begin_time, end_time);
|
||||
}
|
||||
|
||||
static void
|
||||
sp_visualizer_view_adjustment_value_changed (SpVisualizerView *self,
|
||||
GtkAdjustment *adjustment)
|
||||
{
|
||||
gint64 begin_time;
|
||||
gint64 end_time;
|
||||
|
||||
g_assert (SP_IS_VISUALIZER_VIEW (self));
|
||||
g_assert (GTK_IS_ADJUSTMENT (adjustment));
|
||||
|
||||
begin_time = gtk_adjustment_get_value (adjustment);
|
||||
end_time = begin_time + gtk_adjustment_get_page_size (adjustment);
|
||||
sp_visualizer_view_set_time_range (self, begin_time, end_time);
|
||||
}
|
||||
|
||||
static void
|
||||
sp_visualizer_view_notify_zoom (SpVisualizerView *self,
|
||||
GParamSpec *pspec,
|
||||
SpZoomManager *zoom_manager)
|
||||
{
|
||||
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self);
|
||||
gint64 begin_time = 0.0;
|
||||
gint64 end_time;
|
||||
gdouble zoom;
|
||||
gdouble page_size;
|
||||
gdouble upper;
|
||||
gdouble value;
|
||||
|
||||
g_assert (SP_IS_VISUALIZER_VIEW (self));
|
||||
g_assert (SP_IS_ZOOM_MANAGER (zoom_manager));
|
||||
|
||||
zoom = sp_zoom_manager_get_zoom (zoom_manager);
|
||||
|
||||
if (priv->reader != NULL)
|
||||
begin_time = sp_capture_reader_get_start_time (priv->reader);
|
||||
|
||||
end_time = begin_time + (NSEC_PER_SEC * 60.0 / zoom);
|
||||
|
||||
sp_visualizer_view_set_time_range (self, begin_time, end_time);
|
||||
gtk_adjustment_set_page_size (priv->scroll_adjustment, end_time - begin_time);
|
||||
|
||||
g_object_get (priv->scroll_adjustment,
|
||||
"page-size", &page_size,
|
||||
"upper", &upper,
|
||||
"value", &value,
|
||||
NULL);
|
||||
|
||||
if (value + page_size > upper)
|
||||
gtk_adjustment_set_value (priv->scroll_adjustment, upper - page_size);
|
||||
}
|
||||
|
||||
static void
|
||||
sp_visualizer_view_finalize (GObject *object)
|
||||
{
|
||||
@ -282,12 +211,6 @@ sp_visualizer_view_init (SpVisualizerView *self)
|
||||
G_CALLBACK (sp_visualizer_view_row_removed),
|
||||
self,
|
||||
G_CONNECT_SWAPPED);
|
||||
|
||||
g_signal_connect_object (priv->scroll_adjustment,
|
||||
"value-changed",
|
||||
G_CALLBACK (sp_visualizer_view_adjustment_value_changed),
|
||||
self,
|
||||
G_CONNECT_SWAPPED);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -316,28 +239,10 @@ sp_visualizer_view_set_reader (SpVisualizerView *self,
|
||||
if (priv->reader != reader)
|
||||
{
|
||||
g_clear_pointer (&priv->reader, sp_capture_reader_unref);
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_READER]);
|
||||
sp_visualizer_list_set_reader (priv->list, reader);
|
||||
if (reader != NULL)
|
||||
{
|
||||
gint64 begin_time = 0;
|
||||
gint64 end_time = 0;
|
||||
|
||||
priv->reader = sp_capture_reader_ref (reader);
|
||||
begin_time = sp_capture_reader_get_start_time (reader);
|
||||
end_time = sp_capture_reader_get_end_time (reader);
|
||||
|
||||
sp_visualizer_ticks_set_epoch (priv->ticks, begin_time);
|
||||
|
||||
g_object_set (priv->scroll_adjustment,
|
||||
"lower", (gdouble)begin_time,
|
||||
"upper", (gdouble)end_time,
|
||||
"value", (gdouble)begin_time,
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (priv->zoom_manager != NULL)
|
||||
sp_visualizer_view_notify_zoom (self, NULL, priv->zoom_manager);
|
||||
priv->reader = sp_capture_reader_ref (reader);
|
||||
sp_visualizer_list_set_reader (priv->list, reader);
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_READER]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -370,6 +275,11 @@ buildable_iface_init (GtkBuildableIface *iface)
|
||||
iface->add_child = sp_visualizer_view_add_child;
|
||||
}
|
||||
|
||||
/**
|
||||
* sp_visualizer_view_get_zoom_manager:
|
||||
*
|
||||
* Returns: (transfer none) (nullable): An #SpZoomManager or %NULL
|
||||
*/
|
||||
SpZoomManager *
|
||||
sp_visualizer_view_get_zoom_manager (SpVisualizerView *self)
|
||||
{
|
||||
@ -389,27 +299,9 @@ sp_visualizer_view_set_zoom_manager (SpVisualizerView *self,
|
||||
g_return_if_fail (SP_IS_VISUALIZER_VIEW (self));
|
||||
g_return_if_fail (!zoom_manager || SP_IS_ZOOM_MANAGER (zoom_manager));
|
||||
|
||||
if (zoom_manager != priv->zoom_manager)
|
||||
if (g_set_object (&priv->zoom_manager, zoom_manager))
|
||||
{
|
||||
if (priv->zoom_manager != NULL)
|
||||
{
|
||||
g_signal_handlers_disconnect_by_func (priv->zoom_manager,
|
||||
G_CALLBACK (sp_visualizer_view_notify_zoom),
|
||||
self);
|
||||
g_clear_object (&priv->zoom_manager);
|
||||
}
|
||||
|
||||
if (zoom_manager != NULL)
|
||||
{
|
||||
priv->zoom_manager = g_object_ref (zoom_manager);
|
||||
g_signal_connect_object (priv->zoom_manager,
|
||||
"notify::zoom",
|
||||
G_CALLBACK (sp_visualizer_view_notify_zoom),
|
||||
self,
|
||||
G_CONNECT_SWAPPED);
|
||||
sp_visualizer_view_notify_zoom (self, NULL, priv->zoom_manager);
|
||||
}
|
||||
|
||||
sp_visualizer_list_set_zoom_manager (priv->list, zoom_manager);
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ZOOM_MANAGER]);
|
||||
gtk_widget_queue_resize (GTK_WIDGET (self));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user