Animated Now Playing indicator with a compact media card: cover art, a seekable progress bar and transport controls for any MPRIS player.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-L-003 warning
signals connected by extension should be disconnected in disable()
Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.
extension.js:334
this._frameId = this._timeline.connect('new-frame',
() => this._onFrame())
extension.js:603
this._frameId = this._timeline.connect('new-frame',
() => this._onFrame())
EGO-L-004 warning
main loop sources should be removed in disable()
Main loop sources assigned in `enable()` are missing matching removals in `disable()` or its helper methods.
extension.js:1243
this._artRetryId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
ART_RETRY_INTERVAL, () => {
this._artRetryTries++;
const artwork = this._artworkIcon(coverUrl);
// A picture that arrived is worth showing even before it can
extension.js:1537
this._pollId = GLib.timeout_add(GLib.PRIORITY_LOW, delayMs, () => {
this._pollId = null;
this._fetchPosition();
this._updatePoll();
return GLib.SOURCE_REMOVE;
})
extension.js:1471
this._seekPendingId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
SEEK_COALESCE_MS, () => {
this._seekPendingId = null;
this._seekToSlider();
return GLib.SOURCE_REMOVE;
})
extension.js:1166
this._volumePendingId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
VOLUME_COALESCE_MS, () => {
this._volumePendingId = null;
this._pushVolume();
return GLib.SOURCE_REMOVE;
})
extension.js:2019
this._retryId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, PROPERTY_RETRY_MS,
() => {
this._retryId = null;
missing.forEach(([proxy, iface]) => this._fetchProperties(proxy, iface));
return GLib.SOURCE_REMOVE;
})
| Version | Status |
|---|---|
| 1.0.2 (3) | Unreviewed |
| 1.0.1 (2) | Rejected |
| 1.0 (1) | Unreviewed |
Version 1.0.1 answers the analyzer output on 1.0. Fixed: shell-version no longer lists 51 (45-50 only, all released); the panel equalizer and the card stack are now destroyed and released in MediaModel.destroy(), which disable() reaches through the host; the frame handler of both Clutter.Timeline objects is disconnected where the timeline is stopped, and the card's geometry handlers use connectObject() so they go with the card. Still reported, EGO-L-004: the five GLib.timeout_add sources belong to the media card and to each MPRIS player, and they are removed in the 'destroy' handler of the card and in MprisPlayer.close(), both of which disable() reaches. They are not removed in a destroy() override on purpose: a card is also destroyed by its parent stack, and an override would be skipped in that case, while the 'destroy' handler always runs.