From: Mike Brady Date: Mon, 20 Nov 2017 13:16:17 +0000 (+0000) Subject: Add previous and next controls X-Git-Tag: 3.2d13~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03321799fb7c73f40db8c6f868064d7a3eb1baa3;p=thirdparty%2Fshairport-sync.git Add previous and next controls --- diff --git a/mpris-service.c b/mpris-service.c index bed5e836..e2be908a 100644 --- a/mpris-service.c +++ b/mpris-service.c @@ -51,6 +51,20 @@ int send_simple_dacp_command(const char *command) { return reply; } +static gboolean on_handle_next(MediaPlayer2Player *skeleton, GDBusMethodInvocation *invocation, + gpointer user_data) { + send_simple_dacp_command("nextitem"); + media_player2_player_complete_next(skeleton, invocation); + return TRUE; +} + +static gboolean on_handle_previous(MediaPlayer2Player *skeleton, GDBusMethodInvocation *invocation, + gpointer user_data) { + send_simple_dacp_command("previtem"); + media_player2_player_complete_previous(skeleton, invocation); + return TRUE; +} + static gboolean on_handle_stop(MediaPlayer2Player *skeleton, GDBusMethodInvocation *invocation, gpointer user_data) { send_simple_dacp_command("stop"); @@ -106,8 +120,8 @@ static void on_mpris_name_acquired(GDBusConnection *connection, const gchar *nam media_player2_player_set_volume(mprisPlayerPlayerSkeleton, 0.5); media_player2_player_set_minimum_rate(mprisPlayerPlayerSkeleton, 1.0); media_player2_player_set_maximum_rate(mprisPlayerPlayerSkeleton, 1.0); - media_player2_player_set_can_go_next(mprisPlayerPlayerSkeleton, FALSE); - media_player2_player_set_can_go_previous(mprisPlayerPlayerSkeleton, FALSE); + media_player2_player_set_can_go_next(mprisPlayerPlayerSkeleton, TRUE); + media_player2_player_set_can_go_previous(mprisPlayerPlayerSkeleton, TRUE); media_player2_player_set_can_play(mprisPlayerPlayerSkeleton, TRUE); media_player2_player_set_can_pause(mprisPlayerPlayerSkeleton, TRUE); media_player2_player_set_can_seek(mprisPlayerPlayerSkeleton, FALSE); @@ -118,6 +132,8 @@ static void on_mpris_name_acquired(GDBusConnection *connection, const gchar *nam g_signal_connect(mprisPlayerPlayerSkeleton, "handle-play-pause", G_CALLBACK(on_handle_play_pause), NULL); g_signal_connect(mprisPlayerPlayerSkeleton, "handle-stop", G_CALLBACK(on_handle_stop), NULL); + g_signal_connect(mprisPlayerPlayerSkeleton, "handle-next", G_CALLBACK(on_handle_next), NULL); + g_signal_connect(mprisPlayerPlayerSkeleton, "handle-previous", G_CALLBACK(on_handle_previous), NULL); debug(1, "Shairport Sync D-BUS service started on interface \"%s\".", name);