aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarren Hart <dvhltc@us.ibm.com>2010-01-05 00:33:01 -0500
committerDarren Hart <dvhltc@us.ibm.com>2010-01-05 01:01:26 -0500
commit5415361dc5ee7da15ac8434dd5853ae45c45e471 (patch)
treecd8d5aac3222c097180e1aeccf339d0dbb2d7ebf
parentbc166bbe6c6179cbe879473a9d67c20245bbc36e (diff)
trace-view: consolidate the trace-view-store row access
Rather than provide an accessor function for each field of the row record in the trace-view-store, simply return the row record and allow the caller to access the fields directly. Signed-off-by: Darren Hart <dvhltc@us.ibm.com>
-rw-r--r--kernel-shark.c10
-rw-r--r--trace-view-store.c29
-rw-r--r--trace-view-store.h4
-rw-r--r--trace-view.c7
4 files changed, 15 insertions, 35 deletions
diff --git a/kernel-shark.c b/kernel-shark.c
index fbc5a5f..a55fc8a 100644
--- a/kernel-shark.c
+++ b/kernel-shark.c
@@ -137,6 +137,7 @@ static void row_double_clicked(GtkTreeView *treeview,
137 gpointer data) 137 gpointer data)
138{ 138{
139 struct shark_info *info = data; 139 struct shark_info *info = data;
140 TraceViewRecord *rec;
140 GtkTreeModel *model; 141 GtkTreeModel *model;
141 gchar *spath; 142 gchar *spath;
142 guint64 time; 143 guint64 time;
@@ -151,7 +152,8 @@ static void row_double_clicked(GtkTreeView *treeview,
151 row = atoi(spath); 152 row = atoi(spath);
152 g_free(spath); 153 g_free(spath);
153 154
154 time = trace_view_store_get_time_from_row(TRACE_VIEW_STORE(model), row); 155 rec = trace_view_store_get_row(TRACE_VIEW_STORE(model), row);
156 time = rec->timestamp;
155 trace_graph_select_by_time(info->ginfo, time); 157 trace_graph_select_by_time(info->ginfo, time);
156} 158}
157 159
@@ -220,7 +222,7 @@ do_tree_popup(GtkWidget *widget, GdkEventButton *event, gpointer data)
220 static GtkWidget *menu_filter_add_task; 222 static GtkWidget *menu_filter_add_task;
221 static GtkWidget *menu_filter_clear_tasks; 223 static GtkWidget *menu_filter_clear_tasks;
222 struct record *record; 224 struct record *record;
223 TraceViewStore *store; 225 TraceViewRecord *vrec;
224 GtkTreeSelection *selection; 226 GtkTreeSelection *selection;
225 GtkTreeModel *model; 227 GtkTreeModel *model;
226 GtkTreePath *path; 228 GtkTreePath *path;
@@ -281,8 +283,8 @@ do_tree_popup(GtkWidget *widget, GdkEventButton *event, gpointer data)
281 g_free(spath); 283 g_free(spath);
282 284
283 model = gtk_tree_view_get_model(GTK_TREE_VIEW(info->treeview)); 285 model = gtk_tree_view_get_model(GTK_TREE_VIEW(info->treeview));
284 store = TRACE_VIEW_STORE(model); 286 vrec = trace_view_store_get_row(TRACE_VIEW_STORE(model), row);
285 offset = trace_view_store_get_offset_from_row(store, row); 287 offset = vrec->offset;
286 288
287 record = tracecmd_read_at(info->handle, offset, &cpu); 289 record = tracecmd_read_at(info->handle, offset, &cpu);
288 290
diff --git a/trace-view-store.c b/trace-view-store.c
index 03664c8..be86662 100644
--- a/trace-view-store.c
+++ b/trace-view-store.c
@@ -1039,37 +1039,16 @@ gint trace_view_store_get_timestamp_page(TraceViewStore *store, guint64 ts)
1039 return rec->pos / store->rows_per_page + 1; 1039 return rec->pos / store->rows_per_page + 1;
1040} 1040}
1041 1041
1042guint64 trace_view_store_get_time_from_row(TraceViewStore *store, gint row)
1043{
1044 g_return_val_if_fail (TRACE_VIEW_IS_LIST (store), 0);
1045
1046 row += store->start_row;
1047
1048 g_return_val_if_fail (row >= 0 && row < store->visible_rows, 0);
1049
1050 return store->rows[row]->timestamp;
1051}
1052
1053guint64 trace_view_store_get_offset_from_row(TraceViewStore *store, gint row)
1054{
1055 g_return_val_if_fail (TRACE_VIEW_IS_LIST (store), 0);
1056
1057 row += store->start_row;
1058
1059 g_return_val_if_fail (row >= 0 && row < store->visible_rows, 0);
1060
1061 return store->rows[row]->offset;
1062}
1063
1064TraceViewRecord * 1042TraceViewRecord *
1065trace_view_store_get_row(TraceViewStore *store, gint row) 1043trace_view_store_get_row(TraceViewStore *store, gint row)
1066{ 1044{
1067 TraceViewRecord *record; 1045 TraceViewRecord *record;
1046 g_return_val_if_fail(TRACE_VIEW_IS_LIST(store), NULL);
1068 1047
1069 if (row >= store->num_rows || row < 0) 1048 row += store->start_row;
1070 return NULL; 1049 g_return_val_if_fail(row >= store->start_row && row < store->visible_rows, NULL);
1071 1050
1072 record = store->rows[store->start_row + row]; 1051 record = store->rows[row];
1073 g_assert(record != NULL); 1052 g_assert(record != NULL);
1074 g_assert((record->pos - store->start_row) == row); 1053 g_assert((record->pos - store->start_row) == row);
1075 return record; 1054 return record;
diff --git a/trace-view-store.h b/trace-view-store.h
index bfa19d9..08caf3f 100644
--- a/trace-view-store.h
+++ b/trace-view-store.h
@@ -117,10 +117,6 @@ gint trace_view_store_get_timestamp_page(TraceViewStore *store, guint64 ts);
117 117
118gint trace_view_store_get_timestamp_visible_row(TraceViewStore *store, guint64 ts); 118gint trace_view_store_get_timestamp_visible_row(TraceViewStore *store, guint64 ts);
119 119
120guint64 trace_view_store_get_time_from_row(TraceViewStore *store, gint row);
121
122guint64 trace_view_store_get_offset_from_row(TraceViewStore *store, gint row);
123
124void trace_view_store_filter_tasks(TraceViewStore *store, struct filter_task *filter); 120void trace_view_store_filter_tasks(TraceViewStore *store, struct filter_task *filter);
125 121
126TraceViewRecord *trace_view_store_get_row(TraceViewStore *store, gint row); 122TraceViewRecord *trace_view_store_get_row(TraceViewStore *store, gint row);
diff --git a/trace-view.c b/trace-view.c
index 3c023e5..899b3b3 100644
--- a/trace-view.c
+++ b/trace-view.c
@@ -271,6 +271,7 @@ void trace_view_make_selection_visible(GtkWidget *treeview)
271void trace_view_update_task_filter(GtkWidget *treeview, struct filter_task *filter) 271void trace_view_update_task_filter(GtkWidget *treeview, struct filter_task *filter)
272{ 272{
273 GtkTreeView *tree = GTK_TREE_VIEW(treeview); 273 GtkTreeView *tree = GTK_TREE_VIEW(treeview);
274 TraceViewRecord *vrec;
274 GtkTreeModel *model; 275 GtkTreeModel *model;
275 guint64 time; 276 guint64 time;
276 gint row; 277 gint row;
@@ -281,8 +282,10 @@ void trace_view_update_task_filter(GtkWidget *treeview, struct filter_task *filt
281 282
282 /* Keep track of the currently selected row */ 283 /* Keep track of the currently selected row */
283 row = trace_view_get_selected_row(treeview); 284 row = trace_view_get_selected_row(treeview);
284 if (row >= 0) 285 if (row >= 0) {
285 time = trace_view_store_get_time_from_row(TRACE_VIEW_STORE(model), row); 286 vrec = trace_view_store_get_row(TRACE_VIEW_STORE(model), row);
287 time = vrec->timestamp;
288 }
286 289
287 g_object_ref(model); 290 g_object_ref(model);
288 gtk_tree_view_set_model(tree, NULL); 291 gtk_tree_view_set_model(tree, NULL);