mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
libsysprof-ui: reload logs when selection changes
This commit is contained in:
@ -580,11 +580,12 @@ sysprof_capture_view_load_logs_cb (GObject *object,
|
||||
GAsyncResult *result,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_autoptr(SysprofLogModel) model = NULL;
|
||||
SysprofLogsView *logs_view = (SysprofLogsView *)object;
|
||||
g_autoptr(GError) error = NULL;
|
||||
g_autoptr(GTask) task = user_data;
|
||||
LoadAsync *state;
|
||||
|
||||
g_assert (SYSPROF_IS_LOGS_VIEW (logs_view));
|
||||
g_assert (G_IS_ASYNC_RESULT (result));
|
||||
g_assert (G_IS_TASK (task));
|
||||
|
||||
@ -593,13 +594,8 @@ sysprof_capture_view_load_logs_cb (GObject *object,
|
||||
g_assert (state->reader != NULL);
|
||||
g_assert (state->n_active > 0);
|
||||
|
||||
if ((model = sysprof_log_model_new_finish (result, &error)))
|
||||
{
|
||||
SysprofCaptureView *self = g_task_get_source_object (task);
|
||||
SysprofCaptureViewPrivate *priv = sysprof_capture_view_get_instance_private (self);
|
||||
|
||||
sysprof_logs_view_set_model (priv->logs_view, model);
|
||||
}
|
||||
if (!sysprof_logs_view_load_finish (logs_view, result, &error))
|
||||
g_warning ("Failed to load logs: %s", error->message);
|
||||
|
||||
state->n_active--;
|
||||
|
||||
@ -646,11 +642,12 @@ sysprof_capture_view_load_scan_cb (GObject *object,
|
||||
if (priv->features.has_logs)
|
||||
{
|
||||
state->n_active++;
|
||||
sysprof_log_model_new_async (state->reader,
|
||||
state->selection,
|
||||
g_task_get_cancellable (task),
|
||||
sysprof_capture_view_load_logs_cb,
|
||||
g_object_ref (task));
|
||||
sysprof_logs_view_load_async (priv->logs_view,
|
||||
state->reader,
|
||||
state->selection,
|
||||
g_task_get_cancellable (task),
|
||||
sysprof_capture_view_load_logs_cb,
|
||||
g_object_ref (task));
|
||||
}
|
||||
|
||||
sysprof_visualizer_view_set_reader (priv->visualizer_view, state->reader);
|
||||
@ -765,6 +762,10 @@ sysprof_capture_view_selection_changed_cb (SysprofCaptureView *self,
|
||||
priv->reader,
|
||||
selection,
|
||||
NULL, NULL, NULL);
|
||||
sysprof_logs_view_load_async (priv->logs_view,
|
||||
priv->reader,
|
||||
selection,
|
||||
NULL, NULL, NULL);
|
||||
sysprof_marks_view_load_async (priv->marks_view,
|
||||
priv->reader,
|
||||
selection,
|
||||
|
||||
@ -49,12 +49,64 @@ sysprof_logs_view_init (SysprofLogsView *self)
|
||||
gtk_widget_init_template (GTK_WIDGET (self));
|
||||
}
|
||||
|
||||
void
|
||||
sysprof_logs_view_set_model (SysprofLogsView *self,
|
||||
SysprofLogModel *model)
|
||||
static void
|
||||
sysprof_logs_view_load_cb (GObject *object,
|
||||
GAsyncResult *result,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_return_if_fail (SYSPROF_IS_LOGS_VIEW (self));
|
||||
g_return_if_fail (!model || SYSPROF_IS_LOG_MODEL (model));
|
||||
g_autoptr(SysprofLogModel) model = NULL;
|
||||
g_autoptr(GTask) task = user_data;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
gtk_tree_view_set_model (GTK_TREE_VIEW (self->tree_view), GTK_TREE_MODEL (model));
|
||||
}
|
||||
g_assert (G_IS_ASYNC_RESULT (result));
|
||||
g_assert (G_IS_TASK (task));
|
||||
|
||||
if (!(model = sysprof_log_model_new_finish (result, &error)))
|
||||
{
|
||||
g_task_return_error (task, g_steal_pointer (&error));
|
||||
}
|
||||
else
|
||||
{
|
||||
SysprofLogsView *self;
|
||||
|
||||
self = g_task_get_source_object (task);
|
||||
gtk_tree_view_set_model (GTK_TREE_VIEW (self->tree_view), GTK_TREE_MODEL (model));
|
||||
g_task_return_boolean (task, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
sysprof_logs_view_load_async (SysprofLogsView *self,
|
||||
SysprofCaptureReader *reader,
|
||||
SysprofSelection *selection,
|
||||
GCancellable *cancellable,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_autoptr(GTask) task = NULL;
|
||||
|
||||
g_return_if_fail (SYSPROF_IS_LOGS_VIEW (self));
|
||||
g_return_if_fail (reader != NULL);
|
||||
g_return_if_fail (!selection || SYSPROF_IS_SELECTION (selection));
|
||||
g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
|
||||
|
||||
task = g_task_new (self, cancellable, callback, user_data);
|
||||
g_task_set_source_tag (task, sysprof_logs_view_load_async);
|
||||
|
||||
sysprof_log_model_new_async (reader,
|
||||
selection,
|
||||
cancellable,
|
||||
sysprof_logs_view_load_cb,
|
||||
g_steal_pointer (&task));
|
||||
}
|
||||
|
||||
gboolean
|
||||
sysprof_logs_view_load_finish (SysprofLogsView *self,
|
||||
GAsyncResult *result,
|
||||
GError **error)
|
||||
{
|
||||
g_return_val_if_fail (SYSPROF_IS_LOGS_VIEW (self), FALSE);
|
||||
g_return_val_if_fail (G_IS_TASK (result), FALSE);
|
||||
|
||||
return g_task_propagate_boolean (G_TASK (result), error);
|
||||
}
|
||||
|
||||
@ -30,7 +30,14 @@ G_BEGIN_DECLS
|
||||
|
||||
G_DECLARE_FINAL_TYPE (SysprofLogsView, sysprof_logs_view, SYSPROF, LOGS_VIEW, GtkBin)
|
||||
|
||||
void sysprof_logs_view_set_model (SysprofLogsView *self,
|
||||
SysprofLogModel *model);
|
||||
void sysprof_logs_view_load_async (SysprofLogsView *self,
|
||||
SysprofCaptureReader *reader,
|
||||
SysprofSelection *selection,
|
||||
GCancellable *cancellable,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
gboolean sysprof_logs_view_load_finish (SysprofLogsView *self,
|
||||
GAsyncResult *result,
|
||||
GError **error);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
Reference in New Issue
Block a user