From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
To: linux-bluetooth@vger.kernel.org
Subject: [PATCH BlueZ 2/8 v2] player: Remove GetTrack and TrackChanged
Date: Fri, 4 Jan 2013 14:39:51 +0200 [thread overview]
Message-ID: <1357303197-19673-2-git-send-email-luiz.dentz@gmail.com> (raw)
In-Reply-To: <1357303197-19673-1-git-send-email-luiz.dentz@gmail.com>
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This turn track metadata into a property called "Track" of MediaPlayer1
---
profiles/audio/player.c | 81 +++++++++++++++----------------------------------
1 file changed, 25 insertions(+), 56 deletions(-)
diff --git a/profiles/audio/player.c b/profiles/audio/player.c
index 8748893..c3aaef0 100644
--- a/profiles/audio/player.c
+++ b/profiles/audio/player.c
@@ -82,33 +82,6 @@ static void append_metadata(void *key, void *value, void *user_data)
dict_append_entry(dict, key, DBUS_TYPE_STRING, &value);
}
-static DBusMessage *media_player_get_track(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- struct media_player *mp = data;
- DBusMessage *reply;
- DBusMessageIter iter, dict;
-
- reply = dbus_message_new_method_return(msg);
- if (!reply)
- return NULL;
-
- dbus_message_iter_init_append(reply, &iter);
-
- dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
- DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
- DBUS_TYPE_STRING_AS_STRING
- DBUS_TYPE_VARIANT_AS_STRING
- DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
- &dict);
-
- g_hash_table_foreach(mp->track, append_metadata, &dict);
-
- dbus_message_iter_close_container(&iter, &dict);
-
- return reply;
-}
-
static struct pending_req *find_pending(struct media_player *mp,
const char *key)
{
@@ -246,16 +219,31 @@ static void set_setting(const GDBusPropertyTable *property,
player_set_setting(mp, id, property->name, value);
}
+static gboolean get_track(const GDBusPropertyTable *property,
+ DBusMessageIter *iter, void *data)
+{
+ struct media_player *mp = data;
+ DBusMessageIter dict;
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
+ DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
+ DBUS_TYPE_STRING_AS_STRING
+ DBUS_TYPE_VARIANT_AS_STRING
+ DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
+ &dict);
+
+ g_hash_table_foreach(mp->track, append_metadata, &dict);
+
+ dbus_message_iter_close_container(iter, &dict);
+
+ return TRUE;
+}
+
static const GDBusMethodTable media_player_methods[] = {
- { GDBUS_EXPERIMENTAL_METHOD("GetTrack",
- NULL, GDBUS_ARGS({ "metadata", "a{sv}" }),
- media_player_get_track) },
{ }
};
static const GDBusSignalTable media_player_signals[] = {
- { GDBUS_EXPERIMENTAL_SIGNAL("TrackChanged",
- GDBUS_ARGS({ "metadata", "a{sv}" })) },
{ }
};
@@ -272,6 +260,8 @@ static const GDBusPropertyTable media_player_properties[] = {
G_DBUS_PROPERTY_FLAG_EXPERIMENTAL },
{ "Scan", "s", get_setting, set_setting, setting_exists,
G_DBUS_PROPERTY_FLAG_EXPERIMENTAL },
+ { "Track", "a{sv}", get_track, NULL, NULL,
+ G_DBUS_PROPERTY_FLAG_EXPERIMENTAL },
{ }
};
@@ -424,33 +414,12 @@ void media_player_set_status(struct media_player *mp, const char *status)
static gboolean process_metadata_changed(void *user_data)
{
struct media_player *mp = user_data;
- DBusMessage *signal;
- DBusMessageIter iter, dict;
mp->process_id = 0;
- signal = dbus_message_new_signal(mp->path, MEDIA_PLAYER_INTERFACE,
- "TrackChanged");
- if (signal == NULL) {
- error("Unable to allocate TrackChanged signal");
- return FALSE;
- }
-
- dbus_message_iter_init_append(signal, &iter);
-
- dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
- DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
- DBUS_TYPE_STRING_AS_STRING
- DBUS_TYPE_VARIANT_AS_STRING
- DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
- &dict);
-
-
- g_hash_table_foreach(mp->track, append_metadata, &dict);
-
- dbus_message_iter_close_container(&iter, &dict);
-
- g_dbus_send_message(btd_get_dbus_connection(), signal);
+ g_dbus_emit_property_changed(btd_get_dbus_connection(),
+ mp->path, MEDIA_PLAYER_INTERFACE,
+ "Track");
return FALSE;
}
--
1.8.0.1
next prev parent reply other threads:[~2013-01-04 12:39 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-04 12:39 [PATCH BlueZ 1/8 v2] media-api: Add playback control methods to MediaPlayer1 Luiz Augusto von Dentz
2013-01-04 12:39 ` Luiz Augusto von Dentz [this message]
2013-01-04 12:39 ` [PATCH BlueZ 3/8 v2] player: Add support for button controls Luiz Augusto von Dentz
2013-01-04 12:39 ` [PATCH BlueZ 4/8 v2] player: Fix documentation to use TrackNumber in track metadata Luiz Augusto von Dentz
2013-01-04 12:39 ` [PATCH BlueZ 5/8 v2] AVRCP: Always create a controller player even for version 1.0 Luiz Augusto von Dentz
2013-01-04 12:39 ` [PATCH BlueZ 6/8 v2] control: Mark all members of MediaControl1 as deprecated Luiz Augusto von Dentz
2013-01-04 12:39 ` [PATCH BlueZ 7/8 v2] player: Remove experimental flag from MediaPlayer1 Luiz Augusto von Dentz
2013-01-04 12:39 ` [PATCH BlueZ 8/8 v2] player: Add Device property Luiz Augusto von Dentz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1357303197-19673-2-git-send-email-luiz.dentz@gmail.com \
--to=luiz.dentz@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox