sonos

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit a32eff2e168ada41276dc13979ce7595c977b286
parent b0f0d72de20458e9191a9a22852ea4f41a14b391
Author: Brian Swetland <swetland@frotz.net>
Date:   Sun,  7 Aug 2011 05:28:19 -0700

Sonos/SonosItem: avoid some copies during callbacks

Diffstat:
Mnet/frotz/sonos/Sonos.java | 16+++++++++++-----
Mnet/frotz/sonos/SonosItem.java | 20++++++++++----------
2 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/net/frotz/sonos/Sonos.java b/net/frotz/sonos/Sonos.java @@ -35,6 +35,11 @@ public class Sonos { name = new XMLSequence(); value = new XMLSequence(); item = new SonosItem(); + item.title = new XMLSequence(); + item.artist = new XMLSequence(); + item.album = new XMLSequence(); + item.idURI = new XMLSequence(); + item.playURI = new XMLSequence(); rpc = new SoapRPC(host, 1400); @@ -229,6 +234,7 @@ public class Sonos { break; } } while (n < total); + cb.updateDone(_id); } int processBrowseResults(XML result, int n, String _id, SonosListener cb) throws XML.Oops { SonosItem item = this.item; @@ -242,7 +248,7 @@ public class Sonos { String thing; n++; item.reset(); - item.idURI = result.getAttr("id").copy(); + item.idURI.init(result.getAttr("id")); try { result.open("item"); thing = "item"; @@ -252,19 +258,19 @@ public class Sonos { } while (result.tryRead(name,value)) { if ("dc:title".contentEquals(name)) { - item.title = value.unescape().copy(); + item.title.init(value.unescape()); continue; } if ("dc:creator".contentEquals(name)) { - item.artist = value.unescape().copy(); + item.artist.init(value.unescape()); continue; } if ("upnp:album".contentEquals(name)) { - item.album = value.unescape().copy(); + item.album.init(value.unescape()); continue; } if ("res".contentEquals(name)) { - item.playURI = value.unescape().copy(); + item.playURI.init(value.unescape()); continue; } } diff --git a/net/frotz/sonos/SonosItem.java b/net/frotz/sonos/SonosItem.java @@ -2,17 +2,17 @@ package net.frotz.sonos; public class SonosItem { - public CharSequence title; - public CharSequence album; - public CharSequence artist; - public CharSequence playURI; /* to enqueue */ - public CharSequence idURI; /* for browse/list */ + public XMLSequence title; + public XMLSequence album; + public XMLSequence artist; + public XMLSequence playURI; /* to enqueue */ + public XMLSequence idURI; /* for browse/list */ public void reset() { - title = null; - album = null; - artist = null; - playURI = null; - idURI= null; + title.adjust(0,0); + album.adjust(0,0); + artist.adjust(0,0); + playURI.adjust(0,0); + idURI.adjust(0,0); } }