summaryrefslogtreecommitdiff
path: root/libdleyna
diff options
context:
space:
mode:
authorLudovic Ferrandis <ludovic.ferrandis@intel.com>2013-08-27 18:01:28 +0200
committerLudovic Ferrandis <ludovic.ferrandis@intel.com>2013-08-29 10:57:47 +0200
commit731291a5bfd817c06a83a2c7d7eaca084a60cc88 (patch)
treed7762a3a6bafb44baec66ee28ec5a740f9502573 /libdleyna
parent9816f5c34bf6ca033f86e6957fb3b0ca9d0f93be (diff)
downloaddleyna-server-731291a5bfd817c06a83a2c7d7eaca084a60cc88.tar.gz
[Property] Don't return empty properties in GetAll
Remove various empty properties from Item and Container. Signed-off-by: Ludovic Ferrandis <ludovic.ferrandis@intel.com>
Diffstat (limited to 'libdleyna')
-rw-r--r--libdleyna/server/props.c43
1 files changed, 30 insertions, 13 deletions
diff --git a/libdleyna/server/props.c b/libdleyna/server/props.c
index 84e2033..c822d1d 100644
--- a/libdleyna/server/props.c
+++ b/libdleyna/server/props.c
@@ -1334,8 +1334,12 @@ static void prv_add_resources(GVariantBuilder *item_vb,
GVariant *val;
val = prv_compute_resources(object, filter_mask, all_res);
- g_variant_builder_add(item_vb, "{sv}", DLS_INTERFACE_PROP_RESOURCES,
- val);
+
+ if (g_variant_n_children(val))
+ g_variant_builder_add(item_vb, "{sv}",
+ DLS_INTERFACE_PROP_RESOURCES, val);
+ else
+ g_variant_unref(val);
}
gboolean dls_props_add_object(GVariantBuilder *item_vb,
@@ -1401,10 +1405,13 @@ gboolean dls_props_add_object(GVariantBuilder *item_vb,
if (filter_mask & DLS_UPNP_MASK_PROP_DLNA_MANAGED) {
flags = gupnp_didl_lite_object_get_dlna_managed(object);
- prv_add_variant_prop(item_vb,
- DLS_INTERFACE_PROP_DLNA_MANAGED,
- prv_props_get_dlna_info_dict(
- flags, g_prop_dlna_ocm));
+
+ if (flags != GUPNP_OCM_FLAGS_NONE)
+ prv_add_variant_prop(item_vb,
+ DLS_INTERFACE_PROP_DLNA_MANAGED,
+ prv_props_get_dlna_info_dict(
+ flags,
+ g_prop_dlna_ocm));
}
if ((filter_mask & DLS_UPNP_MASK_PROP_OBJECT_UPDATE_ID) &&
@@ -1433,6 +1440,7 @@ void dls_props_add_container(GVariantBuilder *item_vb,
gboolean searchable;
guint uint_val;
GUPnPDIDLLiteResource *res;
+ GVariant *val;
const char *str_val;
*have_child_count = FALSE;
@@ -1452,10 +1460,16 @@ void dls_props_add_container(GVariantBuilder *item_vb,
searchable);
}
- if (filter_mask & DLS_UPNP_MASK_PROP_CREATE_CLASSES)
- prv_add_variant_prop(item_vb,
- DLS_INTERFACE_PROP_CREATE_CLASSES,
- prv_compute_create_classes(object));
+ if (filter_mask & DLS_UPNP_MASK_PROP_CREATE_CLASSES) {
+ val = prv_compute_create_classes(object);
+
+ if (g_variant_n_children(val))
+ prv_add_variant_prop(item_vb,
+ DLS_INTERFACE_PROP_CREATE_CLASSES,
+ val);
+ else
+ g_variant_unref(val);
+ }
if ((filter_mask & DLS_UPNP_MASK_PROP_CONTAINER_UPDATE_ID) &&
gupnp_didl_lite_container_container_update_id_is_set(object)) {
@@ -1512,9 +1526,12 @@ void dls_props_add_item(GVariantBuilder *item_vb,
if (filter_mask & DLS_UPNP_MASK_PROP_ARTISTS) {
list = gupnp_didl_lite_object_get_artists(object);
- prv_add_variant_prop(item_vb, DLS_INTERFACE_PROP_ARTISTS,
- prv_get_artists_prop(list));
- g_list_free_full(list, g_object_unref);
+ if (list != NULL) {
+ prv_add_variant_prop(item_vb,
+ DLS_INTERFACE_PROP_ARTISTS,
+ prv_get_artists_prop(list));
+ g_list_free_full(list, g_object_unref);
+ }
}
if (filter_mask & DLS_UPNP_MASK_PROP_ALBUM)