diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index 7ec2ee66..685b5b18 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -1287,7 +1287,7 @@ function MPlayer() { r.ftimer = null; r.fade_in = function () { r.fvol = 0; - r.fdir = 0.025; + r.fdir = 0.025 * r.vol * (CHROME ? 1.5 : 1); if (r.au) { r.ftid = r.au.tid; r.au.play(); @@ -1297,7 +1297,7 @@ function MPlayer() { }; r.fade_out = function () { r.fvol = r.vol; - r.fdir = -0.05; + r.fdir = -0.05 * r.vol * (CHROME ? 2 : 1); r.ftid = r.au.tid; fader(); }; @@ -1312,14 +1312,14 @@ function MPlayer() { return; var done = true; - r.fvol += r.fdir; + r.fvol += r.fdir / (r.fdir < 0 && r.fvol < r.vol / 4 ? 2 : 1); if (r.fvol < 0) { r.fvol = 0; r.au.pause(); mpl.pp(); var t = mp.au.currentTime - 0.8; - if (isFinite(t)) + if (isNum(t)) mp.au.currentTime = Math.max(t, 0); } else if (r.fvol > r.vol) @@ -1569,7 +1569,7 @@ var pbar = (function () { pctx.clearRect(0, 0, pc.w, pc.h); - if (!mp || !mp.au || isNaN(adur = mp.au.duration) || isNaN(apos = mp.au.currentTime) || apos < 0 || adur < apos) + if (!mp || !mp.au || !isNum(adur = mp.au.duration) || !isNum(apos = mp.au.currentTime) || apos < 0 || adur < apos) return; // not-init || unsupp-codec var sm = bc.w * 1.0 / adur, @@ -1724,7 +1724,7 @@ function seek_au_sec(seek) { return; console.log('seek: ' + seek); - if (!isFinite(seek)) + if (!isNum(seek)) return; mp.au.currentTime = seek; @@ -2108,7 +2108,7 @@ var audio_eq = (function () { vs = that.value, v = parseFloat(vs); - if (isNaN(v) || v + '' != vs) + if (!isNum(v) || v + '' != vs) throw new Error('inval band'); if (sb == 'amp') @@ -2251,6 +2251,9 @@ function play(tid, is_ev, seek) { mp.au.onprogress = pbar.drawpos; mp.au.onplaying = mpui.progress_updater; mp.au.onended = next_song; + t = mp.au.currentTime; + if (isNum(t) && t > 0.1) + mp.au.currentTime = 0; } else mp.au.src = mp.au.rsrc = url; @@ -5054,7 +5057,7 @@ var treectl = (function () { function scaletree(e) { ev(e); treesz += parseInt(this.getAttribute("step")); - if (isNaN(treesz)) + if (!isNum(treesz)) treesz = 16; treesz = clamp(treesz, 2, 120); diff --git a/copyparty/web/up2k.js b/copyparty/web/up2k.js index 92c4c5ed..80495266 100644 --- a/copyparty/web/up2k.js +++ b/copyparty/web/up2k.js @@ -2106,7 +2106,7 @@ function up2k_init(subtle) { spd2 = (t.size / ((t.t_uploaded - t.t_uploading) / 1000.)) / (1024 * 1024.); pvis.seth(t.n, 2, 'hash {0}, up {1} MB/s'.format( - f2f(spd1, 2), isNaN(spd2) ? '--' : f2f(spd2, 2))); + f2f(spd1, 2), !isNum(spd2) ? '--' : f2f(spd2, 2))); pvis.move(t.n, 'ok'); if (!pvis.ctr.bz && !pvis.ctr.q) diff --git a/copyparty/web/util.js b/copyparty/web/util.js index ba29e514..c8044385 100644 --- a/copyparty/web/util.js +++ b/copyparty/web/util.js @@ -108,7 +108,7 @@ catch (ex) { console.log = console.stdlog; console.log('console capture failed', ex); } -var crashed = false, ignexd = {}; +var crashed = false, ignexd = {}, evalex_fatal = false; function vis_exh(msg, url, lineNo, columnNo, error) { if ((msg + '').indexOf('ResizeObserver') + 1) return; // chrome issue 809574 (benign, from