aboutsummaryrefslogtreecommitdiffstats
path: root/trace-view-store.h
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-12-02 21:23:17 -0500
committerSteven Rostedt <rostedt@goodmis.org>2009-12-17 21:43:47 -0500
commit064e10948d40840c8521f7f94cc3275eb8075b07 (patch)
treed4029da9e8ba72e7eefdab569014a6744aabe02e /trace-view-store.h
parentac9d350897a5a6fec7b0e10cc421dc9a0aa995eb (diff)
Add paging of large data files
Loading a large (100,000+ entry) data file can take a very long time, and is quite annoying to wait for. This patch breaks the data up into pages (10,000 rows per page). Then it lets the user move about the pages with a scroll button. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'trace-view-store.h')
-rw-r--r--trace-view-store.h59
1 files changed, 41 insertions, 18 deletions
diff --git a/trace-view-store.h b/trace-view-store.h
index 8440888..9dbbb5a 100644
--- a/trace-view-store.h
+++ b/trace-view-store.h
@@ -62,7 +62,10 @@ struct _TraceViewStore
62{ 62{
63 GObject parent; /* this MUST be the first member */ 63 GObject parent; /* this MUST be the first member */
64 64
65 guint num_rows; /* number of rows that we have */ 65 guint start_row; /* row to start at */
66 guint num_rows; /* number of rows that we have showing */
67 guint visible_rows; /* number of rows defined */
68 guint actual_rows; /* size of rows array */
66 TraceViewRecord **rows; /* a dynamically allocated array of pointers to 69 TraceViewRecord **rows; /* a dynamically allocated array of pointers to
67 * the TraceViewRecord structure for each row */ 70 * the TraceViewRecord structure for each row */
68 71
@@ -78,6 +81,11 @@ struct _TraceViewStore
78 TraceViewRecord **cpu_list; 81 TraceViewRecord **cpu_list;
79 gint *cpu_items; 82 gint *cpu_items;
80 83
84 gint page;
85 gint pages;
86 gint rows_per_page;
87 GtkWidget *spin;
88
81 /* filters */ 89 /* filters */
82 gint all_events; /* set 1 when all events are enabled */ 90 gint all_events; /* set 1 when all events are enabled */
83 /* else */ 91 /* else */
@@ -91,29 +99,15 @@ struct _TraceViewStore
91 gint stamp; /* Random integer to check whether an iter belongs to our model */ 99 gint stamp; /* Random integer to check whether an iter belongs to our model */
92}; 100};
93 101
94/* helper functions */
95
96static inline gint trace_view_store_get_cpus(TraceViewStore *store)
97{
98 return store->cpus;
99}
100
101static inline guint64 *trace_view_store_get_cpu_mask(TraceViewStore *store)
102{
103 return store->cpu_mask;
104}
105
106static inline gint trace_view_store_get_all_cpus(TraceViewStore *store)
107{
108 return store->all_cpus;
109}
110
111gboolean trace_view_store_cpu_isset(TraceViewStore *store, gint cpu); 102gboolean trace_view_store_cpu_isset(TraceViewStore *store, gint cpu);
112 103
113void trace_view_store_set_all_cpus(TraceViewStore *store); 104void trace_view_store_set_all_cpus(TraceViewStore *store);
114void trace_view_store_set_cpu(TraceViewStore *store, gint cpu); 105void trace_view_store_set_cpu(TraceViewStore *store, gint cpu);
115void trace_view_store_clear_cpu(TraceViewStore *store, gint cpu); 106void trace_view_store_clear_cpu(TraceViewStore *store, gint cpu);
116 107
108void trace_view_store_set_spin_button(TraceViewStore *store, GtkWidget *spin);
109
110void trace_view_store_set_page(TraceViewStore *store, gint page);
117 111
118/* TraceViewStoreClass: more boilerplate GObject stuff */ 112/* TraceViewStoreClass: more boilerplate GObject stuff */
119 113
@@ -127,10 +121,39 @@ GType trace_view_store_get_type (void);
127 121
128TraceViewStore *trace_view_store_new (struct tracecmd_input *handle); 122TraceViewStore *trace_view_store_new (struct tracecmd_input *handle);
129 123
124#define TRACE_VIEW_DEFAULT_MAX_ROWS 10000
125
130#if 0 126#if 0
131void trace_view_store_append_record (TraceViewStore *trace_view_store, 127void trace_view_store_append_record (TraceViewStore *trace_view_store,
132 const gchar *name, 128 const gchar *name,
133 guint year_born); 129 guint year_born);
134#endif 130#endif
135 131
132
133/* helper functions */
134
135static inline gint trace_view_store_get_cpus(TraceViewStore *store)
136{
137 g_return_val_if_fail (TRACE_VIEW_IS_LIST (store), -1);
138 return store->cpus;
139}
140
141static inline guint64 *trace_view_store_get_cpu_mask(TraceViewStore *store)
142{
143 g_return_val_if_fail (TRACE_VIEW_IS_LIST (store), NULL);
144 return store->cpu_mask;
145}
146
147static inline gint trace_view_store_get_all_cpus(TraceViewStore *store)
148{
149 g_return_val_if_fail (TRACE_VIEW_IS_LIST (store), -1);
150 return store->all_cpus;
151}
152
153static inline gint trace_view_store_get_page(TraceViewStore *store)
154{
155 g_return_val_if_fail (TRACE_VIEW_IS_LIST (store), -1);
156 return store->page;
157}
158
136#endif /* _trace_view_store_h_included_ */ 159#endif /* _trace_view_store_h_included_ */