Пример #1
0
static void
player_state_changed(XmrPlayer *player,
			gint old_state,
			gint new_state,
			XmrMprisPlugin *plugin)
{
	add_player_property_change(plugin, "PlaybackStatus", get_playback_status(plugin));
}
Пример #2
0
gboolean mpris_player_get_status(MprisPlayer * obj, GValueArray * *status, GError * *error)
{
    *status = g_value_array_new(4);

    append_int_value(*status, (gint) get_playback_status());
    append_int_value (* status, get_bool (NULL, "shuffle"));
    append_int_value (* status, get_bool (NULL, "no_playlist_advance"));
    append_int_value (* status, get_bool (NULL, "repeat"));
    return TRUE;
}
Пример #3
0
gboolean mpris_emit_status_change(MprisPlayer * obj, PlaybackStatus status)
{
    GValueArray *ar = g_value_array_new(4);

    if (status == MPRIS_STATUS_INVALID)
        status = get_playback_status ();

    append_int_value(ar, (gint) status);
    append_int_value (ar, get_bool (NULL, "shuffle"));
    append_int_value (ar, get_bool (NULL, "no_playlist_advance"));
    append_int_value (ar, get_bool (NULL, "repeat"));

    g_signal_emit(obj, signals[STATUS_CHANGE_SIG], 0, ar);
    g_value_array_free(ar);
    return TRUE;
}
Пример #4
0
static GVariant *
get_player_property(GDBusConnection *connection,
		     const char *sender,
		     const char *object_path,
		     const char *interface_name,
		     const char *property_name,
		     GError **error,
		     XmrMprisPlugin *plugin)
{
	if (g_strcmp0(object_path, MPRIS_OBJECT_NAME) != 0 ||
		g_strcmp0(interface_name, MPRIS_PLAYER_INTERFACE) != 0)
	{
		g_set_error(error,
					G_DBUS_ERROR,
					G_DBUS_ERROR_NOT_SUPPORTED,
					"Property %s.%s not supported",
					interface_name,
					property_name);
		return NULL;
	}

	if (g_strcmp0 (property_name, "PlaybackStatus") == 0)
	{
		return get_playback_status(plugin);
	}
	else if (g_strcmp0 (property_name, "Metadata") == 0)
	{
		return build_metadata(plugin);
	}
	else if (g_strcmp0 (property_name, "Rate") == 0)
	{
		return g_variant_new_double(1.0);
	}
	else if (g_strcmp0(property_name, "Volume") == 0)
	{
		return g_variant_new_double(xmr_player_get_volume(plugin->player));
	}
	else if (g_strcmp0(property_name, "Position") == 0)
	{
		return g_variant_new_int64(plugin->elapsed / 1000);
	}
	else if (g_strcmp0 (property_name, "MinimumRate") == 0)
	{
		return g_variant_new_double (1.0);
	}
	else if (g_strcmp0 (property_name, "MaximumRate") == 0)
	{
		return g_variant_new_double (1.0);
	}
	else if (g_strcmp0 (property_name, "CanGoNext") == 0)
	{
		return g_variant_new_boolean(TRUE);
	}
	else if (g_strcmp0 (property_name, "CanGoPrevious") == 0)
	{
		return g_variant_new_boolean(FALSE);
	}
	else if (g_strcmp0 (property_name, "CanPlay") == 0)
	{
		return g_variant_new_boolean (TRUE);
	}
	else if (g_strcmp0 (property_name, "CanPause") == 0)
	{
		return g_variant_new_boolean(TRUE);
	}
	else if (g_strcmp0 (property_name, "CanSeek") == 0)
	{
		g_variant_new_boolean(FALSE);
	}
	else if (g_strcmp0(property_name, "CanControl") == 0)
	{
		return g_variant_new_boolean(TRUE);
	}

	g_set_error(error,
		     G_DBUS_ERROR,
		     G_DBUS_ERROR_NOT_SUPPORTED,
		     "Property %s.%s not supported",
		     interface_name,
		     property_name);
	return NULL;
}