Has there been any more traction on MPRIS v2.3? On Wed, Sep 18, 2013 at 4:32 PM, Alex Merry <k...@randomguy3.me.uk> wrote:
> On 05/04/13 02:16, mirsal wrote: > > Hello ! > > > > On Thu, 2013-04-04 at 17:04 +0100, Alex Merry wrote: > >> We've got some things proposed for a possible MPRIS v2.3 [1], and I'd > >> like to get some feedback about which, if any, we want in. > > > > I think these points are all sensible, though they are also rather > > tricky in a way and there are quite a lot of things to discuss before a > > draft can be produced. > > I suppose I should reply to this... Someone's proposing an extention to > Amarok's D-Bus interface for editing the rating, and it already has an > extension for Mute. > > >> First up is a Mute property [2], as this is often orthogonal to volume; > >> this should be on the Player interface: > >> property b Mute > >> - emits PropertiesChanged > > > > Indeed, though I think we should define how the media players should > > behave with regards to the Volume property, that is, we should either > > have all media players treating muting as orthogonal to the volume or > > have changing the volume affect Mute in all of them. > > > > Mute and Volume being orthogonal seems rather natural to me, although it > > might force media players to keep some state for the only sake of the > > mpris if they handle muting internally as simply setting the volume to > > zero. > > > > (That point is probably moot as these media players might simply choose > > not to implement Mute instead, however I think the spec should not leave > > any ambiguity about that) > > I agree on all fronts (including that media players that don't want to > implement Mute as orthogonal can simply not implement it). > > >> Second is metadata editing [3], on both Player and TrackList: > >> method UpdateMetadata(in a{sv} updatedEntries, in as deletedEntries) > >> - what happens to entries appearing in both arguments is undefined > >> - wait for PropertiesChanged on Metadata to see if it worked > >> property as EditableMetadataEntries > >> - emits PropertiesChanged > > > > This looks racy to me. > > Maybe the old value should be supplied along with the new one ? > > That's not the sort of race we need to be concerned about. But you're > right, it is racy: we should have the track id as an argument. > > > I don't really like the fact that there would be no way to detect > > failure besides an arbitrary timeout (adding tracks has the same issue > > though and there might not be much we can do) > > On the basis that clients are most likely to want to change properties > one-at-a-time, we could instead have > method SetMetadataField(in s field, in v value, in o trackId) > and > method DeleteMetadataField(in s field, in o trackId) > which could either be allowed to return a D-Bus error or have an "out b > success" argument. > > With the existing modification methods in the spec (AddTrack, for > example, or setting properties) we are either silent about whether > errors can be raised or explicitly forbid errors (unless Can* is false). > In retrospect, I'm not sure that was a sensible decision, but we can't > really demand that errors be raised now. > > >> Third is HasPlaylists, which should make it easier for clients to see > >> whether there is a Playlists interface implemented (fewer round trips if > >> they use GetAll). Not certain whether this is worth it, but we already > >> have HasTrackList. > >> property b HasPlaylists > > > > I think the right question to ask is: Would changes at runtime need to > > be signaled ? > > > > If not the case, then dbus introspection should suffice. > > True, I guess. One extra roundtrip for those clients that care about > Playlists isn't that much; they can just try to get the properties on > the Playlists interface and see if it works. In fact, that's probably > the approach we should take with all new interfaces. > > >> Fourth is a variant of Raise with a timestamp, which helps avoid > >> focus-stealing prevention in window managers. > >> method RaiseWithTimestamp(in x timestamp) > > > > Yes, that is definitely needed, however RaiseWithTimestamp as a name > > would probably feel very awkward to client application developers not > > familiar with focus stealing prevention mechanisms' implementations. > > Maybe calling it something like Focus and explaining the difference in > > terms of effects (merely requiring attention in the case of Raise with > > focus stealing prevention vs sending the to the front unconditionally > > for Focus/RaiseWithTimestamp) would be a bit better. > > OTOH, you need to know something about focus stealing prevention to > correctly use this API. That timestamp is supposed to come from a user > interaction message, and the name is meant to mirror what toolkits like > GTK+ use. > > Also, the difference in behaviour is down to window managers. The > timestamp is used to decide whether to allow the window to be raised; > including it does not unconditionally raise it. > > >> - arg is unix timestamp of the input event that triggered the call > >> > >> property b HasRaiseWithTimestamp > >> - introspection parsing sucks; use in combination with CanRaise > > > > I agree that it sucks though the bindings should get fixed instead of > > the MPRIS working around their lacks. > > I suppose. > > > I don't think it makes sense for this to change at runtime independently > > of CanRaise. > > Yeah, it wasn't meant to change. > > Alex > > > _______________________________________________ > MPRIS mailing list > MPRIS@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mpris >
_______________________________________________ MPRIS mailing list MPRIS@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mpris