Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
GNOME
libdmapsharing
Commits
39e64341
Commit
39e64341
authored
Mar 04, 2011
by
W. Michael Petullo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Big indent patch
Signed-off-by:
W. Michael Petullo
<
mike@flyn.org
>
parent
e8c41928
Changes
53
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
53 changed files
with
5383 additions
and
4894 deletions
+5383
-4894
libdmapsharing/daap-connection.c
libdmapsharing/daap-connection.c
+88
-86
libdmapsharing/daap-connection.h
libdmapsharing/daap-connection.h
+11
-12
libdmapsharing/daap-record.c
libdmapsharing/daap-record.c
+137
-141
libdmapsharing/daap-record.h
libdmapsharing/daap-record.h
+9
-10
libdmapsharing/daap-share.c
libdmapsharing/daap-share.c
+258
-202
libdmapsharing/daap-share.h
libdmapsharing/daap-share.h
+8
-8
libdmapsharing/dacp-connection.c
libdmapsharing/dacp-connection.c
+22
-23
libdmapsharing/dacp-connection.h
libdmapsharing/dacp-connection.h
+11
-12
libdmapsharing/dacp-player.c
libdmapsharing/dacp-player.c
+58
-56
libdmapsharing/dacp-player.h
libdmapsharing/dacp-player.h
+22
-24
libdmapsharing/dacp-share.c
libdmapsharing/dacp-share.c
+385
-324
libdmapsharing/dacp-share.h
libdmapsharing/dacp-share.h
+22
-23
libdmapsharing/dmap-connection.c
libdmapsharing/dmap-connection.c
+499
-455
libdmapsharing/dmap-connection.h
libdmapsharing/dmap-connection.h
+67
-68
libdmapsharing/dmap-container-db.c
libdmapsharing/dmap-container-db.c
+13
-13
libdmapsharing/dmap-container-db.h
libdmapsharing/dmap-container-db.h
+11
-14
libdmapsharing/dmap-container-record.c
libdmapsharing/dmap-container-record.c
+25
-22
libdmapsharing/dmap-container-record.h
libdmapsharing/dmap-container-record.h
+14
-15
libdmapsharing/dmap-db.c
libdmapsharing/dmap-db.c
+73
-52
libdmapsharing/dmap-db.h
libdmapsharing/dmap-db.h
+24
-29
libdmapsharing/dmap-gst-input-stream.c
libdmapsharing/dmap-gst-input-stream.c
+133
-129
libdmapsharing/dmap-gst-input-stream.h
libdmapsharing/dmap-gst-input-stream.h
+11
-10
libdmapsharing/dmap-gst-mp3-input-stream.c
libdmapsharing/dmap-gst-mp3-input-stream.c
+53
-35
libdmapsharing/dmap-gst-mp3-input-stream.h
libdmapsharing/dmap-gst-mp3-input-stream.h
+6
-7
libdmapsharing/dmap-gst-wav-input-stream.c
libdmapsharing/dmap-gst-wav-input-stream.c
+57
-37
libdmapsharing/dmap-gst-wav-input-stream.h
libdmapsharing/dmap-gst-wav-input-stream.h
+6
-7
libdmapsharing/dmap-md5.c
libdmapsharing/dmap-md5.c
+345
-356
libdmapsharing/dmap-md5.h
libdmapsharing/dmap-md5.h
+4
-7
libdmapsharing/dmap-mdns-avahi.c
libdmapsharing/dmap-mdns-avahi.c
+18
-18
libdmapsharing/dmap-mdns-avahi.h
libdmapsharing/dmap-mdns-avahi.h
+2
-3
libdmapsharing/dmap-mdns-browser-avahi.c
libdmapsharing/dmap-mdns-browser-avahi.c
+376
-371
libdmapsharing/dmap-mdns-browser-howl.c
libdmapsharing/dmap-mdns-browser-howl.c
+368
-377
libdmapsharing/dmap-mdns-browser.h
libdmapsharing/dmap-mdns-browser.h
+33
-34
libdmapsharing/dmap-mdns-publisher-avahi.c
libdmapsharing/dmap-mdns-publisher-avahi.c
+126
-126
libdmapsharing/dmap-mdns-publisher.h
libdmapsharing/dmap-mdns-publisher.h
+18
-24
libdmapsharing/dmap-record-factory.c
libdmapsharing/dmap-record-factory.c
+10
-8
libdmapsharing/dmap-record-factory.h
libdmapsharing/dmap-record-factory.h
+5
-5
libdmapsharing/dmap-record.c
libdmapsharing/dmap-record.c
+15
-12
libdmapsharing/dmap-record.h
libdmapsharing/dmap-record.h
+12
-10
libdmapsharing/dmap-share.c
libdmapsharing/dmap-share.c
+751
-616
libdmapsharing/dmap-share.h
libdmapsharing/dmap-share.h
+124
-136
libdmapsharing/dmap-structure.c
libdmapsharing/dmap-structure.c
+745
-575
libdmapsharing/dmap-structure.h
libdmapsharing/dmap-structure.h
+45
-50
libdmapsharing/dmap-utils.c
libdmapsharing/dmap-utils.c
+4
-8
libdmapsharing/dmap-utils.h
libdmapsharing/dmap-utils.h
+4
-12
libdmapsharing/dpap-connection.c
libdmapsharing/dpap-connection.c
+74
-73
libdmapsharing/dpap-connection.h
libdmapsharing/dpap-connection.h
+11
-12
libdmapsharing/dpap-record.c
libdmapsharing/dpap-record.c
+78
-79
libdmapsharing/dpap-record.h
libdmapsharing/dpap-record.h
+5
-6
libdmapsharing/dpap-share.c
libdmapsharing/dpap-share.c
+176
-151
libdmapsharing/dpap-share.h
libdmapsharing/dpap-share.h
+8
-8
libdmapsharing/gst-util.c
libdmapsharing/gst-util.c
+2
-2
libdmapsharing/gst-util.h
libdmapsharing/gst-util.h
+1
-1
No files found.
libdmapsharing/daap-connection.c
View file @
39e64341
...
...
@@ -31,7 +31,7 @@ struct DAAPConnectionPrivate {
*/
static
DMAPContentCode
get_protocol_version_cc
(
DMAPConnection
*
connection
)
get_protocol_version_cc
(
DMAPConnection
*
connection
)
{
return
DMAP_CC_APRO
;
}
...
...
@@ -48,7 +48,8 @@ get_query_metadata (void)
}
static
DMAPRecord
*
handle_mlcl
(
DMAPConnection
*
connection
,
DMAPRecordFactory
*
factory
,
GNode
*
n
,
int
*
item_id
)
handle_mlcl
(
DMAPConnection
*
connection
,
DMAPRecordFactory
*
factory
,
GNode
*
n
,
int
*
item_id
)
{
GNode
*
n2
;
DMAPRecord
*
record
=
NULL
;
...
...
@@ -73,53 +74,57 @@ handle_mlcl (DMAPConnection *connection, DMAPRecordFactory *factory, GNode *n, i
meta_item
=
n2
->
data
;
switch
(
meta_item
->
content_code
)
{
case
DMAP_CC_MIID
:
*
item_id
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_MINM
:
title
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASAL
:
album
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASAR
:
artist
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASFM
:
format
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASGN
:
genre
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASTM
:
length
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASTN
:
track_number
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASDN
:
disc_number
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASYR
:
year
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASSZ
:
size
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASBR
:
bitrate
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASUL
:
streamURI
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASSA
:
sort_artist
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASSU
:
sort_album
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
default:
break
;
case
DMAP_CC_MIID
:
*
item_id
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_MINM
:
title
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASAL
:
album
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASAR
:
artist
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASFM
:
format
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASGN
:
genre
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASTM
:
length
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASTN
:
track_number
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASDN
:
disc_number
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASYR
:
year
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASSZ
:
size
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASBR
:
bitrate
=
g_value_get_int
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASUL
:
streamURI
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASSA
:
sort_artist
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
case
DMAP_CC_ASSU
:
sort_album
=
g_value_get_string
(
&
(
meta_item
->
content
));
break
;
default:
break
;
}
}
...
...
@@ -128,68 +133,65 @@ handle_mlcl (DMAPConnection *connection, DMAPRecordFactory *factory, GNode *n, i
goto
_return
;
}
g_object_set
(
record
,
"year"
,
year
,
"track"
,
track_number
,
"disc"
,
disc_number
,
"bitrate"
,
bitrate
,
"duration"
,
length
/
1000
,
"filesize"
,
(
guint64
)
size
,
"format"
,
format
,
"title"
,
title
,
"songalbum"
,
album
,
"songartist"
,
artist
,
"songgenre"
,
genre
,
"sort-artist"
,
sort_artist
,
"sort-album"
,
sort_album
,
NULL
);
_return:
"year"
,
year
,
"track"
,
track_number
,
"disc"
,
disc_number
,
"bitrate"
,
bitrate
,
"duration"
,
length
/
1000
,
"filesize"
,
(
guint64
)
size
,
"format"
,
format
,
"title"
,
title
,
"songalbum"
,
album
,
"songartist"
,
artist
,
"songgenre"
,
genre
,
"sort-artist"
,
sort_artist
,
"sort-album"
,
sort_album
,
NULL
);
_return:
return
record
;
}
static
void
daap_connection_class_init
(
DAAPConnectionClass
*
klass
)
daap_connection_class_init
(
DAAPConnectionClass
*
klass
)
{
GObjectClass
*
object_class
=
G_OBJECT_CLASS
(
klass
);
DMAPConnectionClass
*
parent_class
=
DMAP_CONNECTION_CLASS
(
object_class
);
DMAPConnectionClass
*
parent_class
=
DMAP_CONNECTION_CLASS
(
object_class
);
parent_class
->
get_protocol_version_cc
=
get_protocol_version_cc
;
parent_class
->
get_query_metadata
=
get_query_metadata
;
parent_class
->
handle_mlcl
=
handle_mlcl
;
/* FIXME:
g_type_class_add_private (klass, sizeof (DAAPConnectionPrivate));
*/
*
g_type_class_add_private (klass, sizeof (DAAPConnectionPrivate));
*/
}
DAAPConnection
*
daap_connection_new
(
const
char
*
name
,
const
char
*
host
,
guint
port
,
gboolean
password_protected
,
DMAPDb
*
db
,
DMAPRecordFactory
*
factory
)
daap_connection_new
(
const
char
*
name
,
const
char
*
host
,
guint
port
,
gboolean
password_protected
,
DMAPDb
*
db
,
DMAPRecordFactory
*
factory
)
{
DAAPConnection
*
connection
;
connection
=
g_object_new
(
DAAP_TYPE_CONNECTION
,
"name"
,
name
,
"password-protected"
,
password_protected
,
"db"
,
db
,
"host"
,
host
,
"port"
,
port
,
"factory"
,
factory
,
NULL
);
"name"
,
name
,
"password-protected"
,
password_protected
,
"db"
,
db
,
"host"
,
host
,
"port"
,
port
,
"factory"
,
factory
,
NULL
);
return
connection
;
}
static
void
daap_connection_init
(
DAAPConnection
*
connection
)
daap_connection_init
(
DAAPConnection
*
connection
)
{
/* FIXME:
connection->priv = DAAP_CONNECTION_GET_PRIVATE (connection);
*/
*
connection->priv = DAAP_CONNECTION_GET_PRIVATE (connection);
*/
}
G_DEFINE_TYPE
(
DAAPConnection
,
daap_connection
,
DMAP_TYPE_CONNECTION
)
libdmapsharing/daap-connection.h
View file @
39e64341
...
...
@@ -23,7 +23,6 @@
#include <libdmapsharing/dmap-db.h>
G_BEGIN_DECLS
/**
* DAAP_TYPE_CONNECTION:
*
...
...
@@ -71,26 +70,26 @@ G_BEGIN_DECLS
* Returns: pointer to object class structure.
*/
#define DAAP_CONNECTION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), DAAP_TYPE_CONNECTION, DAAPConnectionClass))
typedef
struct
DAAPConnectionPrivate
DAAPConnectionPrivate
;
typedef
struct
{
typedef
struct
{
DMAPConnectionClass
dmap_connection_class
;
}
DAAPConnectionClass
;
typedef
struct
{
typedef
struct
{
DMAPConnection
dmap_connection_instance
;
DAAPConnectionPrivate
*
priv
;
}
DAAPConnection
;
GType
daap_connection_get_type
(
void
);
GType
daap_connection_get_type
(
void
);
DAAPConnection
*
daap_connection_new
(
const
char
*
name
,
const
char
*
host
,
guint
port
,
gboolean
password_protected
,
DMAPDb
*
db
,
DMAPRecordFactory
*
factory
);
DAAPConnection
*
daap_connection_new
(
const
char
*
name
,
const
char
*
host
,
guint
port
,
gboolean
password_protected
,
DMAPDb
*
db
,
DMAPRecordFactory
*
factory
);
G_END_DECLS
#endif
/* __DAAP_CONNECTION_H */
libdmapsharing/daap-record.c
View file @
39e64341
...
...
@@ -23,184 +23,175 @@
static
gint
daap_record_init_count
=
0
;
static
void
daap_record_init
(
DAAPRecordIface
*
iface
)
daap_record_init
(
DAAPRecordIface
*
iface
)
{
static
gboolean
is_initialized
=
FALSE
;
daap_record_init_count
++
;
daap_record_init_count
++
;
if
(
!
is_initialized
)
{
if
(
!
is_initialized
)
{
g_object_interface_install_property
(
iface
,
g_param_spec_string
(
"location"
,
"URI pointing to song data"
,
"URI pointing to song data"
,
NULL
,
G_PARAM_READWRITE
));
g_param_spec_string
(
"location"
,
"URI pointing to song data"
,
"URI pointing to song data"
,
NULL
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_string
(
"title"
,
"Song title"
,
"Song title"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_param_spec_string
(
"title"
,
"Song title"
,
"Song title"
,
"Unknown"
,
G_PARAM_READWRITE
));
/* FIXME: This is actually an enum */
g_object_interface_install_property
(
iface
,
g_param_spec_int
(
"mediakind"
,
"Media kind"
,
"Media kind"
,
0
,
G_MAXINT
,
1
,
G_PARAM_READWRITE
));
g_param_spec_int
(
"mediakind"
,
"Media kind"
,
"Media kind"
,
0
,
G_MAXINT
,
1
,
G_PARAM_READWRITE
));
/* NOTE: the name must match the part after the last dot of the
DAAP name, so daap.songalbum becomes songalbum and so on.*/
*
DAAP name, so daap.songalbum becomes songalbum and so on.
*/
g_object_interface_install_property
(
iface
,
g_param_spec_string
(
"songalbum"
,
"Album name
"
,
"Album name"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_param_spec_string
(
"songalbum
"
,
"Album name"
,
"Album name"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_int64
(
"songalbumid"
,
"Album id"
,
"Album id"
,
G_MININT64
,
G_MAXINT64
,
0
,
G_PARAM_READWRITE
));
g_param_spec_int64
(
"songalbumid"
,
"Album id"
,
"Album id"
,
G_MININT64
,
G_MAXINT64
,
0
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_string
(
"sort-album"
,
"Album sort name"
,
"Album sort name"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_param_spec_string
(
"sort-album"
,
"Album sort name"
,
"Album sort name"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_string
(
"songartist"
,
"Song artist"
,
"Song artist"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_param_spec_string
(
"songartist"
,
"Song artist"
,
"Song artist"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_string
(
"sort-artist"
,
"Song artist sort name"
,
"Song artist sort name"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_param_spec_string
(
"sort-artist"
,
"Song artist sort name"
,
"Song artist sort name"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_string
(
"songgenre"
,
"S
ong
genre"
,
"Song genre"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_param_spec_string
(
"s
onggenre"
,
"Song genre"
,
"Song genre"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_string
(
"format"
,
"Song data format"
,
"Song data format"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_param_spec_string
(
"format"
,
"Song data format"
,
"Song data format"
,
"Unknown"
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_int
(
"rating"
,
"Song rating"
,
"Song rating"
,
0
,
5
,
0
,
G_PARAM_READWRITE
));
g_param_spec_int
(
"rating"
,
"Song rating"
,
"Song rating"
,
0
,
5
,
0
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_uint64
(
"filesize"
,
"Song data size in bytes"
,
"Song data size in bytes"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_param_spec_uint64
(
"filesize"
,
"Song data size in bytes"
,
"Song data size in bytes"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_int
(
"duration"
,
"Song duration in seconds"
,
"Song duration in seconds"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_param_spec_int
(
"duration"
,
"Song duration in seconds"
,
"Song duration in seconds"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_int
(
"track"
,
"Song track number"
,
"Song track number"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_param_spec_int
(
"track"
,
"Song track number"
,
"Song track number"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_int
(
"year"
,
"Song publication year"
,
"Song publication year"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_param_spec_int
(
"year"
,
"Song publication year"
,
"Song publication year"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_int
(
"firstseen"
,
"FIXME"
,
"FIXME"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_param_spec_int
(
"firstseen"
,
"FIXME"
,
"FIXME"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_int
(
"mtime"
,
"Song modification time"
,
"Song modification time"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_param_spec_int
(
"mtime"
,
"Song modification time"
,
"Song modification time"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_int
(
"disc"
,
"Song disc number"
,
"Song disc number"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_param_spec_int
(
"disc"
,
"Song disc number"
,
"Song disc number"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_int
(
"bitrate"
,
"Song data bitrate in Kb/s"
,
"Song data bitrate in Kb/s"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_param_spec_int
(
"bitrate"
,
"Song data bitrate in Kb/s"
,
"Song data bitrate in Kb/s"
,
0
,
G_MAXINT
,
0
,
G_PARAM_READWRITE
));
g_object_interface_install_property
(
iface
,
g_param_spec_boolean
(
"has-video"
,
"Song has video component"
,
"Song has video component"
,
FALSE
,
G_PARAM_READWRITE
));
g_param_spec_boolean
(
"has-video"
,
"Song has video component"
,
"Song has video component"
,
FALSE
,
G_PARAM_READWRITE
));
is_initialized
=
TRUE
;
}
}
static
void
daap_record_finalize
(
DAAPRecordIface
*
iface
)
daap_record_finalize
(
DAAPRecordIface
*
iface
)
{
daap_record_init_count
--
;
}
...
...
@@ -210,34 +201,35 @@ GType
daap_record_get_type
(
void
)
{
static
GType
object_type
=
0
;
if
(
!
object_type
)
{
static
const
GTypeInfo
object_info
=
{
sizeof
(
DAAPRecordIface
),
sizeof
(
DAAPRecordIface
),
(
GBaseInitFunc
)
daap_record_init
,
(
GBaseFinalizeFunc
)
daap_record_finalize
};
object_type
=
g_type_register_static
(
G_TYPE_INTERFACE
,
"DAAPRecord"
,
&
object_info
,
0
);
g_type_register_static
(
G_TYPE_INTERFACE
,
"DAAPRecord"
,
&
object_info
,
0
);
}
return
object_type
;
}
gboolean
daap_record_itunes_compat
(
DAAPRecord
*
record
)
daap_record_itunes_compat
(
DAAPRecord
*
record
)
{
return
DAAP_RECORD_GET_INTERFACE
(
record
)
->
itunes_compat
(
record
);
}
GInputStream
*
daap_record_read
(
DAAPRecord
*
record
,
GError
**
err
)
daap_record_read
(
DAAPRecord
*
record
,
GError