[grilo-plugins] dmap: add support for password-protected DAAP and DPAP shares
- From: W. Michael Petullo <wmpetullo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo-plugins] dmap: add support for password-protected DAAP and DPAP shares
- Date: Fri, 8 Nov 2019 17:58:13 +0000 (UTC)
commit df4038cd3bf55ac111b933488adf9a9b018f7b99
Author: W. Michael Petullo <mike flyn org>
Date: Fri Nov 8 12:46:01 2019 -0500
dmap: add support for password-protected DAAP and DPAP shares
Signed-off-by: W. Michael Petullo <mike flyn org>
meson.build | 2 +-
src/dmap/grl-common.c | 23 +++++++--
src/dmap/grl-common.h | 4 +-
src/dmap/grl-daap-db.c | 49 +++++++++++---------
src/dmap/grl-daap-db.h | 22 ++++-----
src/dmap/grl-daap-record-factory.c | 16 +++----
src/dmap/grl-daap-record-factory.h | 18 ++++----
src/dmap/grl-daap-record.c | 28 +++++------
src/dmap/grl-daap-record.h | 22 ++++-----
src/dmap/grl-daap.c | 95 +++++++++++++++++++++++++++-----------
src/dmap/grl-dpap-db.c | 52 ++++++++++++---------
src/dmap/grl-dpap-db.h | 22 ++++-----
src/dmap/grl-dpap-record-factory.c | 16 ++++---
src/dmap/grl-dpap-record-factory.h | 18 ++++----
src/dmap/grl-dpap-record.c | 38 +++++++--------
src/dmap/grl-dpap-record.h | 22 ++++-----
src/dmap/grl-dpap.c | 95 +++++++++++++++++++++++++++-----------
17 files changed, 323 insertions(+), 219 deletions(-)
---
diff --git a/meson.build b/meson.build
index 5efbeebc..9f88e0f5 100644
--- a/meson.build
+++ b/meson.build
@@ -62,7 +62,7 @@ gstreamer_dep = dependency('gstreamer-1.0', required: false)
gthread_dep = dependency('gthread-2.0', required: false)
json_glib_dep = dependency('json-glib-1.0', required: false)
libarchive_dep = dependency('libarchive', required: false)
-libdmapsharing_dep = dependency('libdmapsharing-3.0', version: '>= 2.9.12', required: false)
+libdmapsharing_dep = dependency('libdmapsharing-4.0', version: '>= 3.9.4', required: false)
libgdata_dep = dependency('libgdata', version: '>= 0.9.1', required: false)
libmediaart_dep = dependency('libmediaart-2.0', required: false)
libsoup_dep = dependency('libsoup-2.4', required: false)
diff --git a/src/dmap/grl-common.c b/src/dmap/grl-common.c
index fa92df9c..66d3e43a 100644
--- a/src/dmap/grl-common.c
+++ b/src/dmap/grl-common.c
@@ -36,10 +36,23 @@
#include "grl-common.h"
gchar *
-grl_dmap_build_url (DMAPMdnsBrowserService *service)
+grl_dmap_build_url (DmapMdnsService *service)
{
- return g_strdup_printf ("%s://%s:%u",
- service->service_name,
- service->host,
- service->port);
+ gchar *url = NULL;
+ gchar *service_name, *host;
+ guint port;
+
+ g_object_get(service, "service-name", &service_name,
+ "host", &host,
+ "port", &port, NULL);
+
+ url = g_strdup_printf ("%s://%s:%u",
+ service_name,
+ host,
+ port);
+
+ g_free(service_name);
+ g_free(host);
+
+ return url;
}
diff --git a/src/dmap/grl-common.h b/src/dmap/grl-common.h
index e9c83278..8e5a3a66 100644
--- a/src/dmap/grl-common.h
+++ b/src/dmap/grl-common.h
@@ -41,9 +41,9 @@ typedef struct {
typedef struct {
ResultCbAndArgs cb;
- DMAPDb *db;
+ DmapDb *db;
} ResultCbAndArgsAndDb;
-gchar *grl_dmap_build_url (DMAPMdnsBrowserService *service);
+gchar *grl_dmap_build_url (DmapMdnsService *service);
#endif /* _GRL_COMMON_H_ */
diff --git a/src/dmap/grl-daap-db.c b/src/dmap/grl-daap-db.c
index 66210945..bc6a9500 100644
--- a/src/dmap/grl-daap-db.c
+++ b/src/dmap/grl-daap-db.c
@@ -66,7 +66,7 @@
/* Media ID's start at max and go down. Container ID's start at 1 and go up. */
static guint nextid = G_MAXINT; /* NOTE: this should be G_MAXUINT, but iPhoto can't handle it. */
-struct GrlDAAPDbPrivate {
+struct GrlDaapDbPrivate {
/* Contains each album container (tracked with albums hash table) */
GrlMedia *albums_container;
@@ -95,31 +95,31 @@ container_equal (gconstpointer a, gconstpointer b)
return g_str_equal (grl_media_get_id (GRL_MEDIA (a)), grl_media_get_id (GRL_MEDIA (b)));
}
-GrlDAAPDb *
+GrlDaapDb *
grl_daap_db_new (void)
{
- GrlDAAPDb *db = g_object_new (TYPE_GRL_DAAP_DB, NULL);
+ GrlDaapDb *db = g_object_new (TYPE_GRL_DAAP_DB, NULL);
return db;
}
-static DMAPRecord *
-grl_daap_db_lookup_by_id (const DMAPDb *db, guint id)
+static DmapRecord *
+grl_daap_db_lookup_by_id (const DmapDb *db, guint id)
{
g_error ("Not implemented");
return NULL;
}
static void
-grl_daap_db_foreach (const DMAPDb *db,
- GHFunc func,
- gpointer data)
+grl_daap_db_foreach (const DmapDb *db,
+ DmapIdRecordFunc func,
+ gpointer data)
{
g_error ("Not implemented");
}
static gint64
-grl_daap_db_count (const DMAPDb *db)
+grl_daap_db_count (const DmapDb *db)
{
g_error ("Not implemented");
return 0;
@@ -151,13 +151,13 @@ set_insert (GHashTable *category, const char *category_name, char *set_name, Grl
}
static guint
-grl_daap_db_add (DMAPDb *_db, DMAPRecord *_record)
+grl_daap_db_add (DmapDb *_db, DmapRecord *_record, GError **error)
{
g_assert (IS_GRL_DAAP_DB (_db));
- g_assert (IS_DAAP_RECORD (_record));
+ g_assert (IS_DMAP_AV_RECORD (_record));
- GrlDAAPDb *db = GRL_DAAP_DB (_db);
- DAAPRecord *record = DAAP_RECORD (_record);
+ GrlDaapDb *db = GRL_DAAP_DB (_db);
+ DmapAvRecord *record = DMAP_AV_RECORD (_record);
gint duration = 0;
gint32 bitrate = 0,
@@ -242,6 +242,11 @@ grl_daap_db_add (DMAPDb *_db, DMAPRecord *_record)
g_free (id_s);
g_object_unref (media);
+ g_free (album);
+ g_free (artist);
+ g_free (genre);
+ g_free (title);
+ g_free (url);
return --nextid;
}
@@ -253,7 +258,7 @@ same_media (GrlMedia *a, GrlMedia *b)
}
void
-grl_daap_db_browse (GrlDAAPDb *db,
+grl_daap_db_browse (GrlDaapDb *db,
GrlMedia *container,
GrlSource *source,
guint op_id,
@@ -312,7 +317,7 @@ done:
}
void
-grl_daap_db_search (GrlDAAPDb *db,
+grl_daap_db_search (GrlDaapDb *db,
GrlSource *source,
guint op_id,
GHRFunc predicate,
@@ -364,7 +369,7 @@ grl_daap_db_search (GrlDAAPDb *db,
static void
dmap_db_interface_init (gpointer iface, gpointer data)
{
- DMAPDbIface *daap_db = iface;
+ DmapDbInterface *daap_db = iface;
g_assert (G_TYPE_FROM_INTERFACE (daap_db) == DMAP_TYPE_DB);
@@ -374,8 +379,8 @@ dmap_db_interface_init (gpointer iface, gpointer data)
daap_db->count = grl_daap_db_count;
}
-G_DEFINE_TYPE_WITH_CODE (GrlDAAPDb, grl_daap_db, G_TYPE_OBJECT,
- G_ADD_PRIVATE (GrlDAAPDb)
+G_DEFINE_TYPE_WITH_CODE (GrlDaapDb, grl_daap_db, G_TYPE_OBJECT,
+ G_ADD_PRIVATE (GrlDaapDb)
G_IMPLEMENT_INTERFACE (DMAP_TYPE_DB, dmap_db_interface_init))
static GObject*
@@ -389,7 +394,7 @@ grl_daap_db_constructor (GType type, guint n_construct_params, GObjectConstructP
}
static void
-grl_daap_db_init (GrlDAAPDb *db)
+grl_daap_db_init (GrlDaapDb *db)
{
db->priv = grl_daap_db_get_instance_private (db);
@@ -413,9 +418,9 @@ grl_daap_db_init (GrlDAAPDb *db)
static void
grl_daap_db_finalize (GObject *object)
{
- GrlDAAPDb *db = GRL_DAAP_DB (object);
+ GrlDaapDb *db = GRL_DAAP_DB (object);
- GRL_DEBUG ("Finalizing GrlDAAPDb");
+ GRL_DEBUG ("Finalizing GrlDaapDb");
g_object_unref (db->priv->albums_container);
g_object_unref (db->priv->artists_container);
@@ -452,7 +457,7 @@ grl_daap_db_get_property (GObject *object,
static void
-grl_daap_db_class_init (GrlDAAPDbClass *klass)
+grl_daap_db_class_init (GrlDaapDbClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
diff --git a/src/dmap/grl-daap-db.h b/src/dmap/grl-daap-db.h
index f52a9b5f..63816d09 100644
--- a/src/dmap/grl-daap-db.h
+++ b/src/dmap/grl-daap-db.h
@@ -32,12 +32,12 @@ G_BEGIN_DECLS
#define GRL_DAAP_DB(o) \
(G_TYPE_CHECK_INSTANCE_CAST ((o), \
TYPE_GRL_DAAP_DB, \
- GrlDAAPDb))
+ GrlDaapDb))
#define GRL_DAAP_DB_CLASS(k) \
(G_TYPE_CHECK_CLASS_CAST((k), \
TYPE_GRL_DAAP_DB, \
- GrlDAAPDbClass))
+ GrlDaapDbClass))
#define IS_GRL_DAAP_DB(o) \
(G_TYPE_CHECK_INSTANCE_TYPE((o), \
TYPE_GRL_DAAP_DB))
@@ -48,25 +48,25 @@ G_BEGIN_DECLS
#define GRL_DAAP_DB_GET_CLASS(o) \
(G_TYPE_INSTANCE_GET_CLASS((o), \
TYPE_GRL_DAAP_DB, \
- GrlDAAPDbClass))
+ GrlDaapDbClass))
#define GRL_DAAP_DB_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o), \
TYPE_GRL_DAAP_DB, \
- GrlDAAPDbPrivate))
+ GrlDaapDbPrivate))
-typedef struct GrlDAAPDbPrivate GrlDAAPDbPrivate;
+typedef struct GrlDaapDbPrivate GrlDaapDbPrivate;
typedef struct {
GObject parent;
- GrlDAAPDbPrivate *priv;
-} GrlDAAPDb;
+ GrlDaapDbPrivate *priv;
+} GrlDaapDb;
typedef struct {
GObjectClass parent;
-} GrlDAAPDbClass;
+} GrlDaapDbClass;
-void grl_daap_db_browse (GrlDAAPDb *db,
+void grl_daap_db_browse (GrlDaapDb *db,
GrlMedia *container,
GrlSource *source,
guint op_id,
@@ -75,7 +75,7 @@ void grl_daap_db_browse (GrlDAAPDb *db,
GrlSourceResultCb func,
gpointer user_data);
-void grl_daap_db_search (GrlDAAPDb *db,
+void grl_daap_db_search (GrlDaapDb *db,
GrlSource *source,
guint op_id,
GHRFunc predicate,
@@ -83,7 +83,7 @@ void grl_daap_db_search (GrlDAAPDb *db,
GrlSourceResultCb func,
gpointer user_data);
-GrlDAAPDb *grl_daap_db_new (void);
+GrlDaapDb *grl_daap_db_new (void);
GType grl_daap_db_get_type (void);
diff --git a/src/dmap/grl-daap-record-factory.c b/src/dmap/grl-daap-record-factory.c
index e986394b..7bf5ca28 100644
--- a/src/dmap/grl-daap-record-factory.c
+++ b/src/dmap/grl-daap-record-factory.c
@@ -1,5 +1,5 @@
/*
- * DAAPRecord factory class
+ * DmapAvRecord factory class
*
* Copyright (C) 2008 W. Michael Petullo <mike flyn org>
*
@@ -21,37 +21,37 @@
#include "grl-daap-record-factory.h"
#include "grl-daap-record.h"
-DMAPRecord *
-grl_daap_record_factory_create (DMAPRecordFactory *factory, gpointer user_data)
+DmapRecord *
+grl_daap_record_factory_create (DmapRecordFactory *factory, gpointer user_data, GError **error)
{
return DMAP_RECORD (grl_daap_record_new ());
}
static void
-grl_daap_record_factory_init (GrlDAAPRecordFactory *factory)
+grl_daap_record_factory_init (GrlDaapRecordFactory *factory)
{
}
static void
-grl_daap_record_factory_class_init (GrlDAAPRecordFactoryClass *klass)
+grl_daap_record_factory_class_init (GrlDaapRecordFactoryClass *klass)
{
}
static void
grl_daap_record_factory_interface_init (gpointer iface, gpointer data)
{
- DMAPRecordFactoryIface *factory = iface;
+ DmapRecordFactoryInterface *factory = iface;
g_assert (G_TYPE_FROM_INTERFACE (factory) == DMAP_TYPE_RECORD_FACTORY);
factory->create = grl_daap_record_factory_create;
}
-G_DEFINE_TYPE_WITH_CODE (GrlDAAPRecordFactory, grl_daap_record_factory, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (GrlDaapRecordFactory, grl_daap_record_factory, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (DMAP_TYPE_RECORD_FACTORY,
grl_daap_record_factory_interface_init))
-GrlDAAPRecordFactory *
+GrlDaapRecordFactory *
grl_daap_record_factory_new (void)
{
return SIMPLE_DAAP_RECORD_FACTORY (g_object_new (TYPE_SIMPLE_DAAP_RECORD_FACTORY, NULL));
diff --git a/src/dmap/grl-daap-record-factory.h b/src/dmap/grl-daap-record-factory.h
index 514713a8..698b22c6 100644
--- a/src/dmap/grl-daap-record-factory.h
+++ b/src/dmap/grl-daap-record-factory.h
@@ -1,5 +1,5 @@
/*
- * GrlDAAPRecord factory class
+ * GrlDaapRecord factory class
*
* Copyright (C) 2008 W. Michael Petullo <mike flyn org>
*
@@ -31,12 +31,12 @@ G_BEGIN_DECLS
#define SIMPLE_DAAP_RECORD_FACTORY(o) \
(G_TYPE_CHECK_INSTANCE_CAST((o), \
TYPE_SIMPLE_DAAP_RECORD_FACTORY, \
- GrlDAAPRecordFactory))
+ GrlDaapRecordFactory))
#define SIMPLE_DAAP_RECORD_FACTORY_CLASS(k) \
(G_TYPE_CHECK_CLASS_CAST((k), \
TYPE_SIMPLE_DAAP_RECORD_FACTORY, \
- GrlDAAPRecordFactoryClass))
+ GrlDaapRecordFactoryClass))
#define IS_SIMPLE_DAAP_RECORD_FACTORY(o) \
(G_TYPE_CHECK_INSTANCE_TYPE((o), \
@@ -49,23 +49,23 @@ G_BEGIN_DECLS
#define SIMPLE_DAAP_RECORD_FACTORY_GET_CLASS(o) \
(G_TYPE_INSTANCE_GET_CLASS((o), \
TYPE_SIMPLE_DAAP_RECORD_FACTORY, \
- GrlDAAPRecordFactoryClass))
+ GrlDaapRecordFactoryClass))
-typedef struct GrlDAAPRecordFactoryPrivate GrlDAAPRecordFactoryPrivate;
+typedef struct GrlDaapRecordFactoryPrivate GrlDaapRecordFactoryPrivate;
typedef struct {
GObject parent;
-} GrlDAAPRecordFactory;
+} GrlDaapRecordFactory;
typedef struct {
GObjectClass parent;
-} GrlDAAPRecordFactoryClass;
+} GrlDaapRecordFactoryClass;
GType grl_daap_record_factory_get_type (void);
-GrlDAAPRecordFactory *grl_daap_record_factory_new (void);
+GrlDaapRecordFactory *grl_daap_record_factory_new (void);
-DMAPRecord *grl_daap_record_factory_create (DMAPRecordFactory *factory, gpointer user_data);
+DmapRecord *grl_daap_record_factory_create (DmapRecordFactory *factory, gpointer user_data,
GError **error);
#endif /* __SIMPLE_DAAP_RECORD_FACTORY */
diff --git a/src/dmap/grl-daap-record.c b/src/dmap/grl-daap-record.c
index d1721d21..6edba331 100644
--- a/src/dmap/grl-daap-record.c
+++ b/src/dmap/grl-daap-record.c
@@ -22,7 +22,7 @@
#include "grl-daap-record.h"
-struct GrlDAAPRecordPrivate {
+struct GrlDaapRecordPrivate {
guint64 filesize;
char *location;
char *format;
@@ -73,7 +73,7 @@ grl_daap_record_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec)
{
- GrlDAAPRecord *record = SIMPLE_DAAP_RECORD (object);
+ GrlDaapRecord *record = SIMPLE_DAAP_RECORD (object);
switch (prop_id) {
case PROP_LOCATION:
@@ -155,7 +155,7 @@ grl_daap_record_get_property (GObject *object,
GValue *value,
GParamSpec *pspec)
{
- GrlDAAPRecord *record = SIMPLE_DAAP_RECORD (object);
+ GrlDaapRecord *record = SIMPLE_DAAP_RECORD (object);
switch (prop_id) {
case PROP_LOCATION:
@@ -223,14 +223,14 @@ grl_daap_record_get_property (GObject *object,
}
}
-GrlDAAPRecord *
+GrlDaapRecord *
grl_daap_record_new (void)
{
return SIMPLE_DAAP_RECORD (g_object_new (TYPE_SIMPLE_DAAP_RECORD, NULL));
}
GInputStream *
-grl_daap_record_read (DAAPRecord *record, GError **error)
+grl_daap_record_read (DmapAvRecord *record, GError **error)
{
GFile *file;
GInputStream *stream;
@@ -244,7 +244,7 @@ grl_daap_record_read (DAAPRecord *record, GError **error)
}
static void
-grl_daap_record_init (GrlDAAPRecord *record)
+grl_daap_record_init (GrlDaapRecord *record)
{
record->priv = SIMPLE_DAAP_RECORD_GET_PRIVATE (record);
}
@@ -252,7 +252,7 @@ grl_daap_record_init (GrlDAAPRecord *record)
static void grl_daap_record_finalize (GObject *object);
static void
-grl_daap_record_class_init (GrlDAAPRecordClass *klass)
+grl_daap_record_class_init (GrlDaapRecordClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
@@ -284,9 +284,9 @@ grl_daap_record_class_init (GrlDAAPRecordClass *klass)
static void
grl_daap_record_daap_iface_init (gpointer iface, gpointer data)
{
- DAAPRecordIface *daap_record = iface;
+ DmapAvRecordInterface *daap_record = iface;
- g_assert (G_TYPE_FROM_INTERFACE (daap_record) == DAAP_TYPE_RECORD);
+ g_assert (G_TYPE_FROM_INTERFACE (daap_record) == DMAP_TYPE_AV_RECORD);
daap_record->read = grl_daap_record_read;
}
@@ -294,21 +294,21 @@ grl_daap_record_daap_iface_init (gpointer iface, gpointer data)
static void
grl_daap_record_dmap_iface_init (gpointer iface, gpointer data)
{
- DMAPRecordIface *dmap_record = iface;
+ DmapRecordInterface *dmap_record = iface;
g_assert (G_TYPE_FROM_INTERFACE (dmap_record) == DMAP_TYPE_RECORD);
}
-G_DEFINE_TYPE_WITH_CODE (GrlDAAPRecord, grl_daap_record, G_TYPE_OBJECT,
- G_ADD_PRIVATE (GrlDAAPRecord)
- G_IMPLEMENT_INTERFACE (DAAP_TYPE_RECORD, grl_daap_record_daap_iface_init)
+G_DEFINE_TYPE_WITH_CODE (GrlDaapRecord, grl_daap_record, G_TYPE_OBJECT,
+ G_ADD_PRIVATE (GrlDaapRecord)
+ G_IMPLEMENT_INTERFACE (DMAP_TYPE_AV_RECORD, grl_daap_record_daap_iface_init)
G_IMPLEMENT_INTERFACE (DMAP_TYPE_RECORD, grl_daap_record_dmap_iface_init))
static void
grl_daap_record_finalize (GObject *object)
{
- GrlDAAPRecord *record = SIMPLE_DAAP_RECORD (object);
+ GrlDaapRecord *record = SIMPLE_DAAP_RECORD (object);
g_free (record->priv->location);
g_free (record->priv->title);
diff --git a/src/dmap/grl-daap-record.h b/src/dmap/grl-daap-record.h
index 59558c4f..ee3f0854 100644
--- a/src/dmap/grl-daap-record.h
+++ b/src/dmap/grl-daap-record.h
@@ -31,12 +31,12 @@ G_BEGIN_DECLS
#define SIMPLE_DAAP_RECORD(o) \
(G_TYPE_CHECK_INSTANCE_CAST((o), \
TYPE_SIMPLE_DAAP_RECORD, \
- GrlDAAPRecord))
+ GrlDaapRecord))
#define SIMPLE_DAAP_RECORD_CLASS(k) \
(G_TYPE_CHECK_CLASS_CAST((k), \
TYPE_SIMPLE_DAAP_RECORD, \
- GrlDAAPRecordClass))
+ GrlDaapRecordClass))
#define IS_SIMPLE_DAAP_RECORD(o) \
(G_TYPE_CHECK_INSTANCE_TYPE((o), \
@@ -49,29 +49,29 @@ G_BEGIN_DECLS
#define SIMPLE_DAAP_RECORD_GET_CLASS(o) \
(G_TYPE_INSTANCE_GET_CLASS((o), \
TYPE_SIMPLE_DAAP_RECORD, \
- GrlDAAPRecordClass))
+ GrlDaapRecordClass))
#define SIMPLE_DAAP_RECORD_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o), \
TYPE_SIMPLE_DAAP_RECORD, \
- GrlDAAPRecordPrivate))
+ GrlDaapRecordPrivate))
-typedef struct GrlDAAPRecordPrivate GrlDAAPRecordPrivate;
+typedef struct GrlDaapRecordPrivate GrlDaapRecordPrivate;
typedef struct {
GObject parent;
- GrlDAAPRecordPrivate *priv;
-} GrlDAAPRecord;
+ GrlDaapRecordPrivate *priv;
+} GrlDaapRecord;
typedef struct {
GObjectClass parent;
-} GrlDAAPRecordClass;
+} GrlDaapRecordClass;
GType grl_daap_record_get_type (void);
-GrlDAAPRecord *grl_daap_record_new (void);
-GInputStream *grl_daap_record_read (DAAPRecord *record, GError **error);
-gint grl_daap_record_get_id (DAAPRecord *record);
+GrlDaapRecord *grl_daap_record_new (void);
+GInputStream *grl_daap_record_read (DmapAvRecord *record, GError **error);
+gint grl_daap_record_get_id (DmapAvRecord *record);
#endif /* __SIMPLE_DAAP_RECORD */
diff --git a/src/dmap/grl-daap.c b/src/dmap/grl-daap.c
index 13cc7e36..2562d080 100644
--- a/src/dmap/grl-daap.c
+++ b/src/dmap/grl-daap.c
@@ -52,12 +52,12 @@ GRL_LOG_DOMAIN_STATIC(daap_log_domain);
/* --- Grilo DAAP Private --- */
struct _GrlDaapSourcePrivate {
- DMAPMdnsBrowserService *service;
+ DmapMdnsService *service;
};
/* --- Data types --- */
-static GrlDaapSource *grl_daap_source_new (DMAPMdnsBrowserService *service);
+static GrlDaapSource *grl_daap_source_new (DmapMdnsService *service);
static void grl_daap_source_finalize (GObject *object);
@@ -74,16 +74,16 @@ static void grl_daap_source_search (GrlSource *source,
GrlSourceSearchSpec *ss);
-static void grl_daap_service_added_cb (DMAPMdnsBrowser *browser,
- DMAPMdnsBrowserService *service,
+static void grl_daap_service_added_cb (DmapMdnsBrowser *browser,
+ DmapMdnsService *service,
GrlPlugin *plugin);
-static void grl_daap_service_removed_cb (DMAPMdnsBrowser *browser,
+static void grl_daap_service_removed_cb (DmapMdnsBrowser *browser,
const gchar *service_name,
GrlPlugin *plugin);
/* ===================== Globals ======================= */
-static DMAPMdnsBrowser *browser;
+static DmapMdnsBrowser *browser;
/* Maps URIs to DBs */
static GHashTable *connections;
/* Map DAAP services to Grilo media sources */
@@ -106,7 +106,7 @@ grl_daap_plugin_init (GrlRegistry *registry,
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- browser = dmap_mdns_browser_new (DMAP_MDNS_BROWSER_SERVICE_TYPE_DAAP);
+ browser = dmap_mdns_browser_new (DMAP_MDNS_SERVICE_TYPE_DAAP);
connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
sources = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
@@ -153,8 +153,10 @@ GRL_PLUGIN_DEFINE (GRL_MAJOR,
G_DEFINE_TYPE_WITH_PRIVATE (GrlDaapSource, grl_daap_source, GRL_TYPE_SOURCE)
static GrlDaapSource *
-grl_daap_source_new (DMAPMdnsBrowserService *service)
+grl_daap_source_new (DmapMdnsService *service)
{
+ gchar *name;
+ gchar *service_name;
gchar *source_desc;
gchar *source_id;
@@ -162,12 +164,16 @@ grl_daap_source_new (DMAPMdnsBrowserService *service)
GRL_DEBUG ("grl_daap_source_new");
- source_desc = g_strdup_printf (SOURCE_DESC_TEMPLATE, service->name);
- source_id = g_strdup_printf (SOURCE_ID_TEMPLATE, service->name);
+ g_object_get(service, "name", &name,
+ "service-name", &service_name,
+ NULL);
+
+ source_desc = g_strdup_printf (SOURCE_DESC_TEMPLATE, name);
+ source_id = g_strdup_printf (SOURCE_ID_TEMPLATE, name);
source = g_object_new (GRL_DAAP_SOURCE_TYPE,
"source-id", source_id,
- "source-name", service->name,
+ "source-name", service_name,
"source-desc", source_desc,
"supported-media", GRL_SUPPORTED_MEDIA_AUDIO,
NULL);
@@ -176,6 +182,8 @@ grl_daap_source_new (DMAPMdnsBrowserService *service)
g_free (source_desc);
g_free (source_id);
+ g_free (service_name);
+ g_free (name);
return source;
}
@@ -236,7 +244,7 @@ grl_daap_do_search (ResultCbAndArgsAndDb *cb_and_db)
}
static void
-browse_connected_cb (DMAPConnection *connection,
+browse_connected_cb (DmapConnection *connection,
gboolean result,
const char *reason,
ResultCbAndArgsAndDb *cb_and_db)
@@ -261,7 +269,7 @@ browse_connected_cb (DMAPConnection *connection,
}
static void
-search_connected_cb (DMAPConnection *connection,
+search_connected_cb (DmapConnection *connection,
gboolean result,
const char *reason,
ResultCbAndArgsAndDb *cb_and_db)
@@ -286,8 +294,8 @@ search_connected_cb (DMAPConnection *connection,
}
static void
-grl_daap_service_added_cb (DMAPMdnsBrowser *browser,
- DMAPMdnsBrowserService *service,
+grl_daap_service_added_cb (DmapMdnsBrowser *browser,
+ DmapMdnsService *service,
GrlPlugin *plugin)
{
GrlRegistry *registry = grl_registry_get_default ();
@@ -301,13 +309,16 @@ grl_daap_service_added_cb (DMAPMdnsBrowser *browser,
GRL_SOURCE (source),
NULL);
if (source != NULL) {
- g_hash_table_insert (sources, g_strdup (service->name), g_object_ref (source));
+ gchar *name;
+ g_object_get (service, "name", &name, NULL);
+ g_hash_table_insert (sources, g_strdup (name), g_object_ref (source));
g_object_remove_weak_pointer (G_OBJECT (source), (gpointer *) &source);
+ g_free (name);
}
}
static void
-grl_daap_service_removed_cb (DMAPMdnsBrowser *browser,
+grl_daap_service_removed_cb (DmapMdnsBrowser *browser,
const gchar *service_name,
GrlPlugin *plugin)
{
@@ -323,14 +334,14 @@ grl_daap_service_removed_cb (DMAPMdnsBrowser *browser,
}
static void
-grl_daap_connect (gchar *name, gchar *host, guint port, ResultCbAndArgsAndDb *cb_and_db,
DMAPConnectionCallback callback)
+grl_daap_connect (gchar *name, gchar *host, guint port, ResultCbAndArgsAndDb *cb_and_db, DmapConnectionFunc
callback)
{
- DMAPRecordFactory *factory;
- DMAPConnection *connection;
+ DmapRecordFactory *factory;
+ DmapConnection *connection;
factory = DMAP_RECORD_FACTORY (grl_daap_record_factory_new ());
- connection = DMAP_CONNECTION (daap_connection_new (name, host, port, DMAP_DB (cb_and_db->db), factory));
- dmap_connection_connect (connection, (DMAPConnectionCallback) callback, cb_and_db);
+ connection = DMAP_CONNECTION (dmap_av_connection_new (name, host, port, DMAP_DB (cb_and_db->db), factory));
+ dmap_connection_start (connection, (DmapConnectionFunc) callback, cb_and_db);
}
static gboolean
@@ -397,15 +408,26 @@ grl_daap_source_browse (GrlSource *source,
browse_connected_cb (NULL, TRUE, NULL, cb_and_db);
} else {
/* Connect */
+ gchar *name, *host;
+ guint port;
+
cb_and_db->db = DMAP_DB (grl_daap_db_new ());
- grl_daap_connect (dmap_source->priv->service->name,
- dmap_source->priv->service->host,
- dmap_source->priv->service->port,
+ g_object_get (dmap_source->priv->service, "name", &name,
+ "host", &host,
+ "port", &port,
+ NULL);
+
+ grl_daap_connect (name,
+ host,
+ port,
cb_and_db,
- (DMAPConnectionCallback) browse_connected_cb);
+ (DmapConnectionFunc) browse_connected_cb);
g_hash_table_insert (connections, g_strdup (url), cb_and_db->db);
+
+ g_free (name);
+ g_free (host);
}
g_free (url);
@@ -417,7 +439,7 @@ static void grl_daap_source_search (GrlSource *source,
GrlDaapSource *dmap_source = GRL_DAAP_SOURCE (source);
ResultCbAndArgsAndDb *cb_and_db;
- DMAPMdnsBrowserService *service = dmap_source->priv->service;
+ DmapMdnsService *service = dmap_source->priv->service;
gchar *url = grl_dmap_build_url (service);
cb_and_db = g_new (ResultCbAndArgsAndDb, 1);
@@ -435,9 +457,26 @@ static void grl_daap_source_search (GrlSource *source,
search_connected_cb (NULL, TRUE, NULL, cb_and_db);
} else {
/* Connect */
+ gchar *name, *host;
+ guint port;
+
cb_and_db->db = DMAP_DB (grl_daap_db_new ());
- grl_daap_connect (service->name, service->host, service->port, cb_and_db, (DMAPConnectionCallback)
search_connected_cb);
+
+ g_object_get (dmap_source->priv->service, "name", &name,
+ "host", &host,
+ "port", &port,
+ NULL);
+
+ grl_daap_connect (name,
+ host,
+ port,
+ cb_and_db,
+ (DmapConnectionFunc) search_connected_cb);
+
g_hash_table_insert (connections, g_strdup (url), cb_and_db->db);
+
+ g_free (name);
+ g_free (host);
}
g_free (url);
diff --git a/src/dmap/grl-dpap-db.c b/src/dmap/grl-dpap-db.c
index 1f2d5ca2..2c984c00 100644
--- a/src/dmap/grl-dpap-db.c
+++ b/src/dmap/grl-dpap-db.c
@@ -38,7 +38,7 @@
/* Media IDs start at max and go down. Container IDs start at 1 and go up. */
static guint nextid = G_MAXINT; /* NOTE: this should be G_MAXUINT, but iPhoto can't handle it. */
-struct GrlDPAPDbPrivate {
+struct GrlDpapDbPrivate {
/* Contains each picture container (tracked with photos hash table) */
GrlMedia *photos_container;
@@ -63,31 +63,31 @@ container_equal (gconstpointer a, gconstpointer b)
return g_str_equal (grl_media_get_id (GRL_MEDIA (a)), grl_media_get_id (GRL_MEDIA (b)));
}
-GrlDPAPDb *
+GrlDpapDb *
grl_dpap_db_new (void)
{
- GrlDPAPDb *db = g_object_new (TYPE_GRL_DPAP_DB, NULL);
+ GrlDpapDb *db = g_object_new (TYPE_GRL_DPAP_DB, NULL);
return db;
}
-static DMAPRecord *
-grl_dpap_db_lookup_by_id (const DMAPDb *db, guint id)
+static DmapRecord *
+grl_dpap_db_lookup_by_id (const DmapDb *db, guint id)
{
g_warning ("Not implemented");
return NULL;
}
static void
-grl_dpap_db_foreach (const DMAPDb *db,
- GHFunc func,
- gpointer data)
+grl_dpap_db_foreach (const DmapDb *db,
+ DmapIdRecordFunc func,
+ gpointer data)
{
g_warning ("Not implemented");
}
static gint64
-grl_dpap_db_count (const DMAPDb *db)
+grl_dpap_db_count (const DmapDb *db)
{
g_warning ("Not implemented");
return 0;
@@ -119,20 +119,20 @@ set_insert (GHashTable *category, const char *category_name, char *set_name, Grl
}
static guint
-grl_dpap_db_add (DMAPDb *_db, DMAPRecord *_record)
+grl_dpap_db_add (DmapDb *_db, DmapRecord *_record, GError **error)
{
g_assert (IS_GRL_DPAP_DB (_db));
- g_assert (IS_DPAP_RECORD (_record));
+ g_assert (IS_DMAP_IMAGE_RECORD (_record));
- GrlDPAPDb *db = GRL_DPAP_DB (_db);
- DPAPRecord *record = DPAP_RECORD (_record);
+ GrlDpapDb *db = GRL_DPAP_DB (_db);
+ DmapImageRecord *record = DMAP_IMAGE_RECORD (_record);
gint height = 0,
width = 0,
largefilesize = 0,
creationdate = 0,
rating = 0;
- GByteArray *thumbnail = NULL;
+ GArray *thumbnail = NULL;
gchar *id_s = NULL,
*filename = NULL,
*aspectratio = NULL,
@@ -188,6 +188,12 @@ grl_dpap_db_add (DMAPDb *_db, DMAPRecord *_record)
g_free (id_s);
g_object_unref (media);
+ g_free (filename);
+ g_free (aspectratio);
+ g_free (format);
+ g_free (comments);
+ g_array_unref (thumbnail);
+ g_free (url);
return --nextid;
}
@@ -199,7 +205,7 @@ same_media (GrlMedia *a, GrlMedia *b)
}
void
-grl_dpap_db_browse (GrlDPAPDb *db,
+grl_dpap_db_browse (GrlDpapDb *db,
GrlMedia *container,
GrlSource *source,
guint op_id,
@@ -251,7 +257,7 @@ done:
}
void
-grl_dpap_db_search (GrlDPAPDb *db,
+grl_dpap_db_search (GrlDpapDb *db,
GrlSource *source,
guint op_id,
GHRFunc predicate,
@@ -303,7 +309,7 @@ grl_dpap_db_search (GrlDPAPDb *db,
static void
dmap_db_interface_init (gpointer iface, gpointer data)
{
- DMAPDbIface *dpap_db = iface;
+ DmapDbInterface *dpap_db = iface;
g_assert (G_TYPE_FROM_INTERFACE (dpap_db) == DMAP_TYPE_DB);
@@ -313,8 +319,8 @@ dmap_db_interface_init (gpointer iface, gpointer data)
dpap_db->count = grl_dpap_db_count;
}
-G_DEFINE_TYPE_WITH_CODE (GrlDPAPDb, grl_dpap_db, G_TYPE_OBJECT,
- G_ADD_PRIVATE (GrlDPAPDb)
+G_DEFINE_TYPE_WITH_CODE (GrlDpapDb, grl_dpap_db, G_TYPE_OBJECT,
+ G_ADD_PRIVATE (GrlDpapDb)
G_IMPLEMENT_INTERFACE (DMAP_TYPE_DB, dmap_db_interface_init))
static GObject*
@@ -328,7 +334,7 @@ grl_dpap_db_constructor (GType type, guint n_construct_params, GObjectConstructP
}
static void
-grl_dpap_db_init (GrlDPAPDb *db)
+grl_dpap_db_init (GrlDpapDb *db)
{
db->priv = grl_dpap_db_get_instance_private (db);
@@ -346,9 +352,9 @@ grl_dpap_db_init (GrlDPAPDb *db)
static void
grl_dpap_db_finalize (GObject *object)
{
- GrlDPAPDb *db = GRL_DPAP_DB (object);
+ GrlDpapDb *db = GRL_DPAP_DB (object);
- GRL_DEBUG ("Finalizing GrlDPAPDb");
+ GRL_DEBUG ("Finalizing GrlDpapDb");
g_object_unref (db->priv->photos_container);
@@ -356,7 +362,7 @@ grl_dpap_db_finalize (GObject *object)
}
static void
-grl_dpap_db_class_init (GrlDPAPDbClass *klass)
+grl_dpap_db_class_init (GrlDpapDbClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
diff --git a/src/dmap/grl-dpap-db.h b/src/dmap/grl-dpap-db.h
index 4c17d1a3..14bb4470 100644
--- a/src/dmap/grl-dpap-db.h
+++ b/src/dmap/grl-dpap-db.h
@@ -32,12 +32,12 @@ G_BEGIN_DECLS
#define GRL_DPAP_DB(o) \
(G_TYPE_CHECK_INSTANCE_CAST ((o), \
TYPE_GRL_DPAP_DB, \
- GrlDPAPDb))
+ GrlDpapDb))
#define GRL_DPAP_DB_CLASS(k) \
(G_TYPE_CHECK_CLASS_CAST((k), \
TYPE_GRL_DPAP_DB, \
- GrlDPAPDbClass))
+ GrlDpapDbClass))
#define IS_GRL_DPAP_DB(o) \
(G_TYPE_CHECK_INSTANCE_TYPE((o), \
TYPE_GRL_DPAP_DB))
@@ -48,26 +48,26 @@ G_BEGIN_DECLS
#define GRL_DPAP_DB_GET_CLASS(o) \
(G_TYPE_INSTANCE_GET_CLASS((o), \
TYPE_GRL_DPAP_DB, \
- GrlDPAPDbClass))
+ GrlDpapDbClass))
#define GRL_DPAP_DB_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o), \
TYPE_GRL_DPAP_DB, \
- GrlDPAPDbPrivate))
+ GrlDpapDbPrivate))
-typedef struct GrlDPAPDbPrivate GrlDPAPDbPrivate;
+typedef struct GrlDpapDbPrivate GrlDpapDbPrivate;
typedef struct {
GObject parent;
- GrlDPAPDbPrivate *priv;
-} GrlDPAPDb;
+ GrlDpapDbPrivate *priv;
+} GrlDpapDb;
typedef struct {
GObjectClass parent;
-} GrlDPAPDbClass;
+} GrlDpapDbClass;
-GrlDPAPDb *grl_dpap_db_new (void);
-void grl_dpap_db_browse (GrlDPAPDb *_db,
+GrlDpapDb *grl_dpap_db_new (void);
+void grl_dpap_db_browse (GrlDpapDb *_db,
GrlMedia *container,
GrlSource *source,
guint op_id,
@@ -75,7 +75,7 @@ void grl_dpap_db_browse (GrlDPAPDb *_db,
guint count,
GrlSourceResultCb func,
gpointer user_data);
-void grl_dpap_db_search (GrlDPAPDb *_db,
+void grl_dpap_db_search (GrlDpapDb *_db,
GrlSource *source,
guint op_id,
GHRFunc predicate,
diff --git a/src/dmap/grl-dpap-record-factory.c b/src/dmap/grl-dpap-record-factory.c
index 81743384..a275f7a8 100644
--- a/src/dmap/grl-dpap-record-factory.c
+++ b/src/dmap/grl-dpap-record-factory.c
@@ -21,37 +21,39 @@
#include "grl-dpap-record-factory.h"
#include "grl-dpap-record.h"
-DMAPRecord *
-grl_dpap_record_factory_create (DMAPRecordFactory *factory, gpointer user_data)
+DmapRecord *
+grl_dpap_record_factory_create (DmapRecordFactory *factory,
+ gpointer user_data,
+ GError **error)
{
return DMAP_RECORD (grl_dpap_record_new ());
}
static void
-grl_dpap_record_factory_init (GrlDPAPRecordFactory *factory)
+grl_dpap_record_factory_init (GrlDpapRecordFactory *factory)
{
}
static void
-grl_dpap_record_factory_class_init (GrlDPAPRecordFactoryClass *klass)
+grl_dpap_record_factory_class_init (GrlDpapRecordFactoryClass *klass)
{
}
static void
grl_dpap_record_factory_interface_init (gpointer iface, gpointer data)
{
- DMAPRecordFactoryIface *factory = iface;
+ DmapRecordFactoryInterface *factory = iface;
g_assert (G_TYPE_FROM_INTERFACE (factory) == DMAP_TYPE_RECORD_FACTORY);
factory->create = grl_dpap_record_factory_create;
}
-G_DEFINE_TYPE_WITH_CODE (GrlDPAPRecordFactory, grl_dpap_record_factory, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (GrlDpapRecordFactory, grl_dpap_record_factory, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (DMAP_TYPE_RECORD_FACTORY,
grl_dpap_record_factory_interface_init))
-GrlDPAPRecordFactory *
+GrlDpapRecordFactory *
grl_dpap_record_factory_new (void)
{
return SIMPLE_DPAP_RECORD_FACTORY (g_object_new (TYPE_SIMPLE_DPAP_RECORD_FACTORY, NULL));
diff --git a/src/dmap/grl-dpap-record-factory.h b/src/dmap/grl-dpap-record-factory.h
index c2106b16..a8c5eaf8 100644
--- a/src/dmap/grl-dpap-record-factory.h
+++ b/src/dmap/grl-dpap-record-factory.h
@@ -1,5 +1,5 @@
/*
- * GrlDPAPRecord factory class
+ * GrlDpapRecord factory class
*
* Copyright (C) 2008 W. Michael Petullo <mike flyn org>
*
@@ -31,12 +31,12 @@ G_BEGIN_DECLS
#define SIMPLE_DPAP_RECORD_FACTORY(o) \
(G_TYPE_CHECK_INSTANCE_CAST((o), \
TYPE_SIMPLE_DPAP_RECORD_FACTORY, \
- GrlDPAPRecordFactory))
+ GrlDpapRecordFactory))
#define SIMPLE_DPAP_RECORD_FACTORY_CLASS(k) \
(G_TYPE_CHECK_CLASS_CAST((k), \
TYPE_SIMPLE_DPAP_RECORD_FACTORY, \
- GrlDPAPRecordFactoryClass))
+ GrlDpapRecordFactoryClass))
#define IS_SIMPLE_DPAP_RECORD_FACTORY(o) \
(G_TYPE_CHECK_INSTANCE_TYPE((o), \
@@ -49,23 +49,23 @@ G_BEGIN_DECLS
#define SIMPLE_DPAP_RECORD_FACTORY_GET_CLASS(o) \
(G_TYPE_INSTANCE_GET_CLASS((o), \
TYPE_SIMPLE_DPAP_RECORD_FACTORY, \
- GrlDPAPRecordFactoryClass))
+ GrlDpapRecordFactoryClass))
-typedef struct GrlDPAPRecordFactoryPrivate GrlDPAPRecordFactoryPrivate;
+typedef struct GrlDpapRecordFactoryPrivate GrlDpapRecordFactoryPrivate;
typedef struct {
GObject parent;
-} GrlDPAPRecordFactory;
+} GrlDpapRecordFactory;
typedef struct {
GObjectClass parent;
-} GrlDPAPRecordFactoryClass;
+} GrlDpapRecordFactoryClass;
GType grl_dpap_record_factory_get_type (void);
-GrlDPAPRecordFactory *grl_dpap_record_factory_new (void);
+GrlDpapRecordFactory *grl_dpap_record_factory_new (void);
-DMAPRecord *grl_dpap_record_factory_create (DMAPRecordFactory *factory, gpointer user_data);
+DmapRecord *grl_dpap_record_factory_create (DmapRecordFactory *factory, gpointer user_data,
GError **error);
#endif /* __SIMPLE_DPAP_RECORD_FACTORY */
diff --git a/src/dmap/grl-dpap-record.c b/src/dmap/grl-dpap-record.c
index 6281417a..1b4e58c5 100644
--- a/src/dmap/grl-dpap-record.c
+++ b/src/dmap/grl-dpap-record.c
@@ -22,13 +22,13 @@
#include "grl-dpap-record.h"
-struct GrlDPAPRecordPrivate {
+struct GrlDpapRecordPrivate {
char *location;
gint largefilesize;
gint creationdate;
gint rating;
char *filename;
- GByteArray *thumbnail;
+ GArray *thumbnail;
char *aspectratio;
gint height;
gint width;
@@ -54,9 +54,9 @@ enum {
static void grl_dpap_record_dmap_iface_init (gpointer iface, gpointer data);
static void grl_dpap_record_dpap_iface_init (gpointer iface, gpointer data);
-G_DEFINE_TYPE_WITH_CODE (GrlDPAPRecord, grl_dpap_record, G_TYPE_OBJECT,
- G_ADD_PRIVATE (GrlDPAPRecord)
- G_IMPLEMENT_INTERFACE (DPAP_TYPE_RECORD, grl_dpap_record_dpap_iface_init)
+G_DEFINE_TYPE_WITH_CODE (GrlDpapRecord, grl_dpap_record, G_TYPE_OBJECT,
+ G_ADD_PRIVATE (GrlDpapRecord)
+ G_IMPLEMENT_INTERFACE (DMAP_TYPE_IMAGE_RECORD, grl_dpap_record_dpap_iface_init)
G_IMPLEMENT_INTERFACE (DMAP_TYPE_RECORD, grl_dpap_record_dmap_iface_init))
static void
@@ -65,7 +65,7 @@ grl_dpap_record_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec)
{
- GrlDPAPRecord *record = SIMPLE_DPAP_RECORD (object);
+ GrlDpapRecord *record = SIMPLE_DPAP_RECORD (object);
switch (prop_id) {
case PROP_LOCATION:
@@ -105,8 +105,8 @@ grl_dpap_record_set_property (GObject *object,
break;
case PROP_THUMBNAIL:
if (record->priv->thumbnail)
- g_byte_array_unref (record->priv->thumbnail);
- record->priv->thumbnail = g_byte_array_ref (g_value_get_pointer (value));
+ g_array_unref (record->priv->thumbnail);
+ record->priv->thumbnail = g_value_get_boxed (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -120,7 +120,7 @@ grl_dpap_record_get_property (GObject *object,
GValue *value,
GParamSpec *pspec)
{
- GrlDPAPRecord *record = SIMPLE_DPAP_RECORD (object);
+ GrlDpapRecord *record = SIMPLE_DPAP_RECORD (object);
switch (prop_id) {
case PROP_LOCATION:
@@ -154,7 +154,7 @@ grl_dpap_record_get_property (GObject *object,
g_value_set_static_string (value, record->priv->comments);
break;
case PROP_THUMBNAIL:
- g_value_set_pointer (value, record->priv->thumbnail);
+ g_value_set_boxed (value, record->priv->thumbnail);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -162,14 +162,14 @@ grl_dpap_record_get_property (GObject *object,
}
}
-GrlDPAPRecord *
+GrlDpapRecord *
grl_dpap_record_new (void)
{
return SIMPLE_DPAP_RECORD (g_object_new (TYPE_SIMPLE_DPAP_RECORD, NULL));
}
GInputStream *
-grl_dpap_record_read (DPAPRecord *record, GError **error)
+grl_dpap_record_read (DmapImageRecord *record, GError **error)
{
GFile *file;
GInputStream *stream;
@@ -183,7 +183,7 @@ grl_dpap_record_read (DPAPRecord *record, GError **error)
}
static void
-grl_dpap_record_init (GrlDPAPRecord *record)
+grl_dpap_record_init (GrlDpapRecord *record)
{
record->priv = grl_dpap_record_get_instance_private (record);
}
@@ -191,7 +191,7 @@ grl_dpap_record_init (GrlDPAPRecord *record)
static void grl_dpap_record_finalize (GObject *object);
static void
-grl_dpap_record_class_init (GrlDPAPRecordClass *klass)
+grl_dpap_record_class_init (GrlDpapRecordClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
@@ -215,9 +215,9 @@ grl_dpap_record_class_init (GrlDPAPRecordClass *klass)
static void
grl_dpap_record_dpap_iface_init (gpointer iface, gpointer data)
{
- DPAPRecordIface *dpap_record = iface;
+ DmapImageRecordInterface *dpap_record = iface;
- g_assert (G_TYPE_FROM_INTERFACE (dpap_record) == DPAP_TYPE_RECORD);
+ g_assert (G_TYPE_FROM_INTERFACE (dpap_record) == DMAP_TYPE_IMAGE_RECORD);
dpap_record->read = grl_dpap_record_read;
}
@@ -225,7 +225,7 @@ grl_dpap_record_dpap_iface_init (gpointer iface, gpointer data)
static void
grl_dpap_record_dmap_iface_init (gpointer iface, gpointer data)
{
- DMAPRecordIface *dmap_record = iface;
+ DmapRecordInterface *dmap_record = iface;
g_assert (G_TYPE_FROM_INTERFACE (dmap_record) == DMAP_TYPE_RECORD);
}
@@ -233,7 +233,7 @@ grl_dpap_record_dmap_iface_init (gpointer iface, gpointer data)
static void
grl_dpap_record_finalize (GObject *object)
{
- GrlDPAPRecord *record = SIMPLE_DPAP_RECORD (object);
+ GrlDpapRecord *record = SIMPLE_DPAP_RECORD (object);
g_free (record->priv->location);
g_free (record->priv->filename);
@@ -242,7 +242,7 @@ grl_dpap_record_finalize (GObject *object)
g_free (record->priv->comments);
if (record->priv->thumbnail)
- g_byte_array_unref (record->priv->thumbnail);
+ g_array_unref (record->priv->thumbnail);
G_OBJECT_CLASS (grl_dpap_record_parent_class)->finalize (object);
}
diff --git a/src/dmap/grl-dpap-record.h b/src/dmap/grl-dpap-record.h
index 4441740b..78a57bba 100644
--- a/src/dmap/grl-dpap-record.h
+++ b/src/dmap/grl-dpap-record.h
@@ -31,12 +31,12 @@ G_BEGIN_DECLS
#define SIMPLE_DPAP_RECORD(o) \
(G_TYPE_CHECK_INSTANCE_CAST((o), \
TYPE_SIMPLE_DPAP_RECORD, \
- GrlDPAPRecord))
+ GrlDpapRecord))
#define SIMPLE_DPAP_RECORD_CLASS(k) \
(G_TYPE_CHECK_CLASS_CAST((k), \
TYPE_SIMPLE_DPAP_RECORD, \
- GrlDPAPRecordClass))
+ GrlDpapRecordClass))
#define IS_SIMPLE_DPAP_RECORD(o) \
(G_TYPE_CHECK_INSTANCE_TYPE((o), \
@@ -49,29 +49,29 @@ G_BEGIN_DECLS
#define SIMPLE_DPAP_RECORD_GET_CLASS(o) \
(G_TYPE_INSTANCE_GET_CLASS((o), \
TYPE_SIMPLE_DPAP_RECORD, \
- GrlDPAPRecordClass))
+ GrlDpapRecordClass))
#define SIMPLE_DPAP_RECORD_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o), \
TYPE_SIMPLE_DPAP_RECORD, \
- GrlDPAPRecordPrivate))
+ GrlDpapRecordPrivate))
-typedef struct GrlDPAPRecordPrivate GrlDPAPRecordPrivate;
+typedef struct GrlDpapRecordPrivate GrlDpapRecordPrivate;
typedef struct {
GObject parent;
- GrlDPAPRecordPrivate *priv;
-} GrlDPAPRecord;
+ GrlDpapRecordPrivate *priv;
+} GrlDpapRecord;
typedef struct {
GObjectClass parent;
-} GrlDPAPRecordClass;
+} GrlDpapRecordClass;
GType grl_dpap_record_get_type (void);
-GrlDPAPRecord *grl_dpap_record_new (void);
-GInputStream *grl_dpap_record_read (DPAPRecord *record, GError **error);
-gint grl_dpap_record_get_id (DPAPRecord *record);
+GrlDpapRecord *grl_dpap_record_new (void);
+GInputStream *grl_dpap_record_read (DmapImageRecord *record, GError **error);
+gint grl_dpap_record_get_id (DmapImageRecord *record);
#endif /* __SIMPLE_DPAP_RECORD */
diff --git a/src/dmap/grl-dpap.c b/src/dmap/grl-dpap.c
index 744de80a..13d2323b 100644
--- a/src/dmap/grl-dpap.c
+++ b/src/dmap/grl-dpap.c
@@ -57,12 +57,12 @@ GRL_LOG_DOMAIN_STATIC(dmap_log_domain);
GrlDpapSourcePrivate))
struct _GrlDpapSourcePrivate {
- DMAPMdnsBrowserService *service;
+ DmapMdnsService *service;
};
/* --- Data types --- */
-static GrlDpapSource *grl_dpap_source_new (DMAPMdnsBrowserService *service);
+static GrlDpapSource *grl_dpap_source_new (DmapMdnsService *service);
static void grl_dpap_source_finalize (GObject *object);
@@ -79,16 +79,16 @@ static void grl_dpap_source_search (GrlSource *source,
GrlSourceSearchSpec *ss);
-static void grl_dpap_service_added_cb (DMAPMdnsBrowser *browser,
- DMAPMdnsBrowserService *service,
+static void grl_dpap_service_added_cb (DmapMdnsBrowser *browser,
+ DmapMdnsService *service,
GrlPlugin *plugin);
-static void grl_dpap_service_removed_cb (DMAPMdnsBrowser *browser,
+static void grl_dpap_service_removed_cb (DmapMdnsBrowser *browser,
const gchar *service_name,
GrlPlugin *plugin);
/* ===================== Globals ======================= */
-static DMAPMdnsBrowser *browser;
+static DmapMdnsBrowser *browser;
/* Maps URIs to DBs */
static GHashTable *connections;
/* Map DPAP services to Grilo media sources */
@@ -111,7 +111,7 @@ grl_dpap_plugin_init (GrlRegistry *registry,
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- browser = dmap_mdns_browser_new (DMAP_MDNS_BROWSER_SERVICE_TYPE_DPAP);
+ browser = dmap_mdns_browser_new (DMAP_MDNS_SERVICE_TYPE_DPAP);
connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
sources = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
@@ -158,8 +158,10 @@ GRL_PLUGIN_DEFINE (GRL_MAJOR,
G_DEFINE_TYPE_WITH_PRIVATE (GrlDpapSource, grl_dpap_source, GRL_TYPE_SOURCE)
static GrlDpapSource *
-grl_dpap_source_new (DMAPMdnsBrowserService *service)
+grl_dpap_source_new (DmapMdnsService *service)
{
+ gchar *name;
+ gchar *service_name;
gchar *source_desc;
gchar *source_id;
@@ -167,12 +169,16 @@ grl_dpap_source_new (DMAPMdnsBrowserService *service)
GRL_DEBUG ("grl_dpap_source_new");
- source_desc = g_strdup_printf (SOURCE_DESC_TEMPLATE, service->name);
- source_id = g_strdup_printf (SOURCE_ID_TEMPLATE, service->name);
+ g_object_get(service, "name", &name,
+ "service-name", &service_name,
+ NULL);
+
+ source_desc = g_strdup_printf (SOURCE_DESC_TEMPLATE, name);
+ source_id = g_strdup_printf (SOURCE_ID_TEMPLATE, name);
source = g_object_new (GRL_DPAP_SOURCE_TYPE,
"source-id", source_id,
- "source-name", service->name,
+ "source-name", service_name,
"source-desc", source_desc,
"supported-media", GRL_SUPPORTED_MEDIA_IMAGE,
NULL);
@@ -181,6 +187,8 @@ grl_dpap_source_new (DMAPMdnsBrowserService *service)
g_free (source_desc);
g_free (source_id);
+ g_free (service_name);
+ g_free (name);
return source;
}
@@ -241,7 +249,7 @@ grl_dpap_do_search (ResultCbAndArgsAndDb *cb_and_db)
}
static void
-browse_connected_cb (DMAPConnection *connection,
+browse_connected_cb (DmapConnection *connection,
gboolean result,
const char *reason,
ResultCbAndArgsAndDb *cb_and_db)
@@ -266,7 +274,7 @@ browse_connected_cb (DMAPConnection *connection,
}
static void
-search_connected_cb (DMAPConnection *connection,
+search_connected_cb (DmapConnection *connection,
gboolean result,
const char *reason,
ResultCbAndArgsAndDb *cb_and_db)
@@ -291,8 +299,8 @@ search_connected_cb (DMAPConnection *connection,
}
static void
-grl_dpap_service_added_cb (DMAPMdnsBrowser *browser,
- DMAPMdnsBrowserService *service,
+grl_dpap_service_added_cb (DmapMdnsBrowser *browser,
+ DmapMdnsService *service,
GrlPlugin *plugin)
{
GrlRegistry *registry = grl_registry_get_default ();
@@ -306,13 +314,16 @@ grl_dpap_service_added_cb (DMAPMdnsBrowser *browser,
GRL_SOURCE (source),
NULL);
if (source != NULL) {
- g_hash_table_insert (sources, g_strdup (service->name), g_object_ref (source));
+ gchar *name;
+ g_object_get(service, "name", &name, NULL);
+ g_hash_table_insert (sources, g_strdup (name), g_object_ref (source));
g_object_remove_weak_pointer (G_OBJECT (source), (gpointer *) &source);
+ g_free(name);
}
}
static void
-grl_dpap_service_removed_cb (DMAPMdnsBrowser *browser,
+grl_dpap_service_removed_cb (DmapMdnsBrowser *browser,
const gchar *service_name,
GrlPlugin *plugin)
{
@@ -328,14 +339,14 @@ grl_dpap_service_removed_cb (DMAPMdnsBrowser *browser,
}
static void
-grl_dpap_connect (gchar *name, gchar *host, guint port, ResultCbAndArgsAndDb *cb_and_db,
DMAPConnectionCallback callback)
+grl_dpap_connect (gchar *name, gchar *host, guint port, ResultCbAndArgsAndDb *cb_and_db, DmapConnectionFunc
callback)
{
- DMAPRecordFactory *factory;
- DMAPConnection *connection;
+ DmapRecordFactory *factory;
+ DmapConnection *connection;
factory = DMAP_RECORD_FACTORY (grl_dpap_record_factory_new ());
- connection = DMAP_CONNECTION (dpap_connection_new (name, host, port, DMAP_DB (cb_and_db->db), factory));
- dmap_connection_connect (connection, (DMAPConnectionCallback) callback, cb_and_db);
+ connection = DMAP_CONNECTION (dmap_image_connection_new (name, host, port, DMAP_DB (cb_and_db->db),
factory));
+ dmap_connection_start (connection, (DmapConnectionFunc) callback, cb_and_db);
}
static gboolean
@@ -396,15 +407,26 @@ grl_dpap_source_browse (GrlSource *source,
browse_connected_cb (NULL, TRUE, NULL, cb_and_db);
} else {
/* Connect */
+ gchar *name, *host;
+ guint port;
+
cb_and_db->db = DMAP_DB (grl_dpap_db_new ());
- grl_dpap_connect (dmap_source->priv->service->name,
- dmap_source->priv->service->host,
- dmap_source->priv->service->port,
+ g_object_get (dmap_source->priv->service, "name", &name,
+ "host", &host,
+ "port", &port,
+ NULL);
+
+ grl_dpap_connect (name,
+ host,
+ port,
cb_and_db,
- (DMAPConnectionCallback) browse_connected_cb);
+ (DmapConnectionFunc) browse_connected_cb);
g_hash_table_insert (connections, g_strdup (url), cb_and_db->db);
+
+ g_free (name);
+ g_free (host);
}
g_free (url);
@@ -416,7 +438,7 @@ static void grl_dpap_source_search (GrlSource *source,
GrlDpapSource *dmap_source = GRL_DPAP_SOURCE (source);
ResultCbAndArgsAndDb *cb_and_db;
- DMAPMdnsBrowserService *service = dmap_source->priv->service;
+ DmapMdnsService *service = dmap_source->priv->service;
gchar *url = grl_dmap_build_url (service);
cb_and_db = g_new (ResultCbAndArgsAndDb, 1);
@@ -434,9 +456,26 @@ static void grl_dpap_source_search (GrlSource *source,
search_connected_cb (NULL, TRUE, NULL, cb_and_db);
} else {
/* Connect */
+ gchar *name, *host;
+ guint port;
+
cb_and_db->db = DMAP_DB (grl_dpap_db_new ());
- grl_dpap_connect (service->name, service->host, service->port, cb_and_db, (DMAPConnectionCallback)
search_connected_cb);
+
+ g_object_get (dmap_source->priv->service, "name", &name,
+ "host", &host,
+ "port", &port,
+ NULL);
+
+ grl_dpap_connect (name,
+ host,
+ port,
+ cb_and_db,
+ (DmapConnectionFunc) search_connected_cb);
+
g_hash_table_insert (connections, g_strdup (url), cb_and_db->db);
+
+ g_free (name);
+ g_free (host);
}
g_free (url);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]