mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
libsysprof-gtk: add sysprof_session_select_time()
This allows changing the time to a specific section within the document time span. It may also update the visible time to include the selected time.
This commit is contained in:
@ -27,7 +27,7 @@ struct _SysprofSession
|
||||
GObject parent_instance;
|
||||
|
||||
SysprofDocument *document;
|
||||
GtkCustomFilter *filter;
|
||||
GtkEveryFilter *filter;
|
||||
|
||||
SysprofTimeSpan selected_time;
|
||||
SysprofTimeSpan visible_time;
|
||||
@ -155,6 +155,7 @@ sysprof_session_class_init (SysprofSessionClass *klass)
|
||||
static void
|
||||
sysprof_session_init (SysprofSession *self)
|
||||
{
|
||||
self->filter = gtk_every_filter_new ();
|
||||
}
|
||||
|
||||
SysprofSession *
|
||||
@ -213,3 +214,39 @@ sysprof_session_get_visible_time (SysprofSession *self)
|
||||
|
||||
return &self->visible_time;
|
||||
}
|
||||
|
||||
void
|
||||
sysprof_session_select_time (SysprofSession *self,
|
||||
const SysprofTimeSpan *time_span)
|
||||
{
|
||||
SysprofTimeSpan document_time_span;
|
||||
gboolean emit_for_visible = FALSE;
|
||||
|
||||
g_return_if_fail (SYSPROF_IS_SESSION (self));
|
||||
|
||||
g_print ("Select range!\n");
|
||||
|
||||
document_time_span = *sysprof_document_get_time_span (self->document);
|
||||
|
||||
if (time_span == NULL)
|
||||
time_span = &document_time_span;
|
||||
|
||||
self->selected_time = *time_span;
|
||||
|
||||
if (self->visible_time.begin_nsec > time_span->begin_nsec)
|
||||
{
|
||||
self->visible_time.begin_nsec = time_span->begin_nsec;
|
||||
emit_for_visible = TRUE;
|
||||
}
|
||||
|
||||
if (self->visible_time.end_nsec < time_span->end_nsec)
|
||||
{
|
||||
self->visible_time.end_nsec = time_span->end_nsec;
|
||||
emit_for_visible = TRUE;
|
||||
}
|
||||
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SELECTED_TIME]);
|
||||
|
||||
if (emit_for_visible)
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_VISIBLE_TIME]);
|
||||
}
|
||||
|
||||
@ -34,14 +34,17 @@ SYSPROF_AVAILABLE_IN_ALL
|
||||
G_DECLARE_FINAL_TYPE (SysprofSession, sysprof_session, SYSPROF, SESSION, GObject)
|
||||
|
||||
SYSPROF_AVAILABLE_IN_ALL
|
||||
SysprofSession *sysprof_session_new (SysprofDocument *document);
|
||||
SysprofSession *sysprof_session_new (SysprofDocument *document);
|
||||
SYSPROF_AVAILABLE_IN_ALL
|
||||
SysprofDocument *sysprof_session_get_document (SysprofSession *self);
|
||||
SysprofDocument *sysprof_session_get_document (SysprofSession *self);
|
||||
SYSPROF_AVAILABLE_IN_ALL
|
||||
GtkFilter *sysprof_session_get_filter (SysprofSession *self);
|
||||
GtkFilter *sysprof_session_get_filter (SysprofSession *self);
|
||||
SYSPROF_AVAILABLE_IN_ALL
|
||||
const SysprofTimeSpan *sysprof_session_get_selected_time (SysprofSession *self);
|
||||
const SysprofTimeSpan *sysprof_session_get_selected_time (SysprofSession *self);
|
||||
SYSPROF_AVAILABLE_IN_ALL
|
||||
const SysprofTimeSpan *sysprof_session_get_visible_time (SysprofSession *self);
|
||||
const SysprofTimeSpan *sysprof_session_get_visible_time (SysprofSession *self);
|
||||
SYSPROF_AVAILABLE_IN_ALL
|
||||
void sysprof_session_select_time (SysprofSession *self,
|
||||
const SysprofTimeSpan *time_span);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
Reference in New Issue
Block a user