diff options
Diffstat (limited to 'src/player-item.vala')
-rw-r--r-- | src/player-item.vala | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/player-item.vala b/src/player-item.vala index 09b0e6b..d1cf08c 100644 --- a/src/player-item.vala +++ b/src/player-item.vala @@ -28,17 +28,32 @@ public class PlayerItem : Dbusmenu.Menuitem { } + private static bool ensure_valid_updates(HashTable<string, Value?> data, HashSet<string> attributes) + { + if(data == null){ + return false; + } + if(data.size() < attributes.size){ + warning("update hash was too small for the target"); + return false; + } + return true; + } + public void update(HashTable<string, Value?> data, HashSet<string> attributes) { debug("PlayerItem::update()"); + if(ensure_valid_updates(data, attributes) == false){ + debug("PlayerItem::Update -> update hash is not what we were expecting"); + return; + } foreach(string property in attributes){ string[] input_keys = property.split("-"); string search_key = input_keys[input_keys.length-1 : input_keys.length][0]; debug("search key = %s", search_key); - Value v = data.lookup(search_key); - if (v.holds (typeof (string))){ + debug("with value : %s", v.get_string()); this.property_set(property, this.sanitize_string(v.get_string())); } else if (v.holds (typeof (int))){ |