diff options
author | Ted Gould <ted@gould.cx> | 2014-06-11 17:25:31 +0000 |
---|---|---|
committer | CI bot <ps-jenkins@lists.canonical.com> | 2014-06-11 17:25:31 +0000 |
commit | 0517b25ec28abbd239009887edbae1684995c560 (patch) | |
tree | e193fc58c3137c53a849787351ff3063b6e8e2ce | |
parent | 9a1ce3c40437c5ca36e3fa0cacf80025c83bb65a (diff) | |
parent | d038c85495317daee3d036a48d519acc9ceb2727 (diff) | |
download | ayatana-indicator-sound-0517b25ec28abbd239009887edbae1684995c560.tar.gz ayatana-indicator-sound-0517b25ec28abbd239009887edbae1684995c560.tar.bz2 ayatana-indicator-sound-0517b25ec28abbd239009887edbae1684995c560.zip |
Protect against icon serialization errors Fixes: 1305902
-rw-r--r-- | src/accounts-service-user.vala | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/accounts-service-user.vala b/src/accounts-service-user.vala index 4dd7e6f..04c38cc 100644 --- a/src/accounts-service-user.vala +++ b/src/accounts-service-user.vala @@ -58,13 +58,19 @@ public class AccountsServiceUser : Object { } else { this.proxy.timestamp = GLib.get_monotonic_time(); this.proxy.player_name = this._player.name; - if (this._player.icon == null) { + + /* Serialize the icon if it exits, if it doesn't or errors then + we need to use the application default icon */ + GLib.Variant? icon_serialization = null; + if (this._player.icon != null) + icon_serialization = this._player.icon.serialize(); + if (icon_serialization == null) { var icon = new ThemedIcon.with_default_fallbacks ("application-default-icon"); - this.proxy.player_icon = icon.serialize(); - } else { - this.proxy.player_icon = this._player.icon.serialize(); + icon_serialization = icon.serialize(); } + this.proxy.player_icon = icon_serialization; + /* Set state of the player */ this.proxy.running = this._player.is_running; this.proxy.state = this._player.state; |