Clean up naming of some files, get the 'stop' command working

This commit is contained in:
Mike Brady
2017-11-19 21:16:36 +00:00
parent 67dfe591d0
commit df7c48f0f3
19 changed files with 311 additions and 7021 deletions
+2 -1
View File
@@ -29,7 +29,8 @@ shairport-sync.core
#Some dbus files that are automatically generated
/org.gnome.ShairportSync.service
/shairport-sync-dbus-interface.*
/dbus-interface.*
/mpris-interface.*
# Some eclipse project files
.cproject
+23 -17
View File
@@ -72,19 +72,19 @@ shairport_sync_SOURCES += mdns_dns_sd.c
endif
if USE_DBUS
shairport_sync_SOURCES += shairport-sync-dbus-service.c shairport-sync-dbus-interface.c
BUILT_SOURCES = shairport-sync-dbus-interface.h shairport-sync-dbus-interface.c
shairport_sync_SOURCES += dbus-service.c dbus-interface.c
BUILT_SOURCES = dbus-interface.h dbus-interface.c
# We don't want to install this header
noinst_HEADERS = $(BUILT_SOURCES)
# Correctly clean the generated headers, but keep the xml description
CLEANFILES = $(BUILT_SOURCES)
#Rule to generate the binding headers
shairport-sync-dbus-interface.h: org.gnome.ShairportSync.xml
gdbus-codegen --interface-prefix org.gnome --generate-c-code shairport-sync-dbus-interface org.gnome.ShairportSync.xml
dbus-interface.h: org.gnome.ShairportSync.xml
gdbus-codegen --interface-prefix org.gnome --generate-c-code dbus-interface org.gnome.ShairportSync.xml
shairport-sync-dbus-interface.c: org.gnome.ShairportSync.xml
gdbus-codegen --interface-prefix org.gnome --generate-c-code shairport-sync-dbus-interface org.gnome.ShairportSync.xml
dbus-interface.c: org.gnome.ShairportSync.xml
gdbus-codegen --interface-prefix org.gnome --generate-c-code dbus-interface org.gnome.ShairportSync.xml
endif
if USE_DBUS_CORE_AND_DACP
@@ -92,31 +92,37 @@ shairport_sync_SOURCES += dacp.c
endif
if USE_MPRIS
shairport_sync_SOURCES += shairport-sync-mpris-service.c shairport-sync-mpris-interface.c shairport-sync-mpris-player-interface.c
BUILT_SOURCES = shairport-sync-mpris-interface.h shairport-sync-mpris-interface.c shairport-sync-mpris-player-interface.h shairport-sync-mpris-player-interface.c
shairport_sync_SOURCES += mpris-service.c mpris-interface.c mpris-player-interface.c
BUILT_SOURCES = mpris-interface.h mpris-interface.c mpris-player-interface.h mpris-player-interface.c
# We don't want to install this header
noinst_HEADERS = $(BUILT_SOURCES)
# Correctly clean the generated headers, but keep the xml description
CLEANFILES = $(BUILT_SOURCES)
#Rule to generate the binding headers
shairport-sync-mpris-interface.h: org.mpris.MediaPlayer2.xml
gdbus-codegen --interface-prefix org.gnome --generate-c-code shairport-sync-mpris-interface org.mpris.MediaPlayer2.xml
mpris-interface.h: org.mpris.MediaPlayer2.xml
gdbus-codegen --interface-prefix org.mpris --generate-c-code mpris-interface org.mpris.MediaPlayer2.xml
shairport-sync-mpris-interface.c: org.mpris.MediaPlayer2.xml
gdbus-codegen --interface-prefix org.gnome --generate-c-code shairport-sync-mpris-interface org.mpris.MediaPlayer2.xml
mpris-interface.c: org.mpris.MediaPlayer2.xml
gdbus-codegen --interface-prefix org.mpris --generate-c-code mpris-interface org.mpris.MediaPlayer2.xml
shairport-sync-mpris-player-interface.h: org.mpris.MediaPlayer2.Player.xml
gdbus-codegen --interface-prefix org.gnome --generate-c-code shairport-sync-mpris-player-interface org.mpris.MediaPlayer2.Player.xml
mpris-player-interface.h: org.mpris.MediaPlayer2.Player.xml
gdbus-codegen --interface-prefix org.mpris --generate-c-code mpris-player-interface org.mpris.MediaPlayer2.Player.xml
shairport-sync-mpris-player-interface.c: org.mpris.MediaPlayer2.Player.xml
gdbus-codegen --interface-prefix org.gnome --generate-c-code shairport-sync-mpris-player-interface org.mpris.MediaPlayer2.Player.xml
mpris-player-interface.c: org.mpris.MediaPlayer2.Player.xml
gdbus-codegen --interface-prefix org.mpris --generate-c-code mpris-player-interface org.mpris.MediaPlayer2.Player.xml
endif
if USE_DBUS_CLIENT
#Make it, but don't install it anywhere
noinst_PROGRAMS = shairport-sync-dbus-test-client
shairport_sync_dbus_test_client_SOURCES = shairport-sync-dbus-interface.c shairport-sync-dbus-interface.h shairport-sync-dbus-test-client.c
shairport_sync_dbus_test_client_SOURCES = dbus-interface.c dbus-interface.h shairport-sync-dbus-test-client.c
endif
if USE_MPRIS_CLIENT
#Make it, but don't install it anywhere
noinst_PROGRAMS = shairport-sync-mpris-test-client
shairport_sync_mpris_test_client_SOURCES = mpris-interface.c mpris-interface.h mpris-player-interface.c mpris-player-interface.h shairport-sync-mpris-test-client.c
endif
install-exec-hook:
+9
View File
@@ -292,6 +292,15 @@ AC_ARG_WITH(mpris, [ --with-mpris = choose mpris support], [
], )
AM_CONDITIONAL([USE_MPRIS], [test "x$HAS_MPRIS" = "x1"])
# Look for mpris test client flag
AC_ARG_WITH(mpris-test-client, [ --with-mpris-test-client = compile mpris test client], [
AC_MSG_RESULT(>>Including mpris test client)
HAS_MPRIS_CLIENT=1
AC_DEFINE([HAVE_MPRIS_CLIENT], 1, [Needed by the compiler.])
PKG_CHECK_MODULES([GIO_UNIX], [gio-unix-2.0 >= 2.30.0],[CFLAGS="${GIO_UNIX_CFLAGS} ${CFLAGS}" LIBS="${GIO_UNIX_LIBS} ${LIBS}"],[AC_MSG_ERROR(mpris client support requires the glib 2.0 library -- libglib2.0-dev suggested!)])
], )
AM_CONDITIONAL([USE_MPRIS_CLIENT], [test "x$HAS_MPRIS_CLIENT" = "x1"])
AM_CONDITIONAL([USE_DBUS_CORE_AND_DACP], [test "x$HAS_MPRIS" = "x1" -o "x$HAS_DBUS" = "x1"])
if test "x${with_systemd}" = xyes ; then
@@ -11,7 +11,7 @@
#include "dacp.h"
#include "shairport-sync-dbus-service.h"
#include "dbus-service.h"
gboolean notify_loudness_filter_active_callback(ShairportSync *skeleton, gpointer user_data) {
debug(1, "\"notify_loudness_filter_active_callback\" called.");
@@ -2,7 +2,7 @@
#ifndef DBUS_SERVICE_H
#define DBUS_SERVICE_H
#include "shairport-sync-dbus-interface.h"
#include "dbus-interface.h"
ShairportSync *shairportSyncSkeleton;
+127
View File
@@ -0,0 +1,127 @@
#include <stdio.h>
#include <string.h>
#include "config.h"
#include "common.h"
#include "player.h"
#include "rtsp.h"
#include "rtp.h"
#include "dacp.h"
#include "mpris-service.h"
static gboolean on_handle_stop(MediaPlayer2Player *skeleton, GDBusMethodInvocation *invocation,
gpointer user_data) {
debug(1, "DBUS Command to Stop");
if (playing_conn) {
char server_reply[2000];
ssize_t reply_size =
dacp_send_client_command(playing_conn, "stop", server_reply, sizeof(server_reply));
if (reply_size >= 0) {
// not interested in the response.
// if (strstr(server_reply, "HTTP/1.1 204") == server_reply) {
// debug(1,"Client response is No Content");
// } else if (strstr(server_reply, "HTTP/1.1 200 OK") != server_reply) {
// debug("Client response is OK, with content");
// } else {
if (strstr(server_reply, "HTTP/1.1 204") != server_reply) {
debug(1,
"Client request to server responded with %d characters starting with this response:",
strlen(server_reply));
int i;
for (i = 0; i < reply_size; i++)
if (server_reply[i] < ' ')
debug(1, "%d %02x", i, server_reply[i]);
else
debug(1, "%d %02x '%c'", i, server_reply[i], server_reply[i]);
// sprintf((char *)message + 2 * i, "%02x", server_reply[i]);
// debug(1,"Content is \"%s\".",message);
}
} else {
debug(1, "Error at rtp_send_client_command");
}
} else {
debug(1, "no thread playing -- RemoteCommand ignored.");
}
media_player2_player_complete_stop(skeleton, invocation);
return TRUE;
}
static void on_mpris_name_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) {
const char* empty_string_array[] = {
NULL
};
debug(1,"MPRIS well-known interface name \"%s\" acquired for %s.",name,config.appName);
mprisPlayerSkeleton = media_player2_skeleton_new();
mprisPlayerPlayerSkeleton = media_player2_player_skeleton_new();
g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(mprisPlayerSkeleton), connection,
"/org/mpris/MediaPlayer2", NULL);
g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(mprisPlayerPlayerSkeleton), connection,
"/org/mpris/MediaPlayer2", NULL);
media_player2_set_desktop_entry(mprisPlayerSkeleton, "shairport-sync");
media_player2_set_identity(mprisPlayerSkeleton, "Shairport Sync");
media_player2_set_can_quit(mprisPlayerSkeleton, FALSE);
media_player2_set_can_raise(mprisPlayerSkeleton, FALSE);
media_player2_set_has_track_list(mprisPlayerSkeleton, FALSE);
media_player2_set_supported_uri_schemes (mprisPlayerSkeleton,empty_string_array);
media_player2_set_supported_mime_types (mprisPlayerSkeleton, empty_string_array);
media_player2_player_set_playback_status (mprisPlayerPlayerSkeleton, "stop");
media_player2_player_set_loop_status (mprisPlayerPlayerSkeleton, "off");
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_play (mprisPlayerPlayerSkeleton, TRUE);
media_player2_player_set_can_pause (mprisPlayerPlayerSkeleton,TRUE);
media_player2_player_set_can_seek (mprisPlayerPlayerSkeleton, FALSE);
media_player2_player_set_can_control (mprisPlayerPlayerSkeleton, TRUE);
// g_signal_connect(mprisPlayerPlayerSkeleton, "handle-play", G_CALLBACK(on_handle_play), NULL);
// g_signal_connect(mprisPlayerPlayerSkeleton, "handle-pause", G_CALLBACK(on_handle_pause), NULL);
// 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);
debug(1,"Shairport Sync D-BUS service started on interface \"%s\".",name);
debug(1,"MPRIS service started on interface \"%s\".",name);
}
static void on_mpris_name_lost_again(GDBusConnection *connection, const gchar *name, gpointer user_data) {
warn("Could not acquire an MPRIS interface.");
}
static void on_mpris_name_lost(GDBusConnection *connection, const gchar *name, gpointer user_data) {
debug(1,"Could not acquire well-known interface name \"%s\" -- will try adding the process number to the end of it.",name);
pid_t pid = getpid();
char interface_name[256] = "";
sprintf(interface_name,"org.mpris.MediaPlayer2.ShairportSync.i%d",pid);
GBusType mpris_bus_type = G_BUS_TYPE_SYSTEM;
if (config.mpris_service_bus_type==DBT_session)
mpris_bus_type = G_BUS_TYPE_SESSION;
debug(1,"Looking for well-known interface name \"%s\".",interface_name);
g_bus_own_name(mpris_bus_type, interface_name, G_BUS_NAME_OWNER_FLAGS_NONE, NULL,
on_mpris_name_acquired, on_mpris_name_lost_again, NULL, NULL);
}
int start_mpris_service() {
mprisPlayerSkeleton = NULL;
mprisPlayerPlayerSkeleton = NULL;
GBusType mpris_bus_type = G_BUS_TYPE_SYSTEM;
if (config.mpris_service_bus_type==DBT_session)
mpris_bus_type = G_BUS_TYPE_SESSION;
debug(1,"Looking for well-known name \"org.mpris.MediaPlayer2.ShairportSync\".");
g_bus_own_name(mpris_bus_type, "org.mpris.MediaPlayer2.ShairportSync", G_BUS_NAME_OWNER_FLAGS_NONE, NULL,
on_mpris_name_acquired, on_mpris_name_lost, NULL, NULL);
return 0; // this is just to quieten a compiler warning
}
+13
View File
@@ -0,0 +1,13 @@
#ifndef MPRIS_SERVICE_H
#define MPRIS_SERVICE_H
#include "mpris-interface.h"
#include "mpris-player-interface.h"
MediaPlayer2 *mprisPlayerSkeleton;
MediaPlayer2Player *mprisPlayerPlayerSkeleton;
int start_mpris_service();
#endif /* #ifndef MPRIS_SERVICE_H */
+1 -2
View File
@@ -8,8 +8,7 @@
<method name='Pause'/>
<method name='PlayPause'/>
<method name='Stop'/>
<method name='StopAfterCurrent'/> <!-- Cantata addition -->
<method name='Play'/>
<method name='Play'/>
<method name='Seek'>
<arg direction='in' name='Offset' type='x'/>
</method>
+37 -4
View File
@@ -68,14 +68,20 @@
#include <FFTConvolver/convolver.h>
#endif
#if defined(HAVE_DBUS)
#if defined(HAVE_DBUS) || defined(HAVE_MPRIS)
#include <glib.h>
#include "dacp.h"
#endif
#ifdef HAVE_DBUS
#include "dacp.h"
#include "shairport-sync-dbus-interface.h"
#include "shairport-sync-dbus-service.h"
#include "dbus-interface.h"
#include "dbus-service.h"
#endif
#ifdef HAVE_MPRIS
#include "mpris-interface.h"
#include "mpris-service.h"
#include "mpris-player-interface.h"
#endif
#include "common.h"
@@ -1038,6 +1044,14 @@ static abuf_t *buffer_get_frame(rtsp_conn_info *conn) {
send_ssnc_metadata('prsm', NULL, 0,
0); // "resume", but don't wait if the queue is locked
#endif
#if defined(HAVE_MPRIS)
if ((conn->play_state!=SST_stopped) && (conn->play_state!=SST_playing)) {
conn->play_state=SST_playing;
debug(1, "MPRIS Playing");
media_player2_player_set_playback_status (mprisPlayerPlayerSkeleton, "Playing");
}
#endif
}
}
}
@@ -2502,6 +2516,12 @@ void player_flush(int64_t timestamp, rtsp_conn_info *conn) {
#ifdef CONFIG_METADATA
send_ssnc_metadata('pfls', NULL, 0, 1);
#endif
#if defined(HAVE_MPRIS)
if ((conn->play_state!=SST_stopped) && (conn->play_state!=SST_paused))
conn->play_state=SST_paused;
debug(1, "MPRIS Paused");
media_player2_player_set_playback_status (mprisPlayerPlayerSkeleton, "Paused");
#endif
}
int player_play(rtsp_conn_info *conn) {
@@ -2527,6 +2547,12 @@ int player_play(rtsp_conn_info *conn) {
debug(1, "Error setting stack size for player_thread: %s", strerror(errno));
pthread_create(pt, &tattr, player_thread_func, (void *)conn);
pthread_attr_destroy(&tattr);
#if defined(HAVE_MPRIS)
if (conn->play_state!=SST_playing)
conn->play_state=SST_playing;
debug(1, "MPRIS Playing (play)");
media_player2_player_set_playback_status (mprisPlayerPlayerSkeleton, "Playing");
#endif
return 0;
}
@@ -2542,6 +2568,13 @@ void player_stop(rtsp_conn_info *conn) {
command_stop();
free(conn->player_thread);
conn->player_thread = NULL;
#if defined(HAVE_MPRIS)
if (conn->play_state!=SST_stopped)
conn->play_state=SST_stopped;
debug(1, "MPRIS Stopped");
media_player2_player_set_playback_status (mprisPlayerPlayerSkeleton, "Stopped");
#endif
} else {
debug(3, "player thread of RTSP conversation %d is already deleted.", conn->connection_number);
}
+13
View File
@@ -25,6 +25,15 @@
#define time_ping_history 8
#if defined(HAVE_DBUS) || defined(HAVE_MPRIS)
enum session_status_type {
SST_stopped = 0, // not playing anything
SST_paused, // paused
SST_playing,
} sst_type;
#endif
typedef struct time_ping_record {
uint64_t local_to_remote_difference;
uint64_t dispersion;
@@ -54,6 +63,10 @@ typedef struct {
typedef struct {
int connection_number; // for debug ID purposes, nothing else...
#if defined(HAVE_DBUS) || defined(HAVE_MPRIS)
enum session_status_type play_state;
#endif
int fd;
int authorized; // set if a password is required and has been supplied
stream_cfg stream;
+1 -1
View File
@@ -1,5 +1,5 @@
#include "shairport-sync-dbus-interface.h"
#include "dbus-interface.h"
#include <stdio.h>
#include <unistd.h>
File diff suppressed because it is too large Load Diff
-241
View File
@@ -1,241 +0,0 @@
/*
* Generated by gdbus-codegen 2.48.2. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
#ifndef __SHAIRPORT_SYNC_MPRIS_INTERFACE_H__
#define __SHAIRPORT_SYNC_MPRIS_INTERFACE_H__
#include <gio/gio.h>
G_BEGIN_DECLS
/* ------------------------------------------------------------------------ */
/* Declarations for org.mpris.MediaPlayer2 */
#define TYPE_ORG_MPRIS_MEDIA_PLAYER2 (org_mpris_media_player2_get_type ())
#define ORG_MPRIS_MEDIA_PLAYER2(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2, OrgMprisMediaPlayer2))
#define IS_ORG_MPRIS_MEDIA_PLAYER2(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2))
#define ORG_MPRIS_MEDIA_PLAYER2_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2, OrgMprisMediaPlayer2Iface))
struct _OrgMprisMediaPlayer2;
typedef struct _OrgMprisMediaPlayer2 OrgMprisMediaPlayer2;
typedef struct _OrgMprisMediaPlayer2Iface OrgMprisMediaPlayer2Iface;
struct _OrgMprisMediaPlayer2Iface
{
GTypeInterface parent_iface;
gboolean (*handle_quit) (
OrgMprisMediaPlayer2 *object,
GDBusMethodInvocation *invocation);
gboolean (*handle_raise) (
OrgMprisMediaPlayer2 *object,
GDBusMethodInvocation *invocation);
gboolean (*get_can_quit) (OrgMprisMediaPlayer2 *object);
gboolean (*get_can_raise) (OrgMprisMediaPlayer2 *object);
const gchar * (*get_desktop_entry) (OrgMprisMediaPlayer2 *object);
gboolean (*get_has_track_list) (OrgMprisMediaPlayer2 *object);
const gchar * (*get_identity) (OrgMprisMediaPlayer2 *object);
const gchar *const * (*get_supported_mime_types) (OrgMprisMediaPlayer2 *object);
const gchar *const * (*get_supported_uri_schemes) (OrgMprisMediaPlayer2 *object);
};
GType org_mpris_media_player2_get_type (void) G_GNUC_CONST;
GDBusInterfaceInfo *org_mpris_media_player2_interface_info (void);
guint org_mpris_media_player2_override_properties (GObjectClass *klass, guint property_id_begin);
/* D-Bus method call completion functions: */
void org_mpris_media_player2_complete_raise (
OrgMprisMediaPlayer2 *object,
GDBusMethodInvocation *invocation);
void org_mpris_media_player2_complete_quit (
OrgMprisMediaPlayer2 *object,
GDBusMethodInvocation *invocation);
/* D-Bus method calls: */
void org_mpris_media_player2_call_raise (
OrgMprisMediaPlayer2 *proxy,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_call_raise_finish (
OrgMprisMediaPlayer2 *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_call_raise_sync (
OrgMprisMediaPlayer2 *proxy,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_call_quit (
OrgMprisMediaPlayer2 *proxy,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_call_quit_finish (
OrgMprisMediaPlayer2 *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_call_quit_sync (
OrgMprisMediaPlayer2 *proxy,
GCancellable *cancellable,
GError **error);
/* D-Bus property accessors: */
gboolean org_mpris_media_player2_get_can_quit (OrgMprisMediaPlayer2 *object);
void org_mpris_media_player2_set_can_quit (OrgMprisMediaPlayer2 *object, gboolean value);
gboolean org_mpris_media_player2_get_can_raise (OrgMprisMediaPlayer2 *object);
void org_mpris_media_player2_set_can_raise (OrgMprisMediaPlayer2 *object, gboolean value);
gboolean org_mpris_media_player2_get_has_track_list (OrgMprisMediaPlayer2 *object);
void org_mpris_media_player2_set_has_track_list (OrgMprisMediaPlayer2 *object, gboolean value);
const gchar *org_mpris_media_player2_get_identity (OrgMprisMediaPlayer2 *object);
gchar *org_mpris_media_player2_dup_identity (OrgMprisMediaPlayer2 *object);
void org_mpris_media_player2_set_identity (OrgMprisMediaPlayer2 *object, const gchar *value);
const gchar *org_mpris_media_player2_get_desktop_entry (OrgMprisMediaPlayer2 *object);
gchar *org_mpris_media_player2_dup_desktop_entry (OrgMprisMediaPlayer2 *object);
void org_mpris_media_player2_set_desktop_entry (OrgMprisMediaPlayer2 *object, const gchar *value);
const gchar *const *org_mpris_media_player2_get_supported_uri_schemes (OrgMprisMediaPlayer2 *object);
gchar **org_mpris_media_player2_dup_supported_uri_schemes (OrgMprisMediaPlayer2 *object);
void org_mpris_media_player2_set_supported_uri_schemes (OrgMprisMediaPlayer2 *object, const gchar *const *value);
const gchar *const *org_mpris_media_player2_get_supported_mime_types (OrgMprisMediaPlayer2 *object);
gchar **org_mpris_media_player2_dup_supported_mime_types (OrgMprisMediaPlayer2 *object);
void org_mpris_media_player2_set_supported_mime_types (OrgMprisMediaPlayer2 *object, const gchar *const *value);
/* ---- */
#define TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY (org_mpris_media_player2_proxy_get_type ())
#define ORG_MPRIS_MEDIA_PLAYER2_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY, OrgMprisMediaPlayer2Proxy))
#define ORG_MPRIS_MEDIA_PLAYER2_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY, OrgMprisMediaPlayer2ProxyClass))
#define ORG_MPRIS_MEDIA_PLAYER2_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY, OrgMprisMediaPlayer2ProxyClass))
#define IS_ORG_MPRIS_MEDIA_PLAYER2_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY))
#define IS_ORG_MPRIS_MEDIA_PLAYER2_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY))
typedef struct _OrgMprisMediaPlayer2Proxy OrgMprisMediaPlayer2Proxy;
typedef struct _OrgMprisMediaPlayer2ProxyClass OrgMprisMediaPlayer2ProxyClass;
typedef struct _OrgMprisMediaPlayer2ProxyPrivate OrgMprisMediaPlayer2ProxyPrivate;
struct _OrgMprisMediaPlayer2Proxy
{
/*< private >*/
GDBusProxy parent_instance;
OrgMprisMediaPlayer2ProxyPrivate *priv;
};
struct _OrgMprisMediaPlayer2ProxyClass
{
GDBusProxyClass parent_class;
};
GType org_mpris_media_player2_proxy_get_type (void) G_GNUC_CONST;
#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgMprisMediaPlayer2Proxy, g_object_unref)
#endif
void org_mpris_media_player2_proxy_new (
GDBusConnection *connection,
GDBusProxyFlags flags,
const gchar *name,
const gchar *object_path,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
OrgMprisMediaPlayer2 *org_mpris_media_player2_proxy_new_finish (
GAsyncResult *res,
GError **error);
OrgMprisMediaPlayer2 *org_mpris_media_player2_proxy_new_sync (
GDBusConnection *connection,
GDBusProxyFlags flags,
const gchar *name,
const gchar *object_path,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_proxy_new_for_bus (
GBusType bus_type,
GDBusProxyFlags flags,
const gchar *name,
const gchar *object_path,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
OrgMprisMediaPlayer2 *org_mpris_media_player2_proxy_new_for_bus_finish (
GAsyncResult *res,
GError **error);
OrgMprisMediaPlayer2 *org_mpris_media_player2_proxy_new_for_bus_sync (
GBusType bus_type,
GDBusProxyFlags flags,
const gchar *name,
const gchar *object_path,
GCancellable *cancellable,
GError **error);
/* ---- */
#define TYPE_ORG_MPRIS_MEDIA_PLAYER2_SKELETON (org_mpris_media_player2_skeleton_get_type ())
#define ORG_MPRIS_MEDIA_PLAYER2_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_SKELETON, OrgMprisMediaPlayer2Skeleton))
#define ORG_MPRIS_MEDIA_PLAYER2_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_MPRIS_MEDIA_PLAYER2_SKELETON, OrgMprisMediaPlayer2SkeletonClass))
#define ORG_MPRIS_MEDIA_PLAYER2_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_SKELETON, OrgMprisMediaPlayer2SkeletonClass))
#define IS_ORG_MPRIS_MEDIA_PLAYER2_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_SKELETON))
#define IS_ORG_MPRIS_MEDIA_PLAYER2_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_MPRIS_MEDIA_PLAYER2_SKELETON))
typedef struct _OrgMprisMediaPlayer2Skeleton OrgMprisMediaPlayer2Skeleton;
typedef struct _OrgMprisMediaPlayer2SkeletonClass OrgMprisMediaPlayer2SkeletonClass;
typedef struct _OrgMprisMediaPlayer2SkeletonPrivate OrgMprisMediaPlayer2SkeletonPrivate;
struct _OrgMprisMediaPlayer2Skeleton
{
/*< private >*/
GDBusInterfaceSkeleton parent_instance;
OrgMprisMediaPlayer2SkeletonPrivate *priv;
};
struct _OrgMprisMediaPlayer2SkeletonClass
{
GDBusInterfaceSkeletonClass parent_class;
};
GType org_mpris_media_player2_skeleton_get_type (void) G_GNUC_CONST;
#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgMprisMediaPlayer2Skeleton, g_object_unref)
#endif
OrgMprisMediaPlayer2 *org_mpris_media_player2_skeleton_new (void);
G_END_DECLS
#endif /* __SHAIRPORT_SYNC_MPRIS_INTERFACE_H__ */
File diff suppressed because it is too large Load Diff
-496
View File
@@ -1,496 +0,0 @@
/*
* Generated by gdbus-codegen 2.48.2. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
#ifndef __SHAIRPORT_SYNC_MPRIS_PLAYER_INTERFACE_H__
#define __SHAIRPORT_SYNC_MPRIS_PLAYER_INTERFACE_H__
#include <gio/gio.h>
G_BEGIN_DECLS
/* ------------------------------------------------------------------------ */
/* Declarations for org.mpris.MediaPlayer2.Player */
#define TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER (org_mpris_media_player2_player_get_type ())
#define ORG_MPRIS_MEDIA_PLAYER2_PLAYER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER, OrgMprisMediaPlayer2Player))
#define IS_ORG_MPRIS_MEDIA_PLAYER2_PLAYER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER))
#define ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER, OrgMprisMediaPlayer2PlayerIface))
struct _OrgMprisMediaPlayer2Player;
typedef struct _OrgMprisMediaPlayer2Player OrgMprisMediaPlayer2Player;
typedef struct _OrgMprisMediaPlayer2PlayerIface OrgMprisMediaPlayer2PlayerIface;
struct _OrgMprisMediaPlayer2PlayerIface
{
GTypeInterface parent_iface;
gboolean (*handle_next) (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
gboolean (*handle_open_uri) (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation,
const gchar *arg_Uri);
gboolean (*handle_pause) (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
gboolean (*handle_play) (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
gboolean (*handle_play_pause) (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
gboolean (*handle_previous) (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
gboolean (*handle_seek) (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation,
gint64 arg_Offset);
gboolean (*handle_set_position) (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation,
const gchar *arg_TrackId,
gint64 arg_Position);
gboolean (*handle_stop) (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
gboolean (*handle_stop_after_current) (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
gboolean (*get_can_control) (OrgMprisMediaPlayer2Player *object);
gboolean (*get_can_go_next) (OrgMprisMediaPlayer2Player *object);
gboolean (*get_can_go_previous) (OrgMprisMediaPlayer2Player *object);
gboolean (*get_can_pause) (OrgMprisMediaPlayer2Player *object);
gboolean (*get_can_play) (OrgMprisMediaPlayer2Player *object);
gboolean (*get_can_seek) (OrgMprisMediaPlayer2Player *object);
const gchar * (*get_loop_status) (OrgMprisMediaPlayer2Player *object);
gdouble (*get_maximum_rate) (OrgMprisMediaPlayer2Player *object);
GVariant * (*get_metadata) (OrgMprisMediaPlayer2Player *object);
gdouble (*get_minimum_rate) (OrgMprisMediaPlayer2Player *object);
const gchar * (*get_playback_status) (OrgMprisMediaPlayer2Player *object);
gint64 (*get_position) (OrgMprisMediaPlayer2Player *object);
gdouble (*get_rate) (OrgMprisMediaPlayer2Player *object);
gboolean (*get_shuffle) (OrgMprisMediaPlayer2Player *object);
gdouble (*get_volume) (OrgMprisMediaPlayer2Player *object);
void (*seeked) (
OrgMprisMediaPlayer2Player *object,
gint64 arg_Position);
};
GType org_mpris_media_player2_player_get_type (void) G_GNUC_CONST;
GDBusInterfaceInfo *org_mpris_media_player2_player_interface_info (void);
guint org_mpris_media_player2_player_override_properties (GObjectClass *klass, guint property_id_begin);
/* D-Bus method call completion functions: */
void org_mpris_media_player2_player_complete_next (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
void org_mpris_media_player2_player_complete_previous (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
void org_mpris_media_player2_player_complete_pause (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
void org_mpris_media_player2_player_complete_play_pause (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
void org_mpris_media_player2_player_complete_stop (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
void org_mpris_media_player2_player_complete_stop_after_current (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
void org_mpris_media_player2_player_complete_play (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
void org_mpris_media_player2_player_complete_seek (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
void org_mpris_media_player2_player_complete_set_position (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
void org_mpris_media_player2_player_complete_open_uri (
OrgMprisMediaPlayer2Player *object,
GDBusMethodInvocation *invocation);
/* D-Bus signal emissions functions: */
void org_mpris_media_player2_player_emit_seeked (
OrgMprisMediaPlayer2Player *object,
gint64 arg_Position);
/* D-Bus method calls: */
void org_mpris_media_player2_player_call_next (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_player_call_next_finish (
OrgMprisMediaPlayer2Player *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_player_call_next_sync (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_player_call_previous (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_player_call_previous_finish (
OrgMprisMediaPlayer2Player *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_player_call_previous_sync (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_player_call_pause (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_player_call_pause_finish (
OrgMprisMediaPlayer2Player *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_player_call_pause_sync (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_player_call_play_pause (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_player_call_play_pause_finish (
OrgMprisMediaPlayer2Player *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_player_call_play_pause_sync (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_player_call_stop (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_player_call_stop_finish (
OrgMprisMediaPlayer2Player *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_player_call_stop_sync (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_player_call_stop_after_current (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_player_call_stop_after_current_finish (
OrgMprisMediaPlayer2Player *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_player_call_stop_after_current_sync (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_player_call_play (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_player_call_play_finish (
OrgMprisMediaPlayer2Player *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_player_call_play_sync (
OrgMprisMediaPlayer2Player *proxy,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_player_call_seek (
OrgMprisMediaPlayer2Player *proxy,
gint64 arg_Offset,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_player_call_seek_finish (
OrgMprisMediaPlayer2Player *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_player_call_seek_sync (
OrgMprisMediaPlayer2Player *proxy,
gint64 arg_Offset,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_player_call_set_position (
OrgMprisMediaPlayer2Player *proxy,
const gchar *arg_TrackId,
gint64 arg_Position,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_player_call_set_position_finish (
OrgMprisMediaPlayer2Player *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_player_call_set_position_sync (
OrgMprisMediaPlayer2Player *proxy,
const gchar *arg_TrackId,
gint64 arg_Position,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_player_call_open_uri (
OrgMprisMediaPlayer2Player *proxy,
const gchar *arg_Uri,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean org_mpris_media_player2_player_call_open_uri_finish (
OrgMprisMediaPlayer2Player *proxy,
GAsyncResult *res,
GError **error);
gboolean org_mpris_media_player2_player_call_open_uri_sync (
OrgMprisMediaPlayer2Player *proxy,
const gchar *arg_Uri,
GCancellable *cancellable,
GError **error);
/* D-Bus property accessors: */
const gchar *org_mpris_media_player2_player_get_playback_status (OrgMprisMediaPlayer2Player *object);
gchar *org_mpris_media_player2_player_dup_playback_status (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_playback_status (OrgMprisMediaPlayer2Player *object, const gchar *value);
const gchar *org_mpris_media_player2_player_get_loop_status (OrgMprisMediaPlayer2Player *object);
gchar *org_mpris_media_player2_player_dup_loop_status (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_loop_status (OrgMprisMediaPlayer2Player *object, const gchar *value);
gdouble org_mpris_media_player2_player_get_rate (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_rate (OrgMprisMediaPlayer2Player *object, gdouble value);
gboolean org_mpris_media_player2_player_get_shuffle (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_shuffle (OrgMprisMediaPlayer2Player *object, gboolean value);
GVariant *org_mpris_media_player2_player_get_metadata (OrgMprisMediaPlayer2Player *object);
GVariant *org_mpris_media_player2_player_dup_metadata (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_metadata (OrgMprisMediaPlayer2Player *object, GVariant *value);
gdouble org_mpris_media_player2_player_get_volume (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_volume (OrgMprisMediaPlayer2Player *object, gdouble value);
gint64 org_mpris_media_player2_player_get_position (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_position (OrgMprisMediaPlayer2Player *object, gint64 value);
gdouble org_mpris_media_player2_player_get_minimum_rate (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_minimum_rate (OrgMprisMediaPlayer2Player *object, gdouble value);
gdouble org_mpris_media_player2_player_get_maximum_rate (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_maximum_rate (OrgMprisMediaPlayer2Player *object, gdouble value);
gboolean org_mpris_media_player2_player_get_can_go_next (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_can_go_next (OrgMprisMediaPlayer2Player *object, gboolean value);
gboolean org_mpris_media_player2_player_get_can_go_previous (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_can_go_previous (OrgMprisMediaPlayer2Player *object, gboolean value);
gboolean org_mpris_media_player2_player_get_can_play (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_can_play (OrgMprisMediaPlayer2Player *object, gboolean value);
gboolean org_mpris_media_player2_player_get_can_pause (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_can_pause (OrgMprisMediaPlayer2Player *object, gboolean value);
gboolean org_mpris_media_player2_player_get_can_seek (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_can_seek (OrgMprisMediaPlayer2Player *object, gboolean value);
gboolean org_mpris_media_player2_player_get_can_control (OrgMprisMediaPlayer2Player *object);
void org_mpris_media_player2_player_set_can_control (OrgMprisMediaPlayer2Player *object, gboolean value);
/* ---- */
#define TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (org_mpris_media_player2_player_proxy_get_type ())
#define ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY, OrgMprisMediaPlayer2PlayerProxy))
#define ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY, OrgMprisMediaPlayer2PlayerProxyClass))
#define ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY, OrgMprisMediaPlayer2PlayerProxyClass))
#define IS_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY))
#define IS_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY))
typedef struct _OrgMprisMediaPlayer2PlayerProxy OrgMprisMediaPlayer2PlayerProxy;
typedef struct _OrgMprisMediaPlayer2PlayerProxyClass OrgMprisMediaPlayer2PlayerProxyClass;
typedef struct _OrgMprisMediaPlayer2PlayerProxyPrivate OrgMprisMediaPlayer2PlayerProxyPrivate;
struct _OrgMprisMediaPlayer2PlayerProxy
{
/*< private >*/
GDBusProxy parent_instance;
OrgMprisMediaPlayer2PlayerProxyPrivate *priv;
};
struct _OrgMprisMediaPlayer2PlayerProxyClass
{
GDBusProxyClass parent_class;
};
GType org_mpris_media_player2_player_proxy_get_type (void) G_GNUC_CONST;
#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgMprisMediaPlayer2PlayerProxy, g_object_unref)
#endif
void org_mpris_media_player2_player_proxy_new (
GDBusConnection *connection,
GDBusProxyFlags flags,
const gchar *name,
const gchar *object_path,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
OrgMprisMediaPlayer2Player *org_mpris_media_player2_player_proxy_new_finish (
GAsyncResult *res,
GError **error);
OrgMprisMediaPlayer2Player *org_mpris_media_player2_player_proxy_new_sync (
GDBusConnection *connection,
GDBusProxyFlags flags,
const gchar *name,
const gchar *object_path,
GCancellable *cancellable,
GError **error);
void org_mpris_media_player2_player_proxy_new_for_bus (
GBusType bus_type,
GDBusProxyFlags flags,
const gchar *name,
const gchar *object_path,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
OrgMprisMediaPlayer2Player *org_mpris_media_player2_player_proxy_new_for_bus_finish (
GAsyncResult *res,
GError **error);
OrgMprisMediaPlayer2Player *org_mpris_media_player2_player_proxy_new_for_bus_sync (
GBusType bus_type,
GDBusProxyFlags flags,
const gchar *name,
const gchar *object_path,
GCancellable *cancellable,
GError **error);
/* ---- */
#define TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (org_mpris_media_player2_player_skeleton_get_type ())
#define ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON, OrgMprisMediaPlayer2PlayerSkeleton))
#define ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON, OrgMprisMediaPlayer2PlayerSkeletonClass))
#define ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON, OrgMprisMediaPlayer2PlayerSkeletonClass))
#define IS_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON))
#define IS_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON))
typedef struct _OrgMprisMediaPlayer2PlayerSkeleton OrgMprisMediaPlayer2PlayerSkeleton;
typedef struct _OrgMprisMediaPlayer2PlayerSkeletonClass OrgMprisMediaPlayer2PlayerSkeletonClass;
typedef struct _OrgMprisMediaPlayer2PlayerSkeletonPrivate OrgMprisMediaPlayer2PlayerSkeletonPrivate;
struct _OrgMprisMediaPlayer2PlayerSkeleton
{
/*< private >*/
GDBusInterfaceSkeleton parent_instance;
OrgMprisMediaPlayer2PlayerSkeletonPrivate *priv;
};
struct _OrgMprisMediaPlayer2PlayerSkeletonClass
{
GDBusInterfaceSkeletonClass parent_class;
};
GType org_mpris_media_player2_player_skeleton_get_type (void) G_GNUC_CONST;
#if GLIB_CHECK_VERSION(2, 44, 0)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgMprisMediaPlayer2PlayerSkeleton, g_object_unref)
#endif
OrgMprisMediaPlayer2Player *org_mpris_media_player2_player_skeleton_new (void);
G_END_DECLS
#endif /* __SHAIRPORT_SYNC_MPRIS_PLAYER_INTERFACE_H__ */
-80
View File
@@ -1,80 +0,0 @@
#include <stdio.h>
#include <string.h>
#include "config.h"
#include "common.h"
#include "player.h"
#include "rtsp.h"
#include "rtp.h"
#include "dacp.h"
#include "shairport-sync-mpris-service.h"
static void on_mpris_name_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) {
const char* empty_string_array[] = {
NULL
};
debug(1,"MPRIS well-known interface name \"%s\" acquired for %s.",name,config.appName);
mprisPlayerSkeleton = org_mpris_media_player2_skeleton_new();
mprisPlayerPlayerSkeleton = org_mpris_media_player2_player_skeleton_new();
g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(mprisPlayerSkeleton), connection,
"/org/mpris/MediaPlayer2", NULL);
g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(mprisPlayerPlayerSkeleton), connection,
"/org/mpris/MediaPlayer2", NULL);
org_mpris_media_player2_set_desktop_entry(mprisPlayerSkeleton, "shairport-sync");
org_mpris_media_player2_set_identity(mprisPlayerSkeleton, "Shairport Sync");
org_mpris_media_player2_set_can_quit(mprisPlayerSkeleton, FALSE);
org_mpris_media_player2_set_can_raise(mprisPlayerSkeleton, FALSE);
org_mpris_media_player2_set_has_track_list(mprisPlayerSkeleton, FALSE);
org_mpris_media_player2_set_supported_uri_schemes (mprisPlayerSkeleton,empty_string_array);
org_mpris_media_player2_set_supported_mime_types (mprisPlayerSkeleton, empty_string_array);
org_mpris_media_player2_player_set_playback_status (mprisPlayerPlayerSkeleton, "stop");
org_mpris_media_player2_player_set_loop_status (mprisPlayerPlayerSkeleton, "off");
org_mpris_media_player2_player_set_volume (mprisPlayerPlayerSkeleton, 0.5);
org_mpris_media_player2_player_set_minimum_rate (mprisPlayerPlayerSkeleton,1.0);
org_mpris_media_player2_player_set_maximum_rate (mprisPlayerPlayerSkeleton,1.0);
org_mpris_media_player2_player_set_can_go_next (mprisPlayerPlayerSkeleton,FALSE);
org_mpris_media_player2_player_set_can_go_previous (mprisPlayerPlayerSkeleton,FALSE);
org_mpris_media_player2_player_set_can_play (mprisPlayerPlayerSkeleton, TRUE);
org_mpris_media_player2_player_set_can_pause (mprisPlayerPlayerSkeleton,FALSE);
org_mpris_media_player2_player_set_can_seek (mprisPlayerPlayerSkeleton, FALSE);
org_mpris_media_player2_player_set_can_control (mprisPlayerPlayerSkeleton, TRUE);
debug(1,"MPRIS service started on interface \"%s\".",name);
}
static void on_mpris_name_lost_again(GDBusConnection *connection, const gchar *name, gpointer user_data) {
warn("Could not acquire an MPRIS interface.");
}
static void on_mpris_name_lost(GDBusConnection *connection, const gchar *name, gpointer user_data) {
debug(1,"Could not acquire well-known interface name \"%s\" -- will try adding the process number to the end of it.",name);
pid_t pid = getpid();
char interface_name[256] = "";
sprintf(interface_name,"org.mpris.MediaPlayer2.ShairportSync.i%d",pid);
GBusType mpris_bus_type = G_BUS_TYPE_SYSTEM;
if (config.mpris_service_bus_type==DBT_session)
mpris_bus_type = G_BUS_TYPE_SESSION;
debug(1,"Looking for well-known interface name \"%s\".",interface_name);
g_bus_own_name(mpris_bus_type, interface_name, G_BUS_NAME_OWNER_FLAGS_NONE, NULL,
on_mpris_name_acquired, on_mpris_name_lost_again, NULL, NULL);
}
int start_mpris_service() {
mprisPlayerSkeleton = NULL;
mprisPlayerPlayerSkeleton = NULL;
GBusType mpris_bus_type = G_BUS_TYPE_SYSTEM;
if (config.mpris_service_bus_type==DBT_session)
mpris_bus_type = G_BUS_TYPE_SESSION;
debug(1,"Looking for well-known name \"org.mpris.MediaPlayer2.ShairportSync\".");
g_bus_own_name(mpris_bus_type, "org.mpris.MediaPlayer2.ShairportSync", G_BUS_NAME_OWNER_FLAGS_NONE, NULL,
on_mpris_name_acquired, on_mpris_name_lost, NULL, NULL);
return 0; // this is just to quieten a compiler warning
}
-13
View File
@@ -1,13 +0,0 @@
#ifndef MPRIS_SERVICE_H
#define MPRIS_SERVICE_H
#include "shairport-sync-mpris-interface.h"
#include "shairport-sync-mpris-player-interface.h"
OrgMprisMediaPlayer2 *mprisPlayerSkeleton;
OrgMprisMediaPlayer2Player *mprisPlayerPlayerSkeleton;
int start_mpris_service();
#endif /* #ifndef MPRIS_SERVICE_H */
+81
View File
@@ -0,0 +1,81 @@
#include "mpris-interface.h"
#include "mpris-player-interface.h"
#include <stdio.h>
#include <unistd.h>
GMainLoop *loop;
void on_properties_changed(GDBusProxy *proxy, GVariant *changed_properties,
const gchar *const *invalidated_properties, gpointer user_data) {
/* Note that we are guaranteed that changed_properties and
* invalidated_properties are never NULL
*/
if (g_variant_n_children(changed_properties) > 0) {
GVariantIter *iter;
const gchar *key;
GVariant *value;
g_print(" *** Properties Changed:\n");
g_variant_get(changed_properties, "a{sv}", &iter);
while (g_variant_iter_loop(iter, "{&sv}", &key, &value)) {
gchar *value_str;
value_str = g_variant_print(value, TRUE);
g_print(" %s -> %s\n", key, value_str);
g_free(value_str);
}
g_variant_iter_free(iter);
}
if (g_strv_length((GStrv)invalidated_properties) > 0) {
guint n;
g_print(" *** Properties Invalidated:\n");
for (n = 0; invalidated_properties[n] != NULL; n++) {
const gchar *key = invalidated_properties[n];
g_print(" %s\n", key);
}
}
}
pthread_t dbus_thread;
void *dbus_thread_func(void *arg) {
loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(loop);
// dbus_service_main(); // let it run inside a thread
return NULL; // this is just to quieten a compiler warning.
}
int main(void) {
pthread_create(&dbus_thread, NULL, &dbus_thread_func, NULL);
MediaPlayer2 *proxy;
MediaPlayer2Player *proxy2;
GError *error = NULL;
/*
proxy = media_player2_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE,
"org.mpris.MediaPlayer2.ShairportSync",
"/org/mpris/MediaPlayer2", NULL, &error);
g_signal_connect(proxy, "g-properties-changed", G_CALLBACK(on_properties_changed), NULL);
*/
proxy2 = media_player2_player_proxy_new_for_bus_sync(G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE,
"org.mpris.MediaPlayer2.ShairportSync",
"/org/mpris/MediaPlayer2", NULL, &error);
g_signal_connect(proxy2, "g-properties-changed", G_CALLBACK(on_properties_changed), NULL);
//sleep(120);
//g_main_loop_quit(loop);
pthread_join(dbus_thread, NULL);
printf("exiting program.\n");
// g_object_unref(proxy);
g_object_unref(proxy2);
return 0;
}
+2 -2
View File
@@ -59,11 +59,11 @@
#endif
#ifdef HAVE_DBUS
#include "shairport-sync-dbus-service.h"
#include "dbus-service.h"
#endif
#ifdef HAVE_MPRIS
#include "shairport-sync-mpris-service.h"
#include "mpris-service.h"
#endif