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");
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);
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);