X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Flibrary%2FRemoteLibraryServer.java;h=f92c37e8e2ecaf6a1b7604d6b0c914a56b03131a;hb=405ba34f06efbe7936306fe758def4bc8391c698;hp=ef17e28b25b134d60a266ac1b31b7fd0b2c5da1d;hpb=9991e4e10cd1cb607210ecfda9ed48232574be21;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java b/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java index ef17e28..f92c37e 100644 --- a/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java +++ b/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java @@ -405,22 +405,45 @@ public class RemoteLibraryServer extends ServerObject { * @return TRUE if it was a progress event, FALSE if not */ static boolean updateProgress(Progress pg, Object rep) { - if (rep instanceof Object[]) { + boolean updateProgress = false; + if (rep instanceof Integer[] && ((Integer[]) rep).length == 3) + updateProgress = true; + if (rep instanceof Object[] && ((Object[]) rep).length >= 5 + && "UPDATE".equals(((Object[]) rep)[0])) + updateProgress = true; + + if (updateProgress) { Object[] a = (Object[]) rep; - if (a.length >= 3) { - int min = (Integer)a[0]; - int max = (Integer)a[1]; - int progress = (Integer)a[2]; - - if (min >= 0 && min <= max) { - pg.setMinMax(min, max); - pg.setProgress(progress); - if (a.length >= 4) { - pg.put("meta", a[3]); - } - return true; + int offset = 0; + if (a[0] instanceof String) { + offset = 1; + } + + int min = (Integer) a[0 + offset]; + int max = (Integer) a[1 + offset]; + int progress = (Integer) a[2 + offset]; + + Object meta = null; + if (a.length > (3 + offset)) { + meta = a[3 + offset]; + } + + String name = null; + if (a.length > (4 + offset)) { + name = a[4 + offset] == null ? "" : a[4 + offset].toString(); + } + + + if (min >= 0 && min <= max) { + pg.setName(name); + pg.setMinMax(min, max); + pg.setProgress(progress); + if (meta != null) { + pg.put("meta", meta); } + + return true; } } @@ -447,6 +470,7 @@ public class RemoteLibraryServer extends ServerObject { final Integer[] p = new Integer[] { -1, -1, -1 }; final Object[] pMeta = new MetaData[1]; + final String[] pName = new String[1]; final Long[] lastTime = new Long[] { new Date().getTime() }; pg.addProgressListener(new ProgressListener() { @Override @@ -467,15 +491,18 @@ public class RemoteLibraryServer extends ServerObject { // Do not re-send the same value twice over the wire, // unless more than 2 seconds have elapsed (to maintain the // connection) - if (!samePg || !same(pMeta[0], meta) // + if (!samePg || !same(pMeta[0], meta) + || !same(pName[0], name) // || (new Date().getTime() - lastTime[0] > 2000)) { p[0] = min; p[1] = max; p[2] = rel; pMeta[0] = meta; + pName[0] = name; try { - action.send(new Object[] { min, max, rel, meta }); + action.send(new Object[] { "UPDATE", min, max, rel, + meta, name }); action.rec(); } catch (Exception e) { getTraceHandler().error(e);