From 7003c13bace6ef476e323d4a7e310cc307b48f92 Mon Sep 17 00:00:00 2001 From: David Himmelstrup Date: Mon, 4 Jan 2021 16:33:57 +0800 Subject: [PATCH] Fix TCP windows issue, fix Firefox on windows. --- src/Reanimate/Driver/Server.hs | 4 ++-- viewer-elm/README.md | 2 +- viewer-elm/dist/elm.js | 2 +- viewer-elm/src/Main.elm | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Reanimate/Driver/Server.hs b/src/Reanimate/Driver/Server.hs index d600b51..0ca8a31 100644 --- a/src/Reanimate/Driver/Server.hs +++ b/src/Reanimate/Driver/Server.hs @@ -14,7 +14,7 @@ import qualified Data.Map as Map import qualified Data.Text as T import Network.Socket (AddrInfo (..), AddrInfoFlag (..), SocketOption (..), SocketType (Stream), accept, bind, close, defaultHints, - getAddrInfo, gracefulClose, listen, socket, + getAddrInfo, listen, socket, setCloseOnExecIfNeeded, setSocketOption, withFdSocket, withSocketsDo) import Network.Socket.ByteString (recv) @@ -105,7 +105,7 @@ daemonReceive parent cb = withSocketsDo $ do ["stop"] -> killThread parent [] -> return () _ -> error $ "Bad message: " ++ inp - gracefulClose conn 5000 + close conn resolve = do let hints = defaultHints { addrFlags = [AI_PASSIVE] diff --git a/viewer-elm/README.md b/viewer-elm/README.md index a6c5ac6..b7686f2 100644 --- a/viewer-elm/README.md +++ b/viewer-elm/README.md @@ -2,7 +2,7 @@ ## Build it ```bash -cd reanimate/elm-viewer +cd reanimate/viewer-elm npm install npm run build npm run minify diff --git a/viewer-elm/dist/elm.js b/viewer-elm/dist/elm.js index 8f4ba65..63c9718 100644 --- a/viewer-elm/dist/elm.js +++ b/viewer-elm/dist/elm.js @@ -1 +1 @@ -!function(n){"use strict";function r(n,r,t){return t.a=n,t.f=r,t}function o(t){return r(2,t,function(r){return function(n){return t(r,n)}})}function b(e){return r(3,e,function(t){return function(r){return function(n){return e(t,r,n)}}})}function v(u){return r(4,u,function(e){return function(t){return function(r){return function(n){return u(e,t,r,n)}}}})}function t(a){return r(5,a,function(u){return function(e){return function(t){return function(r){return function(n){return a(u,e,t,r,n)}}}}})}function e(i){return r(6,i,function(a){return function(u){return function(e){return function(t){return function(r){return function(n){return i(a,u,e,t,r,n)}}}}}})}function u(o){return r(7,o,function(i){return function(a){return function(u){return function(e){return function(t){return function(r){return function(n){return o(i,a,u,e,t,r,n)}}}}}}})}function g(n,r,t){return 2===n.a?n.f(r,t):n(r)(t)}function p(n,r,t,e){return 3===n.a?n.f(r,t,e):n(r)(t)(e)}function w(n,r,t,e,u){return 4===n.a?n.f(r,t,e,u):n(r)(t)(e)(u)}function s(n,r,t,e,u,a){return 5===n.a?n.f(r,t,e,u,a):n(r)(t)(e)(u)(a)}function l(n,r,t,e,u,a,i){return 6===n.a?n.f(r,t,e,u,a,i):n(r)(t)(e)(u)(a)(i)}function f(n,r,t,e,u,a,i,o){return 7===n.a?n.f(r,t,e,u,a,i,o):n(r)(t)(e)(u)(a)(i)(o)}function k(n,r){for(var t,e=[],u=a(n,r,0,e);u&&(t=e.pop());u=a(t.a,t.b,0,e));return u}function a(n,r,t,e){if(n===r)return!0;if("object"!=typeof n||null===n||null===r)return"function"==typeof n&&R(5),!1;if(100i)return u}var l=t.$;if(4===l){for(var d=t.k;4===d.$;)d=d.k;return n(r,d,e,u,a+1,i,r.elm_event_node_ref)}var $=t.e;var h=r.childNodes;for(var m=0;m<$.length;m++){var g=1===l?$[m]:$[m].b,p=++a+(g.b||0);if(a<=c&&c<=p&&(u=n(h[m],g,e,u,a,p,o),!(f=e[u])||(c=f.r)>i))return u;a=p}return u}(n,r,t,0,0,r.b,e)}function mr(n,r,t,e){return 0===t.length?n:(hr(n,r,t,e),gr(n,t))}function gr(n,r){for(var t=0;t>1,A(r,r),1&n?A(t,r):t):t}),Oa=o(function(n,r){return p(Ma,n,r,"")}),Fa=b(function(n,r,t){return A(g(Oa,n-zt(t),function(n){return g(Ra,n,"")}(r)),t)}),Pa=an,xa=o(function(n,r){return g(Kn,n,Pa(r))})("disabled"),za=$a("id"),Sa=$a("title"),Ba=Jn("pre"),Ia=Jn("label"),qa=$a("max"),Ga=Jn("progress"),Ja=Jn("span"),Ua=$a("value"),Wa=o(function(n,r){return g(Ia,j,N([g(Ja,j,N([Ta(" | Loading frames ")])),g(Ga,N([Ua(Vr(n)),qa(Vr(r))]),j)]))}),Ka=v(function(n,r,t,e){for(;;){if(!e.b)return t/r;var u=n+r,a=e.a*n+t;n=.9*n,r=u,t=a,e=e.b}}),Ha=P,Va=o(function(n,r){for(;;){if(-2===r.$)return n;var t=r.d;n=g(Va,n+1,r.e),r=t}}),Ya=u(function(n,r,t,e,u,a,i){var o,f,c,v,s,b=k(o=g(Va,0,e),t)?Ta(""):g(Wa,o,t),l=n.$?Ta(""):g(La,N([(f=n.a,g($a,"src",/^\s*(javascript:|data:text\/html)/i.test(c=f)?"":c))]),j),d=u?Da:g(pa,N([ha("help-button"),ja(ga)]),N([Ta("?")])),$=Vr(t),h=zt($),m=g(Ba,N([ha("bar")]),N([(s=i,g(ma,N([ha("media-controls")]),N([g(pa,N([ja(Cu(-10)),xa(!s),Sa("10 frames back")]),N([Ta("<<")])),g(pa,N([ja(Cu(-1)),xa(!s),Sa("1 frame back")]),N([Ta("<")])),s?g(pa,N([ja(Tu),za("play-or-pause")]),N([Ta("Play")])):g(pa,N([ja(Nu),za("play-or-pause")]),N([Ta("Pause")])),g(pa,N([ja(Cu(1)),xa(!s),Sa("1 frame forward")]),N([Ta(">")])),g(pa,N([ja(Cu(10)),xa(!s),Sa("10 frames forward")]),N([Ta(">>")]))]))),g(Ja,j,N([Ta(" Frame: "+p(Fa,h,"0",Vr(r+1))+" / "+$+(i?" ":(v=a," @ "+Vr(Ha(1e3/w(Ka,1,0,0,v)))+" FPS")))])),b,d]));return g(ma,N([ha("viewer")]),N([l,m]))}),Za=Jn("h1"),Qa=Jn("li"),Xa=Jn("ul"),ni=re({aD:function(){return $(te,ae)},aK:function(n){return se(N([du((t=fe,function(n){return t(g(lu,bu,n))})),(r=oe,Se(g(Rt,r,de))),function(){n:for(;;)switch(n.$){case 3:return 1===n.a.j.$?vu(ce):ru;case 4:if(1!==n.a.$)break n;return g(nu,2e3,ve(ie));default:break n}return ru}()]));var r,t},aM:da,aN:function(i){return g(ma,N([ha("app")]),N([function(){switch(i.$){case 0:return Ta("Disconnected");case 1:return Ta("Connected");case 2:return Ta("Compiling ...");case 4:return function(n){switch(n.$){case 0:var r=n.a;return g(ma,j,N([g(Za,j,N([Ta("Compilation failed")])),g(Ba,j,N([Ta(r)]))]));case 1:return g(ma,j,N([Ta("Failed to establish connection. Possible causes include: "),g(Xa,j,N([g(Qa,j,N([Ta("The reanimate script is not running")])),g(Qa,j,N([Ta("At most one viewer window can connect at time. Maybe there's another browser window/tab already connected?")]))]))]));case 2:return Ta("Failed to decode Port message. The error was: "+lt(n.a));default:return Ta("Unexpected message: "+n.a)}}(i.a);default:var n=i.a.z,r=i.a.u,t=i.a.p,e=i.a.D,u=i.a.G,a=i.a.E;return f(Ya,e,t,n,r,u,a,!i.a.j.$)}}()]))}});fu={Main:{init:ni(Ot(0))(0)}},n.Elm?function n(r,t){for(var e in t)e in r?"init"==e?R(6):n(r[e],t[e]):r[e]=t[e]}(n.Elm,fu):n.Elm=fu}(this); \ No newline at end of file +!function(n){"use strict";function r(n,r,t){return t.a=n,t.f=r,t}function o(t){return r(2,t,function(r){return function(n){return t(r,n)}})}function b(e){return r(3,e,function(t){return function(r){return function(n){return e(t,r,n)}}})}function s(u){return r(4,u,function(e){return function(t){return function(r){return function(n){return u(e,t,r,n)}}}})}function t(a){return r(5,a,function(u){return function(e){return function(t){return function(r){return function(n){return a(u,e,t,r,n)}}}}})}function e(i){return r(6,i,function(a){return function(u){return function(e){return function(t){return function(r){return function(n){return i(a,u,e,t,r,n)}}}}}})}function u(o){return r(7,o,function(i){return function(a){return function(u){return function(e){return function(t){return function(r){return function(n){return o(i,a,u,e,t,r,n)}}}}}}})}function a(f){return r(8,f,function(o){return function(i){return function(a){return function(u){return function(e){return function(t){return function(r){return function(n){return f(o,i,a,u,e,t,r,n)}}}}}}}})}function i(c){return r(9,c,function(f){return function(o){return function(i){return function(a){return function(u){return function(e){return function(t){return function(r){return function(n){return c(f,o,i,a,u,e,t,r,n)}}}}}}}}})}function $(n,r,t){return 2===n.a?n.f(r,t):n(r)(t)}function g(n,r,t,e){return 3===n.a?n.f(r,t,e):n(r)(t)(e)}function p(n,r,t,e,u){return 4===n.a?n.f(r,t,e,u):n(r)(t)(e)(u)}function l(n,r,t,e,u,a){return 5===n.a?n.f(r,t,e,u,a):n(r)(t)(e)(u)(a)}function d(n,r,t,e,u,a,i){return 6===n.a?n.f(r,t,e,u,a,i):n(r)(t)(e)(u)(a)(i)}function f(n,r,t,e,u,a,i,o){return 7===n.a?n.f(r,t,e,u,a,i,o):n(r)(t)(e)(u)(a)(i)(o)}function m(n,r){for(var t,e=[],u=c(n,r,0,e);u&&(t=e.pop());u=c(t.a,t.b,0,e));return u}function c(n,r,t,e){if(n===r)return!0;if("object"!=typeof n||null===n||null===r)return"function"==typeof n&&F(5),!1;if(100"}function F(n){throw Error("https://github.com/elm/core/blob/1.0.0/hints/"+n+".md")}o(function(n,r){return n+r}),o(function(n,r){return n-r}),o(function(n,r){return n*r}),o(function(n,r){return n/r}),o(function(n,r){return n/r|0}),o(Math.pow),o(function(n,r){return r%n});var S=o(function(n,r){var t=r%n;return 0===n?F(11):0i)return u}var l=t.$;if(4===l){for(var d=t.k;4===d.$;)d=d.k;return n(r,d,e,u,a+1,i,r.elm_event_node_ref)}var h=t.e;var $=r.childNodes;for(var g=0;gi))return u;a=m}return u}(n,r,t,0,0,r.b,e)}function _r(n,r,t,e){return 0===t.length?n:(Nr(n,r,t,e),Cr(n,t))}function Cr(n,r){for(var t=0;t>n}),o(function(n,r){return r>>>n});function Gr(n){return $($t,"\n ",$(gt,"\n",n))}function Jr(n){return g(pt,o(function(n,r){return r+1}),0,n)}function Wr(n){var r=kt(n);return 97<=r&&r<=122}function Ur(n){var r=kt(n);return r<=90&&65<=r}function Kr(n){return Wr(n)||Ur(n)}function Qr(n){return Wr(n)||Ur(n)||function(n){var r=kt(n);return r<=57&&48<=r}(n)}function Yr(n){return n}function Hr(n){return""===n}function Vr(n){return g(be,$e(rt),ce(N),n)}var Zr=1,Xr=2,nt=0,rt=C,tt=b(function(n,r,t){for(;;){if(-2===t.$)return r;var e=t.d,u=n,a=g(n,t.b,t.c,g(tt,n,r,t.e));n=u,r=a,t=e}}),et=function(n){return g(tt,b(function(n,r,t){return $(rt,y(n,r),t)}),N,n)},ut=R,at=(b(function(t,n,r){var e=r.c,u=r.d,a=o(function(n,r){return g(ut,n.$?t:a,r,n.a)});return g(ut,a,g(ut,t,n,u),e)}),function(n){return{$:1,a:n}}),it=o(function(n,r){return{$:3,a:n,b:r}}),ot=o(function(n,r){return{$:0,a:n,b:r}}),ft=o(function(n,r){return{$:1,a:n,b:r}}),ct=function(n){return{$:0,a:n}},vt=function(n){return{$:2,a:n}},st=function(n){return{$:0,a:n}},bt={$:1},lt=U,dt=bn,ht=function(n){return n+""},$t=o(function(n,r){return $(J,n,O(r))}),gt=o(function(n,r){return T($(G,n,r))}),pt=b(function(n,r,t){for(;;){if(!t.b)return r;var e=t.b,u=n,a=$(n,t.a,r);n=u,r=a,t=e}}),mt=L,wt=b(function(n,r,t){for(;;){if(1<=h(n,r))return t;var e=n,u=r-1,a=$(rt,r,t);n=e,r=u,t=a}}),yt=o(function(n,r){return g(wt,n,r,N)}),At=o(function(n,r){return g(mt,n,$(yt,0,Jr(r)-1),r)}),kt=function(n){var r=n.charCodeAt(0);return r<55296||56319>1,E(r,r),1&n?E(t,r):t):t}),si=o(function(n,r){return g(vi,n,r,"")}),bi=b(function(n,r,t){return E($(si,n-Xt(t),function(n){return $(ci,n,"")}(r)),t)}),li=ln,di=o(function(n,r){return $(rr,n,li(r))})("disabled"),hi=Ka("id"),$i=Ka("title"),gi=Vn("pre"),pi=Vn("label"),mi=Ka("max"),wi=Vn("progress"),yi=Vn("span"),Ai=Ka("value"),ki=o(function(n,r){return $(pi,N,T([$(yi,N,T([ai(" | Loading frames ")])),$(wi,T([Ai(ht(n)),mi(ht(r))]),N)]))}),ji=s(function(n,r,t,e){for(;;){if(!e.b)return t/r;var u=n+r,a=e.a*n+t;n=.9*n,r=u,t=a,e=e.b}}),Ei=B,Ni=o(function(n,r){for(;;){if(-2===r.$)return n;var t=r.d;n=$(Ni,n+1,r.e),r=t}}),_i=u(function(n,r,t,e,u,a,i){var o,f,c,v=m(o=$(Ni,0,e),t)?ai(""):$(ki,o,t),s=n.$?ai(""):$(fi,T([$(Ka,"src",/^\s*(javascript:|data:text\/html)/i.test(f="file://"+n.a)?"":f)]),N),b=u?oi:$(Va,T([Qa("help-button"),Uu(Ha)]),T([ai("?")])),l=ht(t),d=Xt(l),h=$(gi,T([Qa("bar")]),T([(c=i,$(Ya,T([Qa("media-controls")]),T([$(Va,T([Uu(zu(-10)),di(!c),$i("10 frames back")]),T([ai("<<")])),$(Va,T([Uu(zu(-1)),di(!c),$i("1 frame back")]),T([ai("<")])),c?$(Va,T([Uu(la),hi("play-or-pause")]),T([ai("Play")])):$(Va,T([Uu(ba),hi("play-or-pause")]),T([ai("Pause")])),$(Va,T([Uu(zu(1)),di(!c),$i("1 frame forward")]),T([ai(">")])),$(Va,T([Uu(zu(10)),di(!c),$i("10 frames forward")]),T([ai(">>")]))]))),$(yi,N,T([ai(" Frame: "+g(bi,d,"0",ht(r+1))+" / "+l+(i?" ":" @ "+ht(Ei(1e3/p(ji,1,0,0,a)))+" FPS"))])),v,b]));return $(Ya,T([Qa("viewer")]),T([s,h]))}),Ci=Vn("h1"),Ti=Vn("li"),Oi=Vn("ul"),Li=De({aD:function(){return y(Me,xe)},aK:function(n){return Pe(T([na((r=je,function(n){return r($(Xu,Zu,n))})),bu($(Ut,ke,Ie)),function(){n:for(;;)switch(n.$){case 3:return 1===n.a.j.$?Hu(Ee):Ou;case 4:if(1!==n.a.$)break n;return $(Tu,2e3,Se(Fe));default:break n}return Ou}()]));var r},aM:Ua,aN:function(i){return $(Ya,T([Qa("app")]),T([function(){switch(i.$){case 0:return ai("Disconnected");case 1:return ai("Connected");case 2:return ai("Compiling ...");case 4:return function(n){switch(n.$){case 0:var r=n.a;return $(Ya,N,T([$(Ci,N,T([ai("Compilation failed")])),$(gi,N,T([ai(r)]))]));case 1:return $(Ya,N,T([ai("Failed to establish connection. Possible causes include: "),$(Oi,N,T([$(Ti,N,T([ai("The reanimate script is not running")])),$(Ti,N,T([ai("At most one viewer window can connect at time. Maybe there's another browser window/tab already connected?")]))]))]));case 2:return ai("Failed to decode Port message. The error was: "+_t(n.a));default:return ai("Unexpected message: "+n.a)}}(i.a);default:var n=i.a.z,r=i.a.u,t=i.a.p,e=i.a.D,u=i.a.G,a=i.a.E;return f(_i,e,t,n,r,u,a,!i.a.j.$)}}()]))}});Qu={Main:{init:Li(Qt(0))(0)}},n.Elm?function n(r,t){for(var e in t)e in r?"init"==e?F(6):n(r[e],t[e]):r[e]=t[e]}(n.Elm,Qu):n.Elm=Qu}(this); \ No newline at end of file diff --git a/viewer-elm/src/Main.elm b/viewer-elm/src/Main.elm index 798581d..2a3b5cc 100644 --- a/viewer-elm/src/Main.elm +++ b/viewer-elm/src/Main.elm @@ -378,7 +378,7 @@ frameView bestFrame frameIndex frameCount frames showingHelp frameDeltas isPause image = case bestFrame of Just svgUrl -> - Html.img [ src svgUrl ] [] + Html.img [ src ("file://" ++ svgUrl) ] [] Nothing -> Html.text ""