mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 16:10:54 +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;
|
GObject parent_instance;
|
||||||
|
|
||||||
SysprofDocument *document;
|
SysprofDocument *document;
|
||||||
GtkCustomFilter *filter;
|
GtkEveryFilter *filter;
|
||||||
|
|
||||||
SysprofTimeSpan selected_time;
|
SysprofTimeSpan selected_time;
|
||||||
SysprofTimeSpan visible_time;
|
SysprofTimeSpan visible_time;
|
||||||
@ -155,6 +155,7 @@ sysprof_session_class_init (SysprofSessionClass *klass)
|
|||||||
static void
|
static void
|
||||||
sysprof_session_init (SysprofSession *self)
|
sysprof_session_init (SysprofSession *self)
|
||||||
{
|
{
|
||||||
|
self->filter = gtk_every_filter_new ();
|
||||||
}
|
}
|
||||||
|
|
||||||
SysprofSession *
|
SysprofSession *
|
||||||
@ -213,3 +214,39 @@ sysprof_session_get_visible_time (SysprofSession *self)
|
|||||||
|
|
||||||
return &self->visible_time;
|
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)
|
G_DECLARE_FINAL_TYPE (SysprofSession, sysprof_session, SYSPROF, SESSION, GObject)
|
||||||
|
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
SysprofSession *sysprof_session_new (SysprofDocument *document);
|
SysprofSession *sysprof_session_new (SysprofDocument *document);
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
SysprofDocument *sysprof_session_get_document (SysprofSession *self);
|
SysprofDocument *sysprof_session_get_document (SysprofSession *self);
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
GtkFilter *sysprof_session_get_filter (SysprofSession *self);
|
GtkFilter *sysprof_session_get_filter (SysprofSession *self);
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
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
|
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
|
G_END_DECLS
|
||||||
|
|||||||
Reference in New Issue
Block a user