From: Mike Brady Date: Sun, 19 Nov 2017 21:16:36 +0000 (+0000) Subject: Clean up naming of some files, get the 'stop' command working X-Git-Tag: 3.2d13~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df7c48f0f3d08f5b8e01a97a983c200e5b7b3c22;p=thirdparty%2Fshairport-sync.git Clean up naming of some files, get the 'stop' command working --- diff --git a/.gitignore b/.gitignore index 034064aa..d59bf168 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/Makefile.am b/Makefile.am index 189fa57c..353d54b5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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: diff --git a/configure.ac b/configure.ac index ed871fb8..a8fc599c 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/shairport-sync-dbus-service.c b/dbus-service.c similarity index 99% rename from shairport-sync-dbus-service.c rename to dbus-service.c index a89a9676..6fb9f1ab 100644 --- a/shairport-sync-dbus-service.c +++ b/dbus-service.c @@ -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."); diff --git a/shairport-sync-dbus-service.h b/dbus-service.h similarity index 77% rename from shairport-sync-dbus-service.h rename to dbus-service.h index 19d1b65b..f4db1ae8 100644 --- a/shairport-sync-dbus-service.h +++ b/dbus-service.h @@ -2,7 +2,7 @@ #ifndef DBUS_SERVICE_H #define DBUS_SERVICE_H -#include "shairport-sync-dbus-interface.h" +#include "dbus-interface.h" ShairportSync *shairportSyncSkeleton; diff --git a/mpris-service.c b/mpris-service.c new file mode 100644 index 00000000..6331a5c8 --- /dev/null +++ b/mpris-service.c @@ -0,0 +1,127 @@ +#include +#include + +#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 +} diff --git a/mpris-service.h b/mpris-service.h new file mode 100644 index 00000000..be413540 --- /dev/null +++ b/mpris-service.h @@ -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 */ diff --git a/org.mpris.MediaPlayer2.Player.xml b/org.mpris.MediaPlayer2.Player.xml index 4e4c93cc..8ef73584 100755 --- a/org.mpris.MediaPlayer2.Player.xml +++ b/org.mpris.MediaPlayer2.Player.xml @@ -8,8 +8,7 @@ - - + diff --git a/player.c b/player.c index 544542f8..e7b3ce65 100644 --- a/player.c +++ b/player.c @@ -68,14 +68,20 @@ #include #endif -#if defined(HAVE_DBUS) +#if defined(HAVE_DBUS) || defined(HAVE_MPRIS) #include +#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); } diff --git a/player.h b/player.h index 3f930a18..d3e83c89 100644 --- a/player.h +++ b/player.h @@ -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; diff --git a/shairport-sync-dbus-test-client.c b/shairport-sync-dbus-test-client.c index 3e1db0f1..7715ed73 100644 --- a/shairport-sync-dbus-test-client.c +++ b/shairport-sync-dbus-test-client.c @@ -1,5 +1,5 @@ -#include "shairport-sync-dbus-interface.h" +#include "dbus-interface.h" #include #include diff --git a/shairport-sync-mpris-interface.c b/shairport-sync-mpris-interface.c deleted file mode 100644 index 9f9b9917..00000000 --- a/shairport-sync-mpris-interface.c +++ /dev/null @@ -1,2068 +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. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "shairport-sync-mpris-interface.h" - -#include -#ifdef G_OS_UNIX -# include -#endif - -typedef struct -{ - GDBusArgInfo parent_struct; - gboolean use_gvariant; -} _ExtendedGDBusArgInfo; - -typedef struct -{ - GDBusMethodInfo parent_struct; - const gchar *signal_name; - gboolean pass_fdlist; -} _ExtendedGDBusMethodInfo; - -typedef struct -{ - GDBusSignalInfo parent_struct; - const gchar *signal_name; -} _ExtendedGDBusSignalInfo; - -typedef struct -{ - GDBusPropertyInfo parent_struct; - const gchar *hyphen_name; - gboolean use_gvariant; -} _ExtendedGDBusPropertyInfo; - -typedef struct -{ - GDBusInterfaceInfo parent_struct; - const gchar *hyphen_name; -} _ExtendedGDBusInterfaceInfo; - -typedef struct -{ - const _ExtendedGDBusPropertyInfo *info; - guint prop_id; - GValue orig_value; /* the value before the change */ -} ChangedProperty; - -static void -_changed_property_free (ChangedProperty *data) -{ - g_value_unset (&data->orig_value); - g_free (data); -} - -static gboolean -_g_strv_equal0 (gchar **a, gchar **b) -{ - gboolean ret = FALSE; - guint n; - if (a == NULL && b == NULL) - { - ret = TRUE; - goto out; - } - if (a == NULL || b == NULL) - goto out; - if (g_strv_length (a) != g_strv_length (b)) - goto out; - for (n = 0; a[n] != NULL; n++) - if (g_strcmp0 (a[n], b[n]) != 0) - goto out; - ret = TRUE; -out: - return ret; -} - -static gboolean -_g_variant_equal0 (GVariant *a, GVariant *b) -{ - gboolean ret = FALSE; - if (a == NULL && b == NULL) - { - ret = TRUE; - goto out; - } - if (a == NULL || b == NULL) - goto out; - ret = g_variant_equal (a, b); -out: - return ret; -} - -G_GNUC_UNUSED static gboolean -_g_value_equal (const GValue *a, const GValue *b) -{ - gboolean ret = FALSE; - g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b)); - switch (G_VALUE_TYPE (a)) - { - case G_TYPE_BOOLEAN: - ret = (g_value_get_boolean (a) == g_value_get_boolean (b)); - break; - case G_TYPE_UCHAR: - ret = (g_value_get_uchar (a) == g_value_get_uchar (b)); - break; - case G_TYPE_INT: - ret = (g_value_get_int (a) == g_value_get_int (b)); - break; - case G_TYPE_UINT: - ret = (g_value_get_uint (a) == g_value_get_uint (b)); - break; - case G_TYPE_INT64: - ret = (g_value_get_int64 (a) == g_value_get_int64 (b)); - break; - case G_TYPE_UINT64: - ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b)); - break; - case G_TYPE_DOUBLE: - { - /* Avoid -Wfloat-equal warnings by doing a direct bit compare */ - gdouble da = g_value_get_double (a); - gdouble db = g_value_get_double (b); - ret = memcmp (&da, &db, sizeof (gdouble)) == 0; - } - break; - case G_TYPE_STRING: - ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0); - break; - case G_TYPE_VARIANT: - ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b)); - break; - default: - if (G_VALUE_TYPE (a) == G_TYPE_STRV) - ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b)); - else - g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a))); - break; - } - return ret; -} - -/* ------------------------------------------------------------------------ - * Code for interface org.mpris.MediaPlayer2 - * ------------------------------------------------------------------------ - */ - -/** - * SECTION:OrgMprisMediaPlayer2 - * @title: OrgMprisMediaPlayer2 - * @short_description: Generated C code for the org.mpris.MediaPlayer2 D-Bus interface - * - * This section contains code for working with the org.mpris.MediaPlayer2 D-Bus interface in C. - */ - -/* ---- Introspection data for org.mpris.MediaPlayer2 ---- */ - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_method_info_raise = -{ - { - -1, - (gchar *) "Raise", - NULL, - NULL, - NULL - }, - "handle-raise", - FALSE -}; - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_method_info_quit = -{ - { - -1, - (gchar *) "Quit", - NULL, - NULL, - NULL - }, - "handle-quit", - FALSE -}; - -static const _ExtendedGDBusMethodInfo * const _org_mpris_media_player2_method_info_pointers[] = -{ - &_org_mpris_media_player2_method_info_raise, - &_org_mpris_media_player2_method_info_quit, - NULL -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_property_info_can_quit = -{ - { - -1, - (gchar *) "CanQuit", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "can-quit", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_property_info_can_raise = -{ - { - -1, - (gchar *) "CanRaise", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "can-raise", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_property_info_has_track_list = -{ - { - -1, - (gchar *) "HasTrackList", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "has-track-list", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_property_info_identity = -{ - { - -1, - (gchar *) "Identity", - (gchar *) "s", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "identity", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_property_info_desktop_entry = -{ - { - -1, - (gchar *) "DesktopEntry", - (gchar *) "s", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "desktop-entry", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_property_info_supported_uri_schemes = -{ - { - -1, - (gchar *) "SupportedUriSchemes", - (gchar *) "as", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "supported-uri-schemes", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_property_info_supported_mime_types = -{ - { - -1, - (gchar *) "SupportedMimeTypes", - (gchar *) "as", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "supported-mime-types", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo * const _org_mpris_media_player2_property_info_pointers[] = -{ - &_org_mpris_media_player2_property_info_can_quit, - &_org_mpris_media_player2_property_info_can_raise, - &_org_mpris_media_player2_property_info_has_track_list, - &_org_mpris_media_player2_property_info_identity, - &_org_mpris_media_player2_property_info_desktop_entry, - &_org_mpris_media_player2_property_info_supported_uri_schemes, - &_org_mpris_media_player2_property_info_supported_mime_types, - NULL -}; - -static const _ExtendedGDBusInterfaceInfo _org_mpris_media_player2_interface_info = -{ - { - -1, - (gchar *) "org.mpris.MediaPlayer2", - (GDBusMethodInfo **) &_org_mpris_media_player2_method_info_pointers, - NULL, - (GDBusPropertyInfo **) &_org_mpris_media_player2_property_info_pointers, - NULL - }, - "org-mpris-media-player2", -}; - - -/** - * org_mpris_media_player2_interface_info: - * - * Gets a machine-readable description of the org.mpris.MediaPlayer2 D-Bus interface. - * - * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. - */ -GDBusInterfaceInfo * -org_mpris_media_player2_interface_info (void) -{ - return (GDBusInterfaceInfo *) &_org_mpris_media_player2_interface_info.parent_struct; -} - -/** - * org_mpris_media_player2_override_properties: - * @klass: The class structure for a #GObject-derived class. - * @property_id_begin: The property id to assign to the first overridden property. - * - * Overrides all #GObject properties in the #OrgMprisMediaPlayer2 interface for a concrete class. - * The properties are overridden in the order they are defined. - * - * Returns: The last property id. - */ -guint -org_mpris_media_player2_override_properties (GObjectClass *klass, guint property_id_begin) -{ - g_object_class_override_property (klass, property_id_begin++, "can-quit"); - g_object_class_override_property (klass, property_id_begin++, "can-raise"); - g_object_class_override_property (klass, property_id_begin++, "has-track-list"); - g_object_class_override_property (klass, property_id_begin++, "identity"); - g_object_class_override_property (klass, property_id_begin++, "desktop-entry"); - g_object_class_override_property (klass, property_id_begin++, "supported-uri-schemes"); - g_object_class_override_property (klass, property_id_begin++, "supported-mime-types"); - return property_id_begin - 1; -} - - - -/** - * OrgMprisMediaPlayer2: - * - * Abstract interface type for the D-Bus interface org.mpris.MediaPlayer2. - */ - -/** - * OrgMprisMediaPlayer2Iface: - * @parent_iface: The parent interface. - * @handle_quit: Handler for the #OrgMprisMediaPlayer2::handle-quit signal. - * @handle_raise: Handler for the #OrgMprisMediaPlayer2::handle-raise signal. - * @get_can_quit: Getter for the #OrgMprisMediaPlayer2:can-quit property. - * @get_can_raise: Getter for the #OrgMprisMediaPlayer2:can-raise property. - * @get_desktop_entry: Getter for the #OrgMprisMediaPlayer2:desktop-entry property. - * @get_has_track_list: Getter for the #OrgMprisMediaPlayer2:has-track-list property. - * @get_identity: Getter for the #OrgMprisMediaPlayer2:identity property. - * @get_supported_mime_types: Getter for the #OrgMprisMediaPlayer2:supported-mime-types property. - * @get_supported_uri_schemes: Getter for the #OrgMprisMediaPlayer2:supported-uri-schemes property. - * - * Virtual table for the D-Bus interface org.mpris.MediaPlayer2. - */ - -typedef OrgMprisMediaPlayer2Iface OrgMprisMediaPlayer2Interface; -G_DEFINE_INTERFACE (OrgMprisMediaPlayer2, org_mpris_media_player2, G_TYPE_OBJECT); - -static void -org_mpris_media_player2_default_init (OrgMprisMediaPlayer2Iface *iface) -{ - /* GObject signals for incoming D-Bus method calls: */ - /** - * OrgMprisMediaPlayer2::handle-raise: - * @object: A #OrgMprisMediaPlayer2. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the Raise() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_complete_raise() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-raise", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2Iface, handle_raise), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * OrgMprisMediaPlayer2::handle-quit: - * @object: A #OrgMprisMediaPlayer2. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the Quit() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_complete_quit() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-quit", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2Iface, handle_quit), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /* GObject properties for D-Bus properties: */ - /** - * OrgMprisMediaPlayer2:can-quit: - * - * Represents the D-Bus property "CanQuit". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("can-quit", "CanQuit", "CanQuit", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2:can-raise: - * - * Represents the D-Bus property "CanRaise". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("can-raise", "CanRaise", "CanRaise", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2:has-track-list: - * - * Represents the D-Bus property "HasTrackList". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("has-track-list", "HasTrackList", "HasTrackList", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2:identity: - * - * Represents the D-Bus property "Identity". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_string ("identity", "Identity", "Identity", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2:desktop-entry: - * - * Represents the D-Bus property "DesktopEntry". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_string ("desktop-entry", "DesktopEntry", "DesktopEntry", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2:supported-uri-schemes: - * - * Represents the D-Bus property "SupportedUriSchemes". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boxed ("supported-uri-schemes", "SupportedUriSchemes", "SupportedUriSchemes", G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2:supported-mime-types: - * - * Represents the D-Bus property "SupportedMimeTypes". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boxed ("supported-mime-types", "SupportedMimeTypes", "SupportedMimeTypes", G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); -} - -/** - * org_mpris_media_player2_get_can_quit: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets the value of the "CanQuit" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -org_mpris_media_player2_get_can_quit (OrgMprisMediaPlayer2 *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_GET_IFACE (object)->get_can_quit (object); -} - -/** - * org_mpris_media_player2_set_can_quit: (skip) - * @object: A #OrgMprisMediaPlayer2. - * @value: The value to set. - * - * Sets the "CanQuit" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_set_can_quit (OrgMprisMediaPlayer2 *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "can-quit", value, NULL); -} - -/** - * org_mpris_media_player2_get_can_raise: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets the value of the "CanRaise" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -org_mpris_media_player2_get_can_raise (OrgMprisMediaPlayer2 *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_GET_IFACE (object)->get_can_raise (object); -} - -/** - * org_mpris_media_player2_set_can_raise: (skip) - * @object: A #OrgMprisMediaPlayer2. - * @value: The value to set. - * - * Sets the "CanRaise" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_set_can_raise (OrgMprisMediaPlayer2 *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "can-raise", value, NULL); -} - -/** - * org_mpris_media_player2_get_has_track_list: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets the value of the "HasTrackList" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -org_mpris_media_player2_get_has_track_list (OrgMprisMediaPlayer2 *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_GET_IFACE (object)->get_has_track_list (object); -} - -/** - * org_mpris_media_player2_set_has_track_list: (skip) - * @object: A #OrgMprisMediaPlayer2. - * @value: The value to set. - * - * Sets the "HasTrackList" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_set_has_track_list (OrgMprisMediaPlayer2 *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "has-track-list", value, NULL); -} - -/** - * org_mpris_media_player2_get_identity: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets the value of the "Identity" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use org_mpris_media_player2_dup_identity() if on another thread. - * - * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. - */ -const gchar * -org_mpris_media_player2_get_identity (OrgMprisMediaPlayer2 *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_GET_IFACE (object)->get_identity (object); -} - -/** - * org_mpris_media_player2_dup_identity: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets a copy of the "Identity" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). - */ -gchar * -org_mpris_media_player2_dup_identity (OrgMprisMediaPlayer2 *object) -{ - gchar *value; - g_object_get (G_OBJECT (object), "identity", &value, NULL); - return value; -} - -/** - * org_mpris_media_player2_set_identity: (skip) - * @object: A #OrgMprisMediaPlayer2. - * @value: The value to set. - * - * Sets the "Identity" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_set_identity (OrgMprisMediaPlayer2 *object, const gchar *value) -{ - g_object_set (G_OBJECT (object), "identity", value, NULL); -} - -/** - * org_mpris_media_player2_get_desktop_entry: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets the value of the "DesktopEntry" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use org_mpris_media_player2_dup_desktop_entry() if on another thread. - * - * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. - */ -const gchar * -org_mpris_media_player2_get_desktop_entry (OrgMprisMediaPlayer2 *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_GET_IFACE (object)->get_desktop_entry (object); -} - -/** - * org_mpris_media_player2_dup_desktop_entry: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets a copy of the "DesktopEntry" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). - */ -gchar * -org_mpris_media_player2_dup_desktop_entry (OrgMprisMediaPlayer2 *object) -{ - gchar *value; - g_object_get (G_OBJECT (object), "desktop-entry", &value, NULL); - return value; -} - -/** - * org_mpris_media_player2_set_desktop_entry: (skip) - * @object: A #OrgMprisMediaPlayer2. - * @value: The value to set. - * - * Sets the "DesktopEntry" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_set_desktop_entry (OrgMprisMediaPlayer2 *object, const gchar *value) -{ - g_object_set (G_OBJECT (object), "desktop-entry", value, NULL); -} - -/** - * org_mpris_media_player2_get_supported_uri_schemes: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets the value of the "SupportedUriSchemes" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use org_mpris_media_player2_dup_supported_uri_schemes() if on another thread. - * - * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. - */ -const gchar *const * -org_mpris_media_player2_get_supported_uri_schemes (OrgMprisMediaPlayer2 *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_GET_IFACE (object)->get_supported_uri_schemes (object); -} - -/** - * org_mpris_media_player2_dup_supported_uri_schemes: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets a copy of the "SupportedUriSchemes" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_strfreev(). - */ -gchar ** -org_mpris_media_player2_dup_supported_uri_schemes (OrgMprisMediaPlayer2 *object) -{ - gchar **value; - g_object_get (G_OBJECT (object), "supported-uri-schemes", &value, NULL); - return value; -} - -/** - * org_mpris_media_player2_set_supported_uri_schemes: (skip) - * @object: A #OrgMprisMediaPlayer2. - * @value: The value to set. - * - * Sets the "SupportedUriSchemes" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_set_supported_uri_schemes (OrgMprisMediaPlayer2 *object, const gchar *const *value) -{ - g_object_set (G_OBJECT (object), "supported-uri-schemes", value, NULL); -} - -/** - * org_mpris_media_player2_get_supported_mime_types: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets the value of the "SupportedMimeTypes" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use org_mpris_media_player2_dup_supported_mime_types() if on another thread. - * - * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. - */ -const gchar *const * -org_mpris_media_player2_get_supported_mime_types (OrgMprisMediaPlayer2 *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_GET_IFACE (object)->get_supported_mime_types (object); -} - -/** - * org_mpris_media_player2_dup_supported_mime_types: (skip) - * @object: A #OrgMprisMediaPlayer2. - * - * Gets a copy of the "SupportedMimeTypes" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_strfreev(). - */ -gchar ** -org_mpris_media_player2_dup_supported_mime_types (OrgMprisMediaPlayer2 *object) -{ - gchar **value; - g_object_get (G_OBJECT (object), "supported-mime-types", &value, NULL); - return value; -} - -/** - * org_mpris_media_player2_set_supported_mime_types: (skip) - * @object: A #OrgMprisMediaPlayer2. - * @value: The value to set. - * - * Sets the "SupportedMimeTypes" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_set_supported_mime_types (OrgMprisMediaPlayer2 *object, const gchar *const *value) -{ - g_object_set (G_OBJECT (object), "supported-mime-types", value, NULL); -} - -/** - * org_mpris_media_player2_call_raise: - * @proxy: A #OrgMprisMediaPlayer2Proxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Raise() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_call_raise_finish() to get the result of the operation. - * - * See org_mpris_media_player2_call_raise_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_call_raise ( - OrgMprisMediaPlayer2 *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Raise", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_call_raise_finish: - * @proxy: A #OrgMprisMediaPlayer2Proxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_call_raise(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_call_raise(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_call_raise_finish ( - OrgMprisMediaPlayer2 *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_call_raise_sync: - * @proxy: A #OrgMprisMediaPlayer2Proxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Raise() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_call_raise() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_call_raise_sync ( - OrgMprisMediaPlayer2 *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Raise", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_call_quit: - * @proxy: A #OrgMprisMediaPlayer2Proxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Quit() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_call_quit_finish() to get the result of the operation. - * - * See org_mpris_media_player2_call_quit_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_call_quit ( - OrgMprisMediaPlayer2 *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Quit", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_call_quit_finish: - * @proxy: A #OrgMprisMediaPlayer2Proxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_call_quit(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_call_quit(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_call_quit_finish ( - OrgMprisMediaPlayer2 *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_call_quit_sync: - * @proxy: A #OrgMprisMediaPlayer2Proxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Quit() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_call_quit() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_call_quit_sync ( - OrgMprisMediaPlayer2 *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Quit", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_complete_raise: - * @object: A #OrgMprisMediaPlayer2. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Raise() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_complete_raise ( - OrgMprisMediaPlayer2 *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_mpris_media_player2_complete_quit: - * @object: A #OrgMprisMediaPlayer2. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Quit() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_complete_quit ( - OrgMprisMediaPlayer2 *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/* ------------------------------------------------------------------------ */ - -/** - * OrgMprisMediaPlayer2Proxy: - * - * The #OrgMprisMediaPlayer2Proxy structure contains only private data and should only be accessed using the provided API. - */ - -/** - * OrgMprisMediaPlayer2ProxyClass: - * @parent_class: The parent class. - * - * Class structure for #OrgMprisMediaPlayer2Proxy. - */ - -struct _OrgMprisMediaPlayer2ProxyPrivate -{ - GData *qdata; -}; - -static void org_mpris_media_player2_proxy_iface_init (OrgMprisMediaPlayer2Iface *iface); - -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (OrgMprisMediaPlayer2Proxy, org_mpris_media_player2_proxy, G_TYPE_DBUS_PROXY, - G_ADD_PRIVATE (OrgMprisMediaPlayer2Proxy) - G_IMPLEMENT_INTERFACE (TYPE_ORG_MPRIS_MEDIA_PLAYER2, org_mpris_media_player2_proxy_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (OrgMprisMediaPlayer2Proxy, org_mpris_media_player2_proxy, G_TYPE_DBUS_PROXY, - G_IMPLEMENT_INTERFACE (TYPE_ORG_MPRIS_MEDIA_PLAYER2, org_mpris_media_player2_proxy_iface_init)); - -#endif -static void -org_mpris_media_player2_proxy_finalize (GObject *object) -{ - OrgMprisMediaPlayer2Proxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PROXY (object); - g_datalist_clear (&proxy->priv->qdata); - G_OBJECT_CLASS (org_mpris_media_player2_proxy_parent_class)->finalize (object); -} - -static void -org_mpris_media_player2_proxy_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ - const _ExtendedGDBusPropertyInfo *info; - GVariant *variant; - g_assert (prop_id != 0 && prop_id - 1 < 7); - info = _org_mpris_media_player2_property_info_pointers[prop_id - 1]; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); - if (info->use_gvariant) - { - g_value_set_variant (value, variant); - } - else - { - if (variant != NULL) - g_dbus_gvariant_to_gvalue (variant, value); - } - if (variant != NULL) - g_variant_unref (variant); -} - -static void -org_mpris_media_player2_proxy_set_property_cb (GDBusProxy *proxy, - GAsyncResult *res, - gpointer user_data) -{ - const _ExtendedGDBusPropertyInfo *info = user_data; - GError *error; - GVariant *_ret; - error = NULL; - _ret = g_dbus_proxy_call_finish (proxy, res, &error); - if (!_ret) - { - g_warning ("Error setting property '%s' on interface org.mpris.MediaPlayer2: %s (%s, %d)", - info->parent_struct.name, - error->message, g_quark_to_string (error->domain), error->code); - g_error_free (error); - } - else - { - g_variant_unref (_ret); - } -} - -static void -org_mpris_media_player2_proxy_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ - const _ExtendedGDBusPropertyInfo *info; - GVariant *variant; - g_assert (prop_id != 0 && prop_id - 1 < 7); - info = _org_mpris_media_player2_property_info_pointers[prop_id - 1]; - variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); - g_dbus_proxy_call (G_DBUS_PROXY (object), - "org.freedesktop.DBus.Properties.Set", - g_variant_new ("(ssv)", "org.mpris.MediaPlayer2", info->parent_struct.name, variant), - G_DBUS_CALL_FLAGS_NONE, - -1, - NULL, (GAsyncReadyCallback) org_mpris_media_player2_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); - g_variant_unref (variant); -} - -static void -org_mpris_media_player2_proxy_g_signal (GDBusProxy *proxy, - const gchar *sender_name G_GNUC_UNUSED, - const gchar *signal_name, - GVariant *parameters) -{ - _ExtendedGDBusSignalInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - guint num_params; - guint n; - guint signal_id; - info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_mpris_media_player2_interface_info.parent_struct, signal_name); - if (info == NULL) - return; - num_params = g_variant_n_children (parameters); - paramv = g_new0 (GValue, num_params + 1); - g_value_init (¶mv[0], TYPE_ORG_MPRIS_MEDIA_PLAYER2); - g_value_set_object (¶mv[0], proxy); - g_variant_iter_init (&iter, parameters); - n = 1; - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_MPRIS_MEDIA_PLAYER2); - g_signal_emitv (paramv, signal_id, 0, NULL); - for (n = 0; n < num_params + 1; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static void -org_mpris_media_player2_proxy_g_properties_changed (GDBusProxy *_proxy, - GVariant *changed_properties, - const gchar *const *invalidated_properties) -{ - OrgMprisMediaPlayer2Proxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PROXY (_proxy); - guint n; - const gchar *key; - GVariantIter *iter; - _ExtendedGDBusPropertyInfo *info; - g_variant_get (changed_properties, "a{sv}", &iter); - while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_mpris_media_player2_interface_info.parent_struct, key); - g_datalist_remove_data (&proxy->priv->qdata, key); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } - g_variant_iter_free (iter); - for (n = 0; invalidated_properties[n] != NULL; n++) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_mpris_media_player2_interface_info.parent_struct, invalidated_properties[n]); - g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } -} - -static gboolean -org_mpris_media_player2_proxy_get_can_quit (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Proxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "CanQuit"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static gboolean -org_mpris_media_player2_proxy_get_can_raise (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Proxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "CanRaise"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static gboolean -org_mpris_media_player2_proxy_get_has_track_list (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Proxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "HasTrackList"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static const gchar * -org_mpris_media_player2_proxy_get_identity (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Proxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PROXY (object); - GVariant *variant; - const gchar *value = NULL; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Identity"); - if (variant != NULL) - { - value = g_variant_get_string (variant, NULL); - g_variant_unref (variant); - } - return value; -} - -static const gchar * -org_mpris_media_player2_proxy_get_desktop_entry (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Proxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PROXY (object); - GVariant *variant; - const gchar *value = NULL; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "DesktopEntry"); - if (variant != NULL) - { - value = g_variant_get_string (variant, NULL); - g_variant_unref (variant); - } - return value; -} - -static const gchar *const * -org_mpris_media_player2_proxy_get_supported_uri_schemes (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Proxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PROXY (object); - GVariant *variant; - const gchar *const *value = NULL; - value = g_datalist_get_data (&proxy->priv->qdata, "SupportedUriSchemes"); - if (value != NULL) - return value; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SupportedUriSchemes"); - if (variant != NULL) - { - value = g_variant_get_strv (variant, NULL); - g_datalist_set_data_full (&proxy->priv->qdata, "SupportedUriSchemes", (gpointer) value, g_free); - g_variant_unref (variant); - } - return value; -} - -static const gchar *const * -org_mpris_media_player2_proxy_get_supported_mime_types (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Proxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PROXY (object); - GVariant *variant; - const gchar *const *value = NULL; - value = g_datalist_get_data (&proxy->priv->qdata, "SupportedMimeTypes"); - if (value != NULL) - return value; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SupportedMimeTypes"); - if (variant != NULL) - { - value = g_variant_get_strv (variant, NULL); - g_datalist_set_data_full (&proxy->priv->qdata, "SupportedMimeTypes", (gpointer) value, g_free); - g_variant_unref (variant); - } - return value; -} - -static void -org_mpris_media_player2_proxy_init (OrgMprisMediaPlayer2Proxy *proxy) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - proxy->priv = org_mpris_media_player2_proxy_get_instance_private (proxy); -#else - proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY, OrgMprisMediaPlayer2ProxyPrivate); -#endif - - g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_mpris_media_player2_interface_info ()); -} - -static void -org_mpris_media_player2_proxy_class_init (OrgMprisMediaPlayer2ProxyClass *klass) -{ - GObjectClass *gobject_class; - GDBusProxyClass *proxy_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = org_mpris_media_player2_proxy_finalize; - gobject_class->get_property = org_mpris_media_player2_proxy_get_property; - gobject_class->set_property = org_mpris_media_player2_proxy_set_property; - - proxy_class = G_DBUS_PROXY_CLASS (klass); - proxy_class->g_signal = org_mpris_media_player2_proxy_g_signal; - proxy_class->g_properties_changed = org_mpris_media_player2_proxy_g_properties_changed; - - org_mpris_media_player2_override_properties (gobject_class, 1); - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (OrgMprisMediaPlayer2ProxyPrivate)); -#endif -} - -static void -org_mpris_media_player2_proxy_iface_init (OrgMprisMediaPlayer2Iface *iface) -{ - iface->get_can_quit = org_mpris_media_player2_proxy_get_can_quit; - iface->get_can_raise = org_mpris_media_player2_proxy_get_can_raise; - iface->get_has_track_list = org_mpris_media_player2_proxy_get_has_track_list; - iface->get_identity = org_mpris_media_player2_proxy_get_identity; - iface->get_desktop_entry = org_mpris_media_player2_proxy_get_desktop_entry; - iface->get_supported_uri_schemes = org_mpris_media_player2_proxy_get_supported_uri_schemes; - iface->get_supported_mime_types = org_mpris_media_player2_proxy_get_supported_mime_types; -} - -/** - * org_mpris_media_player2_proxy_new: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Asynchronously creates a proxy for the D-Bus interface org.mpris.MediaPlayer2. See g_dbus_proxy_new() for more details. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_proxy_new_finish() to get the result of the operation. - * - * See org_mpris_media_player2_proxy_new_sync() for the synchronous, blocking version of this constructor. - */ -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) -{ - g_async_initable_new_async (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.mpris.MediaPlayer2", NULL); -} - -/** - * org_mpris_media_player2_proxy_new_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_proxy_new(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with org_mpris_media_player2_proxy_new(). - * - * Returns: (transfer full) (type OrgMprisMediaPlayer2Proxy): The constructed proxy object or %NULL if @error is set. - */ -OrgMprisMediaPlayer2 * -org_mpris_media_player2_proxy_new_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return ORG_MPRIS_MEDIA_PLAYER2 (ret); - else - return NULL; -} - -/** - * org_mpris_media_player2_proxy_new_sync: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Synchronously creates a proxy for the D-Bus interface org.mpris.MediaPlayer2. See g_dbus_proxy_new_sync() for more details. - * - * The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_proxy_new() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type OrgMprisMediaPlayer2Proxy): The constructed proxy object or %NULL if @error is set. - */ -OrgMprisMediaPlayer2 * -org_mpris_media_player2_proxy_new_sync ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *ret; - ret = g_initable_new (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.mpris.MediaPlayer2", NULL); - if (ret != NULL) - return ORG_MPRIS_MEDIA_PLAYER2 (ret); - else - return NULL; -} - - -/** - * org_mpris_media_player2_proxy_new_for_bus: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Like org_mpris_media_player2_proxy_new() but takes a #GBusType instead of a #GDBusConnection. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_proxy_new_for_bus_finish() to get the result of the operation. - * - * See org_mpris_media_player2_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. - */ -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) -{ - g_async_initable_new_async (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.mpris.MediaPlayer2", NULL); -} - -/** - * org_mpris_media_player2_proxy_new_for_bus_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_proxy_new_for_bus(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with org_mpris_media_player2_proxy_new_for_bus(). - * - * Returns: (transfer full) (type OrgMprisMediaPlayer2Proxy): The constructed proxy object or %NULL if @error is set. - */ -OrgMprisMediaPlayer2 * -org_mpris_media_player2_proxy_new_for_bus_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return ORG_MPRIS_MEDIA_PLAYER2 (ret); - else - return NULL; -} - -/** - * org_mpris_media_player2_proxy_new_for_bus_sync: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Like org_mpris_media_player2_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. - * - * The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_proxy_new_for_bus() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type OrgMprisMediaPlayer2Proxy): The constructed proxy object or %NULL if @error is set. - */ -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) -{ - GInitable *ret; - ret = g_initable_new (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.mpris.MediaPlayer2", NULL); - if (ret != NULL) - return ORG_MPRIS_MEDIA_PLAYER2 (ret); - else - return NULL; -} - - -/* ------------------------------------------------------------------------ */ - -/** - * OrgMprisMediaPlayer2Skeleton: - * - * The #OrgMprisMediaPlayer2Skeleton structure contains only private data and should only be accessed using the provided API. - */ - -/** - * OrgMprisMediaPlayer2SkeletonClass: - * @parent_class: The parent class. - * - * Class structure for #OrgMprisMediaPlayer2Skeleton. - */ - -struct _OrgMprisMediaPlayer2SkeletonPrivate -{ - GValue *properties; - GList *changed_properties; - GSource *changed_properties_idle_source; - GMainContext *context; - GMutex lock; -}; - -static void -_org_mpris_media_player2_skeleton_handle_method_call ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer user_data) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (user_data); - _ExtendedGDBusMethodInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - guint num_params; - guint num_extra; - guint n; - guint signal_id; - GValue return_value = G_VALUE_INIT; - info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); - g_assert (info != NULL); - num_params = g_variant_n_children (parameters); - num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); - n = 0; - g_value_init (¶mv[n], TYPE_ORG_MPRIS_MEDIA_PLAYER2); - g_value_set_object (¶mv[n++], skeleton); - g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); - g_value_set_object (¶mv[n++], invocation); - if (info->pass_fdlist) - { -#ifdef G_OS_UNIX - g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); - g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); -#else - g_assert_not_reached (); -#endif - } - g_variant_iter_init (&iter, parameters); - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_MPRIS_MEDIA_PLAYER2); - g_value_init (&return_value, G_TYPE_BOOLEAN); - g_signal_emitv (paramv, signal_id, 0, &return_value); - if (!g_value_get_boolean (&return_value)) - g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); - g_value_unset (&return_value); - for (n = 0; n < num_params + num_extra; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static GVariant * -_org_mpris_media_player2_skeleton_handle_get_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GError **error, - gpointer user_data) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - GVariant *ret; - ret = NULL; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_mpris_media_player2_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - g_value_init (&value, pspec->value_type); - g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); - ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); - g_value_unset (&value); - } - return ret; -} - -static gboolean -_org_mpris_media_player2_skeleton_handle_set_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GVariant *variant, - GError **error, - gpointer user_data) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - gboolean ret; - ret = FALSE; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_mpris_media_player2_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - if (info->use_gvariant) - g_value_set_variant (&value, variant); - else - g_dbus_gvariant_to_gvalue (variant, &value); - g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); - g_value_unset (&value); - ret = TRUE; - } - return ret; -} - -static const GDBusInterfaceVTable _org_mpris_media_player2_skeleton_vtable = -{ - _org_mpris_media_player2_skeleton_handle_method_call, - _org_mpris_media_player2_skeleton_handle_get_property, - _org_mpris_media_player2_skeleton_handle_set_property, - {NULL} -}; - -static GDBusInterfaceInfo * -org_mpris_media_player2_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return org_mpris_media_player2_interface_info (); -} - -static GDBusInterfaceVTable * -org_mpris_media_player2_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return (GDBusInterfaceVTable *) &_org_mpris_media_player2_skeleton_vtable; -} - -static GVariant * -org_mpris_media_player2_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (_skeleton); - - GVariantBuilder builder; - guint n; - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); - if (_org_mpris_media_player2_interface_info.parent_struct.properties == NULL) - goto out; - for (n = 0; _org_mpris_media_player2_interface_info.parent_struct.properties[n] != NULL; n++) - { - GDBusPropertyInfo *info = _org_mpris_media_player2_interface_info.parent_struct.properties[n]; - if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) - { - GVariant *value; - value = _org_mpris_media_player2_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.mpris.MediaPlayer2", info->name, NULL, skeleton); - if (value != NULL) - { - g_variant_take_ref (value); - g_variant_builder_add (&builder, "{sv}", info->name, value); - g_variant_unref (value); - } - } - } -out: - return g_variant_builder_end (&builder); -} - -static gboolean _org_mpris_media_player2_emit_changed (gpointer user_data); - -static void -org_mpris_media_player2_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (_skeleton); - gboolean emit_changed = FALSE; - - g_mutex_lock (&skeleton->priv->lock); - if (skeleton->priv->changed_properties_idle_source != NULL) - { - g_source_destroy (skeleton->priv->changed_properties_idle_source); - skeleton->priv->changed_properties_idle_source = NULL; - emit_changed = TRUE; - } - g_mutex_unlock (&skeleton->priv->lock); - - if (emit_changed) - _org_mpris_media_player2_emit_changed (skeleton); -} - -static void org_mpris_media_player2_skeleton_iface_init (OrgMprisMediaPlayer2Iface *iface); -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (OrgMprisMediaPlayer2Skeleton, org_mpris_media_player2_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_ADD_PRIVATE (OrgMprisMediaPlayer2Skeleton) - G_IMPLEMENT_INTERFACE (TYPE_ORG_MPRIS_MEDIA_PLAYER2, org_mpris_media_player2_skeleton_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (OrgMprisMediaPlayer2Skeleton, org_mpris_media_player2_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_IMPLEMENT_INTERFACE (TYPE_ORG_MPRIS_MEDIA_PLAYER2, org_mpris_media_player2_skeleton_iface_init)); - -#endif -static void -org_mpris_media_player2_skeleton_finalize (GObject *object) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - guint n; - for (n = 0; n < 7; n++) - g_value_unset (&skeleton->priv->properties[n]); - g_free (skeleton->priv->properties); - g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); - if (skeleton->priv->changed_properties_idle_source != NULL) - g_source_destroy (skeleton->priv->changed_properties_idle_source); - g_main_context_unref (skeleton->priv->context); - g_mutex_clear (&skeleton->priv->lock); - G_OBJECT_CLASS (org_mpris_media_player2_skeleton_parent_class)->finalize (object); -} - -static void -org_mpris_media_player2_skeleton_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - g_assert (prop_id != 0 && prop_id - 1 < 7); - g_mutex_lock (&skeleton->priv->lock); - g_value_copy (&skeleton->priv->properties[prop_id - 1], value); - g_mutex_unlock (&skeleton->priv->lock); -} - -static gboolean -_org_mpris_media_player2_emit_changed (gpointer user_data) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (user_data); - GList *l; - GVariantBuilder builder; - GVariantBuilder invalidated_builder; - guint num_changes; - - g_mutex_lock (&skeleton->priv->lock); - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); - g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); - for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) - { - ChangedProperty *cp = l->data; - GVariant *variant; - const GValue *cur_value; - - cur_value = &skeleton->priv->properties[cp->prop_id - 1]; - if (!_g_value_equal (cur_value, &cp->orig_value)) - { - variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); - g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); - g_variant_unref (variant); - num_changes++; - } - } - if (num_changes > 0) - { - GList *connections, *ll; - GVariant *signal_variant; - signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.mpris.MediaPlayer2", - &builder, &invalidated_builder)); - connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); - for (ll = connections; ll != NULL; ll = ll->next) - { - GDBusConnection *connection = ll->data; - - g_dbus_connection_emit_signal (connection, - NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), - "org.freedesktop.DBus.Properties", - "PropertiesChanged", - signal_variant, - NULL); - } - g_variant_unref (signal_variant); - g_list_free_full (connections, g_object_unref); - } - else - { - g_variant_builder_clear (&builder); - g_variant_builder_clear (&invalidated_builder); - } - g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); - skeleton->priv->changed_properties = NULL; - skeleton->priv->changed_properties_idle_source = NULL; - g_mutex_unlock (&skeleton->priv->lock); - return FALSE; -} - -static void -_org_mpris_media_player2_schedule_emit_changed (OrgMprisMediaPlayer2Skeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) -{ - ChangedProperty *cp; - GList *l; - cp = NULL; - for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) - { - ChangedProperty *i_cp = l->data; - if (i_cp->info == info) - { - cp = i_cp; - break; - } - } - if (cp == NULL) - { - cp = g_new0 (ChangedProperty, 1); - cp->prop_id = prop_id; - cp->info = info; - skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); - g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); - g_value_copy (orig_value, &cp->orig_value); - } -} - -static void -org_mpris_media_player2_skeleton_notify (GObject *object, - GParamSpec *pspec G_GNUC_UNUSED) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - g_mutex_lock (&skeleton->priv->lock); - if (skeleton->priv->changed_properties != NULL && - skeleton->priv->changed_properties_idle_source == NULL) - { - skeleton->priv->changed_properties_idle_source = g_idle_source_new (); - g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); - g_source_set_callback (skeleton->priv->changed_properties_idle_source, _org_mpris_media_player2_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _org_mpris_media_player2_emit_changed"); - g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); - g_source_unref (skeleton->priv->changed_properties_idle_source); - } - g_mutex_unlock (&skeleton->priv->lock); -} - -static void -org_mpris_media_player2_skeleton_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - g_assert (prop_id != 0 && prop_id - 1 < 7); - g_mutex_lock (&skeleton->priv->lock); - g_object_freeze_notify (object); - if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) - { - if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) - _org_mpris_media_player2_schedule_emit_changed (skeleton, _org_mpris_media_player2_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); - g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); - g_object_notify_by_pspec (object, pspec); - } - g_mutex_unlock (&skeleton->priv->lock); - g_object_thaw_notify (object); -} - -static void -org_mpris_media_player2_skeleton_init (OrgMprisMediaPlayer2Skeleton *skeleton) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - skeleton->priv = org_mpris_media_player2_skeleton_get_instance_private (skeleton); -#else - skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_MPRIS_MEDIA_PLAYER2_SKELETON, OrgMprisMediaPlayer2SkeletonPrivate); -#endif - - g_mutex_init (&skeleton->priv->lock); - skeleton->priv->context = g_main_context_ref_thread_default (); - skeleton->priv->properties = g_new0 (GValue, 7); - g_value_init (&skeleton->priv->properties[0], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[1], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[2], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[3], G_TYPE_STRING); - g_value_init (&skeleton->priv->properties[4], G_TYPE_STRING); - g_value_init (&skeleton->priv->properties[5], G_TYPE_STRV); - g_value_init (&skeleton->priv->properties[6], G_TYPE_STRV); -} - -static gboolean -org_mpris_media_player2_skeleton_get_can_quit (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[0])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -org_mpris_media_player2_skeleton_get_can_raise (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[1])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -org_mpris_media_player2_skeleton_get_has_track_list (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[2])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static const gchar * -org_mpris_media_player2_skeleton_get_identity (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - const gchar *value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_string (&(skeleton->priv->properties[3])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static const gchar * -org_mpris_media_player2_skeleton_get_desktop_entry (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - const gchar *value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_string (&(skeleton->priv->properties[4])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static const gchar *const * -org_mpris_media_player2_skeleton_get_supported_uri_schemes (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - const gchar *const *value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boxed (&(skeleton->priv->properties[5])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static const gchar *const * -org_mpris_media_player2_skeleton_get_supported_mime_types (OrgMprisMediaPlayer2 *object) -{ - OrgMprisMediaPlayer2Skeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_SKELETON (object); - const gchar *const *value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boxed (&(skeleton->priv->properties[6])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static void -org_mpris_media_player2_skeleton_class_init (OrgMprisMediaPlayer2SkeletonClass *klass) -{ - GObjectClass *gobject_class; - GDBusInterfaceSkeletonClass *skeleton_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = org_mpris_media_player2_skeleton_finalize; - gobject_class->get_property = org_mpris_media_player2_skeleton_get_property; - gobject_class->set_property = org_mpris_media_player2_skeleton_set_property; - gobject_class->notify = org_mpris_media_player2_skeleton_notify; - - - org_mpris_media_player2_override_properties (gobject_class, 1); - - skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); - skeleton_class->get_info = org_mpris_media_player2_skeleton_dbus_interface_get_info; - skeleton_class->get_properties = org_mpris_media_player2_skeleton_dbus_interface_get_properties; - skeleton_class->flush = org_mpris_media_player2_skeleton_dbus_interface_flush; - skeleton_class->get_vtable = org_mpris_media_player2_skeleton_dbus_interface_get_vtable; - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (OrgMprisMediaPlayer2SkeletonPrivate)); -#endif -} - -static void -org_mpris_media_player2_skeleton_iface_init (OrgMprisMediaPlayer2Iface *iface) -{ - iface->get_can_quit = org_mpris_media_player2_skeleton_get_can_quit; - iface->get_can_raise = org_mpris_media_player2_skeleton_get_can_raise; - iface->get_has_track_list = org_mpris_media_player2_skeleton_get_has_track_list; - iface->get_identity = org_mpris_media_player2_skeleton_get_identity; - iface->get_desktop_entry = org_mpris_media_player2_skeleton_get_desktop_entry; - iface->get_supported_uri_schemes = org_mpris_media_player2_skeleton_get_supported_uri_schemes; - iface->get_supported_mime_types = org_mpris_media_player2_skeleton_get_supported_mime_types; -} - -/** - * org_mpris_media_player2_skeleton_new: - * - * Creates a skeleton object for the D-Bus interface org.mpris.MediaPlayer2. - * - * Returns: (transfer full) (type OrgMprisMediaPlayer2Skeleton): The skeleton object. - */ -OrgMprisMediaPlayer2 * -org_mpris_media_player2_skeleton_new (void) -{ - return ORG_MPRIS_MEDIA_PLAYER2 (g_object_new (TYPE_ORG_MPRIS_MEDIA_PLAYER2_SKELETON, NULL)); -} - diff --git a/shairport-sync-mpris-interface.h b/shairport-sync-mpris-interface.h deleted file mode 100644 index 615dc37c..00000000 --- a/shairport-sync-mpris-interface.h +++ /dev/null @@ -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 - -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__ */ diff --git a/shairport-sync-mpris-player-interface.c b/shairport-sync-mpris-player-interface.c deleted file mode 100644 index 0c78fa53..00000000 --- a/shairport-sync-mpris-player-interface.c +++ /dev/null @@ -1,4094 +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. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "shairport-sync-mpris-player-interface.h" - -#include -#ifdef G_OS_UNIX -# include -#endif - -typedef struct -{ - GDBusArgInfo parent_struct; - gboolean use_gvariant; -} _ExtendedGDBusArgInfo; - -typedef struct -{ - GDBusMethodInfo parent_struct; - const gchar *signal_name; - gboolean pass_fdlist; -} _ExtendedGDBusMethodInfo; - -typedef struct -{ - GDBusSignalInfo parent_struct; - const gchar *signal_name; -} _ExtendedGDBusSignalInfo; - -typedef struct -{ - GDBusPropertyInfo parent_struct; - const gchar *hyphen_name; - gboolean use_gvariant; -} _ExtendedGDBusPropertyInfo; - -typedef struct -{ - GDBusInterfaceInfo parent_struct; - const gchar *hyphen_name; -} _ExtendedGDBusInterfaceInfo; - -typedef struct -{ - const _ExtendedGDBusPropertyInfo *info; - guint prop_id; - GValue orig_value; /* the value before the change */ -} ChangedProperty; - -static void -_changed_property_free (ChangedProperty *data) -{ - g_value_unset (&data->orig_value); - g_free (data); -} - -static gboolean -_g_strv_equal0 (gchar **a, gchar **b) -{ - gboolean ret = FALSE; - guint n; - if (a == NULL && b == NULL) - { - ret = TRUE; - goto out; - } - if (a == NULL || b == NULL) - goto out; - if (g_strv_length (a) != g_strv_length (b)) - goto out; - for (n = 0; a[n] != NULL; n++) - if (g_strcmp0 (a[n], b[n]) != 0) - goto out; - ret = TRUE; -out: - return ret; -} - -static gboolean -_g_variant_equal0 (GVariant *a, GVariant *b) -{ - gboolean ret = FALSE; - if (a == NULL && b == NULL) - { - ret = TRUE; - goto out; - } - if (a == NULL || b == NULL) - goto out; - ret = g_variant_equal (a, b); -out: - return ret; -} - -G_GNUC_UNUSED static gboolean -_g_value_equal (const GValue *a, const GValue *b) -{ - gboolean ret = FALSE; - g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b)); - switch (G_VALUE_TYPE (a)) - { - case G_TYPE_BOOLEAN: - ret = (g_value_get_boolean (a) == g_value_get_boolean (b)); - break; - case G_TYPE_UCHAR: - ret = (g_value_get_uchar (a) == g_value_get_uchar (b)); - break; - case G_TYPE_INT: - ret = (g_value_get_int (a) == g_value_get_int (b)); - break; - case G_TYPE_UINT: - ret = (g_value_get_uint (a) == g_value_get_uint (b)); - break; - case G_TYPE_INT64: - ret = (g_value_get_int64 (a) == g_value_get_int64 (b)); - break; - case G_TYPE_UINT64: - ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b)); - break; - case G_TYPE_DOUBLE: - { - /* Avoid -Wfloat-equal warnings by doing a direct bit compare */ - gdouble da = g_value_get_double (a); - gdouble db = g_value_get_double (b); - ret = memcmp (&da, &db, sizeof (gdouble)) == 0; - } - break; - case G_TYPE_STRING: - ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0); - break; - case G_TYPE_VARIANT: - ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b)); - break; - default: - if (G_VALUE_TYPE (a) == G_TYPE_STRV) - ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b)); - else - g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a))); - break; - } - return ret; -} - -/* ------------------------------------------------------------------------ - * Code for interface org.mpris.MediaPlayer2.Player - * ------------------------------------------------------------------------ - */ - -/** - * SECTION:OrgMprisMediaPlayer2Player - * @title: OrgMprisMediaPlayer2Player - * @short_description: Generated C code for the org.mpris.MediaPlayer2.Player D-Bus interface - * - * This section contains code for working with the org.mpris.MediaPlayer2.Player D-Bus interface in C. - */ - -/* ---- Introspection data for org.mpris.MediaPlayer2.Player ---- */ - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_player_method_info_next = -{ - { - -1, - (gchar *) "Next", - NULL, - NULL, - NULL - }, - "handle-next", - FALSE -}; - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_player_method_info_previous = -{ - { - -1, - (gchar *) "Previous", - NULL, - NULL, - NULL - }, - "handle-previous", - FALSE -}; - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_player_method_info_pause = -{ - { - -1, - (gchar *) "Pause", - NULL, - NULL, - NULL - }, - "handle-pause", - FALSE -}; - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_player_method_info_play_pause = -{ - { - -1, - (gchar *) "PlayPause", - NULL, - NULL, - NULL - }, - "handle-play-pause", - FALSE -}; - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_player_method_info_stop = -{ - { - -1, - (gchar *) "Stop", - NULL, - NULL, - NULL - }, - "handle-stop", - FALSE -}; - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_player_method_info_stop_after_current = -{ - { - -1, - (gchar *) "StopAfterCurrent", - NULL, - NULL, - NULL - }, - "handle-stop-after-current", - FALSE -}; - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_player_method_info_play = -{ - { - -1, - (gchar *) "Play", - NULL, - NULL, - NULL - }, - "handle-play", - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_mpris_media_player2_player_method_info_seek_IN_ARG_Offset = -{ - { - -1, - (gchar *) "Offset", - (gchar *) "x", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_mpris_media_player2_player_method_info_seek_IN_ARG_pointers[] = -{ - &_org_mpris_media_player2_player_method_info_seek_IN_ARG_Offset, - NULL -}; - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_player_method_info_seek = -{ - { - -1, - (gchar *) "Seek", - (GDBusArgInfo **) &_org_mpris_media_player2_player_method_info_seek_IN_ARG_pointers, - NULL, - NULL - }, - "handle-seek", - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_mpris_media_player2_player_method_info_set_position_IN_ARG_TrackId = -{ - { - -1, - (gchar *) "TrackId", - (gchar *) "o", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_mpris_media_player2_player_method_info_set_position_IN_ARG_Position = -{ - { - -1, - (gchar *) "Position", - (gchar *) "x", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_mpris_media_player2_player_method_info_set_position_IN_ARG_pointers[] = -{ - &_org_mpris_media_player2_player_method_info_set_position_IN_ARG_TrackId, - &_org_mpris_media_player2_player_method_info_set_position_IN_ARG_Position, - NULL -}; - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_player_method_info_set_position = -{ - { - -1, - (gchar *) "SetPosition", - (GDBusArgInfo **) &_org_mpris_media_player2_player_method_info_set_position_IN_ARG_pointers, - NULL, - NULL - }, - "handle-set-position", - FALSE -}; - -static const _ExtendedGDBusArgInfo _org_mpris_media_player2_player_method_info_open_uri_IN_ARG_Uri = -{ - { - -1, - (gchar *) "Uri", - (gchar *) "s", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_mpris_media_player2_player_method_info_open_uri_IN_ARG_pointers[] = -{ - &_org_mpris_media_player2_player_method_info_open_uri_IN_ARG_Uri, - NULL -}; - -static const _ExtendedGDBusMethodInfo _org_mpris_media_player2_player_method_info_open_uri = -{ - { - -1, - (gchar *) "OpenUri", - (GDBusArgInfo **) &_org_mpris_media_player2_player_method_info_open_uri_IN_ARG_pointers, - NULL, - NULL - }, - "handle-open-uri", - FALSE -}; - -static const _ExtendedGDBusMethodInfo * const _org_mpris_media_player2_player_method_info_pointers[] = -{ - &_org_mpris_media_player2_player_method_info_next, - &_org_mpris_media_player2_player_method_info_previous, - &_org_mpris_media_player2_player_method_info_pause, - &_org_mpris_media_player2_player_method_info_play_pause, - &_org_mpris_media_player2_player_method_info_stop, - &_org_mpris_media_player2_player_method_info_stop_after_current, - &_org_mpris_media_player2_player_method_info_play, - &_org_mpris_media_player2_player_method_info_seek, - &_org_mpris_media_player2_player_method_info_set_position, - &_org_mpris_media_player2_player_method_info_open_uri, - NULL -}; - -static const _ExtendedGDBusArgInfo _org_mpris_media_player2_player_signal_info_seeked_ARG_Position = -{ - { - -1, - (gchar *) "Position", - (gchar *) "x", - NULL - }, - FALSE -}; - -static const _ExtendedGDBusArgInfo * const _org_mpris_media_player2_player_signal_info_seeked_ARG_pointers[] = -{ - &_org_mpris_media_player2_player_signal_info_seeked_ARG_Position, - NULL -}; - -static const _ExtendedGDBusSignalInfo _org_mpris_media_player2_player_signal_info_seeked = -{ - { - -1, - (gchar *) "Seeked", - (GDBusArgInfo **) &_org_mpris_media_player2_player_signal_info_seeked_ARG_pointers, - NULL - }, - "seeked" -}; - -static const _ExtendedGDBusSignalInfo * const _org_mpris_media_player2_player_signal_info_pointers[] = -{ - &_org_mpris_media_player2_player_signal_info_seeked, - NULL -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_playback_status = -{ - { - -1, - (gchar *) "PlaybackStatus", - (gchar *) "s", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "playback-status", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_loop_status = -{ - { - -1, - (gchar *) "LoopStatus", - (gchar *) "s", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, - NULL - }, - "loop-status", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_rate = -{ - { - -1, - (gchar *) "Rate", - (gchar *) "d", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, - NULL - }, - "rate", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_shuffle = -{ - { - -1, - (gchar *) "Shuffle", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, - NULL - }, - "shuffle", - FALSE -}; - -static const GDBusAnnotationInfo _org_mpris_media_player2_player_property_metadata_annotation_info_0 = -{ - -1, - (gchar *) "org.qtproject.QtDBus.QtTypeName", - (gchar *) "QVariantMap", - NULL -}; - -static const GDBusAnnotationInfo * const _org_mpris_media_player2_player_property_metadata_annotation_info_pointers[] = -{ - &_org_mpris_media_player2_player_property_metadata_annotation_info_0, - NULL -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_metadata = -{ - { - -1, - (gchar *) "Metadata", - (gchar *) "a{sv}", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - (GDBusAnnotationInfo **) &_org_mpris_media_player2_player_property_metadata_annotation_info_pointers - }, - "metadata", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_volume = -{ - { - -1, - (gchar *) "Volume", - (gchar *) "d", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, - NULL - }, - "volume", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_position = -{ - { - -1, - (gchar *) "Position", - (gchar *) "x", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "position", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_minimum_rate = -{ - { - -1, - (gchar *) "MinimumRate", - (gchar *) "d", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "minimum-rate", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_maximum_rate = -{ - { - -1, - (gchar *) "MaximumRate", - (gchar *) "d", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "maximum-rate", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_can_go_next = -{ - { - -1, - (gchar *) "CanGoNext", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "can-go-next", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_can_go_previous = -{ - { - -1, - (gchar *) "CanGoPrevious", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "can-go-previous", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_can_play = -{ - { - -1, - (gchar *) "CanPlay", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "can-play", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_can_pause = -{ - { - -1, - (gchar *) "CanPause", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "can-pause", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_can_seek = -{ - { - -1, - (gchar *) "CanSeek", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "can-seek", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo _org_mpris_media_player2_player_property_info_can_control = -{ - { - -1, - (gchar *) "CanControl", - (gchar *) "b", - G_DBUS_PROPERTY_INFO_FLAGS_READABLE, - NULL - }, - "can-control", - FALSE -}; - -static const _ExtendedGDBusPropertyInfo * const _org_mpris_media_player2_player_property_info_pointers[] = -{ - &_org_mpris_media_player2_player_property_info_playback_status, - &_org_mpris_media_player2_player_property_info_loop_status, - &_org_mpris_media_player2_player_property_info_rate, - &_org_mpris_media_player2_player_property_info_shuffle, - &_org_mpris_media_player2_player_property_info_metadata, - &_org_mpris_media_player2_player_property_info_volume, - &_org_mpris_media_player2_player_property_info_position, - &_org_mpris_media_player2_player_property_info_minimum_rate, - &_org_mpris_media_player2_player_property_info_maximum_rate, - &_org_mpris_media_player2_player_property_info_can_go_next, - &_org_mpris_media_player2_player_property_info_can_go_previous, - &_org_mpris_media_player2_player_property_info_can_play, - &_org_mpris_media_player2_player_property_info_can_pause, - &_org_mpris_media_player2_player_property_info_can_seek, - &_org_mpris_media_player2_player_property_info_can_control, - NULL -}; - -static const _ExtendedGDBusInterfaceInfo _org_mpris_media_player2_player_interface_info = -{ - { - -1, - (gchar *) "org.mpris.MediaPlayer2.Player", - (GDBusMethodInfo **) &_org_mpris_media_player2_player_method_info_pointers, - (GDBusSignalInfo **) &_org_mpris_media_player2_player_signal_info_pointers, - (GDBusPropertyInfo **) &_org_mpris_media_player2_player_property_info_pointers, - NULL - }, - "org-mpris-media-player2-player", -}; - - -/** - * org_mpris_media_player2_player_interface_info: - * - * Gets a machine-readable description of the org.mpris.MediaPlayer2.Player D-Bus interface. - * - * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. - */ -GDBusInterfaceInfo * -org_mpris_media_player2_player_interface_info (void) -{ - return (GDBusInterfaceInfo *) &_org_mpris_media_player2_player_interface_info.parent_struct; -} - -/** - * org_mpris_media_player2_player_override_properties: - * @klass: The class structure for a #GObject-derived class. - * @property_id_begin: The property id to assign to the first overridden property. - * - * Overrides all #GObject properties in the #OrgMprisMediaPlayer2Player interface for a concrete class. - * The properties are overridden in the order they are defined. - * - * Returns: The last property id. - */ -guint -org_mpris_media_player2_player_override_properties (GObjectClass *klass, guint property_id_begin) -{ - g_object_class_override_property (klass, property_id_begin++, "playback-status"); - g_object_class_override_property (klass, property_id_begin++, "loop-status"); - g_object_class_override_property (klass, property_id_begin++, "rate"); - g_object_class_override_property (klass, property_id_begin++, "shuffle"); - g_object_class_override_property (klass, property_id_begin++, "metadata"); - g_object_class_override_property (klass, property_id_begin++, "volume"); - g_object_class_override_property (klass, property_id_begin++, "position"); - g_object_class_override_property (klass, property_id_begin++, "minimum-rate"); - g_object_class_override_property (klass, property_id_begin++, "maximum-rate"); - g_object_class_override_property (klass, property_id_begin++, "can-go-next"); - g_object_class_override_property (klass, property_id_begin++, "can-go-previous"); - g_object_class_override_property (klass, property_id_begin++, "can-play"); - g_object_class_override_property (klass, property_id_begin++, "can-pause"); - g_object_class_override_property (klass, property_id_begin++, "can-seek"); - g_object_class_override_property (klass, property_id_begin++, "can-control"); - return property_id_begin - 1; -} - - - -/** - * OrgMprisMediaPlayer2Player: - * - * Abstract interface type for the D-Bus interface org.mpris.MediaPlayer2.Player. - */ - -/** - * OrgMprisMediaPlayer2PlayerIface: - * @parent_iface: The parent interface. - * @handle_next: Handler for the #OrgMprisMediaPlayer2Player::handle-next signal. - * @handle_open_uri: Handler for the #OrgMprisMediaPlayer2Player::handle-open-uri signal. - * @handle_pause: Handler for the #OrgMprisMediaPlayer2Player::handle-pause signal. - * @handle_play: Handler for the #OrgMprisMediaPlayer2Player::handle-play signal. - * @handle_play_pause: Handler for the #OrgMprisMediaPlayer2Player::handle-play-pause signal. - * @handle_previous: Handler for the #OrgMprisMediaPlayer2Player::handle-previous signal. - * @handle_seek: Handler for the #OrgMprisMediaPlayer2Player::handle-seek signal. - * @handle_set_position: Handler for the #OrgMprisMediaPlayer2Player::handle-set-position signal. - * @handle_stop: Handler for the #OrgMprisMediaPlayer2Player::handle-stop signal. - * @handle_stop_after_current: Handler for the #OrgMprisMediaPlayer2Player::handle-stop-after-current signal. - * @get_can_control: Getter for the #OrgMprisMediaPlayer2Player:can-control property. - * @get_can_go_next: Getter for the #OrgMprisMediaPlayer2Player:can-go-next property. - * @get_can_go_previous: Getter for the #OrgMprisMediaPlayer2Player:can-go-previous property. - * @get_can_pause: Getter for the #OrgMprisMediaPlayer2Player:can-pause property. - * @get_can_play: Getter for the #OrgMprisMediaPlayer2Player:can-play property. - * @get_can_seek: Getter for the #OrgMprisMediaPlayer2Player:can-seek property. - * @get_loop_status: Getter for the #OrgMprisMediaPlayer2Player:loop-status property. - * @get_maximum_rate: Getter for the #OrgMprisMediaPlayer2Player:maximum-rate property. - * @get_metadata: Getter for the #OrgMprisMediaPlayer2Player:metadata property. - * @get_minimum_rate: Getter for the #OrgMprisMediaPlayer2Player:minimum-rate property. - * @get_playback_status: Getter for the #OrgMprisMediaPlayer2Player:playback-status property. - * @get_position: Getter for the #OrgMprisMediaPlayer2Player:position property. - * @get_rate: Getter for the #OrgMprisMediaPlayer2Player:rate property. - * @get_shuffle: Getter for the #OrgMprisMediaPlayer2Player:shuffle property. - * @get_volume: Getter for the #OrgMprisMediaPlayer2Player:volume property. - * @seeked: Handler for the #OrgMprisMediaPlayer2Player::seeked signal. - * - * Virtual table for the D-Bus interface org.mpris.MediaPlayer2.Player. - */ - -typedef OrgMprisMediaPlayer2PlayerIface OrgMprisMediaPlayer2PlayerInterface; -G_DEFINE_INTERFACE (OrgMprisMediaPlayer2Player, org_mpris_media_player2_player, G_TYPE_OBJECT); - -static void -org_mpris_media_player2_player_default_init (OrgMprisMediaPlayer2PlayerIface *iface) -{ - /* GObject signals for incoming D-Bus method calls: */ - /** - * OrgMprisMediaPlayer2Player::handle-next: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the Next() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_player_complete_next() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-next", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, handle_next), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * OrgMprisMediaPlayer2Player::handle-previous: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the Previous() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_player_complete_previous() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-previous", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, handle_previous), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * OrgMprisMediaPlayer2Player::handle-pause: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the Pause() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_player_complete_pause() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-pause", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, handle_pause), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * OrgMprisMediaPlayer2Player::handle-play-pause: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the PlayPause() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_player_complete_play_pause() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-play-pause", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, handle_play_pause), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * OrgMprisMediaPlayer2Player::handle-stop: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the Stop() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_player_complete_stop() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-stop", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, handle_stop), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * OrgMprisMediaPlayer2Player::handle-stop-after-current: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the StopAfterCurrent() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_player_complete_stop_after_current() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-stop-after-current", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, handle_stop_after_current), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * OrgMprisMediaPlayer2Player::handle-play: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: A #GDBusMethodInvocation. - * - * Signal emitted when a remote caller is invoking the Play() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_player_complete_play() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-play", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, handle_play), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 1, - G_TYPE_DBUS_METHOD_INVOCATION); - - /** - * OrgMprisMediaPlayer2Player::handle-seek: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: A #GDBusMethodInvocation. - * @arg_Offset: Argument passed by remote caller. - * - * Signal emitted when a remote caller is invoking the Seek() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_player_complete_seek() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-seek", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, handle_seek), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 2, - G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_INT64); - - /** - * OrgMprisMediaPlayer2Player::handle-set-position: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: A #GDBusMethodInvocation. - * @arg_TrackId: Argument passed by remote caller. - * @arg_Position: Argument passed by remote caller. - * - * Signal emitted when a remote caller is invoking the SetPosition() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_player_complete_set_position() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-set-position", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, handle_set_position), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 3, - G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_INT64); - - /** - * OrgMprisMediaPlayer2Player::handle-open-uri: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: A #GDBusMethodInvocation. - * @arg_Uri: Argument passed by remote caller. - * - * Signal emitted when a remote caller is invoking the OpenUri() D-Bus method. - * - * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_mpris_media_player2_player_complete_open_uri() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. - * - * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. - */ - g_signal_new ("handle-open-uri", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, handle_open_uri), - g_signal_accumulator_true_handled, - NULL, - g_cclosure_marshal_generic, - G_TYPE_BOOLEAN, - 2, - G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); - - /* GObject signals for received D-Bus signals: */ - /** - * OrgMprisMediaPlayer2Player::seeked: - * @object: A #OrgMprisMediaPlayer2Player. - * @arg_Position: Argument. - * - * On the client-side, this signal is emitted whenever the D-Bus signal "Seeked" is received. - * - * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. - */ - g_signal_new ("seeked", - G_TYPE_FROM_INTERFACE (iface), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (OrgMprisMediaPlayer2PlayerIface, seeked), - NULL, - NULL, - g_cclosure_marshal_generic, - G_TYPE_NONE, - 1, G_TYPE_INT64); - - /* GObject properties for D-Bus properties: */ - /** - * OrgMprisMediaPlayer2Player:playback-status: - * - * Represents the D-Bus property "PlaybackStatus". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_string ("playback-status", "PlaybackStatus", "PlaybackStatus", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:loop-status: - * - * Represents the D-Bus property "LoopStatus". - * - * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. - */ - g_object_interface_install_property (iface, - g_param_spec_string ("loop-status", "LoopStatus", "LoopStatus", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:rate: - * - * Represents the D-Bus property "Rate". - * - * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. - */ - g_object_interface_install_property (iface, - g_param_spec_double ("rate", "Rate", "Rate", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:shuffle: - * - * Represents the D-Bus property "Shuffle". - * - * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("shuffle", "Shuffle", "Shuffle", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:metadata: - * - * Represents the D-Bus property "Metadata". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_variant ("metadata", "Metadata", "Metadata", G_VARIANT_TYPE ("a{sv}"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:volume: - * - * Represents the D-Bus property "Volume". - * - * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. - */ - g_object_interface_install_property (iface, - g_param_spec_double ("volume", "Volume", "Volume", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:position: - * - * Represents the D-Bus property "Position". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_int64 ("position", "Position", "Position", G_MININT64, G_MAXINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:minimum-rate: - * - * Represents the D-Bus property "MinimumRate". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_double ("minimum-rate", "MinimumRate", "MinimumRate", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:maximum-rate: - * - * Represents the D-Bus property "MaximumRate". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_double ("maximum-rate", "MaximumRate", "MaximumRate", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:can-go-next: - * - * Represents the D-Bus property "CanGoNext". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("can-go-next", "CanGoNext", "CanGoNext", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:can-go-previous: - * - * Represents the D-Bus property "CanGoPrevious". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("can-go-previous", "CanGoPrevious", "CanGoPrevious", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:can-play: - * - * Represents the D-Bus property "CanPlay". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("can-play", "CanPlay", "CanPlay", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:can-pause: - * - * Represents the D-Bus property "CanPause". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("can-pause", "CanPause", "CanPause", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:can-seek: - * - * Represents the D-Bus property "CanSeek". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("can-seek", "CanSeek", "CanSeek", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * OrgMprisMediaPlayer2Player:can-control: - * - * Represents the D-Bus property "CanControl". - * - * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("can-control", "CanControl", "CanControl", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); -} - -/** - * org_mpris_media_player2_player_get_playback_status: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "PlaybackStatus" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use org_mpris_media_player2_player_dup_playback_status() if on another thread. - * - * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. - */ -const gchar * -org_mpris_media_player2_player_get_playback_status (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_playback_status (object); -} - -/** - * org_mpris_media_player2_player_dup_playback_status: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets a copy of the "PlaybackStatus" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). - */ -gchar * -org_mpris_media_player2_player_dup_playback_status (OrgMprisMediaPlayer2Player *object) -{ - gchar *value; - g_object_get (G_OBJECT (object), "playback-status", &value, NULL); - return value; -} - -/** - * org_mpris_media_player2_player_set_playback_status: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "PlaybackStatus" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_playback_status (OrgMprisMediaPlayer2Player *object, const gchar *value) -{ - g_object_set (G_OBJECT (object), "playback-status", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_loop_status: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "LoopStatus" D-Bus property. - * - * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. - * - * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use org_mpris_media_player2_player_dup_loop_status() if on another thread. - * - * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. - */ -const gchar * -org_mpris_media_player2_player_get_loop_status (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_loop_status (object); -} - -/** - * org_mpris_media_player2_player_dup_loop_status: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets a copy of the "LoopStatus" D-Bus property. - * - * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). - */ -gchar * -org_mpris_media_player2_player_dup_loop_status (OrgMprisMediaPlayer2Player *object) -{ - gchar *value; - g_object_get (G_OBJECT (object), "loop-status", &value, NULL); - return value; -} - -/** - * org_mpris_media_player2_player_set_loop_status: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "LoopStatus" D-Bus property to @value. - * - * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. - */ -void -org_mpris_media_player2_player_set_loop_status (OrgMprisMediaPlayer2Player *object, const gchar *value) -{ - g_object_set (G_OBJECT (object), "loop-status", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_rate: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "Rate" D-Bus property. - * - * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gdouble -org_mpris_media_player2_player_get_rate (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_rate (object); -} - -/** - * org_mpris_media_player2_player_set_rate: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "Rate" D-Bus property to @value. - * - * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. - */ -void -org_mpris_media_player2_player_set_rate (OrgMprisMediaPlayer2Player *object, gdouble value) -{ - g_object_set (G_OBJECT (object), "rate", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_shuffle: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "Shuffle" D-Bus property. - * - * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -org_mpris_media_player2_player_get_shuffle (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_shuffle (object); -} - -/** - * org_mpris_media_player2_player_set_shuffle: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "Shuffle" D-Bus property to @value. - * - * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. - */ -void -org_mpris_media_player2_player_set_shuffle (OrgMprisMediaPlayer2Player *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "shuffle", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_metadata: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "Metadata" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use org_mpris_media_player2_player_dup_metadata() if on another thread. - * - * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. - */ -GVariant * -org_mpris_media_player2_player_get_metadata (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_metadata (object); -} - -/** - * org_mpris_media_player2_player_dup_metadata: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets a copy of the "Metadata" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref(). - */ -GVariant * -org_mpris_media_player2_player_dup_metadata (OrgMprisMediaPlayer2Player *object) -{ - GVariant *value; - g_object_get (G_OBJECT (object), "metadata", &value, NULL); - return value; -} - -/** - * org_mpris_media_player2_player_set_metadata: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "Metadata" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_metadata (OrgMprisMediaPlayer2Player *object, GVariant *value) -{ - g_object_set (G_OBJECT (object), "metadata", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_volume: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "Volume" D-Bus property. - * - * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gdouble -org_mpris_media_player2_player_get_volume (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_volume (object); -} - -/** - * org_mpris_media_player2_player_set_volume: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "Volume" D-Bus property to @value. - * - * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. - */ -void -org_mpris_media_player2_player_set_volume (OrgMprisMediaPlayer2Player *object, gdouble value) -{ - g_object_set (G_OBJECT (object), "volume", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_position: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "Position" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gint64 -org_mpris_media_player2_player_get_position (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_position (object); -} - -/** - * org_mpris_media_player2_player_set_position: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "Position" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_position (OrgMprisMediaPlayer2Player *object, gint64 value) -{ - g_object_set (G_OBJECT (object), "position", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_minimum_rate: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "MinimumRate" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gdouble -org_mpris_media_player2_player_get_minimum_rate (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_minimum_rate (object); -} - -/** - * org_mpris_media_player2_player_set_minimum_rate: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "MinimumRate" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_minimum_rate (OrgMprisMediaPlayer2Player *object, gdouble value) -{ - g_object_set (G_OBJECT (object), "minimum-rate", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_maximum_rate: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "MaximumRate" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gdouble -org_mpris_media_player2_player_get_maximum_rate (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_maximum_rate (object); -} - -/** - * org_mpris_media_player2_player_set_maximum_rate: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "MaximumRate" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_maximum_rate (OrgMprisMediaPlayer2Player *object, gdouble value) -{ - g_object_set (G_OBJECT (object), "maximum-rate", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_can_go_next: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "CanGoNext" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -org_mpris_media_player2_player_get_can_go_next (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_can_go_next (object); -} - -/** - * org_mpris_media_player2_player_set_can_go_next: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "CanGoNext" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_can_go_next (OrgMprisMediaPlayer2Player *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "can-go-next", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_can_go_previous: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "CanGoPrevious" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -org_mpris_media_player2_player_get_can_go_previous (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_can_go_previous (object); -} - -/** - * org_mpris_media_player2_player_set_can_go_previous: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "CanGoPrevious" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_can_go_previous (OrgMprisMediaPlayer2Player *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "can-go-previous", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_can_play: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "CanPlay" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -org_mpris_media_player2_player_get_can_play (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_can_play (object); -} - -/** - * org_mpris_media_player2_player_set_can_play: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "CanPlay" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_can_play (OrgMprisMediaPlayer2Player *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "can-play", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_can_pause: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "CanPause" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -org_mpris_media_player2_player_get_can_pause (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_can_pause (object); -} - -/** - * org_mpris_media_player2_player_set_can_pause: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "CanPause" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_can_pause (OrgMprisMediaPlayer2Player *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "can-pause", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_can_seek: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "CanSeek" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -org_mpris_media_player2_player_get_can_seek (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_can_seek (object); -} - -/** - * org_mpris_media_player2_player_set_can_seek: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "CanSeek" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_can_seek (OrgMprisMediaPlayer2Player *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "can-seek", value, NULL); -} - -/** - * org_mpris_media_player2_player_get_can_control: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * - * Gets the value of the "CanControl" D-Bus property. - * - * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. - * - * Returns: The property value. - */ -gboolean -org_mpris_media_player2_player_get_can_control (OrgMprisMediaPlayer2Player *object) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER_GET_IFACE (object)->get_can_control (object); -} - -/** - * org_mpris_media_player2_player_set_can_control: (skip) - * @object: A #OrgMprisMediaPlayer2Player. - * @value: The value to set. - * - * Sets the "CanControl" D-Bus property to @value. - * - * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. - */ -void -org_mpris_media_player2_player_set_can_control (OrgMprisMediaPlayer2Player *object, gboolean value) -{ - g_object_set (G_OBJECT (object), "can-control", value, NULL); -} - -/** - * org_mpris_media_player2_player_emit_seeked: - * @object: A #OrgMprisMediaPlayer2Player. - * @arg_Position: Argument to pass with the signal. - * - * Emits the "Seeked" D-Bus signal. - */ -void -org_mpris_media_player2_player_emit_seeked ( - OrgMprisMediaPlayer2Player *object, - gint64 arg_Position) -{ - g_signal_emit_by_name (object, "seeked", arg_Position); -} - -/** - * org_mpris_media_player2_player_call_next: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Next() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_call_next_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_call_next_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_player_call_next ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Next", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_player_call_next_finish: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_call_next(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_player_call_next(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_next_finish ( - OrgMprisMediaPlayer2Player *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_next_sync: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Next() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_call_next() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_next_sync ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Next", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_previous: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Previous() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_call_previous_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_call_previous_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_player_call_previous ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Previous", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_player_call_previous_finish: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_call_previous(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_player_call_previous(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_previous_finish ( - OrgMprisMediaPlayer2Player *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_previous_sync: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Previous() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_call_previous() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_previous_sync ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Previous", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_pause: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Pause() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_call_pause_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_call_pause_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_player_call_pause ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Pause", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_player_call_pause_finish: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_call_pause(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_player_call_pause(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_pause_finish ( - OrgMprisMediaPlayer2Player *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_pause_sync: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Pause() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_call_pause() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_pause_sync ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Pause", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_play_pause: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the PlayPause() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_call_play_pause_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_call_play_pause_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_player_call_play_pause ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "PlayPause", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_player_call_play_pause_finish: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_call_play_pause(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_player_call_play_pause(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_play_pause_finish ( - OrgMprisMediaPlayer2Player *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_play_pause_sync: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the PlayPause() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_call_play_pause() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_play_pause_sync ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "PlayPause", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_stop: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Stop() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_call_stop_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_call_stop_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_player_call_stop ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Stop", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_player_call_stop_finish: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_call_stop(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_player_call_stop(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_stop_finish ( - OrgMprisMediaPlayer2Player *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_stop_sync: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Stop() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_call_stop() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_stop_sync ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Stop", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_stop_after_current: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the StopAfterCurrent() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_call_stop_after_current_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_call_stop_after_current_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_player_call_stop_after_current ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "StopAfterCurrent", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_player_call_stop_after_current_finish: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_call_stop_after_current(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_player_call_stop_after_current(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_stop_after_current_finish ( - OrgMprisMediaPlayer2Player *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_stop_after_current_sync: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the StopAfterCurrent() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_call_stop_after_current() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_stop_after_current_sync ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "StopAfterCurrent", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_play: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Play() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_call_play_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_call_play_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_player_call_play ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Play", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_player_call_play_finish: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_call_play(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_player_call_play(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_play_finish ( - OrgMprisMediaPlayer2Player *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_play_sync: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Play() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_call_play() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_play_sync ( - OrgMprisMediaPlayer2Player *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Play", - g_variant_new ("()"), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_seek: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @arg_Offset: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the Seek() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_call_seek_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_call_seek_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_player_call_seek ( - OrgMprisMediaPlayer2Player *proxy, - gint64 arg_Offset, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "Seek", - g_variant_new ("(x)", - arg_Offset), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_player_call_seek_finish: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_call_seek(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_player_call_seek(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_seek_finish ( - OrgMprisMediaPlayer2Player *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_seek_sync: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @arg_Offset: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the Seek() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_call_seek() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_seek_sync ( - OrgMprisMediaPlayer2Player *proxy, - gint64 arg_Offset, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "Seek", - g_variant_new ("(x)", - arg_Offset), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_set_position: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @arg_TrackId: Argument to pass with the method invocation. - * @arg_Position: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the SetPosition() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_call_set_position_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_call_set_position_sync() for the synchronous, blocking version of this method. - */ -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) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "SetPosition", - g_variant_new ("(ox)", - arg_TrackId, - arg_Position), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_player_call_set_position_finish: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_call_set_position(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_player_call_set_position(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_set_position_finish ( - OrgMprisMediaPlayer2Player *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_set_position_sync: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @arg_TrackId: Argument to pass with the method invocation. - * @arg_Position: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the SetPosition() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_call_set_position() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_set_position_sync ( - OrgMprisMediaPlayer2Player *proxy, - const gchar *arg_TrackId, - gint64 arg_Position, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "SetPosition", - g_variant_new ("(ox)", - arg_TrackId, - arg_Position), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_open_uri: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @arg_Uri: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. - * @user_data: User data to pass to @callback. - * - * Asynchronously invokes the OpenUri() D-Bus method on @proxy. - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_call_open_uri_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_call_open_uri_sync() for the synchronous, blocking version of this method. - */ -void -org_mpris_media_player2_player_call_open_uri ( - OrgMprisMediaPlayer2Player *proxy, - const gchar *arg_Uri, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_dbus_proxy_call (G_DBUS_PROXY (proxy), - "OpenUri", - g_variant_new ("(s)", - arg_Uri), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - callback, - user_data); -} - -/** - * org_mpris_media_player2_player_call_open_uri_finish: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_call_open_uri(). - * @error: Return location for error or %NULL. - * - * Finishes an operation started with org_mpris_media_player2_player_call_open_uri(). - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_open_uri_finish ( - OrgMprisMediaPlayer2Player *proxy, - GAsyncResult *res, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_call_open_uri_sync: - * @proxy: A #OrgMprisMediaPlayer2PlayerProxy. - * @arg_Uri: Argument to pass with the method invocation. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Synchronously invokes the OpenUri() D-Bus method on @proxy. The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_call_open_uri() for the asynchronous version of this method. - * - * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. - */ -gboolean -org_mpris_media_player2_player_call_open_uri_sync ( - OrgMprisMediaPlayer2Player *proxy, - const gchar *arg_Uri, - GCancellable *cancellable, - GError **error) -{ - GVariant *_ret; - _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), - "OpenUri", - g_variant_new ("(s)", - arg_Uri), - G_DBUS_CALL_FLAGS_NONE, - -1, - cancellable, - error); - if (_ret == NULL) - goto _out; - g_variant_get (_ret, - "()"); - g_variant_unref (_ret); -_out: - return _ret != NULL; -} - -/** - * org_mpris_media_player2_player_complete_next: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Next() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_player_complete_next ( - OrgMprisMediaPlayer2Player *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_mpris_media_player2_player_complete_previous: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Previous() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_player_complete_previous ( - OrgMprisMediaPlayer2Player *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_mpris_media_player2_player_complete_pause: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Pause() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_player_complete_pause ( - OrgMprisMediaPlayer2Player *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_mpris_media_player2_player_complete_play_pause: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the PlayPause() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_player_complete_play_pause ( - OrgMprisMediaPlayer2Player *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_mpris_media_player2_player_complete_stop: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Stop() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_player_complete_stop ( - OrgMprisMediaPlayer2Player *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_mpris_media_player2_player_complete_stop_after_current: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the StopAfterCurrent() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_player_complete_stop_after_current ( - OrgMprisMediaPlayer2Player *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_mpris_media_player2_player_complete_play: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Play() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_player_complete_play ( - OrgMprisMediaPlayer2Player *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_mpris_media_player2_player_complete_seek: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the Seek() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_player_complete_seek ( - OrgMprisMediaPlayer2Player *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_mpris_media_player2_player_complete_set_position: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the SetPosition() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_player_complete_set_position ( - OrgMprisMediaPlayer2Player *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/** - * org_mpris_media_player2_player_complete_open_uri: - * @object: A #OrgMprisMediaPlayer2Player. - * @invocation: (transfer full): A #GDBusMethodInvocation. - * - * Helper function used in service implementations to finish handling invocations of the OpenUri() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. - * - * This method will free @invocation, you cannot use it afterwards. - */ -void -org_mpris_media_player2_player_complete_open_uri ( - OrgMprisMediaPlayer2Player *object, - GDBusMethodInvocation *invocation) -{ - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("()")); -} - -/* ------------------------------------------------------------------------ */ - -/** - * OrgMprisMediaPlayer2PlayerProxy: - * - * The #OrgMprisMediaPlayer2PlayerProxy structure contains only private data and should only be accessed using the provided API. - */ - -/** - * OrgMprisMediaPlayer2PlayerProxyClass: - * @parent_class: The parent class. - * - * Class structure for #OrgMprisMediaPlayer2PlayerProxy. - */ - -struct _OrgMprisMediaPlayer2PlayerProxyPrivate -{ - GData *qdata; -}; - -static void org_mpris_media_player2_player_proxy_iface_init (OrgMprisMediaPlayer2PlayerIface *iface); - -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (OrgMprisMediaPlayer2PlayerProxy, org_mpris_media_player2_player_proxy, G_TYPE_DBUS_PROXY, - G_ADD_PRIVATE (OrgMprisMediaPlayer2PlayerProxy) - G_IMPLEMENT_INTERFACE (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER, org_mpris_media_player2_player_proxy_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (OrgMprisMediaPlayer2PlayerProxy, org_mpris_media_player2_player_proxy, G_TYPE_DBUS_PROXY, - G_IMPLEMENT_INTERFACE (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER, org_mpris_media_player2_player_proxy_iface_init)); - -#endif -static void -org_mpris_media_player2_player_proxy_finalize (GObject *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - g_datalist_clear (&proxy->priv->qdata); - G_OBJECT_CLASS (org_mpris_media_player2_player_proxy_parent_class)->finalize (object); -} - -static void -org_mpris_media_player2_player_proxy_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ - const _ExtendedGDBusPropertyInfo *info; - GVariant *variant; - g_assert (prop_id != 0 && prop_id - 1 < 15); - info = _org_mpris_media_player2_player_property_info_pointers[prop_id - 1]; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); - if (info->use_gvariant) - { - g_value_set_variant (value, variant); - } - else - { - if (variant != NULL) - g_dbus_gvariant_to_gvalue (variant, value); - } - if (variant != NULL) - g_variant_unref (variant); -} - -static void -org_mpris_media_player2_player_proxy_set_property_cb (GDBusProxy *proxy, - GAsyncResult *res, - gpointer user_data) -{ - const _ExtendedGDBusPropertyInfo *info = user_data; - GError *error; - GVariant *_ret; - error = NULL; - _ret = g_dbus_proxy_call_finish (proxy, res, &error); - if (!_ret) - { - g_warning ("Error setting property '%s' on interface org.mpris.MediaPlayer2.Player: %s (%s, %d)", - info->parent_struct.name, - error->message, g_quark_to_string (error->domain), error->code); - g_error_free (error); - } - else - { - g_variant_unref (_ret); - } -} - -static void -org_mpris_media_player2_player_proxy_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ - const _ExtendedGDBusPropertyInfo *info; - GVariant *variant; - g_assert (prop_id != 0 && prop_id - 1 < 15); - info = _org_mpris_media_player2_player_property_info_pointers[prop_id - 1]; - variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); - g_dbus_proxy_call (G_DBUS_PROXY (object), - "org.freedesktop.DBus.Properties.Set", - g_variant_new ("(ssv)", "org.mpris.MediaPlayer2.Player", info->parent_struct.name, variant), - G_DBUS_CALL_FLAGS_NONE, - -1, - NULL, (GAsyncReadyCallback) org_mpris_media_player2_player_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); - g_variant_unref (variant); -} - -static void -org_mpris_media_player2_player_proxy_g_signal (GDBusProxy *proxy, - const gchar *sender_name G_GNUC_UNUSED, - const gchar *signal_name, - GVariant *parameters) -{ - _ExtendedGDBusSignalInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - guint num_params; - guint n; - guint signal_id; - info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_mpris_media_player2_player_interface_info.parent_struct, signal_name); - if (info == NULL) - return; - num_params = g_variant_n_children (parameters); - paramv = g_new0 (GValue, num_params + 1); - g_value_init (¶mv[0], TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER); - g_value_set_object (¶mv[0], proxy); - g_variant_iter_init (&iter, parameters); - n = 1; - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER); - g_signal_emitv (paramv, signal_id, 0, NULL); - for (n = 0; n < num_params + 1; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static void -org_mpris_media_player2_player_proxy_g_properties_changed (GDBusProxy *_proxy, - GVariant *changed_properties, - const gchar *const *invalidated_properties) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (_proxy); - guint n; - const gchar *key; - GVariantIter *iter; - _ExtendedGDBusPropertyInfo *info; - g_variant_get (changed_properties, "a{sv}", &iter); - while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_mpris_media_player2_player_interface_info.parent_struct, key); - g_datalist_remove_data (&proxy->priv->qdata, key); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } - g_variant_iter_free (iter); - for (n = 0; invalidated_properties[n] != NULL; n++) - { - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_mpris_media_player2_player_interface_info.parent_struct, invalidated_properties[n]); - g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); - if (info != NULL) - g_object_notify (G_OBJECT (proxy), info->hyphen_name); - } -} - -static const gchar * -org_mpris_media_player2_player_proxy_get_playback_status (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - const gchar *value = NULL; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "PlaybackStatus"); - if (variant != NULL) - { - value = g_variant_get_string (variant, NULL); - g_variant_unref (variant); - } - return value; -} - -static const gchar * -org_mpris_media_player2_player_proxy_get_loop_status (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - const gchar *value = NULL; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "LoopStatus"); - if (variant != NULL) - { - value = g_variant_get_string (variant, NULL); - g_variant_unref (variant); - } - return value; -} - -static gdouble -org_mpris_media_player2_player_proxy_get_rate (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gdouble value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Rate"); - if (variant != NULL) - { - value = g_variant_get_double (variant); - g_variant_unref (variant); - } - return value; -} - -static gboolean -org_mpris_media_player2_player_proxy_get_shuffle (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Shuffle"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static GVariant * -org_mpris_media_player2_player_proxy_get_metadata (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - GVariant *value = NULL; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Metadata"); - value = variant; - if (variant != NULL) - g_variant_unref (variant); - return value; -} - -static gdouble -org_mpris_media_player2_player_proxy_get_volume (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gdouble value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Volume"); - if (variant != NULL) - { - value = g_variant_get_double (variant); - g_variant_unref (variant); - } - return value; -} - -static gint64 -org_mpris_media_player2_player_proxy_get_position (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gint64 value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Position"); - if (variant != NULL) - { - value = g_variant_get_int64 (variant); - g_variant_unref (variant); - } - return value; -} - -static gdouble -org_mpris_media_player2_player_proxy_get_minimum_rate (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gdouble value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "MinimumRate"); - if (variant != NULL) - { - value = g_variant_get_double (variant); - g_variant_unref (variant); - } - return value; -} - -static gdouble -org_mpris_media_player2_player_proxy_get_maximum_rate (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gdouble value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "MaximumRate"); - if (variant != NULL) - { - value = g_variant_get_double (variant); - g_variant_unref (variant); - } - return value; -} - -static gboolean -org_mpris_media_player2_player_proxy_get_can_go_next (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "CanGoNext"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static gboolean -org_mpris_media_player2_player_proxy_get_can_go_previous (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "CanGoPrevious"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static gboolean -org_mpris_media_player2_player_proxy_get_can_play (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "CanPlay"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static gboolean -org_mpris_media_player2_player_proxy_get_can_pause (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "CanPause"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static gboolean -org_mpris_media_player2_player_proxy_get_can_seek (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "CanSeek"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static gboolean -org_mpris_media_player2_player_proxy_get_can_control (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerProxy *proxy = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY (object); - GVariant *variant; - gboolean value = 0; - variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "CanControl"); - if (variant != NULL) - { - value = g_variant_get_boolean (variant); - g_variant_unref (variant); - } - return value; -} - -static void -org_mpris_media_player2_player_proxy_init (OrgMprisMediaPlayer2PlayerProxy *proxy) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - proxy->priv = org_mpris_media_player2_player_proxy_get_instance_private (proxy); -#else - proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY, OrgMprisMediaPlayer2PlayerProxyPrivate); -#endif - - g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_mpris_media_player2_player_interface_info ()); -} - -static void -org_mpris_media_player2_player_proxy_class_init (OrgMprisMediaPlayer2PlayerProxyClass *klass) -{ - GObjectClass *gobject_class; - GDBusProxyClass *proxy_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = org_mpris_media_player2_player_proxy_finalize; - gobject_class->get_property = org_mpris_media_player2_player_proxy_get_property; - gobject_class->set_property = org_mpris_media_player2_player_proxy_set_property; - - proxy_class = G_DBUS_PROXY_CLASS (klass); - proxy_class->g_signal = org_mpris_media_player2_player_proxy_g_signal; - proxy_class->g_properties_changed = org_mpris_media_player2_player_proxy_g_properties_changed; - - org_mpris_media_player2_player_override_properties (gobject_class, 1); - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (OrgMprisMediaPlayer2PlayerProxyPrivate)); -#endif -} - -static void -org_mpris_media_player2_player_proxy_iface_init (OrgMprisMediaPlayer2PlayerIface *iface) -{ - iface->get_playback_status = org_mpris_media_player2_player_proxy_get_playback_status; - iface->get_loop_status = org_mpris_media_player2_player_proxy_get_loop_status; - iface->get_rate = org_mpris_media_player2_player_proxy_get_rate; - iface->get_shuffle = org_mpris_media_player2_player_proxy_get_shuffle; - iface->get_metadata = org_mpris_media_player2_player_proxy_get_metadata; - iface->get_volume = org_mpris_media_player2_player_proxy_get_volume; - iface->get_position = org_mpris_media_player2_player_proxy_get_position; - iface->get_minimum_rate = org_mpris_media_player2_player_proxy_get_minimum_rate; - iface->get_maximum_rate = org_mpris_media_player2_player_proxy_get_maximum_rate; - iface->get_can_go_next = org_mpris_media_player2_player_proxy_get_can_go_next; - iface->get_can_go_previous = org_mpris_media_player2_player_proxy_get_can_go_previous; - iface->get_can_play = org_mpris_media_player2_player_proxy_get_can_play; - iface->get_can_pause = org_mpris_media_player2_player_proxy_get_can_pause; - iface->get_can_seek = org_mpris_media_player2_player_proxy_get_can_seek; - iface->get_can_control = org_mpris_media_player2_player_proxy_get_can_control; -} - -/** - * org_mpris_media_player2_player_proxy_new: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Asynchronously creates a proxy for the D-Bus interface org.mpris.MediaPlayer2.Player. See g_dbus_proxy_new() for more details. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_proxy_new_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_proxy_new_sync() for the synchronous, blocking version of this constructor. - */ -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) -{ - g_async_initable_new_async (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.mpris.MediaPlayer2.Player", NULL); -} - -/** - * org_mpris_media_player2_player_proxy_new_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_proxy_new(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with org_mpris_media_player2_player_proxy_new(). - * - * Returns: (transfer full) (type OrgMprisMediaPlayer2PlayerProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgMprisMediaPlayer2Player * -org_mpris_media_player2_player_proxy_new_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER (ret); - else - return NULL; -} - -/** - * org_mpris_media_player2_player_proxy_new_sync: - * @connection: A #GDBusConnection. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Synchronously creates a proxy for the D-Bus interface org.mpris.MediaPlayer2.Player. See g_dbus_proxy_new_sync() for more details. - * - * The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_proxy_new() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type OrgMprisMediaPlayer2PlayerProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgMprisMediaPlayer2Player * -org_mpris_media_player2_player_proxy_new_sync ( - GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *ret; - ret = g_initable_new (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.mpris.MediaPlayer2.Player", NULL); - if (ret != NULL) - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER (ret); - else - return NULL; -} - - -/** - * org_mpris_media_player2_player_proxy_new_for_bus: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied. - * @user_data: User data to pass to @callback. - * - * Like org_mpris_media_player2_player_proxy_new() but takes a #GBusType instead of a #GDBusConnection. - * - * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. - * You can then call org_mpris_media_player2_player_proxy_new_for_bus_finish() to get the result of the operation. - * - * See org_mpris_media_player2_player_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. - */ -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) -{ - g_async_initable_new_async (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.mpris.MediaPlayer2.Player", NULL); -} - -/** - * org_mpris_media_player2_player_proxy_new_for_bus_finish: - * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_mpris_media_player2_player_proxy_new_for_bus(). - * @error: Return location for error or %NULL - * - * Finishes an operation started with org_mpris_media_player2_player_proxy_new_for_bus(). - * - * Returns: (transfer full) (type OrgMprisMediaPlayer2PlayerProxy): The constructed proxy object or %NULL if @error is set. - */ -OrgMprisMediaPlayer2Player * -org_mpris_media_player2_player_proxy_new_for_bus_finish ( - GAsyncResult *res, - GError **error) -{ - GObject *ret; - GObject *source_object; - source_object = g_async_result_get_source_object (res); - ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); - g_object_unref (source_object); - if (ret != NULL) - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER (ret); - else - return NULL; -} - -/** - * org_mpris_media_player2_player_proxy_new_for_bus_sync: - * @bus_type: A #GBusType. - * @flags: Flags from the #GDBusProxyFlags enumeration. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: (allow-none): A #GCancellable or %NULL. - * @error: Return location for error or %NULL - * - * Like org_mpris_media_player2_player_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. - * - * The calling thread is blocked until a reply is received. - * - * See org_mpris_media_player2_player_proxy_new_for_bus() for the asynchronous version of this constructor. - * - * Returns: (transfer full) (type OrgMprisMediaPlayer2PlayerProxy): The constructed proxy object or %NULL if @error is set. - */ -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) -{ - GInitable *ret; - ret = g_initable_new (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.mpris.MediaPlayer2.Player", NULL); - if (ret != NULL) - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER (ret); - else - return NULL; -} - - -/* ------------------------------------------------------------------------ */ - -/** - * OrgMprisMediaPlayer2PlayerSkeleton: - * - * The #OrgMprisMediaPlayer2PlayerSkeleton structure contains only private data and should only be accessed using the provided API. - */ - -/** - * OrgMprisMediaPlayer2PlayerSkeletonClass: - * @parent_class: The parent class. - * - * Class structure for #OrgMprisMediaPlayer2PlayerSkeleton. - */ - -struct _OrgMprisMediaPlayer2PlayerSkeletonPrivate -{ - GValue *properties; - GList *changed_properties; - GSource *changed_properties_idle_source; - GMainContext *context; - GMutex lock; -}; - -static void -_org_mpris_media_player2_player_skeleton_handle_method_call ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer user_data) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (user_data); - _ExtendedGDBusMethodInfo *info; - GVariantIter iter; - GVariant *child; - GValue *paramv; - guint num_params; - guint num_extra; - guint n; - guint signal_id; - GValue return_value = G_VALUE_INIT; - info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); - g_assert (info != NULL); - num_params = g_variant_n_children (parameters); - num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); - n = 0; - g_value_init (¶mv[n], TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER); - g_value_set_object (¶mv[n++], skeleton); - g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); - g_value_set_object (¶mv[n++], invocation); - if (info->pass_fdlist) - { -#ifdef G_OS_UNIX - g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); - g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); -#else - g_assert_not_reached (); -#endif - } - g_variant_iter_init (&iter, parameters); - while ((child = g_variant_iter_next_value (&iter)) != NULL) - { - _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; - if (arg_info->use_gvariant) - { - g_value_init (¶mv[n], G_TYPE_VARIANT); - g_value_set_variant (¶mv[n], child); - n++; - } - else - g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); - g_variant_unref (child); - } - signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER); - g_value_init (&return_value, G_TYPE_BOOLEAN); - g_signal_emitv (paramv, signal_id, 0, &return_value); - if (!g_value_get_boolean (&return_value)) - g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); - g_value_unset (&return_value); - for (n = 0; n < num_params + num_extra; n++) - g_value_unset (¶mv[n]); - g_free (paramv); -} - -static GVariant * -_org_mpris_media_player2_player_skeleton_handle_get_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GError **error, - gpointer user_data) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - GVariant *ret; - ret = NULL; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_mpris_media_player2_player_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - g_value_init (&value, pspec->value_type); - g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); - ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); - g_value_unset (&value); - } - return ret; -} - -static gboolean -_org_mpris_media_player2_player_skeleton_handle_set_property ( - GDBusConnection *connection G_GNUC_UNUSED, - const gchar *sender G_GNUC_UNUSED, - const gchar *object_path G_GNUC_UNUSED, - const gchar *interface_name G_GNUC_UNUSED, - const gchar *property_name, - GVariant *variant, - GError **error, - gpointer user_data) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (user_data); - GValue value = G_VALUE_INIT; - GParamSpec *pspec; - _ExtendedGDBusPropertyInfo *info; - gboolean ret; - ret = FALSE; - info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_mpris_media_player2_player_interface_info.parent_struct, property_name); - g_assert (info != NULL); - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); - if (pspec == NULL) - { - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); - } - else - { - if (info->use_gvariant) - g_value_set_variant (&value, variant); - else - g_dbus_gvariant_to_gvalue (variant, &value); - g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); - g_value_unset (&value); - ret = TRUE; - } - return ret; -} - -static const GDBusInterfaceVTable _org_mpris_media_player2_player_skeleton_vtable = -{ - _org_mpris_media_player2_player_skeleton_handle_method_call, - _org_mpris_media_player2_player_skeleton_handle_get_property, - _org_mpris_media_player2_player_skeleton_handle_set_property, - {NULL} -}; - -static GDBusInterfaceInfo * -org_mpris_media_player2_player_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return org_mpris_media_player2_player_interface_info (); -} - -static GDBusInterfaceVTable * -org_mpris_media_player2_player_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) -{ - return (GDBusInterfaceVTable *) &_org_mpris_media_player2_player_skeleton_vtable; -} - -static GVariant * -org_mpris_media_player2_player_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (_skeleton); - - GVariantBuilder builder; - guint n; - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); - if (_org_mpris_media_player2_player_interface_info.parent_struct.properties == NULL) - goto out; - for (n = 0; _org_mpris_media_player2_player_interface_info.parent_struct.properties[n] != NULL; n++) - { - GDBusPropertyInfo *info = _org_mpris_media_player2_player_interface_info.parent_struct.properties[n]; - if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) - { - GVariant *value; - value = _org_mpris_media_player2_player_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.mpris.MediaPlayer2.Player", info->name, NULL, skeleton); - if (value != NULL) - { - g_variant_take_ref (value); - g_variant_builder_add (&builder, "{sv}", info->name, value); - g_variant_unref (value); - } - } - } -out: - return g_variant_builder_end (&builder); -} - -static gboolean _org_mpris_media_player2_player_emit_changed (gpointer user_data); - -static void -org_mpris_media_player2_player_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (_skeleton); - gboolean emit_changed = FALSE; - - g_mutex_lock (&skeleton->priv->lock); - if (skeleton->priv->changed_properties_idle_source != NULL) - { - g_source_destroy (skeleton->priv->changed_properties_idle_source); - skeleton->priv->changed_properties_idle_source = NULL; - emit_changed = TRUE; - } - g_mutex_unlock (&skeleton->priv->lock); - - if (emit_changed) - _org_mpris_media_player2_player_emit_changed (skeleton); -} - -static void -_org_mpris_media_player2_player_on_signal_seeked ( - OrgMprisMediaPlayer2Player *object, - gint64 arg_Position) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - - GList *connections, *l; - GVariant *signal_variant; - connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); - - signal_variant = g_variant_ref_sink (g_variant_new ("(x)", - arg_Position)); - for (l = connections; l != NULL; l = l->next) - { - GDBusConnection *connection = l->data; - g_dbus_connection_emit_signal (connection, - NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.mpris.MediaPlayer2.Player", "Seeked", - signal_variant, NULL); - } - g_variant_unref (signal_variant); - g_list_free_full (connections, g_object_unref); -} - -static void org_mpris_media_player2_player_skeleton_iface_init (OrgMprisMediaPlayer2PlayerIface *iface); -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 -G_DEFINE_TYPE_WITH_CODE (OrgMprisMediaPlayer2PlayerSkeleton, org_mpris_media_player2_player_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_ADD_PRIVATE (OrgMprisMediaPlayer2PlayerSkeleton) - G_IMPLEMENT_INTERFACE (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER, org_mpris_media_player2_player_skeleton_iface_init)); - -#else -G_DEFINE_TYPE_WITH_CODE (OrgMprisMediaPlayer2PlayerSkeleton, org_mpris_media_player2_player_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, - G_IMPLEMENT_INTERFACE (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER, org_mpris_media_player2_player_skeleton_iface_init)); - -#endif -static void -org_mpris_media_player2_player_skeleton_finalize (GObject *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - guint n; - for (n = 0; n < 15; n++) - g_value_unset (&skeleton->priv->properties[n]); - g_free (skeleton->priv->properties); - g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); - if (skeleton->priv->changed_properties_idle_source != NULL) - g_source_destroy (skeleton->priv->changed_properties_idle_source); - g_main_context_unref (skeleton->priv->context); - g_mutex_clear (&skeleton->priv->lock); - G_OBJECT_CLASS (org_mpris_media_player2_player_skeleton_parent_class)->finalize (object); -} - -static void -org_mpris_media_player2_player_skeleton_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec G_GNUC_UNUSED) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - g_assert (prop_id != 0 && prop_id - 1 < 15); - g_mutex_lock (&skeleton->priv->lock); - g_value_copy (&skeleton->priv->properties[prop_id - 1], value); - g_mutex_unlock (&skeleton->priv->lock); -} - -static gboolean -_org_mpris_media_player2_player_emit_changed (gpointer user_data) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (user_data); - GList *l; - GVariantBuilder builder; - GVariantBuilder invalidated_builder; - guint num_changes; - - g_mutex_lock (&skeleton->priv->lock); - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); - g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); - for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) - { - ChangedProperty *cp = l->data; - GVariant *variant; - const GValue *cur_value; - - cur_value = &skeleton->priv->properties[cp->prop_id - 1]; - if (!_g_value_equal (cur_value, &cp->orig_value)) - { - variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); - g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); - g_variant_unref (variant); - num_changes++; - } - } - if (num_changes > 0) - { - GList *connections, *ll; - GVariant *signal_variant; - signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.mpris.MediaPlayer2.Player", - &builder, &invalidated_builder)); - connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); - for (ll = connections; ll != NULL; ll = ll->next) - { - GDBusConnection *connection = ll->data; - - g_dbus_connection_emit_signal (connection, - NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), - "org.freedesktop.DBus.Properties", - "PropertiesChanged", - signal_variant, - NULL); - } - g_variant_unref (signal_variant); - g_list_free_full (connections, g_object_unref); - } - else - { - g_variant_builder_clear (&builder); - g_variant_builder_clear (&invalidated_builder); - } - g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); - skeleton->priv->changed_properties = NULL; - skeleton->priv->changed_properties_idle_source = NULL; - g_mutex_unlock (&skeleton->priv->lock); - return FALSE; -} - -static void -_org_mpris_media_player2_player_schedule_emit_changed (OrgMprisMediaPlayer2PlayerSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) -{ - ChangedProperty *cp; - GList *l; - cp = NULL; - for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) - { - ChangedProperty *i_cp = l->data; - if (i_cp->info == info) - { - cp = i_cp; - break; - } - } - if (cp == NULL) - { - cp = g_new0 (ChangedProperty, 1); - cp->prop_id = prop_id; - cp->info = info; - skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); - g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); - g_value_copy (orig_value, &cp->orig_value); - } -} - -static void -org_mpris_media_player2_player_skeleton_notify (GObject *object, - GParamSpec *pspec G_GNUC_UNUSED) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - g_mutex_lock (&skeleton->priv->lock); - if (skeleton->priv->changed_properties != NULL && - skeleton->priv->changed_properties_idle_source == NULL) - { - skeleton->priv->changed_properties_idle_source = g_idle_source_new (); - g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); - g_source_set_callback (skeleton->priv->changed_properties_idle_source, _org_mpris_media_player2_player_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _org_mpris_media_player2_player_emit_changed"); - g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); - g_source_unref (skeleton->priv->changed_properties_idle_source); - } - g_mutex_unlock (&skeleton->priv->lock); -} - -static void -org_mpris_media_player2_player_skeleton_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - g_assert (prop_id != 0 && prop_id - 1 < 15); - g_mutex_lock (&skeleton->priv->lock); - g_object_freeze_notify (object); - if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) - { - if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) - _org_mpris_media_player2_player_schedule_emit_changed (skeleton, _org_mpris_media_player2_player_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); - g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); - g_object_notify_by_pspec (object, pspec); - } - g_mutex_unlock (&skeleton->priv->lock); - g_object_thaw_notify (object); -} - -static void -org_mpris_media_player2_player_skeleton_init (OrgMprisMediaPlayer2PlayerSkeleton *skeleton) -{ -#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 - skeleton->priv = org_mpris_media_player2_player_skeleton_get_instance_private (skeleton); -#else - skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON, OrgMprisMediaPlayer2PlayerSkeletonPrivate); -#endif - - g_mutex_init (&skeleton->priv->lock); - skeleton->priv->context = g_main_context_ref_thread_default (); - skeleton->priv->properties = g_new0 (GValue, 15); - g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING); - g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING); - g_value_init (&skeleton->priv->properties[2], G_TYPE_DOUBLE); - g_value_init (&skeleton->priv->properties[3], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[4], G_TYPE_VARIANT); - g_value_init (&skeleton->priv->properties[5], G_TYPE_DOUBLE); - g_value_init (&skeleton->priv->properties[6], G_TYPE_INT64); - g_value_init (&skeleton->priv->properties[7], G_TYPE_DOUBLE); - g_value_init (&skeleton->priv->properties[8], G_TYPE_DOUBLE); - g_value_init (&skeleton->priv->properties[9], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[10], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[11], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[12], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[13], G_TYPE_BOOLEAN); - g_value_init (&skeleton->priv->properties[14], G_TYPE_BOOLEAN); -} - -static const gchar * -org_mpris_media_player2_player_skeleton_get_playback_status (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - const gchar *value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_string (&(skeleton->priv->properties[0])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static const gchar * -org_mpris_media_player2_player_skeleton_get_loop_status (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - const gchar *value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_string (&(skeleton->priv->properties[1])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gdouble -org_mpris_media_player2_player_skeleton_get_rate (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gdouble value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_double (&(skeleton->priv->properties[2])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -org_mpris_media_player2_player_skeleton_get_shuffle (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[3])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static GVariant * -org_mpris_media_player2_player_skeleton_get_metadata (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - GVariant *value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_variant (&(skeleton->priv->properties[4])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gdouble -org_mpris_media_player2_player_skeleton_get_volume (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gdouble value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_double (&(skeleton->priv->properties[5])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gint64 -org_mpris_media_player2_player_skeleton_get_position (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gint64 value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_int64 (&(skeleton->priv->properties[6])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gdouble -org_mpris_media_player2_player_skeleton_get_minimum_rate (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gdouble value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_double (&(skeleton->priv->properties[7])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gdouble -org_mpris_media_player2_player_skeleton_get_maximum_rate (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gdouble value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_double (&(skeleton->priv->properties[8])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -org_mpris_media_player2_player_skeleton_get_can_go_next (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[9])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -org_mpris_media_player2_player_skeleton_get_can_go_previous (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[10])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -org_mpris_media_player2_player_skeleton_get_can_play (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[11])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -org_mpris_media_player2_player_skeleton_get_can_pause (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[12])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -org_mpris_media_player2_player_skeleton_get_can_seek (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[13])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static gboolean -org_mpris_media_player2_player_skeleton_get_can_control (OrgMprisMediaPlayer2Player *object) -{ - OrgMprisMediaPlayer2PlayerSkeleton *skeleton = ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON (object); - gboolean value; - g_mutex_lock (&skeleton->priv->lock); - value = g_value_get_boolean (&(skeleton->priv->properties[14])); - g_mutex_unlock (&skeleton->priv->lock); - return value; -} - -static void -org_mpris_media_player2_player_skeleton_class_init (OrgMprisMediaPlayer2PlayerSkeletonClass *klass) -{ - GObjectClass *gobject_class; - GDBusInterfaceSkeletonClass *skeleton_class; - - gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = org_mpris_media_player2_player_skeleton_finalize; - gobject_class->get_property = org_mpris_media_player2_player_skeleton_get_property; - gobject_class->set_property = org_mpris_media_player2_player_skeleton_set_property; - gobject_class->notify = org_mpris_media_player2_player_skeleton_notify; - - - org_mpris_media_player2_player_override_properties (gobject_class, 1); - - skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); - skeleton_class->get_info = org_mpris_media_player2_player_skeleton_dbus_interface_get_info; - skeleton_class->get_properties = org_mpris_media_player2_player_skeleton_dbus_interface_get_properties; - skeleton_class->flush = org_mpris_media_player2_player_skeleton_dbus_interface_flush; - skeleton_class->get_vtable = org_mpris_media_player2_player_skeleton_dbus_interface_get_vtable; - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 - g_type_class_add_private (klass, sizeof (OrgMprisMediaPlayer2PlayerSkeletonPrivate)); -#endif -} - -static void -org_mpris_media_player2_player_skeleton_iface_init (OrgMprisMediaPlayer2PlayerIface *iface) -{ - iface->seeked = _org_mpris_media_player2_player_on_signal_seeked; - iface->get_playback_status = org_mpris_media_player2_player_skeleton_get_playback_status; - iface->get_loop_status = org_mpris_media_player2_player_skeleton_get_loop_status; - iface->get_rate = org_mpris_media_player2_player_skeleton_get_rate; - iface->get_shuffle = org_mpris_media_player2_player_skeleton_get_shuffle; - iface->get_metadata = org_mpris_media_player2_player_skeleton_get_metadata; - iface->get_volume = org_mpris_media_player2_player_skeleton_get_volume; - iface->get_position = org_mpris_media_player2_player_skeleton_get_position; - iface->get_minimum_rate = org_mpris_media_player2_player_skeleton_get_minimum_rate; - iface->get_maximum_rate = org_mpris_media_player2_player_skeleton_get_maximum_rate; - iface->get_can_go_next = org_mpris_media_player2_player_skeleton_get_can_go_next; - iface->get_can_go_previous = org_mpris_media_player2_player_skeleton_get_can_go_previous; - iface->get_can_play = org_mpris_media_player2_player_skeleton_get_can_play; - iface->get_can_pause = org_mpris_media_player2_player_skeleton_get_can_pause; - iface->get_can_seek = org_mpris_media_player2_player_skeleton_get_can_seek; - iface->get_can_control = org_mpris_media_player2_player_skeleton_get_can_control; -} - -/** - * org_mpris_media_player2_player_skeleton_new: - * - * Creates a skeleton object for the D-Bus interface org.mpris.MediaPlayer2.Player. - * - * Returns: (transfer full) (type OrgMprisMediaPlayer2PlayerSkeleton): The skeleton object. - */ -OrgMprisMediaPlayer2Player * -org_mpris_media_player2_player_skeleton_new (void) -{ - return ORG_MPRIS_MEDIA_PLAYER2_PLAYER (g_object_new (TYPE_ORG_MPRIS_MEDIA_PLAYER2_PLAYER_SKELETON, NULL)); -} - diff --git a/shairport-sync-mpris-player-interface.h b/shairport-sync-mpris-player-interface.h deleted file mode 100644 index a6baaacd..00000000 --- a/shairport-sync-mpris-player-interface.h +++ /dev/null @@ -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 - -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__ */ diff --git a/shairport-sync-mpris-service.c b/shairport-sync-mpris-service.c deleted file mode 100644 index 28db7d10..00000000 --- a/shairport-sync-mpris-service.c +++ /dev/null @@ -1,80 +0,0 @@ -#include -#include - -#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 -} diff --git a/shairport-sync-mpris-service.h b/shairport-sync-mpris-service.h deleted file mode 100644 index 966ef8d6..00000000 --- a/shairport-sync-mpris-service.h +++ /dev/null @@ -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 */ diff --git a/shairport-sync-mpris-test-client.c b/shairport-sync-mpris-test-client.c new file mode 100644 index 00000000..e4418bf0 --- /dev/null +++ b/shairport-sync-mpris-test-client.c @@ -0,0 +1,81 @@ + +#include "mpris-interface.h" +#include "mpris-player-interface.h" +#include +#include + +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; +} diff --git a/shairport.c b/shairport.c index 971f3a0c..7731bd95 100644 --- a/shairport.c +++ b/shairport.c @@ -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