On Wed, 2005-06-29 at 20:39 +1000, Nicholas Gill (mythagel) wrote:
> Because the code works by adding items to the action and event queues, i
> can't think of a clean way to specify the event type when adding a uri.
> 
> At present i'm enumerating the directory and calling rhythmdb_entry_new
> for each one, which doesn't perform well nor act properly in the ui.
> 
> Any ideas on how to implement specifying an entry type to
> rhythmdb_add_uri? i'm happy to implement it but i don't know how i
> should go about it.

Below is something that I think should work, but I haven't actually
tried it, so it might not. In any case, it should give you an idea of
where to start.



struct RecursiveEntryCreationData
{
        char *uri;
        RhythmDB *db;
        RhythmDBEntryType type;
};


static void
add_entry_with_type (const char *uri, RecursiveEntryCreationData *data)
{
        RhythmDBEntry *entry = rhythmdb_entry_new (RHYTHMDB (data->db), 
                                            RHYTHMDB_ENTRY_TYPE_IPOD,
                                            uri);

        /* do other things with the entry */

        rhythmdb_commit (RHYTHMDB (data->db));
}

static gpointer
add_uri_with_type (struct RecursiveEntryCreationData *data)
{
        rb_uri_handle_recursively (data->uri, (GFunc)add_entry_with_type,
FALSE, data)

        g_object_unref (G_OBJECT (data->db));
        g_free (data->uri);
        g_free (data);
        return NULL;
}

void
create_entries_with_type (RhythmDB *db, const char *uri,
RhythmDBEntryType type)
{
        struct RecursiveEntryCreationData *data = g_new0 (struct
RecursiveEntryCreationData, 1);
        data->uri = g_strdup (uri);
        data->db = db;
        data->type = type;
        g_object_ref (G_OBJECT (data->db));

        rhythmdb_thread_create (db, (GThreadFunc) add_uri_with_type, data);
}


James "Doc" Livingston 
-- 
If USENET is anarchy, IRC is a paranoid schizophrenic after 6 days on
speed. -- Chris "Saundo" Saunderson in asr.

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
rhythmbox-devel mailing list
rhythmbox-devel@gnome.org
http://mail.gnome.org/mailman/listinfo/rhythmbox-devel

Reply via email to