[gnome-documents/wip/flickr: 6/12] Flickr miner: SIGSEGV and assertions solved
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-documents/wip/flickr: 6/12] Flickr miner: SIGSEGV and assertions solved
- Date: Fri, 31 May 2013 16:58:03 +0000 (UTC)
commit 38eb492140b725f29cba5f3e136e8a7bd6599fc6
Author: Marek Chalupa <mchalupa redhat com>
Date: Fri May 17 09:56:45 2013 +0200
Flickr miner: SIGSEGV and assertions solved
src/miner/gd-flickr-miner.c | 69 ++++++++++++++++++++++++++++++------------
1 files changed, 49 insertions(+), 20 deletions(-)
---
diff --git a/src/miner/gd-flickr-miner.c b/src/miner/gd-flickr-miner.c
index dd093f6..8e4e589 100644
--- a/src/miner/gd-flickr-miner.c
+++ b/src/miner/gd-flickr-miner.c
@@ -84,7 +84,10 @@ browse_container_cb (GrlSource *source,
gpointer user_data,
const GError *error);
-static void delete_entry (struct entry *ent);
+static inline struct entry *create_entry (GrlMedia *media, GrlMedia *parent,
+ GrlSource *source, struct data *data);
+
+static inline void delete_entry (struct entry *ent);
/* ==================== GOBJECT ==================== */
@@ -156,7 +159,7 @@ query_flickr (GdAccountMinerJob *job,
for (m = sources; m != NULL; m = g_list_next (m))
{
g_debug ("Got source: %s", grl_source_get_name (GRL_SOURCE (m->data)));
-
+/*
ent = g_slice_alloc (sizeof (struct entry));
ent->source = GRL_SOURCE (m->data);
@@ -165,7 +168,8 @@ query_flickr (GdAccountMinerJob *job,
ent->data = &d;
g_hash_table_add (d.entries, ent);
-
+*/
+ ent = create_entry (NULL, NULL, GRL_SOURCE (m->data), &d);
account_miner_job_browse_container (ent);
}
@@ -184,6 +188,9 @@ query_flickr (GdAccountMinerJob *job,
g_hash_table_destroy (d.entries);
+ /* we dont return object */
+ job->service = NULL;
+
g_debug ("Ending query_flickr (delete me)");
}
@@ -215,8 +222,8 @@ account_miner_job_browse_container (struct entry *entry)
g_return_if_fail (entry->parent == NULL || GRL_IS_MEDIA (entry->parent));
g_return_if_fail (GRL_IS_SOURCE (entry->source));
- g_debug ("Browsing container %s of %s (%s)", entry->media ? grl_media_get_title (entry->media) : "[root]",
- entry->parent ? grl_media_get_title (entry->parent) : "[root]",
+ g_debug ("Browsing container %s of %s (from %s)", entry->media ? grl_media_get_title (entry->media) :
"root",
+ entry->parent ? grl_media_get_title (entry->parent) : "root",
grl_source_get_name (entry->source));
/* Skip public source */
@@ -237,7 +244,8 @@ account_miner_job_browse_container (struct entry *entry)
grl_source_browse (entry->source, entry->media,
keys, ops, browse_container_cb, entry);
- g_object_unref (ops);
+ /*TODO uncomment */
+ //g_object_unref (ops);
}
static gboolean
@@ -445,16 +453,14 @@ browse_container_cb (GrlSource *source,
struct entry *parent_ent= (struct entry *) user_data;
GError *err = NULL;
- if (media != NULL)
+ if (remaining == 0)
{
- ent = g_slice_alloc (sizeof (struct entry));
-
- ent->source = source;
- ent->media = media;
- ent->parent = parent_ent->media;
- ent->data = parent_ent->data;
+ delete_entry (parent_ent);
+ }
- g_hash_table_add (ent->data->entries, ent);
+ if (media != NULL)
+ {
+ ent = create_entry (media, parent_ent->media, source, parent_ent->data);
if (GRL_IS_MEDIA_BOX (media) && source != NULL)
{
@@ -473,18 +479,17 @@ browse_container_cb (GrlSource *source,
delete_entry (ent);
}
}
-
- /* ===== clean up ===== */
- if (remaining == 0)
- {
- delete_entry (parent_ent);
- }
}
void delete_entry (struct entry *ent)
{
g_return_if_fail (ent != NULL);
+ g_debug ("Deleting entry: %s [parent: %s, source: %s]",
+ ent->media ? grl_media_get_title (ent->media) : "null",
+ ent->parent ? grl_media_get_title (ent->parent) : "null",
+ grl_source_get_name (ent->source));
+
if (ent->media != NULL)
g_object_unref (ent->media);
if (ent->parent != NULL)
@@ -502,3 +507,27 @@ void delete_entry (struct entry *ent)
g_warning ("Attempt to delete wrong entry");
}
}
+
+struct entry *create_entry (GrlMedia *media, GrlMedia *parent,
+ GrlSource *source, struct data *data)
+{
+ struct entry *ent;
+
+ g_debug ("Creating entry: %s [parent: %s, source: %s]",
+ media ? grl_media_get_title (media) : "null",
+ parent ? grl_media_get_title (parent) : "null",
+ grl_source_get_name (source));
+
+ ent = g_slice_alloc (sizeof (struct entry));
+
+ ent->source = source;
+ ent->media = media;
+ ent->parent = (parent != NULL) ?
+ g_object_ref (parent)
+ : NULL;
+ ent->data = data;
+
+ g_hash_table_add (ent->data->entries, ent);
+
+ return ent;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]