--- jlscp/trunk/src/org/linuxsampler/lscp/Client.java 2011/08/16 09:33:36 2239 +++ jlscp/trunk/src/org/linuxsampler/lscp/Client.java 2011/08/16 14:50:01 2240 @@ -30,6 +30,7 @@ import java.net.SocketTimeoutException; import java.util.ArrayList; +import java.util.TreeMap; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; @@ -94,6 +95,9 @@ private Vector resultSetQueue = new Vector(); + /* Used for caching the engines' info */ + private final TreeMap engineMap = new TreeMap(); + class EventThread extends Thread { private Vector queue = new Vector(); private boolean terminate = false; @@ -323,6 +327,8 @@ if(sock != null) disconnect(); if(getPrintOnlyMode()) return; + engineMap.clear(); + // Initializing LSCP event thread if(eventThread.isAlive()) { getLogger().warning("LSCP event thread already running!"); @@ -441,6 +447,8 @@ eventThread.terminate(); eventThread = new EventThread(); } + + engineMap.clear(); } /** @@ -3503,9 +3511,13 @@ */ private synchronized SamplerEngine getEngineInfo(String engineName) throws IOException, LscpException, LSException { - SamplerEngine se = new SamplerEngine(); + SamplerEngine se = engineMap.get(engineName); + if(se != null) return null; + + se = new SamplerEngine(); if(!retrieveInfo("GET ENGINE INFO " + engineName, se)) return null; se.setName(engineName); + engineMap.put(engineName, se); return se; }