aboutsummaryrefslogtreecommitdiff
path: root/lib/experiment-reader/experiment-reader.c
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-14 15:59:58 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-14 15:59:58 +0200
commitedb5fa225cbe5141bbf4af85504db990003489ea (patch)
tree1884baef56daf2009b5ae7e0e179efe4b878ef1c /lib/experiment-reader/experiment-reader.c
parentb136a28f377ea667faed44e939ad0434d419bb8a (diff)
downloadgtk-vlc-player-edb5fa225cbe5141bbf4af85504db990003489ea.tar.gz
experiment-reader: fixed detection of first contribution in topic (to get start-time of topic)
Diffstat (limited to 'lib/experiment-reader/experiment-reader.c')
-rw-r--r--lib/experiment-reader/experiment-reader.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/experiment-reader/experiment-reader.c b/lib/experiment-reader/experiment-reader.c
index e411c7d..cb2757e 100644
--- a/lib/experiment-reader/experiment-reader.c
+++ b/lib/experiment-reader/experiment-reader.c
@@ -25,6 +25,7 @@ static void experiment_reader_init(ExperimentReader *klass);
static void experiment_reader_finalize(GObject *gobject);
static gint64 get_timepoint_by_ref(xmlDoc *doc, xmlChar *ref);
+static xmlNode *get_first_element(xmlNode *children, const gchar *name);
static gboolean generic_foreach_topic(ExperimentReader *reader, xmlNodeSet *nodes,
ExperimentReaderTopicCallback callback,
gpointer data);
@@ -106,6 +107,16 @@ get_timepoint_by_ref(xmlDoc *doc, xmlChar *ref)
return (gint64)(value*1000.);
}
+static xmlNode *
+get_first_element(xmlNode *children, const gchar *name)
+{
+ for (xmlNode *cur = children; cur != NULL; cur = cur->next)
+ if (!g_strcmp0((const gchar *)cur->name, name))
+ return cur;
+
+ return NULL;
+}
+
static gboolean
generic_foreach_topic(ExperimentReader *reader, xmlNodeSet *nodes,
ExperimentReaderTopicCallback callback, gpointer data)
@@ -115,7 +126,7 @@ generic_foreach_topic(ExperimentReader *reader, xmlNodeSet *nodes,
for (int i = 0; i < nodes->nodeNr; i++) {
xmlNode *cur = nodes->nodeTab[i];
- xmlNode *contrib = cur->children;
+ xmlNode *contrib = get_first_element(cur->children, "contribution");
assert(cur != NULL && cur->type == XML_ELEMENT_NODE);
xmlChar *topic_id = xmlGetProp(cur, (const xmlChar *)"id");