@supraio/client-daemon-js 1.0.0-mzbrightsigndecoder.486 → 1.0.0-mzbrightsigndecoder.489

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -180220,7 +180220,7 @@ $packages["github.com/supraio/client-daemon/pkg/netsamsungwasmtcp"] = (function(
180220
180220
  return $pkg;
180221
180221
  })();
180222
180222
  $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180223
- var $pkg = {}, $init, context, errors, websocket, errs, jshelper, netbrightsigntcp, netnacltcp, netsamsungwasmtcp, net, strconv, strings, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, JsWebsocketWorkerConn, ReaderWriterCloser, Driver, BrightSignTCPConn, sliceType, ptrType, mapType, funcType, arrayType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, connects, maxPacketSizes, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, getPerformanceTimestamp, ConnectJsWebsocket, Create, GetMaxPacketSize, init$3, ConnectBrightSignTCP;
180223
+ var $pkg = {}, $init, context, errors, websocket, errs, jshelper, netbrightsigntcp, netnacltcp, netsamsungwasmtcp, net, strconv, strings, sync, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, JsWebsocketWorkerConn, ReaderWriterCloser, Driver, BrightSignTCPConn, sliceType, ptrType, mapType, funcType, arrayType, sliceType$1, structType, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, chanType, connects, maxPacketSizes, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, getPerformanceTimestamp, ConnectJsWebsocket, Create, GetMaxPacketSize, init$3, ConnectBrightSignTCP, operationContext, finiteTimeout, cancelAfter;
180224
180224
  context = $packages["context"];
180225
180225
  errors = $packages["errors"];
180226
180226
  websocket = $packages["github.com/coder/websocket"];
@@ -180232,6 +180232,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180232
180232
  net = $packages["net"];
180233
180233
  strconv = $packages["strconv"];
180234
180234
  strings = $packages["strings"];
180235
+ sync = $packages["sync"];
180235
180236
  js = $packages["syscall/js"];
180236
180237
  time = $packages["time"];
180237
180238
  SamsungWasmTCPConn = $pkg.SamsungWasmTCPConn = $newType(0, $kindStruct, "netpacket.SamsungWasmTCPConn", true, "github.com/supraio/client-daemon/pkg/netpacket", true, function(conn_) {
@@ -180268,13 +180269,19 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180268
180269
  });
180269
180270
  ReaderWriterCloser = $pkg.ReaderWriterCloser = $newType(8, $kindInterface, "netpacket.ReaderWriterCloser", true, "github.com/supraio/client-daemon/pkg/netpacket", true, null);
180270
180271
  Driver = $pkg.Driver = $newType(8, $kindString, "netpacket.Driver", true, "github.com/supraio/client-daemon/pkg/netpacket", true, null);
180271
- BrightSignTCPConn = $pkg.BrightSignTCPConn = $newType(0, $kindStruct, "netpacket.BrightSignTCPConn", true, "github.com/supraio/client-daemon/pkg/netpacket", true, function(conn_) {
180272
+ BrightSignTCPConn = $pkg.BrightSignTCPConn = $newType(0, $kindStruct, "netpacket.BrightSignTCPConn", true, "github.com/supraio/client-daemon/pkg/netpacket", true, function(conn_, controller_, cancel_, closeOnce_) {
180272
180273
  this.$val = this;
180273
180274
  if (arguments.length === 0) {
180274
180275
  this.conn = ptrType.nil;
180276
+ this.controller = new js.Value.ptr(null, false, arrayType.zero());
180277
+ this.cancel = $chanNil;
180278
+ this.closeOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0));
180275
180279
  return;
180276
180280
  }
180277
180281
  this.conn = conn_;
180282
+ this.controller = controller_;
180283
+ this.cancel = cancel_;
180284
+ this.closeOnce = closeOnce_;
180278
180285
  });
180279
180286
  sliceType = $sliceType($emptyInterface);
180280
180287
  ptrType = $ptrType(js.Value);
@@ -180282,6 +180289,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180282
180289
  funcType = $funcType([], [], false);
180283
180290
  arrayType = $arrayType(funcType, 0);
180284
180291
  sliceType$1 = $sliceType($String);
180292
+ structType = $structType("", []);
180285
180293
  sliceType$2 = $sliceType($Uint8);
180286
180294
  ptrType$1 = $ptrType(SamsungWasmTCPConn);
180287
180295
  ptrType$2 = $ptrType(NaClTCPConn);
@@ -180289,6 +180297,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180289
180297
  ptrType$4 = $ptrType(JsWebsocketConn);
180290
180298
  ptrType$5 = $ptrType(JsWebsocketWorkerConn);
180291
180299
  ptrType$6 = $ptrType(BrightSignTCPConn);
180300
+ chanType = $chanType(structType, false, false);
180292
180301
  init = function() {
180293
180302
  var _key, _key$1;
180294
180303
  _key = "samsung_wasm_tcp"; (connects || $throwRuntimeError("assignment to entry in nil map")).set(Driver.keyFor(_key), { k: _key, v: ConnectSamsungWasmTCP });
@@ -180768,61 +180777,112 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180768
180777
  _key$1 = "brightsign_tcp"; (maxPacketSizes || $throwRuntimeError("assignment to entry in nil map")).set(Driver.keyFor(_key$1), { k: _key$1, v: 65535 });
180769
180778
  };
180770
180779
  BrightSignTCPConn.ptr.prototype.Write = function(data) {
180771
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, data, err, uint8Array, $s, $r, $c} = $restore(this, {data});
180780
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, c, canceled, data, err, uint8Array, x, x$1, $s, $r, $c} = $restore(this, {data});
180772
180781
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180773
180782
  c = this;
180774
180783
  _r = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new $Int(data.$length)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180775
180784
  uint8Array = $clone(_r, js.Value);
180776
180785
  js.CopyBytesToJS($clone(uint8Array, js.Value), data);
180777
- _r$1 = $clone(c.conn, js.Value).Call("write", new sliceType([new uint8Array.constructor.elem(uint8Array)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
180778
- _r$2 = jshelper.Await($clone(_r$1, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180786
+ _r$1 = $clone(c.conn, js.Value).Call("write", new sliceType([new uint8Array.constructor.elem(uint8Array), (x = js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "signal", v: (x$1 = $clone(c.controller, js.Value).Get("signal"), new x$1.constructor.elem(x$1)) }]))), new x.constructor.elem(x))])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
180787
+ _r$2 = jshelper.AwaitWithCancel($clone(_r$1, js.Value), c.cancel); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180779
180788
  _tuple = _r$2;
180780
180789
  err = _tuple[1];
180781
- /* */ if (!(err === ptrType.nil)) { $s = 4; continue; }
180790
+ canceled = _tuple[2];
180791
+ /* */ if (canceled) { $s = 4; continue; }
180782
180792
  /* */ $s = 5; continue;
180783
- /* if (!(err === ptrType.nil)) { */ case 4:
180784
- _r$3 = jshelper.GetError(err); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180785
- _r$4 = _r$3.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180786
- _arg = new $String(_r$4);
180787
- _r$5 = errs.Errorf("Failed to write BrightSign TCP packet: %s", new sliceType([_arg])); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
180788
- $24r = [0, _r$5];
180789
- $s = 9; case 9: return $24r;
180793
+ /* if (canceled) { */ case 4:
180794
+ _r$3 = errs.Errorf("BrightSign TCP packet write canceled", sliceType.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180795
+ $24r = [0, _r$3];
180796
+ $s = 7; case 7: return $24r;
180790
180797
  /* } */ case 5:
180798
+ /* */ if (!(err === ptrType.nil)) { $s = 8; continue; }
180799
+ /* */ $s = 9; continue;
180800
+ /* if (!(err === ptrType.nil)) { */ case 8:
180801
+ _r$4 = jshelper.GetError(err); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180802
+ _r$5 = _r$4.Error(); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
180803
+ _arg = new $String(_r$5);
180804
+ _r$6 = errs.Errorf("Failed to write BrightSign TCP packet: %s", new sliceType([_arg])); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
180805
+ $24r$1 = [0, _r$6];
180806
+ $s = 13; case 13: return $24r$1;
180807
+ /* } */ case 9:
180791
180808
  $s = -1; return [data.$length, $ifaceNil];
180792
- /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.Write, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, data, err, uint8Array, $s};return $f;
180809
+ /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, c, canceled, data, err, uint8Array, x, x$1, $s};return $f;
180793
180810
  };
180794
180811
  BrightSignTCPConn.prototype.Write = function(data) { return this.$val.Write(data); };
180795
180812
  BrightSignTCPConn.ptr.prototype.Read = function(data) {
180796
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, data, err, value, $s, $r, $c} = $restore(this, {data});
180813
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, c, canceled, data, err, uint8Array, value, x, $s, $r, $c} = $restore(this, {data});
180797
180814
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180798
180815
  c = this;
180799
- _r = $clone(c.conn, js.Value).Call("read", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180800
- _r$1 = jshelper.Await($clone(_r, js.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
180801
- _tuple = _r$1;
180816
+ _r = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new $Int(data.$length)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180817
+ uint8Array = $clone(_r, js.Value);
180818
+ _r$1 = $clone(c.conn, js.Value).Call("readInto", new sliceType([new uint8Array.constructor.elem(uint8Array), (x = $clone(c.controller, js.Value).Get("signal"), new x.constructor.elem(x))])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
180819
+ _r$2 = jshelper.AwaitWithCancel($clone(_r$1, js.Value), c.cancel); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180820
+ _tuple = _r$2;
180802
180821
  value = _tuple[0];
180803
180822
  err = _tuple[1];
180804
- /* */ if (!(err === ptrType.nil)) { $s = 3; continue; }
180805
- /* */ $s = 4; continue;
180806
- /* if (!(err === ptrType.nil)) { */ case 3:
180807
- _r$2 = jshelper.GetError(err); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180808
- _r$3 = _r$2.Error(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180809
- _arg = new $String(_r$3);
180810
- _r$4 = errs.Errorf("Failed to read BrightSign TCP packet: %s", new sliceType([_arg])); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180811
- $24r = [0, _r$4];
180812
- $s = 8; case 8: return $24r;
180813
- /* } */ case 4:
180814
- $s = -1; return [js.CopyBytesToGo(data, $clone(value, js.Value)), $ifaceNil];
180815
- /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.Read, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, data, err, value, $s};return $f;
180823
+ canceled = _tuple[2];
180824
+ /* */ if (canceled) { $s = 4; continue; }
180825
+ /* */ $s = 5; continue;
180826
+ /* if (canceled) { */ case 4:
180827
+ _r$3 = errs.Errorf("BrightSign TCP packet read canceled", sliceType.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180828
+ $24r = [0, _r$3];
180829
+ $s = 7; case 7: return $24r;
180830
+ /* } */ case 5:
180831
+ /* */ if (!(err === ptrType.nil)) { $s = 8; continue; }
180832
+ /* */ $s = 9; continue;
180833
+ /* if (!(err === ptrType.nil)) { */ case 8:
180834
+ _r$4 = jshelper.GetError(err); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180835
+ _r$5 = _r$4.Error(); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
180836
+ _arg = new $String(_r$5);
180837
+ _r$6 = errs.Errorf("Failed to read BrightSign TCP packet: %s", new sliceType([_arg])); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
180838
+ $24r$1 = [0, _r$6];
180839
+ $s = 13; case 13: return $24r$1;
180840
+ /* } */ case 9:
180841
+ js.CopyBytesToGo(data, $clone(uint8Array, js.Value));
180842
+ $s = -1; return [$clone(value, js.Value).Int(), $ifaceNil];
180843
+ /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.Read, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, c, canceled, data, err, uint8Array, value, x, $s};return $f;
180816
180844
  };
180817
180845
  BrightSignTCPConn.prototype.Read = function(data) { return this.$val.Read(data); };
180818
180846
  BrightSignTCPConn.ptr.prototype.Close = function() {
180819
- var {_r, c, $s, $r, $c} = $restore(this, {});
180847
+ var {c, closeErr, $s, $r, $c} = $restore(this, {});
180820
180848
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180821
- c = this;
180822
- _r = $clone(c.conn, js.Value).Call("close", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180823
- _r;
180824
- $s = -1; return $ifaceNil;
180825
- /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.Close, $c: true, $r, _r, c, $s};return $f;
180849
+ c = [c];
180850
+ closeErr = [closeErr];
180851
+ c[0] = this;
180852
+ closeErr[0] = $ifaceNil;
180853
+ $r = c[0].closeOnce.Do((function(c, closeErr) { return function $b() {
180854
+ var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, canceled, deadline, err, x, $s, $r, $c} = $restore(this, {});
180855
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180856
+ $close(c[0].cancel);
180857
+ _r = $clone(c[0].controller, js.Value).Call("abort", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180858
+ _r;
180859
+ deadline = cancelAfter(new time.Duration(0, 1000000000));
180860
+ _r$1 = operationContext(new time.Duration(0, 1000000000)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
180861
+ _arg = (x = _r$1, new x.constructor.elem(x));
180862
+ _r$2 = $clone(c[0].conn, js.Value).Call("close", new sliceType([_arg])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180863
+ _r$3 = jshelper.AwaitWithCancel($clone(_r$2, js.Value), deadline); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180864
+ _tuple = _r$3;
180865
+ err = _tuple[1];
180866
+ canceled = _tuple[2];
180867
+ /* */ if (canceled) { $s = 5; continue; }
180868
+ /* */ if (!(err === ptrType.nil)) { $s = 6; continue; }
180869
+ /* */ $s = 7; continue;
180870
+ /* if (canceled) { */ case 5:
180871
+ _r$4 = errs.Errorf("BrightSign TCP packet close timed out", sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180872
+ closeErr[0] = _r$4;
180873
+ $s = 7; continue;
180874
+ /* } else if (!(err === ptrType.nil)) { */ case 6:
180875
+ _r$5 = jshelper.GetError(err); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
180876
+ _r$6 = _r$5.Error(); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
180877
+ _arg$1 = new $String(_r$6);
180878
+ _r$7 = errs.Errorf("Failed to close BrightSign TCP packet: %s", new sliceType([_arg$1])); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
180879
+ closeErr[0] = _r$7;
180880
+ /* } */ case 7:
180881
+ $s = -1; return;
180882
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, canceled, deadline, err, x, $s};return $f;
180883
+ }; })(c, closeErr)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180884
+ $s = -1; return closeErr[0];
180885
+ /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.Close, $c: true, $r, c, closeErr, $s};return $f;
180826
180886
  };
180827
180887
  BrightSignTCPConn.prototype.Close = function() { return this.$val.Close(); };
180828
180888
  BrightSignTCPConn.ptr.prototype.GetJSConnection = function() {
@@ -180831,9 +180891,51 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180831
180891
  return c.conn;
180832
180892
  };
180833
180893
  BrightSignTCPConn.prototype.GetJSConnection = function() { return this.$val.GetJSConnection(); };
180894
+ BrightSignTCPConn.ptr.prototype.ReadFrame = function() {
180895
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, canceled, err, value, x, $s, $r, $c} = $restore(this, {});
180896
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180897
+ c = this;
180898
+ _r = $clone(c.conn, js.Value).Call("readFrame", new sliceType([(x = $clone(c.controller, js.Value).Get("signal"), new x.constructor.elem(x))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180899
+ _r$1 = jshelper.AwaitWithCancel($clone(_r, js.Value), c.cancel); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
180900
+ _tuple = _r$1;
180901
+ value = _tuple[0];
180902
+ err = _tuple[1];
180903
+ canceled = _tuple[2];
180904
+ /* */ if (canceled) { $s = 3; continue; }
180905
+ /* */ $s = 4; continue;
180906
+ /* if (canceled) { */ case 3:
180907
+ _r$2 = errs.Errorf("BrightSign TCP frame read canceled", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180908
+ $24r = [ptrType.nil, _r$2];
180909
+ $s = 6; case 6: return $24r;
180910
+ /* } */ case 4:
180911
+ /* */ if (!(err === ptrType.nil)) { $s = 7; continue; }
180912
+ /* */ $s = 8; continue;
180913
+ /* if (!(err === ptrType.nil)) { */ case 7:
180914
+ _r$3 = jshelper.GetError(err); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180915
+ _r$4 = _r$3.Error(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180916
+ _arg = new $String(_r$4);
180917
+ _r$5 = errs.Errorf("Failed to collect BrightSign TCP frame: %s", new sliceType([_arg])); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
180918
+ $24r$1 = [ptrType.nil, _r$5];
180919
+ $s = 12; case 12: return $24r$1;
180920
+ /* } */ case 8:
180921
+ $s = -1; return [value, $ifaceNil];
180922
+ /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.ReadFrame, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, canceled, err, value, x, $s};return $f;
180923
+ };
180924
+ BrightSignTCPConn.prototype.ReadFrame = function() { return this.$val.ReadFrame(); };
180925
+ BrightSignTCPConn.ptr.prototype.ReleaseFrame = function(reference) {
180926
+ var {_r, c, reference, $s, $r, $c} = $restore(this, {reference});
180927
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180928
+ c = this;
180929
+ _r = $clone(c.conn, js.Value).Call("releaseFrame", new sliceType([new reference.constructor.elem(reference)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180930
+ _r;
180931
+ $s = -1; return;
180932
+ /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.ReleaseFrame, $c: true, $r, _r, c, reference, $s};return $f;
180933
+ };
180934
+ BrightSignTCPConn.prototype.ReleaseFrame = function(reference) { return this.$val.ReleaseFrame(reference); };
180834
180935
  ConnectBrightSignTCP = function(host, timeout, secure) {
180835
- var {$24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, awaitErr, err, host, hostname, opts, port, portString, secure, timeout, value, $s, $r, $c} = $restore(this, {host, timeout, secure});
180936
+ var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, awaitErr, canceled, err, host, hostname, opts, port, portString, secure, timeout, value, x, $s, $r, $c} = $restore(this, {host, timeout, secure});
180836
180937
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180938
+ timeout = finiteTimeout(timeout);
180837
180939
  /* */ if (!netbrightsigntcp.IsAvailable()) { $s = 1; continue; }
180838
180940
  /* */ $s = 2; continue;
180839
180941
  /* if (!netbrightsigntcp.IsAvailable()) { */ case 1:
@@ -180864,38 +180966,84 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180864
180966
  $s = 13; case 13: return $24r$2;
180865
180967
  /* } */ case 11:
180866
180968
  opts = $clone(js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "host", v: new $String(hostname) }, { k: "port", v: new $Int(port) }, { k: "secure", v: new $Bool(secure) }]))), js.Value);
180867
- $unused(timeout);
180868
- _r$4 = $clone(netbrightsigntcp.Get(), js.Value).Call("createPacket", new sliceType([new opts.constructor.elem(opts)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180869
- _r$5 = jshelper.Await($clone(_r$4, js.Value)); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
180870
- _tuple$2 = _r$5;
180969
+ _arg = new opts.constructor.elem(opts);
180970
+ _r$4 = operationContext(timeout); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180971
+ _arg$1 = (x = _r$4, new x.constructor.elem(x));
180972
+ _r$5 = $clone(netbrightsigntcp.Get(), js.Value).Call("createPacket", new sliceType([_arg, _arg$1])); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
180973
+ _r$6 = jshelper.AwaitWithCancel($clone(_r$5, js.Value), cancelAfter(timeout)); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
180974
+ _tuple$2 = _r$6;
180871
180975
  value = _tuple$2[0];
180872
180976
  awaitErr = _tuple$2[1];
180873
- /* */ if (!(awaitErr === ptrType.nil)) { $s = 16; continue; }
180874
- /* */ $s = 17; continue;
180875
- /* if (!(awaitErr === ptrType.nil)) { */ case 16:
180876
- _arg = new $String(host);
180877
- _r$6 = jshelper.GetError(awaitErr); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
180878
- _r$7 = _r$6.Error(); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
180879
- _arg$1 = new $String(_r$7);
180880
- _r$8 = errs.Errorf("Failed to connect BrightSign TCP %s: %s", new sliceType([_arg, _arg$1])); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
180881
- $24r$3 = [$ifaceNil, _r$8];
180882
- $s = 21; case 21: return $24r$3;
180883
- /* } */ case 17:
180884
- $s = -1; return [new BrightSignTCPConn.ptr(value), $ifaceNil];
180885
- /* */ } return; } var $f = {$blk: ConnectBrightSignTCP, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, awaitErr, err, host, hostname, opts, port, portString, secure, timeout, value, $s};return $f;
180977
+ canceled = _tuple$2[2];
180978
+ /* */ if (canceled) { $s = 17; continue; }
180979
+ /* */ $s = 18; continue;
180980
+ /* if (canceled) { */ case 17:
180981
+ _r$7 = errs.Errorf("Timed out connecting BrightSign TCP %s", new sliceType([new $String(host)])); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
180982
+ $24r$3 = [$ifaceNil, _r$7];
180983
+ $s = 20; case 20: return $24r$3;
180984
+ /* } */ case 18:
180985
+ /* */ if (!(awaitErr === ptrType.nil)) { $s = 21; continue; }
180986
+ /* */ $s = 22; continue;
180987
+ /* if (!(awaitErr === ptrType.nil)) { */ case 21:
180988
+ _arg$2 = new $String(host);
180989
+ _r$8 = jshelper.GetError(awaitErr); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
180990
+ _r$9 = _r$8.Error(); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
180991
+ _arg$3 = new $String(_r$9);
180992
+ _r$10 = errs.Errorf("Failed to connect BrightSign TCP %s: %s", new sliceType([_arg$2, _arg$3])); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
180993
+ $24r$4 = [$ifaceNil, _r$10];
180994
+ $s = 26; case 26: return $24r$4;
180995
+ /* } */ case 22:
180996
+ _r$11 = $clone($clone(js.Global(), js.Value).Get("AbortController"), js.Value).New(sliceType.nil); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
180997
+ $24r$5 = [new BrightSignTCPConn.ptr(value, $clone(_r$11, js.Value), new $Chan(structType, 0), new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0))), $ifaceNil];
180998
+ $s = 28; case 28: return $24r$5;
180999
+ /* */ } return; } var $f = {$blk: ConnectBrightSignTCP, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, awaitErr, canceled, err, host, hostname, opts, port, portString, secure, timeout, value, x, $s};return $f;
180886
181000
  };
180887
181001
  $pkg.ConnectBrightSignTCP = ConnectBrightSignTCP;
181002
+ operationContext = function(timeout) {
181003
+ var {$24r, _r, _r$1, _r$2, timeout, $s, $r, $c} = $restore(this, {timeout});
181004
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181005
+ _r = $clone($clone(js.Global(), js.Value).Get("Date"), js.Value).Call("now", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181006
+ _r$1 = $clone(_r, js.Value).Float(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
181007
+ _r$2 = js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "deadlineMs", v: new $Float64(_r$1 + ($flatten64(timeout.Milliseconds()))) }]))); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
181008
+ $24r = _r$2;
181009
+ $s = 4; case 4: return $24r;
181010
+ /* */ } return; } var $f = {$blk: operationContext, $c: true, $r, $24r, _r, _r$1, _r$2, timeout, $s};return $f;
181011
+ };
181012
+ finiteTimeout = function(timeout) {
181013
+ var timeout;
181014
+ if ((timeout.$high < 0 || (timeout.$high === 0 && timeout.$low <= 0))) {
181015
+ return new time.Duration(0, 1000000000);
181016
+ }
181017
+ return timeout;
181018
+ };
181019
+ cancelAfter = function(timeout) {
181020
+ var cancel, timeout;
181021
+ cancel = new $Chan(structType, 0);
181022
+ $go((function $b() {
181023
+ var {_r, _r$1, timer, $s, $deferred, $r, $c} = $restore(this, {});
181024
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
181025
+ _r = time.NewTimer(finiteTimeout(timeout)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181026
+ timer = _r;
181027
+ $deferred.push([$methodVal(timer, "Stop"), []]);
181028
+ _r$1 = $recv(timer.C); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
181029
+ _r$1[0];
181030
+ $close(cancel);
181031
+ $s = -1; return;
181032
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: $b, $c: true, $r, _r, _r$1, timer, $s, $deferred};return $f; } }
181033
+ }), []);
181034
+ return cancel;
181035
+ };
180888
181036
  ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetJSConnection", name: "GetJSConnection", pkg: "", typ: $funcType([], [ptrType], false)}];
180889
181037
  ptrType$2.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetJSConnection", name: "GetJSConnection", pkg: "", typ: $funcType([], [ptrType], false)}];
180890
181038
  ptrType$4.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
180891
181039
  ptrType$5.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([], [ptrType, $Float64, $error], false)}];
180892
- ptrType$6.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetJSConnection", name: "GetJSConnection", pkg: "", typ: $funcType([], [ptrType], false)}];
181040
+ ptrType$6.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetJSConnection", name: "GetJSConnection", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "ReadFrame", name: "ReadFrame", pkg: "", typ: $funcType([], [ptrType, $error], false)}, {prop: "ReleaseFrame", name: "ReleaseFrame", pkg: "", typ: $funcType([js.Value], [], false)}];
180893
181041
  SamsungWasmTCPConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
180894
181042
  NaClTCPConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
180895
181043
  JsWebsocketConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType$3, tag: ""}]);
180896
181044
  JsWebsocketWorkerConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: js.Value, tag: ""}]);
180897
181045
  ReaderWriterCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]);
180898
- BrightSignTCPConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
181046
+ BrightSignTCPConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "controller", name: "controller", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "cancel", name: "cancel", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "closeOnce", name: "closeOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}]);
180899
181047
  $init = function() {
180900
181048
  $pkg.$init = function() {};
180901
181049
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -180910,8 +181058,9 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180910
181058
  $r = net.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180911
181059
  $r = strconv.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180912
181060
  $r = strings.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180913
- $r = js.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180914
- $r = time.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181061
+ $r = sync.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181062
+ $r = js.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181063
+ $r = time.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180915
181064
  connects = $makeMap(Driver.keyFor, []);
180916
181065
  maxPacketSizes = $makeMap(Driver.keyFor, []);
180917
181066
  init();
@@ -180924,7 +181073,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180924
181073
  return $pkg;
180925
181074
  })();
180926
181075
  $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
180927
- var $pkg = {}, $init, context, errors, websocket, errs, jshelper, netbrightsigntcp, netnacltcp, netsamsungwasmtcp, net, strconv, sync, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, ReaderWriter, ReaderWriterCloser, Driver, BrightSignTCPConn, sliceType, ptrType, mapType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, connects, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, ConnectJsWebsocket, Create, init$3, ConnectBrightSignTCP;
181076
+ var $pkg = {}, $init, context, errors, websocket, errs, jshelper, netbrightsigntcp, netnacltcp, netsamsungwasmtcp, net, strconv, sync, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, ReaderWriter, ReaderWriterCloser, Driver, BrightSignTCPConn, sliceType, ptrType, mapType, sliceType$1, sliceType$2, funcType, arrayType, structType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, chanType, connects, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, ConnectJsWebsocket, Create, init$3, ConnectBrightSignTCP, brightSignOperationContext, brightSignFiniteTimeout, brightSignCancelAfter;
180928
181077
  context = $packages["context"];
180929
181078
  errors = $packages["errors"];
180930
181079
  websocket = $packages["github.com/coder/websocket"];
@@ -180965,15 +181114,21 @@ $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
180965
181114
  ReaderWriter = $pkg.ReaderWriter = $newType(8, $kindInterface, "netstream.ReaderWriter", true, "github.com/supraio/client-daemon/pkg/netstream", true, null);
180966
181115
  ReaderWriterCloser = $pkg.ReaderWriterCloser = $newType(8, $kindInterface, "netstream.ReaderWriterCloser", true, "github.com/supraio/client-daemon/pkg/netstream", true, null);
180967
181116
  Driver = $pkg.Driver = $newType(8, $kindString, "netstream.Driver", true, "github.com/supraio/client-daemon/pkg/netstream", true, null);
180968
- BrightSignTCPConn = $pkg.BrightSignTCPConn = $newType(0, $kindStruct, "netstream.BrightSignTCPConn", true, "github.com/supraio/client-daemon/pkg/netstream", true, function(conn_, readMu_, remainder_) {
181117
+ BrightSignTCPConn = $pkg.BrightSignTCPConn = $newType(0, $kindStruct, "netstream.BrightSignTCPConn", true, "github.com/supraio/client-daemon/pkg/netstream", true, function(conn_, controller_, cancel_, closeOnce_, readMu_, remainder_) {
180969
181118
  this.$val = this;
180970
181119
  if (arguments.length === 0) {
180971
181120
  this.conn = ptrType.nil;
181121
+ this.controller = new js.Value.ptr(null, false, arrayType.zero());
181122
+ this.cancel = $chanNil;
181123
+ this.closeOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0));
180972
181124
  this.readMu = new sync.Mutex.ptr(0, 0);
180973
181125
  this.remainder = sliceType$2.nil;
180974
181126
  return;
180975
181127
  }
180976
181128
  this.conn = conn_;
181129
+ this.controller = controller_;
181130
+ this.cancel = cancel_;
181131
+ this.closeOnce = closeOnce_;
180977
181132
  this.readMu = readMu_;
180978
181133
  this.remainder = remainder_;
180979
181134
  });
@@ -180982,11 +181137,15 @@ $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
180982
181137
  mapType = $mapType($String, $emptyInterface);
180983
181138
  sliceType$1 = $sliceType($String);
180984
181139
  sliceType$2 = $sliceType($Uint8);
181140
+ funcType = $funcType([], [], false);
181141
+ arrayType = $arrayType(funcType, 0);
181142
+ structType = $structType("", []);
180985
181143
  ptrType$1 = $ptrType(SamsungWasmTCPConn);
180986
181144
  ptrType$2 = $ptrType(NaClTCPConn);
180987
181145
  ptrType$3 = $ptrType(websocket.Conn);
180988
181146
  ptrType$4 = $ptrType(JsWebsocketConn);
180989
181147
  ptrType$5 = $ptrType(BrightSignTCPConn);
181148
+ chanType = $chanType(structType, false, false);
180990
181149
  init = function() {
180991
181150
  var _key;
180992
181151
  _key = "samsung_wasm_tcp"; (connects || $throwRuntimeError("assignment to entry in nil map")).set(Driver.keyFor(_key), { k: _key, v: ConnectSamsungWasmTCP });
@@ -181327,32 +181486,40 @@ $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
181327
181486
  _key = "brightsign_tcp"; (connects || $throwRuntimeError("assignment to entry in nil map")).set(Driver.keyFor(_key), { k: _key, v: ConnectBrightSignTCP });
181328
181487
  };
181329
181488
  BrightSignTCPConn.ptr.prototype.Write = function(data) {
181330
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, data, err, uint8Array, $s, $r, $c} = $restore(this, {data});
181489
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, c, canceled, data, err, uint8Array, x, x$1, $s, $r, $c} = $restore(this, {data});
181331
181490
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181332
181491
  c = this;
181333
181492
  _r = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new $Int(data.$length)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181334
181493
  uint8Array = $clone(_r, js.Value);
181335
181494
  js.CopyBytesToJS($clone(uint8Array, js.Value), data);
181336
- _r$1 = $clone(c.conn, js.Value).Call("write", new sliceType([new uint8Array.constructor.elem(uint8Array)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
181337
- _r$2 = jshelper.Await($clone(_r$1, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
181495
+ _r$1 = $clone(c.conn, js.Value).Call("write", new sliceType([new uint8Array.constructor.elem(uint8Array), (x = js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "signal", v: (x$1 = $clone(c.controller, js.Value).Get("signal"), new x$1.constructor.elem(x$1)) }]))), new x.constructor.elem(x))])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
181496
+ _r$2 = jshelper.AwaitWithCancel($clone(_r$1, js.Value), c.cancel); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
181338
181497
  _tuple = _r$2;
181339
181498
  err = _tuple[1];
181340
- /* */ if (!(err === ptrType.nil)) { $s = 4; continue; }
181499
+ canceled = _tuple[2];
181500
+ /* */ if (canceled) { $s = 4; continue; }
181341
181501
  /* */ $s = 5; continue;
181342
- /* if (!(err === ptrType.nil)) { */ case 4:
181343
- _r$3 = jshelper.GetError(err); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
181344
- _r$4 = _r$3.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
181345
- _arg = new $String(_r$4);
181346
- _r$5 = errs.Errorf("Failed to write BrightSign TCP stream: %s", new sliceType([_arg])); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
181347
- $24r = [0, _r$5];
181348
- $s = 9; case 9: return $24r;
181502
+ /* if (canceled) { */ case 4:
181503
+ _r$3 = errs.Errorf("BrightSign TCP stream write canceled", sliceType.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
181504
+ $24r = [0, _r$3];
181505
+ $s = 7; case 7: return $24r;
181349
181506
  /* } */ case 5:
181507
+ /* */ if (!(err === ptrType.nil)) { $s = 8; continue; }
181508
+ /* */ $s = 9; continue;
181509
+ /* if (!(err === ptrType.nil)) { */ case 8:
181510
+ _r$4 = jshelper.GetError(err); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
181511
+ _r$5 = _r$4.Error(); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
181512
+ _arg = new $String(_r$5);
181513
+ _r$6 = errs.Errorf("Failed to write BrightSign TCP stream: %s", new sliceType([_arg])); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
181514
+ $24r$1 = [0, _r$6];
181515
+ $s = 13; case 13: return $24r$1;
181516
+ /* } */ case 9:
181350
181517
  $s = -1; return [data.$length, $ifaceNil];
181351
- /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.Write, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, data, err, uint8Array, $s};return $f;
181518
+ /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, c, canceled, data, err, uint8Array, x, x$1, $s};return $f;
181352
181519
  };
181353
181520
  BrightSignTCPConn.prototype.Write = function(data) { return this.$val.Write(data); };
181354
181521
  BrightSignTCPConn.ptr.prototype.Read = function(data) {
181355
- var {$24r, $24r$1, $24r$2, $24r$3, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, chunk, data, err, n, n$1, value, $s, $deferred, $r, $c} = $restore(this, {data});
181522
+ var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, canceled, chunk, data, err, n, n$1, value, x, $s, $deferred, $r, $c} = $restore(this, {data});
181356
181523
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
181357
181524
  c = this;
181358
181525
  /* */ if (data.$length === 0) { $s = 1; continue; }
@@ -181371,45 +181538,85 @@ $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
181371
181538
  $24r$1 = [n, $ifaceNil];
181372
181539
  $s = 7; case 7: return $24r$1;
181373
181540
  /* } */ case 6:
181374
- _r = $clone(c.conn, js.Value).Call("read", sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181375
- _r$1 = jshelper.Await($clone(_r, js.Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
181541
+ _r = $clone(c.conn, js.Value).Call("read", new sliceType([(x = $clone(c.controller, js.Value).Get("signal"), new x.constructor.elem(x))])); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181542
+ _r$1 = jshelper.AwaitWithCancel($clone(_r, js.Value), c.cancel); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
181376
181543
  _tuple = _r$1;
181377
181544
  value = _tuple[0];
181378
181545
  err = _tuple[1];
181379
- /* */ if (!(err === ptrType.nil)) { $s = 10; continue; }
181546
+ canceled = _tuple[2];
181547
+ /* */ if (canceled) { $s = 10; continue; }
181380
181548
  /* */ $s = 11; continue;
181381
- /* if (!(err === ptrType.nil)) { */ case 10:
181382
- _r$2 = jshelper.GetError(err); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
181383
- _r$3 = _r$2.Error(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
181384
- _arg = new $String(_r$3);
181385
- _r$4 = errs.Errorf("Failed to read BrightSign TCP stream: %s", new sliceType([_arg])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
181386
- $24r$2 = [0, _r$4];
181387
- $s = 15; case 15: return $24r$2;
181549
+ /* if (canceled) { */ case 10:
181550
+ _r$2 = errs.Errorf("BrightSign TCP stream read canceled", sliceType.nil); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
181551
+ $24r$2 = [0, _r$2];
181552
+ $s = 13; case 13: return $24r$2;
181388
181553
  /* } */ case 11:
181554
+ /* */ if (!(err === ptrType.nil)) { $s = 14; continue; }
181555
+ /* */ $s = 15; continue;
181556
+ /* if (!(err === ptrType.nil)) { */ case 14:
181557
+ _r$3 = jshelper.GetError(err); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
181558
+ _r$4 = _r$3.Error(); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
181559
+ _arg = new $String(_r$4);
181560
+ _r$5 = errs.Errorf("Failed to read BrightSign TCP stream: %s", new sliceType([_arg])); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
181561
+ $24r$3 = [0, _r$5];
181562
+ $s = 19; case 19: return $24r$3;
181563
+ /* } */ case 15:
181389
181564
  chunk = $makeSlice(sliceType$2, $clone($clone(value, js.Value).Get("byteLength"), js.Value).Int());
181390
181565
  js.CopyBytesToGo(chunk, $clone(value, js.Value));
181391
181566
  n$1 = $copySlice(data, chunk);
181392
181567
  if (n$1 < chunk.$length) {
181393
181568
  c.remainder = $subslice(chunk, n$1);
181394
181569
  }
181395
- $24r$3 = [n$1, $ifaceNil];
181396
- $s = 16; case 16: return $24r$3;
181397
- /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BrightSignTCPConn.ptr.prototype.Read, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, chunk, data, err, n, n$1, value, $s, $deferred};return $f; } }
181570
+ $24r$4 = [n$1, $ifaceNil];
181571
+ $s = 20; case 20: return $24r$4;
181572
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BrightSignTCPConn.ptr.prototype.Read, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, canceled, chunk, data, err, n, n$1, value, x, $s, $deferred};return $f; } }
181398
181573
  };
181399
181574
  BrightSignTCPConn.prototype.Read = function(data) { return this.$val.Read(data); };
181400
181575
  BrightSignTCPConn.ptr.prototype.Close = function() {
181401
- var {_r, c, $s, $r, $c} = $restore(this, {});
181576
+ var {c, closeErr, $s, $r, $c} = $restore(this, {});
181402
181577
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181403
- c = this;
181404
- _r = $clone(c.conn, js.Value).Call("close", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181405
- _r;
181406
- $s = -1; return $ifaceNil;
181407
- /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.Close, $c: true, $r, _r, c, $s};return $f;
181578
+ c = [c];
181579
+ closeErr = [closeErr];
181580
+ c[0] = this;
181581
+ closeErr[0] = $ifaceNil;
181582
+ $r = c[0].closeOnce.Do((function(c, closeErr) { return function $b() {
181583
+ var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, canceled, err, x, $s, $r, $c} = $restore(this, {});
181584
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181585
+ $close(c[0].cancel);
181586
+ _r = $clone(c[0].controller, js.Value).Call("abort", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181587
+ _r;
181588
+ _r$1 = brightSignOperationContext(new time.Duration(0, 1000000000)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
181589
+ _arg = (x = _r$1, new x.constructor.elem(x));
181590
+ _r$2 = $clone(c[0].conn, js.Value).Call("close", new sliceType([_arg])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
181591
+ _r$3 = jshelper.AwaitWithCancel($clone(_r$2, js.Value), brightSignCancelAfter(new time.Duration(0, 1000000000))); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
181592
+ _tuple = _r$3;
181593
+ err = _tuple[1];
181594
+ canceled = _tuple[2];
181595
+ /* */ if (canceled) { $s = 5; continue; }
181596
+ /* */ if (!(err === ptrType.nil)) { $s = 6; continue; }
181597
+ /* */ $s = 7; continue;
181598
+ /* if (canceled) { */ case 5:
181599
+ _r$4 = errs.Errorf("BrightSign TCP stream close timed out", sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
181600
+ closeErr[0] = _r$4;
181601
+ $s = 7; continue;
181602
+ /* } else if (!(err === ptrType.nil)) { */ case 6:
181603
+ _r$5 = jshelper.GetError(err); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
181604
+ _r$6 = _r$5.Error(); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
181605
+ _arg$1 = new $String(_r$6);
181606
+ _r$7 = errs.Errorf("Failed to close BrightSign TCP stream: %s", new sliceType([_arg$1])); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
181607
+ closeErr[0] = _r$7;
181608
+ /* } */ case 7:
181609
+ $s = -1; return;
181610
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, canceled, err, x, $s};return $f;
181611
+ }; })(c, closeErr)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181612
+ $s = -1; return closeErr[0];
181613
+ /* */ } return; } var $f = {$blk: BrightSignTCPConn.ptr.prototype.Close, $c: true, $r, c, closeErr, $s};return $f;
181408
181614
  };
181409
181615
  BrightSignTCPConn.prototype.Close = function() { return this.$val.Close(); };
181410
181616
  ConnectBrightSignTCP = function(host, timeout, secure) {
181411
- var {$24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, awaitErr, err, host, hostname, opts, port, portString, secure, timeout, value, $s, $r, $c} = $restore(this, {host, timeout, secure});
181617
+ var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, awaitErr, canceled, err, host, hostname, opts, port, portString, secure, timeout, value, x, $s, $r, $c} = $restore(this, {host, timeout, secure});
181412
181618
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181619
+ timeout = brightSignFiniteTimeout(timeout);
181413
181620
  /* */ if (!netbrightsigntcp.IsAvailable()) { $s = 1; continue; }
181414
181621
  /* */ $s = 2; continue;
181415
181622
  /* if (!netbrightsigntcp.IsAvailable()) { */ case 1:
@@ -181440,27 +181647,73 @@ $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
181440
181647
  $s = 13; case 13: return $24r$2;
181441
181648
  /* } */ case 11:
181442
181649
  opts = $clone(js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "host", v: new $String(hostname) }, { k: "port", v: new $Int(port) }, { k: "secure", v: new $Bool(secure) }]))), js.Value);
181443
- $unused(timeout);
181444
- _r$4 = $clone(netbrightsigntcp.Get(), js.Value).Call("createRawStream", new sliceType([new opts.constructor.elem(opts)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
181445
- _r$5 = jshelper.Await($clone(_r$4, js.Value)); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
181446
- _tuple$2 = _r$5;
181650
+ _arg = new opts.constructor.elem(opts);
181651
+ _r$4 = brightSignOperationContext(timeout); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
181652
+ _arg$1 = (x = _r$4, new x.constructor.elem(x));
181653
+ _r$5 = $clone(netbrightsigntcp.Get(), js.Value).Call("createRawStream", new sliceType([_arg, _arg$1])); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
181654
+ _r$6 = jshelper.AwaitWithCancel($clone(_r$5, js.Value), brightSignCancelAfter(timeout)); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
181655
+ _tuple$2 = _r$6;
181447
181656
  value = _tuple$2[0];
181448
181657
  awaitErr = _tuple$2[1];
181449
- /* */ if (!(awaitErr === ptrType.nil)) { $s = 16; continue; }
181450
- /* */ $s = 17; continue;
181451
- /* if (!(awaitErr === ptrType.nil)) { */ case 16:
181452
- _arg = new $String(host);
181453
- _r$6 = jshelper.GetError(awaitErr); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
181454
- _r$7 = _r$6.Error(); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
181455
- _arg$1 = new $String(_r$7);
181456
- _r$8 = errs.Errorf("Failed to connect BrightSign TCP %s: %s", new sliceType([_arg, _arg$1])); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
181457
- $24r$3 = [$ifaceNil, _r$8];
181458
- $s = 21; case 21: return $24r$3;
181459
- /* } */ case 17:
181460
- $s = -1; return [new BrightSignTCPConn.ptr(value, new sync.Mutex.ptr(0, 0), sliceType$2.nil), $ifaceNil];
181461
- /* */ } return; } var $f = {$blk: ConnectBrightSignTCP, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, awaitErr, err, host, hostname, opts, port, portString, secure, timeout, value, $s};return $f;
181658
+ canceled = _tuple$2[2];
181659
+ /* */ if (canceled) { $s = 17; continue; }
181660
+ /* */ $s = 18; continue;
181661
+ /* if (canceled) { */ case 17:
181662
+ _r$7 = errs.Errorf("Timed out connecting BrightSign TCP %s", new sliceType([new $String(host)])); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
181663
+ $24r$3 = [$ifaceNil, _r$7];
181664
+ $s = 20; case 20: return $24r$3;
181665
+ /* } */ case 18:
181666
+ /* */ if (!(awaitErr === ptrType.nil)) { $s = 21; continue; }
181667
+ /* */ $s = 22; continue;
181668
+ /* if (!(awaitErr === ptrType.nil)) { */ case 21:
181669
+ _arg$2 = new $String(host);
181670
+ _r$8 = jshelper.GetError(awaitErr); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
181671
+ _r$9 = _r$8.Error(); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
181672
+ _arg$3 = new $String(_r$9);
181673
+ _r$10 = errs.Errorf("Failed to connect BrightSign TCP %s: %s", new sliceType([_arg$2, _arg$3])); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
181674
+ $24r$4 = [$ifaceNil, _r$10];
181675
+ $s = 26; case 26: return $24r$4;
181676
+ /* } */ case 22:
181677
+ _r$11 = $clone($clone(js.Global(), js.Value).Get("AbortController"), js.Value).New(sliceType.nil); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
181678
+ $24r$5 = [new BrightSignTCPConn.ptr(value, $clone(_r$11, js.Value), new $Chan(structType, 0), new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), new sync.Mutex.ptr(0, 0), sliceType$2.nil), $ifaceNil];
181679
+ $s = 28; case 28: return $24r$5;
181680
+ /* */ } return; } var $f = {$blk: ConnectBrightSignTCP, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, awaitErr, canceled, err, host, hostname, opts, port, portString, secure, timeout, value, x, $s};return $f;
181462
181681
  };
181463
181682
  $pkg.ConnectBrightSignTCP = ConnectBrightSignTCP;
181683
+ brightSignOperationContext = function(timeout) {
181684
+ var {$24r, _r, _r$1, _r$2, timeout, $s, $r, $c} = $restore(this, {timeout});
181685
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181686
+ _r = $clone($clone(js.Global(), js.Value).Get("Date"), js.Value).Call("now", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181687
+ _r$1 = $clone(_r, js.Value).Float(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
181688
+ _r$2 = js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "deadlineMs", v: new $Float64(_r$1 + ($flatten64(timeout.Milliseconds()))) }]))); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
181689
+ $24r = _r$2;
181690
+ $s = 4; case 4: return $24r;
181691
+ /* */ } return; } var $f = {$blk: brightSignOperationContext, $c: true, $r, $24r, _r, _r$1, _r$2, timeout, $s};return $f;
181692
+ };
181693
+ brightSignFiniteTimeout = function(timeout) {
181694
+ var timeout;
181695
+ if ((timeout.$high < 0 || (timeout.$high === 0 && timeout.$low <= 0))) {
181696
+ return new time.Duration(0, 1000000000);
181697
+ }
181698
+ return timeout;
181699
+ };
181700
+ brightSignCancelAfter = function(timeout) {
181701
+ var cancel, timeout;
181702
+ cancel = new $Chan(structType, 0);
181703
+ $go((function $b() {
181704
+ var {_r, _r$1, timer, $s, $deferred, $r, $c} = $restore(this, {});
181705
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
181706
+ _r = time.NewTimer(brightSignFiniteTimeout(timeout)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181707
+ timer = _r;
181708
+ $deferred.push([$methodVal(timer, "Stop"), []]);
181709
+ _r$1 = $recv(timer.C); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
181710
+ _r$1[0];
181711
+ $close(cancel);
181712
+ $s = -1; return;
181713
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: $b, $c: true, $r, _r, _r$1, timer, $s, $deferred};return $f; } }
181714
+ }), []);
181715
+ return cancel;
181716
+ };
181464
181717
  ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetJSConnection", name: "GetJSConnection", pkg: "", typ: $funcType([], [ptrType], false)}];
181465
181718
  ptrType$2.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetJSConnection", name: "GetJSConnection", pkg: "", typ: $funcType([], [ptrType], false)}];
181466
181719
  ptrType$4.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
@@ -181470,7 +181723,7 @@ $packages["github.com/supraio/client-daemon/pkg/netstream"] = (function() {
181470
181723
  JsWebsocketConn.init("github.com/supraio/client-daemon/pkg/netstream", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType$3, tag: ""}]);
181471
181724
  ReaderWriter.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]);
181472
181725
  ReaderWriterCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]);
181473
- BrightSignTCPConn.init("github.com/supraio/client-daemon/pkg/netstream", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "readMu", name: "readMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "remainder", name: "remainder", embedded: false, exported: false, typ: sliceType$2, tag: ""}]);
181726
+ BrightSignTCPConn.init("github.com/supraio/client-daemon/pkg/netstream", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "controller", name: "controller", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "cancel", name: "cancel", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "closeOnce", name: "closeOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "readMu", name: "readMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "remainder", name: "remainder", embedded: false, exported: false, typ: sliceType$2, tag: ""}]);
181474
181727
  $init = function() {
181475
181728
  $pkg.$init = function() {};
181476
181729
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -181780,599 +182033,18 @@ $packages["github.com/supraio/client-daemon/pkg/clipboard"] = (function() {
181780
182033
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
181781
182034
  };
181782
182035
  $pkg.$init = $init;
181783
- return $pkg;
181784
- })();
181785
- $packages["github.com/supraio/client-daemon/pkg/decoder/general"] = (function() {
181786
- var $pkg = {}, $init, image, OutputBuffer, ptrType;
181787
- image = $packages["image"];
181788
- OutputBuffer = $pkg.OutputBuffer = $newType(8, $kindInterface, "general.OutputBuffer", true, "github.com/supraio/client-daemon/pkg/decoder/general", true, null);
181789
- ptrType = $ptrType(image.YCbCr);
181790
- OutputBuffer.init([{prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType], false)}]);
181791
- $init = function() {
181792
- $pkg.$init = function() {};
181793
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
181794
- $r = image.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181795
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
181796
- };
181797
- $pkg.$init = $init;
181798
- return $pkg;
181799
- })();
181800
- $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
181801
- var $pkg = {}, $init, js, time, JSFrame, FrameType, FrameInterface, ReleasableFrame, Frame, funcType, arrayType, sliceType, ptrType, ptrType$1, NewJSFrame, Release, NewFrame;
181802
- js = $packages["syscall/js"];
181803
- time = $packages["time"];
181804
- JSFrame = $pkg.JSFrame = $newType(0, $kindStruct, "frame.JSFrame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, function(frameType_, buffer_, timestamp_) {
181805
- this.$val = this;
181806
- if (arguments.length === 0) {
181807
- this.frameType = 0;
181808
- this.buffer = new js.Value.ptr(null, false, arrayType.zero());
181809
- this.timestamp = new $Uint64(0, 0);
181810
- return;
181811
- }
181812
- this.frameType = frameType_;
181813
- this.buffer = buffer_;
181814
- this.timestamp = timestamp_;
181815
- });
181816
- FrameType = $pkg.FrameType = $newType(1, $kindUint8, "frame.FrameType", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
181817
- FrameInterface = $pkg.FrameInterface = $newType(8, $kindInterface, "frame.FrameInterface", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
181818
- ReleasableFrame = $pkg.ReleasableFrame = $newType(8, $kindInterface, "frame.ReleasableFrame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
181819
- Frame = $pkg.Frame = $newType(0, $kindStruct, "frame.Frame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, function(frameType_, buffer_, timestamp_) {
181820
- this.$val = this;
181821
- if (arguments.length === 0) {
181822
- this.frameType = 0;
181823
- this.buffer = sliceType.nil;
181824
- this.timestamp = new $Uint64(0, 0);
181825
- return;
181826
- }
181827
- this.frameType = frameType_;
181828
- this.buffer = buffer_;
181829
- this.timestamp = timestamp_;
181830
- });
181831
- funcType = $funcType([], [], false);
181832
- arrayType = $arrayType(funcType, 0);
181833
- sliceType = $sliceType($Uint8);
181834
- ptrType = $ptrType(JSFrame);
181835
- ptrType$1 = $ptrType(Frame);
181836
- NewJSFrame = function(frameType, buffer, timestamp) {
181837
- var buffer, frameType, timestamp;
181838
- return new JSFrame.ptr(frameType, $clone(buffer, js.Value), timestamp);
181839
- };
181840
- $pkg.NewJSFrame = NewJSFrame;
181841
- JSFrame.ptr.prototype.FrameType = function() {
181842
- var f;
181843
- f = this;
181844
- return f.frameType;
181845
- };
181846
- JSFrame.prototype.FrameType = function() { return this.$val.FrameType(); };
181847
- JSFrame.ptr.prototype.Buffer = function() {
181848
- var f;
181849
- f = this;
181850
- return sliceType.nil;
181851
- };
181852
- JSFrame.prototype.Buffer = function() { return this.$val.Buffer(); };
181853
- JSFrame.ptr.prototype.JSBuffer = function() {
181854
- var f;
181855
- f = this;
181856
- return f.buffer;
181857
- };
181858
- JSFrame.prototype.JSBuffer = function() { return this.$val.JSBuffer(); };
181859
- JSFrame.ptr.prototype.ByteLength = function() {
181860
- var f;
181861
- f = this;
181862
- return $clone($clone(f.buffer, js.Value).Get("byteLength"), js.Value).Int();
181863
- };
181864
- JSFrame.prototype.ByteLength = function() { return this.$val.ByteLength(); };
181865
- JSFrame.ptr.prototype.GetTimestamp = function() {
181866
- var f, x;
181867
- f = this;
181868
- return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
181869
- };
181870
- JSFrame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
181871
- Release = function(f) {
181872
- var {_tuple, f, ok, releasable, $s, $r, $c} = $restore(this, {f});
181873
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181874
- _tuple = $assertType(f, ReleasableFrame, true);
181875
- releasable = _tuple[0];
181876
- ok = _tuple[1];
181877
- /* */ if (ok) { $s = 1; continue; }
181878
- /* */ $s = 2; continue;
181879
- /* if (ok) { */ case 1:
181880
- $r = releasable.Release(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181881
- $s = -1; return true;
181882
- /* } */ case 2:
181883
- $s = -1; return false;
181884
- /* */ } return; } var $f = {$blk: Release, $c: true, $r, _tuple, f, ok, releasable, $s};return $f;
181885
- };
181886
- $pkg.Release = Release;
181887
- NewFrame = function(frameType, buffer, timestamp) {
181888
- var buffer, frameType, timestamp;
181889
- return new Frame.ptr(frameType, buffer, timestamp);
181890
- };
181891
- $pkg.NewFrame = NewFrame;
181892
- Frame.ptr.prototype.FrameType = function() {
181893
- var f;
181894
- f = this;
181895
- return f.frameType;
181896
- };
181897
- Frame.prototype.FrameType = function() { return this.$val.FrameType(); };
181898
- Frame.ptr.prototype.Buffer = function() {
181899
- var f;
181900
- f = this;
181901
- return f.buffer;
181902
- };
181903
- Frame.prototype.Buffer = function() { return this.$val.Buffer(); };
181904
- Frame.ptr.prototype.GetTimestamp = function() {
181905
- var f, x;
181906
- f = this;
181907
- return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
181908
- };
181909
- Frame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
181910
- ptrType.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "JSBuffer", name: "JSBuffer", pkg: "", typ: $funcType([], [js.Value], false)}, {prop: "ByteLength", name: "ByteLength", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}];
181911
- ptrType$1.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}];
181912
- JSFrame.init("github.com/supraio/client-daemon/pkg/render/frame", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: FrameType, tag: ""}, {prop: "buffer", name: "buffer", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}]);
181913
- FrameInterface.init([{prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}]);
181914
- ReleasableFrame.init([{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}]);
181915
- Frame.init("github.com/supraio/client-daemon/pkg/render/frame", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: FrameType, tag: ""}, {prop: "buffer", name: "buffer", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}]);
181916
- $init = function() {
181917
- $pkg.$init = function() {};
181918
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
181919
- $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181920
- $r = time.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181921
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
181922
- };
181923
- $pkg.$init = $init;
181924
- return $pkg;
181925
- })();
181926
- $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function() {
181927
- var $pkg = {}, $init, binary, errs, netpacket, frame, time, GenericFrameCollector, FrameMapItem, FrameCollectionDurationCallback, FrameCollectorInterface, sliceType, ptrType, sliceType$1, funcType, ptrType$1, mapType, frameCollectorFactories, NewGenericFrameCollector, NewFrameCollector, RegisterFrameCollector;
181928
- binary = $packages["encoding/binary"];
181929
- errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
181930
- netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
181931
- frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
181932
- time = $packages["time"];
181933
- GenericFrameCollector = $pkg.GenericFrameCollector = $newType(0, $kindStruct, "netframe.GenericFrameCollector", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, function(conn_, framesMap_, maxPacketSize_, packetBuffer_) {
181934
- this.$val = this;
181935
- if (arguments.length === 0) {
181936
- this.conn = $ifaceNil;
181937
- this.framesMap = false;
181938
- this.maxPacketSize = 0;
181939
- this.packetBuffer = sliceType.nil;
181940
- return;
181941
- }
181942
- this.conn = conn_;
181943
- this.framesMap = framesMap_;
181944
- this.maxPacketSize = maxPacketSize_;
181945
- this.packetBuffer = packetBuffer_;
181946
- });
181947
- FrameMapItem = $pkg.FrameMapItem = $newType(0, $kindStruct, "netframe.FrameMapItem", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, function(buffer_, frameType_, timestamp_, frameID_, total_, received_) {
181948
- this.$val = this;
181949
- if (arguments.length === 0) {
181950
- this.buffer = sliceType.nil;
181951
- this.frameType = 0;
181952
- this.timestamp = new $Uint64(0, 0);
181953
- this.frameID = 0;
181954
- this.total = 0;
181955
- this.received = 0;
181956
- return;
181957
- }
181958
- this.buffer = buffer_;
181959
- this.frameType = frameType_;
181960
- this.timestamp = timestamp_;
181961
- this.frameID = frameID_;
181962
- this.total = total_;
181963
- this.received = received_;
181964
- });
181965
- FrameCollectionDurationCallback = $pkg.FrameCollectionDurationCallback = $newType(4, $kindFunc, "netframe.FrameCollectionDurationCallback", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, null);
181966
- FrameCollectorInterface = $pkg.FrameCollectorInterface = $newType(8, $kindInterface, "netframe.FrameCollectorInterface", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, null);
181967
- sliceType = $sliceType($Uint8);
181968
- ptrType = $ptrType(FrameMapItem);
181969
- sliceType$1 = $sliceType($emptyInterface);
181970
- funcType = $funcType([], [], false);
181971
- ptrType$1 = $ptrType(GenericFrameCollector);
181972
- mapType = $mapType($Uint16, ptrType);
181973
- NewGenericFrameCollector = function(screenConn, maxPacketSize) {
181974
- var maxPacketSize, screenConn;
181975
- return new GenericFrameCollector.ptr(screenConn, $makeMap($Uint16.keyFor, []), maxPacketSize, $makeSlice(sliceType, maxPacketSize));
181976
- };
181977
- $pkg.NewGenericFrameCollector = NewGenericFrameCollector;
181978
- GenericFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
181979
- var {$24r, _entry, _key, _r, _r$1, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, endCb, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, param, received, seq, startCb, total, $s, $r, $c} = $restore(this, {startCb, endCb, param});
181980
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181981
- c = this;
181982
- packetBuffer = c.packetBuffer;
181983
- dataPartSize = c.maxPacketSize - 6 >> 0;
181984
- /* while (true) { */ case 1:
181985
- _r = c.conn.Read(packetBuffer); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181986
- _tuple = _r;
181987
- bufferLength = _tuple[0];
181988
- err = _tuple[1];
181989
- if (!($interfaceIsEqual(err, $ifaceNil))) {
181990
- c.framesMap = $makeMap($Uint16.keyFor, []);
181991
- $s = -1; return [$ifaceNil, err];
181992
- }
181993
- headerSize = 6;
181994
- frameID = $clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(packetBuffer, 0, 2));
181995
- seq = $clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(packetBuffer, 2, 4));
181996
- total = $clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(packetBuffer, 4, 6));
181997
- _tuple$1 = (_entry = $mapIndex(c.framesMap,$Uint16.keyFor(frameID)), _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]);
181998
- frameMapItem = _tuple$1[0];
181999
- frameExists = _tuple$1[1];
182000
- /* */ if (!frameExists || (seq === 0) || !((total === frameMapItem.total))) { $s = 4; continue; }
182001
- /* */ $s = 5; continue;
182002
- /* if (!frameExists || (seq === 0) || !((total === frameMapItem.total))) { */ case 4:
182003
- $r = startCb(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182004
- bufferSize = $imul(((total >> 0)), dataPartSize);
182005
- received = 0;
182006
- frameMapItem = new FrameMapItem.ptr($makeSlice(sliceType, bufferSize), 0, new $Uint64(0, 0), frameID, total, received);
182007
- _key = frameID; (c.framesMap || $throwRuntimeError("assignment to entry in nil map")).set($Uint16.keyFor(_key), { k: _key, v: frameMapItem });
182008
- if (seq === 0) {
182009
- frameMapItem.frameType = (((6 >= packetBuffer.$length ? ($throwRuntimeError("index out of range"), undefined) : packetBuffer.$array[packetBuffer.$offset + 6]) << 24 >>> 24));
182010
- frameMapItem.timestamp = $clone(binary.BigEndian, binary.bigEndian).Uint64($subslice(packetBuffer, 7, 15));
182011
- headerSize = 15;
182012
- }
182013
- /* } */ case 5:
182014
- dataStartsAt = $imul(((seq >> 0)), dataPartSize);
182015
- if (seq > 0) {
182016
- dataStartsAt = dataStartsAt - 9 >> 0;
182017
- }
182018
- dataEndsAt = (dataStartsAt + bufferLength >> 0) - headerSize >> 0;
182019
- $copySlice($subslice(frameMapItem.buffer, dataStartsAt, dataEndsAt), $subslice(packetBuffer, headerSize, bufferLength));
182020
- frameMapItem.received = frameMapItem.received + 1 << 16 >>> 16;
182021
- /* */ if ((seq + 1 << 16 >>> 16) === total) { $s = 7; continue; }
182022
- /* */ $s = 8; continue;
182023
- /* if ((seq + 1 << 16 >>> 16) === total) { */ case 7:
182024
- buffer = $subslice(frameMapItem.buffer, 0, dataEndsAt);
182025
- /* */ if (!((frameMapItem.received === frameMapItem.total))) { $s = 9; continue; }
182026
- /* */ $s = 10; continue;
182027
- /* if (!((frameMapItem.received === frameMapItem.total))) { */ case 9:
182028
- $mapDelete(c.framesMap, $Uint16.keyFor(frameID));
182029
- $r = endCb(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182030
- _r$1 = errs.Errorf("Frame %d is not fully collected. Received %d packets from %d", new sliceType$1([new $Uint16(frameID), new $Uint16(frameMapItem.received), new $Uint16(frameMapItem.total)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
182031
- $24r = [$ifaceNil, _r$1];
182032
- $s = 13; case 13: return $24r;
182033
- /* } */ case 10:
182034
- $mapDelete(c.framesMap, $Uint16.keyFor(frameID));
182035
- $r = endCb(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182036
- $s = -1; return [frame.NewFrame(frameMapItem.frameType, buffer, frameMapItem.timestamp), $ifaceNil];
182037
- /* } */ case 8:
182038
- $s = 1; continue;
182039
- case 2:
182040
- $s = -1; return [$ifaceNil, $ifaceNil];
182041
- /* */ } return; } var $f = {$blk: GenericFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _entry, _key, _r, _r$1, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, endCb, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, param, received, seq, startCb, total, $s};return $f;
182042
- };
182043
- GenericFrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
182044
- NewFrameCollector = function(screenConn, maxPacketSize) {
182045
- var {_entry, _i, _key, _keys, _r, _ref, _size, factory, frameCollector, maxPacketSize, screenConn, $s, $r, $c} = $restore(this, {screenConn, maxPacketSize});
182046
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
182047
- _ref = frameCollectorFactories;
182048
- _i = 0;
182049
- _keys = _ref ? _ref.keys() : undefined;
182050
- _size = _ref ? _ref.size : 0;
182051
- /* while (true) { */ case 1:
182052
- /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 2; continue; }
182053
- _key = _keys.next().value;
182054
- _entry = _ref.get(_key);
182055
- if (_entry === undefined) {
182056
- _i++;
182057
- /* continue; */ $s = 1; continue;
182058
- }
182059
- factory = _entry.v;
182060
- _r = factory(screenConn, maxPacketSize); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
182061
- frameCollector = _r;
182062
- if (!($interfaceIsEqual(frameCollector, $ifaceNil))) {
182063
- $s = -1; return frameCollector;
182064
- }
182065
- _i++;
182066
- $s = 1; continue;
182067
- case 2:
182068
- $s = -1; return NewGenericFrameCollector(screenConn, maxPacketSize);
182069
- /* */ } return; } var $f = {$blk: NewFrameCollector, $c: true, $r, _entry, _i, _key, _keys, _r, _ref, _size, factory, frameCollector, maxPacketSize, screenConn, $s};return $f;
182070
- };
182071
- $pkg.NewFrameCollector = NewFrameCollector;
182072
- RegisterFrameCollector = function(name, factory) {
182073
- var _key, factory, name;
182074
- _key = name; (frameCollectorFactories || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: factory });
182075
- };
182076
- $pkg.RegisterFrameCollector = RegisterFrameCollector;
182077
- ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
182078
- GenericFrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "framesMap", name: "framesMap", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "maxPacketSize", name: "maxPacketSize", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "packetBuffer", name: "packetBuffer", embedded: false, exported: false, typ: sliceType, tag: ""}]);
182079
- FrameMapItem.init("github.com/supraio/client-daemon/pkg/render/netframe", [{prop: "buffer", name: "buffer", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "frameID", name: "frameID", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "total", name: "total", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "received", name: "received", embedded: false, exported: false, typ: $Uint16, tag: ""}]);
182080
- FrameCollectionDurationCallback.init([time.Duration], [], false);
182081
- FrameCollectorInterface.init([{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}]);
182082
- $init = function() {
182083
- $pkg.$init = function() {};
182084
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
182085
- $r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182086
- $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182087
- $r = netpacket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182088
- $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182089
- $r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182090
- frameCollectorFactories = new $global.Map();
182091
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
182092
- };
182093
- $pkg.$init = $init;
182094
- return $pkg;
182095
- })();
182096
- $packages["github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp"] = (function() {
182097
- var $pkg = {}, $init, errs, jshelper, netbrightsigntcp, netpacket, frame, netframe, log, sync, js, time, FrameCollector, Frame, ptrType, sliceType, ptrType$1, funcType, arrayType, sliceType$1, ptrType$2, ptrType$3, init, NewFrameCollector;
182098
- errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
182099
- jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
182100
- netbrightsigntcp = $packages["github.com/supraio/client-daemon/pkg/netbrightsigntcp"];
182101
- netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
182102
- frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
182103
- netframe = $packages["github.com/supraio/client-daemon/pkg/render/netframe"];
182104
- log = $packages["log"];
182105
- sync = $packages["sync"];
182106
- js = $packages["syscall/js"];
182107
- time = $packages["time"];
182108
- FrameCollector = $pkg.FrameCollector = $newType(0, $kindStruct, "brightsigntcp.FrameCollector", true, "github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp", true, function(conn_) {
182109
- this.$val = this;
182110
- if (arguments.length === 0) {
182111
- this.conn = new netpacket.BrightSignTCPConn.ptr(ptrType$1.nil);
182112
- return;
182113
- }
182114
- this.conn = conn_;
182115
- });
182116
- Frame = $pkg.Frame = $newType(0, $kindStruct, "brightsigntcp.Frame", true, "github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp", true, function(frameType_, timestamp_, reference_, releaseOnce_) {
182117
- this.$val = this;
182118
- if (arguments.length === 0) {
182119
- this.frameType = 0;
182120
- this.timestamp = new $Uint64(0, 0);
182121
- this.reference = new js.Value.ptr(null, false, arrayType.zero());
182122
- this.releaseOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0));
182123
- return;
182124
- }
182125
- this.frameType = frameType_;
182126
- this.timestamp = timestamp_;
182127
- this.reference = reference_;
182128
- this.releaseOnce = releaseOnce_;
182129
- });
182130
- ptrType = $ptrType(netpacket.BrightSignTCPConn);
182131
- sliceType = $sliceType($emptyInterface);
182132
- ptrType$1 = $ptrType(js.Value);
182133
- funcType = $funcType([], [], false);
182134
- arrayType = $arrayType(funcType, 0);
182135
- sliceType$1 = $sliceType($Uint8);
182136
- ptrType$2 = $ptrType(FrameCollector);
182137
- ptrType$3 = $ptrType(Frame);
182138
- init = function() {
182139
- if (netbrightsigntcp.IsAvailable()) {
182140
- netframe.RegisterFrameCollector("brightsign_tcp", NewFrameCollector);
182141
- }
182142
- };
182143
- NewFrameCollector = function(screenConn, maxPacketSize) {
182144
- var {_tuple, conn, maxPacketSize, ok, screenConn, $s, $r, $c} = $restore(this, {screenConn, maxPacketSize});
182145
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
182146
- _tuple = $assertType(screenConn, ptrType, true);
182147
- conn = _tuple[0];
182148
- ok = _tuple[1];
182149
- /* */ if (!ok) { $s = 1; continue; }
182150
- /* */ $s = 2; continue;
182151
- /* if (!ok) { */ case 1:
182152
- $r = log.Printf("BrightSign FrameCollector: incompatible connection type %T", new sliceType([screenConn])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182153
- $s = -1; return $ifaceNil;
182154
- /* } */ case 2:
182155
- $unused(maxPacketSize);
182156
- $s = -1; return new FrameCollector.ptr($clone(conn, netpacket.BrightSignTCPConn));
182157
- /* */ } return; } var $f = {$blk: NewFrameCollector, $c: true, $r, _tuple, conn, maxPacketSize, ok, screenConn, $s};return $f;
182158
- };
182159
- $pkg.NewFrameCollector = NewFrameCollector;
182160
- FrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
182161
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, collected, endCb, err, param, startCb, timestampHi, timestampLo, x, $s, $r, $c} = $restore(this, {startCb, endCb, param});
182162
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
182163
- c = this;
182164
- $r = startCb(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182165
- _r = $clone(c.conn.GetJSConnection(), js.Value).Call("readFrame", sliceType.nil); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
182166
- _r$1 = jshelper.Await($clone(_r, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
182167
- _tuple = _r$1;
182168
- collected = _tuple[0];
182169
- err = _tuple[1];
182170
- $r = endCb(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182171
- /* */ if (!(err === ptrType$1.nil)) { $s = 5; continue; }
182172
- /* */ $s = 6; continue;
182173
- /* if (!(err === ptrType$1.nil)) { */ case 5:
182174
- _r$2 = jshelper.GetError(err); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
182175
- _r$3 = _r$2.Error(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
182176
- _arg = new $String(_r$3);
182177
- _r$4 = errs.Errorf("Failed to collect BrightSign TCP frame: %s", new sliceType([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
182178
- $24r = [$ifaceNil, _r$4];
182179
- $s = 10; case 10: return $24r;
182180
- /* } */ case 6:
182181
- timestampLo = (new $Uint64(0, (($clone($clone($clone(collected, js.Value).Get("timestamp"), js.Value).Get("lo"), js.Value).Int() >>> 0))));
182182
- timestampHi = (new $Uint64(0, (($clone($clone($clone(collected, js.Value).Get("timestamp"), js.Value).Get("hi"), js.Value).Int() >>> 0))));
182183
- $s = -1; return [new Frame.ptr((($clone($clone(collected, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), (x = $shiftLeft64(timestampHi, 32), new $Uint64(timestampLo.$high | x.$high, (timestampLo.$low | x.$low) >>> 0)), $clone($clone(collected, js.Value).Get("reference"), js.Value), new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0))), $ifaceNil];
182184
- /* */ } return; } var $f = {$blk: FrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, collected, endCb, err, param, startCb, timestampHi, timestampLo, x, $s};return $f;
182185
- };
182186
- FrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
182187
- Frame.ptr.prototype.FrameType = function() {
182188
- var f;
182189
- f = this;
182190
- return f.frameType;
182191
- };
182192
- Frame.prototype.FrameType = function() { return this.$val.FrameType(); };
182193
- Frame.ptr.prototype.Buffer = function() {
182194
- var f;
182195
- f = this;
182196
- return sliceType$1.nil;
182197
- };
182198
- Frame.prototype.Buffer = function() { return this.$val.Buffer(); };
182199
- Frame.ptr.prototype.GetTimestamp = function() {
182200
- var f, x;
182201
- f = this;
182202
- return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
182203
- };
182204
- Frame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
182205
- Frame.ptr.prototype.Reference = function() {
182206
- var f;
182207
- f = this;
182208
- return f.reference;
182209
- };
182210
- Frame.prototype.Reference = function() { return this.$val.Reference(); };
182211
- Frame.ptr.prototype.Release = function() {
182212
- var {f, $s, $r, $c} = $restore(this, {});
182213
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
182214
- f = [f];
182215
- f[0] = this;
182216
- $r = f[0].releaseOnce.Do((function(f) { return function() {
182217
- var release, x;
182218
- release = $clone($clone(js.Global(), js.Value).Get("brightSignReleaseFrameReference"), js.Value);
182219
- if ($clone(release, js.Value).Type() === 7) {
182220
- $clone(release, js.Value).Invoke(new sliceType([(x = f[0].reference, new x.constructor.elem(x))]));
182221
- }
182222
- }; })(f)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182223
- $s = -1; return;
182224
- /* */ } return; } var $f = {$blk: Frame.ptr.prototype.Release, $c: true, $r, f, $s};return $f;
182225
- };
182226
- Frame.prototype.Release = function() { return this.$val.Release(); };
182227
- ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
182228
- ptrType$3.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [frame.FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Reference", name: "Reference", pkg: "", typ: $funcType([], [js.Value], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
182229
- FrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.BrightSignTCPConn, tag: ""}]);
182230
- Frame.init("github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "reference", name: "reference", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "releaseOnce", name: "releaseOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}]);
182231
- $init = function() {
182232
- $pkg.$init = function() {};
182233
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
182234
- $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182235
- $r = jshelper.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182236
- $r = netbrightsigntcp.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182237
- $r = netpacket.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182238
- $r = frame.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182239
- $r = netframe.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182240
- $r = log.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182241
- $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182242
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182243
- $r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182244
- init();
182245
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
182246
- };
182247
- $pkg.$init = $init;
182248
- return $pkg;
182249
- })();
182250
- $packages["github.com/supraio/client-daemon/pkg/decoder/brightsigndecoder"] = (function() {
182251
- var $pkg = {}, $init, general, errs, jshelper, frame, brightsigntcp, sync, js, Decoder, funcType, arrayType, ptrType, ptrType$1, sliceType, ptrType$2, mapType, ptrType$3, IsAvailable, NewDecoder, frameValue;
182252
- general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
182253
- errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
182254
- jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
182255
- frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
182256
- brightsigntcp = $packages["github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp"];
182257
- sync = $packages["sync"];
182258
- js = $packages["syscall/js"];
182259
- Decoder = $pkg.Decoder = $newType(0, $kindStruct, "brightsigndecoder.Decoder", true, "github.com/supraio/client-daemon/pkg/decoder/brightsigndecoder", true, function(mutex_) {
182260
- this.$val = this;
182261
- if (arguments.length === 0) {
182262
- this.mutex = new sync.Mutex.ptr(0, 0);
182263
- return;
182264
- }
182265
- this.mutex = mutex_;
182266
- });
182267
- funcType = $funcType([], [], false);
182268
- arrayType = $arrayType(funcType, 0);
182269
- ptrType = $ptrType(brightsigntcp.Frame);
182270
- ptrType$1 = $ptrType(frame.JSFrame);
182271
- sliceType = $sliceType($emptyInterface);
182272
- ptrType$2 = $ptrType(js.Value);
182273
- mapType = $mapType($String, $emptyInterface);
182274
- ptrType$3 = $ptrType(Decoder);
182275
- IsAvailable = function() {
182276
- return !$clone($clone(js.Global(), js.Value).Get("brightSignDecoder"), js.Value).IsUndefined();
182277
- };
182278
- $pkg.IsAvailable = IsAvailable;
182279
- NewDecoder = function(header) {
182280
- var header;
182281
- $unused(header);
182282
- return [new Decoder.ptr(new sync.Mutex.ptr(0, 0)), $ifaceNil];
182283
- };
182284
- $pkg.NewDecoder = NewDecoder;
182285
- Decoder.ptr.prototype.Write = function(source) {
182286
- var {$24r, $24r$1, _arg, _arg$1, _arg$2, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, current, current$1, current$2, d, data, decoder, err, promise, source, uint8Array, uint8Array$1, x, x$1, x$2, x$3, $s, $deferred, $r, $c} = $restore(this, {source});
182287
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
182288
- d = this;
182289
- $r = d.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182290
- $deferred.push([$methodVal(d.mutex, "Unlock"), []]);
182291
- decoder = $clone($clone(js.Global(), js.Value).Get("brightSignDecoder"), js.Value);
182292
- promise = new js.Value.ptr(null, false, arrayType.zero());
182293
- _ref = source;
182294
- /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 2; continue; }
182295
- /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 3; continue; }
182296
- /* */ $s = 4; continue;
182297
- /* if ($assertType(_ref, ptrType, true)[1]) { */ case 2:
182298
- current = _ref.$val;
182299
- _r = $clone(decoder, js.Value).Call("decodeAndRenderRef", new sliceType([(x = current.Reference(), new x.constructor.elem(x))])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
182300
- js.Value.copy(promise, _r);
182301
- $s = 5; continue;
182302
- /* } else if ($assertType(_ref, ptrType$1, true)[1]) { */ case 3:
182303
- current$1 = _ref.$val;
182304
- _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([(x$1 = current$1.JSBuffer(), new x$1.constructor.elem(x$1))])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
182305
- uint8Array = $clone(_r$1, js.Value);
182306
- _r$2 = frameValue($clone(uint8Array, js.Value), source); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
182307
- _arg = (x$2 = _r$2, new x$2.constructor.elem(x$2));
182308
- _r$3 = $clone(decoder, js.Value).Call("decodeAndRender", new sliceType([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
182309
- js.Value.copy(promise, _r$3);
182310
- $s = 5; continue;
182311
- /* } else { */ case 4:
182312
- current$2 = _ref;
182313
- _r$4 = source.Buffer(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
182314
- data = _r$4;
182315
- _r$5 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new $Int(data.$length)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
182316
- uint8Array$1 = $clone(_r$5, js.Value);
182317
- js.CopyBytesToJS($clone(uint8Array$1, js.Value), data);
182318
- _r$6 = frameValue($clone(uint8Array$1, js.Value), source); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
182319
- _arg$1 = (x$3 = _r$6, new x$3.constructor.elem(x$3));
182320
- _r$7 = $clone(decoder, js.Value).Call("decodeAndRender", new sliceType([_arg$1])); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
182321
- js.Value.copy(promise, _r$7);
182322
- /* } */ case 5:
182323
- _r$8 = jshelper.Await($clone(promise, js.Value)); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
182324
- _tuple = _r$8;
182325
- err = _tuple[1];
182326
- /* */ if (!(err === ptrType$2.nil)) { $s = 15; continue; }
182327
- /* */ $s = 16; continue;
182328
- /* if (!(err === ptrType$2.nil)) { */ case 15:
182329
- _r$9 = jshelper.GetError(err); /* */ $s = 17; case 17: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
182330
- _r$10 = _r$9.Error(); /* */ $s = 18; case 18: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
182331
- _arg$2 = new $String(_r$10);
182332
- _r$11 = errs.Errorf("Failed to decode BrightSign frame: %s", new sliceType([_arg$2])); /* */ $s = 19; case 19: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
182333
- $24r = _r$11;
182334
- $s = 20; case 20: return $24r;
182335
- /* } */ case 16:
182336
- $24r$1 = $ifaceNil;
182337
- $s = 21; case 21: return $24r$1;
182338
- /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Decoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _arg$2, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, current, current$1, current$2, d, data, decoder, err, promise, source, uint8Array, uint8Array$1, x, x$1, x$2, x$3, $s, $deferred};return $f; } }
182339
- };
182340
- Decoder.prototype.Write = function(source) { return this.$val.Write(source); };
182341
- frameValue = function(data, source) {
182342
- var {$24r, _r, _r$1, _r$2, _r$3, data, source, timestamp, x, $s, $r, $c} = $restore(this, {data, source});
182343
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
182344
- _r = source.GetTimestamp(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
182345
- _r$1 = $clone(_r, $packages["time"].Time).UnixNano(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
182346
- timestamp = ((x = _r$1, new $Uint64(x.$high, x.$low)));
182347
- _r$2 = source.FrameType(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
182348
- _r$3 = js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "data", v: new data.constructor.elem(data) }, { k: "frameType", v: new $Int(((_r$2 >> 0))) }, { k: "timestamp", v: new mapType($makeMap($String.keyFor, [{ k: "hi", v: new $Uint32((($shiftRightUint64(timestamp, 32).$low >>> 0))) }, { k: "lo", v: new $Uint32(((timestamp.$low >>> 0))) }])) }]))); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
182349
- $24r = _r$3;
182350
- $s = 5; case 5: return $24r;
182351
- /* */ } return; } var $f = {$blk: frameValue, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, data, source, timestamp, x, $s};return $f;
182352
- };
182353
- Decoder.ptr.prototype.NextOutput = function(outputBuffer) {
182354
- var d, outputBuffer;
182355
- d = this;
182356
- return $ifaceNil;
182357
- };
182358
- Decoder.prototype.NextOutput = function(outputBuffer) { return this.$val.NextOutput(outputBuffer); };
182359
- Decoder.ptr.prototype.Release = function(outputBuffer) {
182360
- var d, outputBuffer;
182361
- d = this;
182362
- };
182363
- Decoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
182364
- ptrType$3.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
182365
- Decoder.init("github.com/supraio/client-daemon/pkg/decoder/brightsigndecoder", [{prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}]);
182036
+ return $pkg;
182037
+ })();
182038
+ $packages["github.com/supraio/client-daemon/pkg/decoder/general"] = (function() {
182039
+ var $pkg = {}, $init, image, OutputBuffer, ptrType;
182040
+ image = $packages["image"];
182041
+ OutputBuffer = $pkg.OutputBuffer = $newType(8, $kindInterface, "general.OutputBuffer", true, "github.com/supraio/client-daemon/pkg/decoder/general", true, null);
182042
+ ptrType = $ptrType(image.YCbCr);
182043
+ OutputBuffer.init([{prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType], false)}]);
182366
182044
  $init = function() {
182367
182045
  $pkg.$init = function() {};
182368
182046
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
182369
- $r = general.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182370
- $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182371
- $r = jshelper.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182372
- $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182373
- $r = brightsigntcp.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182374
- $r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182375
- $r = js.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182047
+ $r = image.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
182376
182048
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
182377
182049
  };
182378
182050
  $pkg.$init = $init;
@@ -185866,49 +185538,345 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
185866
185538
  b = this;
185867
185539
  return new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(b.size, image.Point));
185868
185540
  };
185869
- BufferImpl.prototype.Bounds = function() { return this.$val.Bounds(); };
185870
- BufferImpl.ptr.prototype.RGBA = function() {
185871
- var {_r, b, $s, $r, $c} = $restore(this, {});
185541
+ BufferImpl.prototype.Bounds = function() { return this.$val.Bounds(); };
185542
+ BufferImpl.ptr.prototype.RGBA = function() {
185543
+ var {_r, b, $s, $r, $c} = $restore(this, {});
185544
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185545
+ b = this;
185546
+ _r = errs.Errorf("Not implemented RGBA(), use PictureResult() instead", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185547
+ $panic(_r);
185548
+ $s = -1; return ptrType$5.nil;
185549
+ /* */ } return; } var $f = {$blk: BufferImpl.ptr.prototype.RGBA, $c: true, $r, _r, b, $s};return $f;
185550
+ };
185551
+ BufferImpl.prototype.RGBA = function() { return this.$val.RGBA(); };
185552
+ BufferImpl.ptr.prototype.YCbCr = function() {
185553
+ var b;
185554
+ b = this;
185555
+ return new image.YCbCr.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0, $clone(b.Bounds(), image.Rectangle));
185556
+ };
185557
+ BufferImpl.prototype.YCbCr = function() { return this.$val.YCbCr(); };
185558
+ BufferImpl.ptr.prototype.Release = function() {
185559
+ var b;
185560
+ b = this;
185561
+ };
185562
+ BufferImpl.prototype.Release = function() { return this.$val.Release(); };
185563
+ ptrType$7.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "CancelPendingUploads", name: "CancelPendingUploads", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendNonBlocking", name: "SendNonBlocking", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}];
185564
+ ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$8], [screen.Window, $error], false)}];
185565
+ ptrType$4.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$5], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
185566
+ windowImpl.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderDone", name: "renderDone", embedded: false, exported: false, typ: chanType, tag: ""}]);
185567
+ screenImpl.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
185568
+ BufferImpl.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "Picture", name: "Picture", embedded: false, exported: true, typ: ptrType$3, tag: ""}]);
185569
+ $init = function() {
185570
+ $pkg.$init = function() {};
185571
+ /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
185572
+ $r = jsdecoder.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185573
+ $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185574
+ $r = jshelper.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185575
+ $r = dom.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185576
+ $r = screen.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185577
+ $r = f64.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185578
+ $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185579
+ $r = color.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185580
+ $r = draw.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185581
+ $r = log.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185582
+ $r = sync.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185583
+ $r = js.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185584
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
185585
+ };
185586
+ $pkg.$init = $init;
185587
+ return $pkg;
185588
+ })();
185589
+ $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
185590
+ var $pkg = {}, $init, js, time, JSFrame, FrameType, FrameInterface, ReleasableFrame, Frame, funcType, arrayType, sliceType, ptrType, ptrType$1, NewJSFrame, Release, NewFrame;
185591
+ js = $packages["syscall/js"];
185592
+ time = $packages["time"];
185593
+ JSFrame = $pkg.JSFrame = $newType(0, $kindStruct, "frame.JSFrame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, function(frameType_, buffer_, timestamp_) {
185594
+ this.$val = this;
185595
+ if (arguments.length === 0) {
185596
+ this.frameType = 0;
185597
+ this.buffer = new js.Value.ptr(null, false, arrayType.zero());
185598
+ this.timestamp = new $Uint64(0, 0);
185599
+ return;
185600
+ }
185601
+ this.frameType = frameType_;
185602
+ this.buffer = buffer_;
185603
+ this.timestamp = timestamp_;
185604
+ });
185605
+ FrameType = $pkg.FrameType = $newType(1, $kindUint8, "frame.FrameType", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
185606
+ FrameInterface = $pkg.FrameInterface = $newType(8, $kindInterface, "frame.FrameInterface", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
185607
+ ReleasableFrame = $pkg.ReleasableFrame = $newType(8, $kindInterface, "frame.ReleasableFrame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
185608
+ Frame = $pkg.Frame = $newType(0, $kindStruct, "frame.Frame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, function(frameType_, buffer_, timestamp_) {
185609
+ this.$val = this;
185610
+ if (arguments.length === 0) {
185611
+ this.frameType = 0;
185612
+ this.buffer = sliceType.nil;
185613
+ this.timestamp = new $Uint64(0, 0);
185614
+ return;
185615
+ }
185616
+ this.frameType = frameType_;
185617
+ this.buffer = buffer_;
185618
+ this.timestamp = timestamp_;
185619
+ });
185620
+ funcType = $funcType([], [], false);
185621
+ arrayType = $arrayType(funcType, 0);
185622
+ sliceType = $sliceType($Uint8);
185623
+ ptrType = $ptrType(JSFrame);
185624
+ ptrType$1 = $ptrType(Frame);
185625
+ NewJSFrame = function(frameType, buffer, timestamp) {
185626
+ var buffer, frameType, timestamp;
185627
+ return new JSFrame.ptr(frameType, $clone(buffer, js.Value), timestamp);
185628
+ };
185629
+ $pkg.NewJSFrame = NewJSFrame;
185630
+ JSFrame.ptr.prototype.FrameType = function() {
185631
+ var f;
185632
+ f = this;
185633
+ return f.frameType;
185634
+ };
185635
+ JSFrame.prototype.FrameType = function() { return this.$val.FrameType(); };
185636
+ JSFrame.ptr.prototype.Buffer = function() {
185637
+ var f;
185638
+ f = this;
185639
+ return sliceType.nil;
185640
+ };
185641
+ JSFrame.prototype.Buffer = function() { return this.$val.Buffer(); };
185642
+ JSFrame.ptr.prototype.JSBuffer = function() {
185643
+ var f;
185644
+ f = this;
185645
+ return f.buffer;
185646
+ };
185647
+ JSFrame.prototype.JSBuffer = function() { return this.$val.JSBuffer(); };
185648
+ JSFrame.ptr.prototype.ByteLength = function() {
185649
+ var f;
185650
+ f = this;
185651
+ return $clone($clone(f.buffer, js.Value).Get("byteLength"), js.Value).Int();
185652
+ };
185653
+ JSFrame.prototype.ByteLength = function() { return this.$val.ByteLength(); };
185654
+ JSFrame.ptr.prototype.GetTimestamp = function() {
185655
+ var f, x;
185656
+ f = this;
185657
+ return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
185658
+ };
185659
+ JSFrame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
185660
+ Release = function(f) {
185661
+ var {_tuple, f, ok, releasable, $s, $r, $c} = $restore(this, {f});
185662
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185663
+ _tuple = $assertType(f, ReleasableFrame, true);
185664
+ releasable = _tuple[0];
185665
+ ok = _tuple[1];
185666
+ /* */ if (ok) { $s = 1; continue; }
185667
+ /* */ $s = 2; continue;
185668
+ /* if (ok) { */ case 1:
185669
+ $r = releasable.Release(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185670
+ $s = -1; return true;
185671
+ /* } */ case 2:
185672
+ $s = -1; return false;
185673
+ /* */ } return; } var $f = {$blk: Release, $c: true, $r, _tuple, f, ok, releasable, $s};return $f;
185674
+ };
185675
+ $pkg.Release = Release;
185676
+ NewFrame = function(frameType, buffer, timestamp) {
185677
+ var buffer, frameType, timestamp;
185678
+ return new Frame.ptr(frameType, buffer, timestamp);
185679
+ };
185680
+ $pkg.NewFrame = NewFrame;
185681
+ Frame.ptr.prototype.FrameType = function() {
185682
+ var f;
185683
+ f = this;
185684
+ return f.frameType;
185685
+ };
185686
+ Frame.prototype.FrameType = function() { return this.$val.FrameType(); };
185687
+ Frame.ptr.prototype.Buffer = function() {
185688
+ var f;
185689
+ f = this;
185690
+ return f.buffer;
185691
+ };
185692
+ Frame.prototype.Buffer = function() { return this.$val.Buffer(); };
185693
+ Frame.ptr.prototype.GetTimestamp = function() {
185694
+ var f, x;
185695
+ f = this;
185696
+ return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
185697
+ };
185698
+ Frame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
185699
+ ptrType.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "JSBuffer", name: "JSBuffer", pkg: "", typ: $funcType([], [js.Value], false)}, {prop: "ByteLength", name: "ByteLength", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}];
185700
+ ptrType$1.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}];
185701
+ JSFrame.init("github.com/supraio/client-daemon/pkg/render/frame", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: FrameType, tag: ""}, {prop: "buffer", name: "buffer", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}]);
185702
+ FrameInterface.init([{prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [FrameType], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}]);
185703
+ ReleasableFrame.init([{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}]);
185704
+ Frame.init("github.com/supraio/client-daemon/pkg/render/frame", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: FrameType, tag: ""}, {prop: "buffer", name: "buffer", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}]);
185705
+ $init = function() {
185706
+ $pkg.$init = function() {};
185707
+ /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
185708
+ $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185709
+ $r = time.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185710
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
185711
+ };
185712
+ $pkg.$init = $init;
185713
+ return $pkg;
185714
+ })();
185715
+ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function() {
185716
+ var $pkg = {}, $init, binary, errs, netpacket, frame, time, GenericFrameCollector, FrameMapItem, FrameCollectionDurationCallback, FrameCollectorInterface, sliceType, ptrType, sliceType$1, funcType, ptrType$1, mapType, frameCollectorFactories, NewGenericFrameCollector, NewFrameCollector, RegisterFrameCollector;
185717
+ binary = $packages["encoding/binary"];
185718
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
185719
+ netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
185720
+ frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
185721
+ time = $packages["time"];
185722
+ GenericFrameCollector = $pkg.GenericFrameCollector = $newType(0, $kindStruct, "netframe.GenericFrameCollector", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, function(conn_, framesMap_, maxPacketSize_, packetBuffer_) {
185723
+ this.$val = this;
185724
+ if (arguments.length === 0) {
185725
+ this.conn = $ifaceNil;
185726
+ this.framesMap = false;
185727
+ this.maxPacketSize = 0;
185728
+ this.packetBuffer = sliceType.nil;
185729
+ return;
185730
+ }
185731
+ this.conn = conn_;
185732
+ this.framesMap = framesMap_;
185733
+ this.maxPacketSize = maxPacketSize_;
185734
+ this.packetBuffer = packetBuffer_;
185735
+ });
185736
+ FrameMapItem = $pkg.FrameMapItem = $newType(0, $kindStruct, "netframe.FrameMapItem", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, function(buffer_, frameType_, timestamp_, frameID_, total_, received_) {
185737
+ this.$val = this;
185738
+ if (arguments.length === 0) {
185739
+ this.buffer = sliceType.nil;
185740
+ this.frameType = 0;
185741
+ this.timestamp = new $Uint64(0, 0);
185742
+ this.frameID = 0;
185743
+ this.total = 0;
185744
+ this.received = 0;
185745
+ return;
185746
+ }
185747
+ this.buffer = buffer_;
185748
+ this.frameType = frameType_;
185749
+ this.timestamp = timestamp_;
185750
+ this.frameID = frameID_;
185751
+ this.total = total_;
185752
+ this.received = received_;
185753
+ });
185754
+ FrameCollectionDurationCallback = $pkg.FrameCollectionDurationCallback = $newType(4, $kindFunc, "netframe.FrameCollectionDurationCallback", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, null);
185755
+ FrameCollectorInterface = $pkg.FrameCollectorInterface = $newType(8, $kindInterface, "netframe.FrameCollectorInterface", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, null);
185756
+ sliceType = $sliceType($Uint8);
185757
+ ptrType = $ptrType(FrameMapItem);
185758
+ sliceType$1 = $sliceType($emptyInterface);
185759
+ funcType = $funcType([], [], false);
185760
+ ptrType$1 = $ptrType(GenericFrameCollector);
185761
+ mapType = $mapType($Uint16, ptrType);
185762
+ NewGenericFrameCollector = function(screenConn, maxPacketSize) {
185763
+ var maxPacketSize, screenConn;
185764
+ return new GenericFrameCollector.ptr(screenConn, $makeMap($Uint16.keyFor, []), maxPacketSize, $makeSlice(sliceType, maxPacketSize));
185765
+ };
185766
+ $pkg.NewGenericFrameCollector = NewGenericFrameCollector;
185767
+ GenericFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
185768
+ var {$24r, _entry, _key, _r, _r$1, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, endCb, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, param, received, seq, startCb, total, $s, $r, $c} = $restore(this, {startCb, endCb, param});
185769
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185770
+ c = this;
185771
+ packetBuffer = c.packetBuffer;
185772
+ dataPartSize = c.maxPacketSize - 6 >> 0;
185773
+ /* while (true) { */ case 1:
185774
+ _r = c.conn.Read(packetBuffer); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185775
+ _tuple = _r;
185776
+ bufferLength = _tuple[0];
185777
+ err = _tuple[1];
185778
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
185779
+ c.framesMap = $makeMap($Uint16.keyFor, []);
185780
+ $s = -1; return [$ifaceNil, err];
185781
+ }
185782
+ headerSize = 6;
185783
+ frameID = $clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(packetBuffer, 0, 2));
185784
+ seq = $clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(packetBuffer, 2, 4));
185785
+ total = $clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(packetBuffer, 4, 6));
185786
+ _tuple$1 = (_entry = $mapIndex(c.framesMap,$Uint16.keyFor(frameID)), _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]);
185787
+ frameMapItem = _tuple$1[0];
185788
+ frameExists = _tuple$1[1];
185789
+ /* */ if (!frameExists || (seq === 0) || !((total === frameMapItem.total))) { $s = 4; continue; }
185790
+ /* */ $s = 5; continue;
185791
+ /* if (!frameExists || (seq === 0) || !((total === frameMapItem.total))) { */ case 4:
185792
+ $r = startCb(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185793
+ bufferSize = $imul(((total >> 0)), dataPartSize);
185794
+ received = 0;
185795
+ frameMapItem = new FrameMapItem.ptr($makeSlice(sliceType, bufferSize), 0, new $Uint64(0, 0), frameID, total, received);
185796
+ _key = frameID; (c.framesMap || $throwRuntimeError("assignment to entry in nil map")).set($Uint16.keyFor(_key), { k: _key, v: frameMapItem });
185797
+ if (seq === 0) {
185798
+ frameMapItem.frameType = (((6 >= packetBuffer.$length ? ($throwRuntimeError("index out of range"), undefined) : packetBuffer.$array[packetBuffer.$offset + 6]) << 24 >>> 24));
185799
+ frameMapItem.timestamp = $clone(binary.BigEndian, binary.bigEndian).Uint64($subslice(packetBuffer, 7, 15));
185800
+ headerSize = 15;
185801
+ }
185802
+ /* } */ case 5:
185803
+ dataStartsAt = $imul(((seq >> 0)), dataPartSize);
185804
+ if (seq > 0) {
185805
+ dataStartsAt = dataStartsAt - 9 >> 0;
185806
+ }
185807
+ dataEndsAt = (dataStartsAt + bufferLength >> 0) - headerSize >> 0;
185808
+ $copySlice($subslice(frameMapItem.buffer, dataStartsAt, dataEndsAt), $subslice(packetBuffer, headerSize, bufferLength));
185809
+ frameMapItem.received = frameMapItem.received + 1 << 16 >>> 16;
185810
+ /* */ if ((seq + 1 << 16 >>> 16) === total) { $s = 7; continue; }
185811
+ /* */ $s = 8; continue;
185812
+ /* if ((seq + 1 << 16 >>> 16) === total) { */ case 7:
185813
+ buffer = $subslice(frameMapItem.buffer, 0, dataEndsAt);
185814
+ /* */ if (!((frameMapItem.received === frameMapItem.total))) { $s = 9; continue; }
185815
+ /* */ $s = 10; continue;
185816
+ /* if (!((frameMapItem.received === frameMapItem.total))) { */ case 9:
185817
+ $mapDelete(c.framesMap, $Uint16.keyFor(frameID));
185818
+ $r = endCb(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185819
+ _r$1 = errs.Errorf("Frame %d is not fully collected. Received %d packets from %d", new sliceType$1([new $Uint16(frameID), new $Uint16(frameMapItem.received), new $Uint16(frameMapItem.total)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185820
+ $24r = [$ifaceNil, _r$1];
185821
+ $s = 13; case 13: return $24r;
185822
+ /* } */ case 10:
185823
+ $mapDelete(c.framesMap, $Uint16.keyFor(frameID));
185824
+ $r = endCb(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185825
+ $s = -1; return [frame.NewFrame(frameMapItem.frameType, buffer, frameMapItem.timestamp), $ifaceNil];
185826
+ /* } */ case 8:
185827
+ $s = 1; continue;
185828
+ case 2:
185829
+ $s = -1; return [$ifaceNil, $ifaceNil];
185830
+ /* */ } return; } var $f = {$blk: GenericFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _entry, _key, _r, _r$1, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, endCb, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, param, received, seq, startCb, total, $s};return $f;
185831
+ };
185832
+ GenericFrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
185833
+ NewFrameCollector = function(screenConn, maxPacketSize) {
185834
+ var {_entry, _i, _key, _keys, _r, _ref, _size, factory, frameCollector, maxPacketSize, screenConn, $s, $r, $c} = $restore(this, {screenConn, maxPacketSize});
185872
185835
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185873
- b = this;
185874
- _r = errs.Errorf("Not implemented RGBA(), use PictureResult() instead", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185875
- $panic(_r);
185876
- $s = -1; return ptrType$5.nil;
185877
- /* */ } return; } var $f = {$blk: BufferImpl.ptr.prototype.RGBA, $c: true, $r, _r, b, $s};return $f;
185878
- };
185879
- BufferImpl.prototype.RGBA = function() { return this.$val.RGBA(); };
185880
- BufferImpl.ptr.prototype.YCbCr = function() {
185881
- var b;
185882
- b = this;
185883
- return new image.YCbCr.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0, $clone(b.Bounds(), image.Rectangle));
185836
+ _ref = frameCollectorFactories;
185837
+ _i = 0;
185838
+ _keys = _ref ? _ref.keys() : undefined;
185839
+ _size = _ref ? _ref.size : 0;
185840
+ /* while (true) { */ case 1:
185841
+ /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 2; continue; }
185842
+ _key = _keys.next().value;
185843
+ _entry = _ref.get(_key);
185844
+ if (_entry === undefined) {
185845
+ _i++;
185846
+ /* continue; */ $s = 1; continue;
185847
+ }
185848
+ factory = _entry.v;
185849
+ _r = factory(screenConn, maxPacketSize); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185850
+ frameCollector = _r;
185851
+ if (!($interfaceIsEqual(frameCollector, $ifaceNil))) {
185852
+ $s = -1; return frameCollector;
185853
+ }
185854
+ _i++;
185855
+ $s = 1; continue;
185856
+ case 2:
185857
+ $s = -1; return NewGenericFrameCollector(screenConn, maxPacketSize);
185858
+ /* */ } return; } var $f = {$blk: NewFrameCollector, $c: true, $r, _entry, _i, _key, _keys, _r, _ref, _size, factory, frameCollector, maxPacketSize, screenConn, $s};return $f;
185884
185859
  };
185885
- BufferImpl.prototype.YCbCr = function() { return this.$val.YCbCr(); };
185886
- BufferImpl.ptr.prototype.Release = function() {
185887
- var b;
185888
- b = this;
185860
+ $pkg.NewFrameCollector = NewFrameCollector;
185861
+ RegisterFrameCollector = function(name, factory) {
185862
+ var _key, factory, name;
185863
+ _key = name; (frameCollectorFactories || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: factory });
185889
185864
  };
185890
- BufferImpl.prototype.Release = function() { return this.$val.Release(); };
185891
- ptrType$7.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "CancelPendingUploads", name: "CancelPendingUploads", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendNonBlocking", name: "SendNonBlocking", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}];
185892
- ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$8], [screen.Window, $error], false)}];
185893
- ptrType$4.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$5], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
185894
- windowImpl.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderDone", name: "renderDone", embedded: false, exported: false, typ: chanType, tag: ""}]);
185895
- screenImpl.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
185896
- BufferImpl.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "Picture", name: "Picture", embedded: false, exported: true, typ: ptrType$3, tag: ""}]);
185865
+ $pkg.RegisterFrameCollector = RegisterFrameCollector;
185866
+ ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
185867
+ GenericFrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "framesMap", name: "framesMap", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "maxPacketSize", name: "maxPacketSize", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "packetBuffer", name: "packetBuffer", embedded: false, exported: false, typ: sliceType, tag: ""}]);
185868
+ FrameMapItem.init("github.com/supraio/client-daemon/pkg/render/netframe", [{prop: "buffer", name: "buffer", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "frameID", name: "frameID", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "total", name: "total", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "received", name: "received", embedded: false, exported: false, typ: $Uint16, tag: ""}]);
185869
+ FrameCollectionDurationCallback.init([time.Duration], [], false);
185870
+ FrameCollectorInterface.init([{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}]);
185897
185871
  $init = function() {
185898
185872
  $pkg.$init = function() {};
185899
185873
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
185900
- $r = jsdecoder.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185874
+ $r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185901
185875
  $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185902
- $r = jshelper.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185903
- $r = dom.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185904
- $r = screen.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185905
- $r = f64.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185906
- $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185907
- $r = color.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185908
- $r = draw.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185909
- $r = log.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185910
- $r = sync.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185911
- $r = js.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185876
+ $r = netpacket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185877
+ $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185878
+ $r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185879
+ frameCollectorFactories = new $global.Map();
185912
185880
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
185913
185881
  };
185914
185882
  $pkg.$init = $init;
@@ -193909,25 +193877,355 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworke
193909
193877
  $s = -1; return [frame.NewJSFrame((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), $clone(data, js.Value), (new $Uint64(0, $clone($clone(collectedFrame, js.Value).Get("timestamp"), js.Value).Float()))), $ifaceNil];
193910
193878
  /* */ } return; } var $f = {$blk: FrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _tuple, byteLength, c, collectedFrame, collectionDurationMs, data, durationCb, err, firstPacketAt, firstPacketAtValue, frameLength, goReceivedAt, length, param, param$1, $s};return $f;
193911
193879
  };
193912
- FrameCollector.prototype.CollectFrame = function(param, param$1, durationCb) { return this.$val.CollectFrame(param, param$1, durationCb); };
193913
- ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
193914
- FrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
193880
+ FrameCollector.prototype.CollectFrame = function(param, param$1, durationCb) { return this.$val.CollectFrame(param, param$1, durationCb); };
193881
+ ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
193882
+ FrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
193883
+ $init = function() {
193884
+ $pkg.$init = function() {};
193885
+ /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
193886
+ $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193887
+ $r = netpacket.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193888
+ $r = frame.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193889
+ $r = netframe.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193890
+ $r = math.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193891
+ $r = js.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193892
+ $r = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193893
+ init();
193894
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
193895
+ };
193896
+ $pkg.$init = $init;
193897
+ return $pkg;
193898
+ })();
193899
+ $packages["github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp"] = (function() {
193900
+ var $pkg = {}, $init, netbrightsigntcp, netpacket, frame, netframe, log, sync, js, time, FrameCollector, Frame, ptrType, sliceType, ptrType$1, funcType, arrayType, sliceType$1, ptrType$2, ptrType$3, funcType$1, init, NewFrameCollector;
193901
+ netbrightsigntcp = $packages["github.com/supraio/client-daemon/pkg/netbrightsigntcp"];
193902
+ netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
193903
+ frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
193904
+ netframe = $packages["github.com/supraio/client-daemon/pkg/render/netframe"];
193905
+ log = $packages["log"];
193906
+ sync = $packages["sync"];
193907
+ js = $packages["syscall/js"];
193908
+ time = $packages["time"];
193909
+ FrameCollector = $pkg.FrameCollector = $newType(0, $kindStruct, "brightsigntcp.FrameCollector", true, "github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp", true, function(conn_) {
193910
+ this.$val = this;
193911
+ if (arguments.length === 0) {
193912
+ this.conn = new netpacket.BrightSignTCPConn.ptr(ptrType$1.nil, new js.Value.ptr(null, false, arrayType.zero()), $chanNil, new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)));
193913
+ return;
193914
+ }
193915
+ this.conn = conn_;
193916
+ });
193917
+ Frame = $pkg.Frame = $newType(0, $kindStruct, "brightsigntcp.Frame", true, "github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp", true, function(frameType_, timestamp_, reference_, release_, releaseOnce_) {
193918
+ this.$val = this;
193919
+ if (arguments.length === 0) {
193920
+ this.frameType = 0;
193921
+ this.timestamp = new $Uint64(0, 0);
193922
+ this.reference = new js.Value.ptr(null, false, arrayType.zero());
193923
+ this.release = $throwNilPointerError;
193924
+ this.releaseOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0));
193925
+ return;
193926
+ }
193927
+ this.frameType = frameType_;
193928
+ this.timestamp = timestamp_;
193929
+ this.reference = reference_;
193930
+ this.release = release_;
193931
+ this.releaseOnce = releaseOnce_;
193932
+ });
193933
+ ptrType = $ptrType(netpacket.BrightSignTCPConn);
193934
+ sliceType = $sliceType($emptyInterface);
193935
+ ptrType$1 = $ptrType(js.Value);
193936
+ funcType = $funcType([], [], false);
193937
+ arrayType = $arrayType(funcType, 0);
193938
+ sliceType$1 = $sliceType($Uint8);
193939
+ ptrType$2 = $ptrType(FrameCollector);
193940
+ ptrType$3 = $ptrType(Frame);
193941
+ funcType$1 = $funcType([js.Value], [], false);
193942
+ init = function() {
193943
+ if (netbrightsigntcp.IsAvailable()) {
193944
+ netframe.RegisterFrameCollector("brightsign_tcp", NewFrameCollector);
193945
+ }
193946
+ };
193947
+ NewFrameCollector = function(screenConn, maxPacketSize) {
193948
+ var {_tuple, conn, maxPacketSize, ok, screenConn, $s, $r, $c} = $restore(this, {screenConn, maxPacketSize});
193949
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193950
+ _tuple = $assertType(screenConn, ptrType, true);
193951
+ conn = _tuple[0];
193952
+ ok = _tuple[1];
193953
+ /* */ if (!ok) { $s = 1; continue; }
193954
+ /* */ $s = 2; continue;
193955
+ /* if (!ok) { */ case 1:
193956
+ $r = log.Printf("BrightSign FrameCollector: incompatible connection type %T", new sliceType([screenConn])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193957
+ $s = -1; return $ifaceNil;
193958
+ /* } */ case 2:
193959
+ $unused(maxPacketSize);
193960
+ $s = -1; return new FrameCollector.ptr($clone(conn, netpacket.BrightSignTCPConn));
193961
+ /* */ } return; } var $f = {$blk: NewFrameCollector, $c: true, $r, _tuple, conn, maxPacketSize, ok, screenConn, $s};return $f;
193962
+ };
193963
+ $pkg.NewFrameCollector = NewFrameCollector;
193964
+ FrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
193965
+ var {_r, _tuple, c, collected, endCb, err, param, startCb, timestampHi, timestampLo, x, $s, $r, $c} = $restore(this, {startCb, endCb, param});
193966
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193967
+ c = this;
193968
+ $r = startCb(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193969
+ _r = c.conn.ReadFrame(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193970
+ _tuple = _r;
193971
+ collected = _tuple[0];
193972
+ err = _tuple[1];
193973
+ $r = endCb(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193974
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
193975
+ $s = -1; return [$ifaceNil, err];
193976
+ }
193977
+ timestampLo = (new $Uint64(0, (($clone($clone($clone(collected, js.Value).Get("timestamp"), js.Value).Get("lo"), js.Value).Int() >>> 0))));
193978
+ timestampHi = (new $Uint64(0, (($clone($clone($clone(collected, js.Value).Get("timestamp"), js.Value).Get("hi"), js.Value).Int() >>> 0))));
193979
+ $s = -1; return [new Frame.ptr((($clone($clone(collected, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), (x = $shiftLeft64(timestampHi, 32), new $Uint64(timestampLo.$high | x.$high, (timestampLo.$low | x.$low) >>> 0)), $clone($clone(collected, js.Value).Get("reference"), js.Value), $methodVal(c.conn, "ReleaseFrame"), new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0))), $ifaceNil];
193980
+ /* */ } return; } var $f = {$blk: FrameCollector.ptr.prototype.CollectFrame, $c: true, $r, _r, _tuple, c, collected, endCb, err, param, startCb, timestampHi, timestampLo, x, $s};return $f;
193981
+ };
193982
+ FrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
193983
+ Frame.ptr.prototype.FrameType = function() {
193984
+ var f;
193985
+ f = this;
193986
+ return f.frameType;
193987
+ };
193988
+ Frame.prototype.FrameType = function() { return this.$val.FrameType(); };
193989
+ Frame.ptr.prototype.Buffer = function() {
193990
+ var f;
193991
+ f = this;
193992
+ return sliceType$1.nil;
193993
+ };
193994
+ Frame.prototype.Buffer = function() { return this.$val.Buffer(); };
193995
+ Frame.ptr.prototype.GetTimestamp = function() {
193996
+ var f, x;
193997
+ f = this;
193998
+ return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
193999
+ };
194000
+ Frame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
194001
+ Frame.ptr.prototype.Reference = function() {
194002
+ var f;
194003
+ f = this;
194004
+ return f.reference;
194005
+ };
194006
+ Frame.prototype.Reference = function() { return this.$val.Reference(); };
194007
+ Frame.ptr.prototype.Release = function() {
194008
+ var {f, $s, $r, $c} = $restore(this, {});
194009
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194010
+ f = [f];
194011
+ f[0] = this;
194012
+ $r = f[0].releaseOnce.Do((function(f) { return function $b() {
194013
+ var {$s, $r, $c} = $restore(this, {});
194014
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194015
+ /* */ if (!(f[0].release === $throwNilPointerError)) { $s = 1; continue; }
194016
+ /* */ $s = 2; continue;
194017
+ /* if (!(f[0].release === $throwNilPointerError)) { */ case 1:
194018
+ $r = f[0].release($clone(f[0].reference, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194019
+ /* } */ case 2:
194020
+ $s = -1; return;
194021
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, $s};return $f;
194022
+ }; })(f)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194023
+ $s = -1; return;
194024
+ /* */ } return; } var $f = {$blk: Frame.ptr.prototype.Release, $c: true, $r, f, $s};return $f;
194025
+ };
194026
+ Frame.prototype.Release = function() { return this.$val.Release(); };
194027
+ ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
194028
+ ptrType$3.methods = [{prop: "FrameType", name: "FrameType", pkg: "", typ: $funcType([], [frame.FrameType], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Reference", name: "Reference", pkg: "", typ: $funcType([], [js.Value], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
194029
+ FrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.BrightSignTCPConn, tag: ""}]);
194030
+ Frame.init("github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "reference", name: "reference", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "release", name: "release", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "releaseOnce", name: "releaseOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}]);
193915
194031
  $init = function() {
193916
194032
  $pkg.$init = function() {};
193917
194033
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
193918
- $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194034
+ $r = netbrightsigntcp.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193919
194035
  $r = netpacket.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193920
194036
  $r = frame.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193921
194037
  $r = netframe.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193922
- $r = math.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193923
- $r = js.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193924
- $r = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194038
+ $r = log.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194039
+ $r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194040
+ $r = js.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194041
+ $r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193925
194042
  init();
193926
194043
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
193927
194044
  };
193928
194045
  $pkg.$init = $init;
193929
194046
  return $pkg;
193930
194047
  })();
194048
+ $packages["github.com/supraio/client-daemon/pkg/decoder/brightsigndecoder"] = (function() {
194049
+ var $pkg = {}, $init, general, errs, jshelper, frame, brightsigntcp, sync, js, Decoder, funcType, arrayType, sliceType, structType, ptrType, ptrType$1, mapType, ptrType$2, ptrType$3, chanType, IsAvailable, NewDecoder, currentSignal, frameValue;
194050
+ general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
194051
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
194052
+ jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
194053
+ frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
194054
+ brightsigntcp = $packages["github.com/supraio/client-daemon/pkg/render/netframe/brightsigntcp"];
194055
+ sync = $packages["sync"];
194056
+ js = $packages["syscall/js"];
194057
+ Decoder = $pkg.Decoder = $newType(0, $kindStruct, "brightsigndecoder.Decoder", true, "github.com/supraio/client-daemon/pkg/decoder/brightsigndecoder", true, function(mutex_, controller_, cancel_, closeOnce_) {
194058
+ this.$val = this;
194059
+ if (arguments.length === 0) {
194060
+ this.mutex = new sync.Mutex.ptr(0, 0);
194061
+ this.controller = new js.Value.ptr(null, false, arrayType.zero());
194062
+ this.cancel = $chanNil;
194063
+ this.closeOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0));
194064
+ return;
194065
+ }
194066
+ this.mutex = mutex_;
194067
+ this.controller = controller_;
194068
+ this.cancel = cancel_;
194069
+ this.closeOnce = closeOnce_;
194070
+ });
194071
+ funcType = $funcType([], [], false);
194072
+ arrayType = $arrayType(funcType, 0);
194073
+ sliceType = $sliceType($emptyInterface);
194074
+ structType = $structType("", []);
194075
+ ptrType = $ptrType(brightsigntcp.Frame);
194076
+ ptrType$1 = $ptrType(frame.JSFrame);
194077
+ mapType = $mapType($String, $emptyInterface);
194078
+ ptrType$2 = $ptrType(js.Value);
194079
+ ptrType$3 = $ptrType(Decoder);
194080
+ chanType = $chanType(structType, false, false);
194081
+ IsAvailable = function() {
194082
+ return !$clone($clone(js.Global(), js.Value).Get("brightSignDecoder"), js.Value).IsUndefined();
194083
+ };
194084
+ $pkg.IsAvailable = IsAvailable;
194085
+ NewDecoder = function(header) {
194086
+ var {$24r, _r, header, $s, $r, $c} = $restore(this, {header});
194087
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194088
+ $unused(header);
194089
+ _r = $clone($clone(js.Global(), js.Value).Get("AbortController"), js.Value).New(sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194090
+ $24r = [new Decoder.ptr(new sync.Mutex.ptr(0, 0), $clone(_r, js.Value), new $Chan(structType, 0), new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0))), $ifaceNil];
194091
+ $s = 2; case 2: return $24r;
194092
+ /* */ } return; } var $f = {$blk: NewDecoder, $c: true, $r, $24r, _r, header, $s};return $f;
194093
+ };
194094
+ $pkg.NewDecoder = NewDecoder;
194095
+ Decoder.ptr.prototype.Write = function(source) {
194096
+ var {$24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _arg$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, canceled, current, current$1, current$2, d, data, decoder, err, promise, result, source, status, uint8Array, uint8Array$1, x, x$1, x$2, x$3, x$4, x$5, $s, $deferred, $r, $c} = $restore(this, {source});
194097
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
194098
+ d = this;
194099
+ $r = d.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194100
+ $deferred.push([$methodVal(d.mutex, "Unlock"), []]);
194101
+ decoder = $clone($clone(js.Global(), js.Value).Get("brightSignDecoder"), js.Value);
194102
+ promise = new js.Value.ptr(null, false, arrayType.zero());
194103
+ _ref = source;
194104
+ /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 2; continue; }
194105
+ /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 3; continue; }
194106
+ /* */ $s = 4; continue;
194107
+ /* if ($assertType(_ref, ptrType, true)[1]) { */ case 2:
194108
+ current = _ref.$val;
194109
+ _r = $clone(decoder, js.Value).Call("decodeRef", new sliceType([(x = current.Reference(), new x.constructor.elem(x)), (x$1 = js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "signal", v: (x$2 = currentSignal($clone(d.controller, js.Value)), new x$2.constructor.elem(x$2)) }]))), new x$1.constructor.elem(x$1))])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194110
+ result = $clone(_r, js.Value);
194111
+ status = $clone($clone(result, js.Value).Get("status"), js.Value).String();
194112
+ /* */ if (!(status === "accepted")) { $s = 7; continue; }
194113
+ /* */ $s = 8; continue;
194114
+ /* if (!(status === "accepted")) { */ case 7:
194115
+ $r = current.Release(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194116
+ _r$1 = errs.Errorf("BrightSign decoder did not accept frame: %s", new sliceType([new $String(status)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194117
+ $24r = _r$1;
194118
+ $s = 11; case 11: return $24r;
194119
+ /* } */ case 8:
194120
+ js.Value.copy(promise, $clone(result, js.Value).Get("completion"));
194121
+ $s = 5; continue;
194122
+ /* } else if ($assertType(_ref, ptrType$1, true)[1]) { */ case 3:
194123
+ current$1 = _ref.$val;
194124
+ _r$2 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([(x$3 = current$1.JSBuffer(), new x$3.constructor.elem(x$3))])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
194125
+ uint8Array = $clone(_r$2, js.Value);
194126
+ _r$3 = frameValue($clone(uint8Array, js.Value), source); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
194127
+ _arg = (x$4 = _r$3, new x$4.constructor.elem(x$4));
194128
+ _r$4 = $clone(decoder, js.Value).Call("decodeAndRender", new sliceType([_arg])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
194129
+ js.Value.copy(promise, _r$4);
194130
+ $s = 5; continue;
194131
+ /* } else { */ case 4:
194132
+ current$2 = _ref;
194133
+ _r$5 = source.Buffer(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
194134
+ data = _r$5;
194135
+ _r$6 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new $Int(data.$length)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
194136
+ uint8Array$1 = $clone(_r$6, js.Value);
194137
+ js.CopyBytesToJS($clone(uint8Array$1, js.Value), data);
194138
+ _r$7 = frameValue($clone(uint8Array$1, js.Value), source); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
194139
+ _arg$1 = (x$5 = _r$7, new x$5.constructor.elem(x$5));
194140
+ _r$8 = $clone(decoder, js.Value).Call("decodeAndRender", new sliceType([_arg$1])); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
194141
+ js.Value.copy(promise, _r$8);
194142
+ /* } */ case 5:
194143
+ _r$9 = jshelper.AwaitWithCancel($clone(promise, js.Value), d.cancel); /* */ $s = 19; case 19: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
194144
+ _tuple = _r$9;
194145
+ err = _tuple[1];
194146
+ canceled = _tuple[2];
194147
+ /* */ if (canceled) { $s = 20; continue; }
194148
+ /* */ if (!(err === ptrType$2.nil)) { $s = 21; continue; }
194149
+ /* */ $s = 22; continue;
194150
+ /* if (canceled) { */ case 20:
194151
+ _r$10 = errs.Errorf("BrightSign decoder write canceled", sliceType.nil); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
194152
+ $24r$1 = _r$10;
194153
+ $s = 24; case 24: return $24r$1;
194154
+ /* } else if (!(err === ptrType$2.nil)) { */ case 21:
194155
+ _r$11 = jshelper.GetError(err); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
194156
+ _r$12 = _r$11.Error(); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
194157
+ _arg$2 = new $String(_r$12);
194158
+ _r$13 = errs.Errorf("Failed to decode BrightSign frame: %s", new sliceType([_arg$2])); /* */ $s = 27; case 27: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
194159
+ $24r$2 = _r$13;
194160
+ $s = 28; case 28: return $24r$2;
194161
+ /* } */ case 22:
194162
+ $24r$3 = $ifaceNil;
194163
+ $s = 29; case 29: return $24r$3;
194164
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Decoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _arg$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, canceled, current, current$1, current$2, d, data, decoder, err, promise, result, source, status, uint8Array, uint8Array$1, x, x$1, x$2, x$3, x$4, x$5, $s, $deferred};return $f; } }
194165
+ };
194166
+ Decoder.prototype.Write = function(source) { return this.$val.Write(source); };
194167
+ currentSignal = function(controller) {
194168
+ var controller;
194169
+ return $clone(controller, js.Value).Get("signal");
194170
+ };
194171
+ Decoder.ptr.prototype.Close = function() {
194172
+ var {d, $s, $r, $c} = $restore(this, {});
194173
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194174
+ d = [d];
194175
+ d[0] = this;
194176
+ $r = d[0].closeOnce.Do((function(d) { return function $b() {
194177
+ var {_r, $s, $r, $c} = $restore(this, {});
194178
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194179
+ $close(d[0].cancel);
194180
+ _r = $clone(d[0].controller, js.Value).Call("abort", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194181
+ _r;
194182
+ $s = -1; return;
194183
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, $s};return $f;
194184
+ }; })(d)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194185
+ $s = -1; return $ifaceNil;
194186
+ /* */ } return; } var $f = {$blk: Decoder.ptr.prototype.Close, $c: true, $r, d, $s};return $f;
194187
+ };
194188
+ Decoder.prototype.Close = function() { return this.$val.Close(); };
194189
+ frameValue = function(data, source) {
194190
+ var {$24r, _r, _r$1, _r$2, _r$3, data, source, timestamp, x, $s, $r, $c} = $restore(this, {data, source});
194191
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194192
+ _r = source.GetTimestamp(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194193
+ _r$1 = $clone(_r, $packages["time"].Time).UnixNano(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194194
+ timestamp = ((x = _r$1, new $Uint64(x.$high, x.$low)));
194195
+ _r$2 = source.FrameType(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
194196
+ _r$3 = js.ValueOf(new mapType($makeMap($String.keyFor, [{ k: "data", v: new data.constructor.elem(data) }, { k: "frameType", v: new $Int(((_r$2 >> 0))) }, { k: "timestamp", v: new mapType($makeMap($String.keyFor, [{ k: "hi", v: new $Uint32((($shiftRightUint64(timestamp, 32).$low >>> 0))) }, { k: "lo", v: new $Uint32(((timestamp.$low >>> 0))) }])) }]))); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
194197
+ $24r = _r$3;
194198
+ $s = 5; case 5: return $24r;
194199
+ /* */ } return; } var $f = {$blk: frameValue, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, data, source, timestamp, x, $s};return $f;
194200
+ };
194201
+ Decoder.ptr.prototype.NextOutput = function(outputBuffer) {
194202
+ var d, outputBuffer;
194203
+ d = this;
194204
+ return $ifaceNil;
194205
+ };
194206
+ Decoder.prototype.NextOutput = function(outputBuffer) { return this.$val.NextOutput(outputBuffer); };
194207
+ Decoder.ptr.prototype.Release = function(outputBuffer) {
194208
+ var d, outputBuffer;
194209
+ d = this;
194210
+ };
194211
+ Decoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
194212
+ ptrType$3.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
194213
+ Decoder.init("github.com/supraio/client-daemon/pkg/decoder/brightsigndecoder", [{prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "controller", name: "controller", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "cancel", name: "cancel", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "closeOnce", name: "closeOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}]);
194214
+ $init = function() {
194215
+ $pkg.$init = function() {};
194216
+ /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
194217
+ $r = general.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194218
+ $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194219
+ $r = jshelper.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194220
+ $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194221
+ $r = brightsigntcp.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194222
+ $r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194223
+ $r = js.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194224
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
194225
+ };
194226
+ $pkg.$init = $init;
194227
+ return $pkg;
194228
+ })();
193931
194229
  $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
193932
194230
  var $pkg = {}, $init, screen, image, draw, ConvertYCbCrToRGBA;
193933
194231
  screen = $packages["golang.org/x/exp/shiny/screen"];
@@ -195440,7 +195738,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
195440
195738
  return $pkg;
195441
195739
  })();
195442
195740
  $packages["github.com/supraio/client-daemon/pkg/decoder"] = (function() {
195443
- var $pkg = {}, $init, brightsigndecoder, general, h264decoder, nacldecoder, samsungwasmdecoder, sosstream, webcodecs, errs, frame, videostream, log, Decoder, sliceType, NewDecoder;
195741
+ var $pkg = {}, $init, brightsigndecoder, general, h264decoder, nacldecoder, samsungwasmdecoder, sosstream, webcodecs, errs, netpacket, frame, videostream, log, Decoder, sliceType, NewDecoder;
195444
195742
  brightsigndecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/brightsigndecoder"];
195445
195743
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
195446
195744
  h264decoder = $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"];
@@ -195449,54 +195747,66 @@ $packages["github.com/supraio/client-daemon/pkg/decoder"] = (function() {
195449
195747
  sosstream = $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"];
195450
195748
  webcodecs = $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"];
195451
195749
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
195750
+ netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
195452
195751
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
195453
195752
  videostream = $packages["github.com/supraio/client-daemon/pkg/videostream"];
195454
195753
  log = $packages["log"];
195455
195754
  Decoder = $pkg.Decoder = $newType(8, $kindInterface, "decoder.Decoder", true, "github.com/supraio/client-daemon/pkg/decoder", true, null);
195456
195755
  sliceType = $sliceType($emptyInterface);
195457
- NewDecoder = function(header) {
195458
- var {$24r, _r, _r$1, _returncast, _returncast$1, _returncast$2, _returncast$3, _returncast$4, _returncast$5, header, $s, $r, $c} = $restore(this, {header});
195756
+ NewDecoder = function(header, screenDriver) {
195757
+ var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _returncast, _returncast$1, _returncast$2, _returncast$3, _returncast$4, _returncast$5, header, screenDriver, $s, $r, $c} = $restore(this, {header, screenDriver});
195459
195758
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195460
- /* */ if (brightsigndecoder.IsAvailable()) { $s = 1; continue; }
195461
- _r = videostream.Get().IsAvailable(); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195462
- /* */ if (_r) { $s = 2; continue; }
195463
- /* */ if (nacldecoder.IsAvailable()) { $s = 3; continue; }
195464
- /* */ if (samsungwasmdecoder.IsAvailable()) { $s = 4; continue; }
195465
- /* */ if (webcodecs.IsAvailable()) { $s = 5; continue; }
195466
- /* */ if (h264decoder.IsAvailable()) { $s = 6; continue; }
195467
- /* */ $s = 7; continue;
195468
- /* if (brightsigndecoder.IsAvailable()) { */ case 1:
195469
- $r = log.Println(new sliceType([new $String("Decoder factory selected BrightSign native decoder")])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195470
- _returncast = brightsigndecoder.NewDecoder(header);
195471
- $s = -1; return [_returncast[0], _returncast[1]];
195472
- /* } else if (_r) { */ case 2:
195473
- $r = log.Println(new sliceType([new $String("Decoder factory selected SOS stream decoder")])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195759
+ /* */ if (screenDriver === "brightsign_tcp") { $s = 1; continue; }
195760
+ /* */ $s = 2; continue;
195761
+ /* if (screenDriver === "brightsign_tcp") { */ case 1:
195762
+ /* */ if (!brightsigndecoder.IsAvailable()) { $s = 3; continue; }
195763
+ /* */ $s = 4; continue;
195764
+ /* if (!brightsigndecoder.IsAvailable()) { */ case 3:
195765
+ _r = errs.Errorf("BrightSign decoder is not available for selected backend", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195766
+ $24r = [$ifaceNil, _r];
195767
+ $s = 6; case 6: return $24r;
195768
+ /* } */ case 4:
195769
+ $r = log.Println(new sliceType([new $String("Decoder factory selected BrightSign native decoder")])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195770
+ _r$1 = brightsigndecoder.NewDecoder(header); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195771
+ _returncast = _r$1;
195772
+ $24r$1 = [_returncast[0], _returncast[1]];
195773
+ $s = 9; case 9: return $24r$1;
195774
+ /* } */ case 2:
195775
+ _r$2 = videostream.Get().IsAvailable(); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195776
+ /* */ if (_r$2) { $s = 10; continue; }
195777
+ /* */ if (nacldecoder.IsAvailable()) { $s = 11; continue; }
195778
+ /* */ if (samsungwasmdecoder.IsAvailable()) { $s = 12; continue; }
195779
+ /* */ if (webcodecs.IsAvailable()) { $s = 13; continue; }
195780
+ /* */ if (h264decoder.IsAvailable()) { $s = 14; continue; }
195781
+ /* */ $s = 15; continue;
195782
+ /* if (_r$2) { */ case 10:
195783
+ $r = log.Println(new sliceType([new $String("Decoder factory selected SOS stream decoder")])); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195474
195784
  _returncast$1 = sosstream.NewDecoder(header);
195475
195785
  $s = -1; return [_returncast$1[0], _returncast$1[1]];
195476
- /* } else if (nacldecoder.IsAvailable()) { */ case 3:
195477
- $r = log.Println(new sliceType([new $String("Decoder factory selected NaCl decoder")])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195786
+ /* } else if (nacldecoder.IsAvailable()) { */ case 11:
195787
+ $r = log.Println(new sliceType([new $String("Decoder factory selected NaCl decoder")])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195478
195788
  _returncast$2 = nacldecoder.NewDecoder(header);
195479
195789
  $s = -1; return [_returncast$2[0], _returncast$2[1]];
195480
- /* } else if (samsungwasmdecoder.IsAvailable()) { */ case 4:
195481
- $r = log.Println(new sliceType([new $String("Decoder factory selected Samsung WASM decoder")])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195790
+ /* } else if (samsungwasmdecoder.IsAvailable()) { */ case 12:
195791
+ $r = log.Println(new sliceType([new $String("Decoder factory selected Samsung WASM decoder")])); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195482
195792
  _returncast$3 = samsungwasmdecoder.NewDecoder(header);
195483
195793
  $s = -1; return [_returncast$3[0], _returncast$3[1]];
195484
- /* } else if (webcodecs.IsAvailable()) { */ case 5:
195485
- $r = log.Println(new sliceType([new $String("Decoder factory selected WebCodecs decoder")])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195794
+ /* } else if (webcodecs.IsAvailable()) { */ case 13:
195795
+ $r = log.Println(new sliceType([new $String("Decoder factory selected WebCodecs decoder")])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195486
195796
  _returncast$4 = webcodecs.NewDecoder(header);
195487
195797
  $s = -1; return [_returncast$4[0], _returncast$4[1]];
195488
- /* } else if (h264decoder.IsAvailable()) { */ case 6:
195489
- $r = log.Println(new sliceType([new $String("Decoder factory selected H264 decoder")])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195798
+ /* } else if (h264decoder.IsAvailable()) { */ case 14:
195799
+ $r = log.Println(new sliceType([new $String("Decoder factory selected H264 decoder")])); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195490
195800
  _returncast$5 = h264decoder.NewDecoder(header);
195491
195801
  $s = -1; return [_returncast$5[0], _returncast$5[1]];
195492
- /* } else { */ case 7:
195493
- $r = log.Println(new sliceType([new $String("Decoder factory found no available decoder")])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195494
- _r$1 = errs.Errorf("Not available any decoder adapter in JS", sliceType.nil); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195495
- $24r = [$ifaceNil, _r$1];
195496
- $s = 18; case 18: return $24r;
195497
- /* } */ case 8:
195802
+ /* } else { */ case 15:
195803
+ $r = log.Println(new sliceType([new $String("Decoder factory found no available decoder")])); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195804
+ _r$3 = errs.Errorf("Not available any decoder adapter in JS", sliceType.nil); /* */ $s = 24; case 24: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
195805
+ $24r$2 = [$ifaceNil, _r$3];
195806
+ $s = 25; case 25: return $24r$2;
195807
+ /* } */ case 16:
195498
195808
  $s = -1; return [$ifaceNil, $ifaceNil];
195499
- /* */ } return; } var $f = {$blk: NewDecoder, $c: true, $r, $24r, _r, _r$1, _returncast, _returncast$1, _returncast$2, _returncast$3, _returncast$4, _returncast$5, header, $s};return $f;
195809
+ /* */ } return; } var $f = {$blk: NewDecoder, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _returncast, _returncast$1, _returncast$2, _returncast$3, _returncast$4, _returncast$5, header, screenDriver, $s};return $f;
195500
195810
  };
195501
195811
  $pkg.NewDecoder = NewDecoder;
195502
195812
  Decoder.init([{prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}]);
@@ -195511,9 +195821,10 @@ $packages["github.com/supraio/client-daemon/pkg/decoder"] = (function() {
195511
195821
  $r = sosstream.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195512
195822
  $r = webcodecs.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195513
195823
  $r = errs.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195514
- $r = frame.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195515
- $r = videostream.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195516
- $r = log.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195824
+ $r = netpacket.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195825
+ $r = frame.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195826
+ $r = videostream.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195827
+ $r = log.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195517
195828
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
195518
195829
  };
195519
195830
  $pkg.$init = $init;
@@ -196671,9 +196982,10 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
196671
196982
  return $pkg;
196672
196983
  })();
196673
196984
  $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196674
- var $pkg = {}, $init, decoder, errs, frame, netframe, screenbuffer, stats, screen, image, sync, time, RenderingLoop, DecodeResultProvider, DecodeResult, DecoderLoop, FrameProvider, queuedFrame, CollectionLoop, ptrType, structType, sliceType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, chanType, funcType, ptrType$5, chanType$1, chanType$2, ptrType$6, funcType$1, chanType$3, NewRenderingLoop, NewDecoderLoop, NewCollectionLoop;
196985
+ var $pkg = {}, $init, decoder, errs, netpacket, frame, netframe, screenbuffer, stats, screen, image, sync, time, SurfaceLoop, RenderingLoop, DecodeResultProvider, DecodeResult, DecoderLoop, FrameProvider, queuedFrame, CollectionLoop, ptrType, structType, interfaceType, sliceType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, chanType, ptrType$5, funcType, ptrType$6, chanType$1, chanType$2, ptrType$7, funcType$1, chanType$3, NewSurfaceLoop, NewRenderingLoop, NewDecoderLoop, NewCollectionLoop;
196675
196986
  decoder = $packages["github.com/supraio/client-daemon/pkg/decoder"];
196676
196987
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
196988
+ netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
196677
196989
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
196678
196990
  netframe = $packages["github.com/supraio/client-daemon/pkg/render/netframe"];
196679
196991
  screenbuffer = $packages["github.com/supraio/client-daemon/pkg/render/screenbuffer"];
@@ -196682,6 +196994,30 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196682
196994
  image = $packages["image"];
196683
196995
  sync = $packages["sync"];
196684
196996
  time = $packages["time"];
196997
+ SurfaceLoop = $pkg.SurfaceLoop = $newType(0, $kindStruct, "player.SurfaceLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameCollector_, screenDriver_, stats_, decoder_, done_, stopped_, mutex_, stopOnce_, started_) {
196998
+ this.$val = this;
196999
+ if (arguments.length === 0) {
197000
+ this.frameCollector = $ifaceNil;
197001
+ this.screenDriver = "";
197002
+ this.stats = ptrType.nil;
197003
+ this.decoder = $ifaceNil;
197004
+ this.done = $chanNil;
197005
+ this.stopped = $chanNil;
197006
+ this.mutex = new sync.Mutex.ptr(0, 0);
197007
+ this.stopOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0));
197008
+ this.started = false;
197009
+ return;
197010
+ }
197011
+ this.frameCollector = frameCollector_;
197012
+ this.screenDriver = screenDriver_;
197013
+ this.stats = stats_;
197014
+ this.decoder = decoder_;
197015
+ this.done = done_;
197016
+ this.stopped = stopped_;
197017
+ this.mutex = mutex_;
197018
+ this.stopOnce = stopOnce_;
197019
+ this.started = started_;
197020
+ });
196685
197021
  RenderingLoop = $pkg.RenderingLoop = $newType(0, $kindStruct, "player.RenderingLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(decodeResultProvider_, window_, stats_, started_, renderingInProgress_, done_, stopped_) {
196686
197022
  this.$val = this;
196687
197023
  if (arguments.length === 0) {
@@ -196715,7 +197051,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196715
197051
  this.Buffer = Buffer_;
196716
197052
  this.Release = Release_;
196717
197053
  });
196718
- DecoderLoop = $pkg.DecoderLoop = $newType(0, $kindStruct, "player.DecoderLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameProvider_, bufferPool_, stats_, decodeResultChan_, framesChan_, done_, stopped_, started_, decoder_) {
197054
+ DecoderLoop = $pkg.DecoderLoop = $newType(0, $kindStruct, "player.DecoderLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameProvider_, bufferPool_, stats_, decodeResultChan_, framesChan_, done_, stopped_, started_, decoder_, screenDriver_) {
196719
197055
  this.$val = this;
196720
197056
  if (arguments.length === 0) {
196721
197057
  this.frameProvider = $ifaceNil;
@@ -196727,6 +197063,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196727
197063
  this.stopped = $chanNil;
196728
197064
  this.started = false;
196729
197065
  this.decoder = $ifaceNil;
197066
+ this.screenDriver = "";
196730
197067
  return;
196731
197068
  }
196732
197069
  this.frameProvider = frameProvider_;
@@ -196738,6 +197075,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196738
197075
  this.stopped = stopped_;
196739
197076
  this.started = started_;
196740
197077
  this.decoder = decoder_;
197078
+ this.screenDriver = screenDriver_;
196741
197079
  });
196742
197080
  FrameProvider = $pkg.FrameProvider = $newType(8, $kindInterface, "player.FrameProvider", true, "github.com/supraio/client-daemon/pkg/render/player", true, null);
196743
197081
  queuedFrame = $pkg.queuedFrame = $newType(0, $kindStruct, "player.queuedFrame", true, "github.com/supraio/client-daemon/pkg/render/player", false, function(frame_, enqueuedAt_) {
@@ -196772,19 +197110,203 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196772
197110
  });
196773
197111
  ptrType = $ptrType(stats.Stats);
196774
197112
  structType = $structType("", []);
197113
+ interfaceType = $interfaceType([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]);
196775
197114
  sliceType = $sliceType($emptyInterface);
196776
197115
  ptrType$1 = $ptrType(screenbuffer.BufferPool);
196777
197116
  ptrType$2 = $ptrType(DecodeResult);
196778
197117
  ptrType$3 = $ptrType(time.Location);
196779
- ptrType$4 = $ptrType(RenderingLoop);
197118
+ ptrType$4 = $ptrType(SurfaceLoop);
196780
197119
  chanType = $chanType(structType, false, false);
197120
+ ptrType$5 = $ptrType(RenderingLoop);
196781
197121
  funcType = $funcType([], [], false);
196782
- ptrType$5 = $ptrType(DecoderLoop);
197122
+ ptrType$6 = $ptrType(DecoderLoop);
196783
197123
  chanType$1 = $chanType(ptrType$2, false, false);
196784
197124
  chanType$2 = $chanType(frame.FrameInterface, false, false);
196785
- ptrType$6 = $ptrType(CollectionLoop);
197125
+ ptrType$7 = $ptrType(CollectionLoop);
196786
197126
  funcType$1 = $funcType([], [time.Time], false);
196787
197127
  chanType$3 = $chanType(queuedFrame, false, false);
197128
+ NewSurfaceLoop = function(frameCollector, screenDriver, runtimeStats) {
197129
+ var frameCollector, runtimeStats, screenDriver;
197130
+ return new SurfaceLoop.ptr(frameCollector, screenDriver, runtimeStats, $ifaceNil, new $Chan(structType, 0), new $Chan(structType, 0), new sync.Mutex.ptr(0, 0), new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), false);
197131
+ };
197132
+ $pkg.NewSurfaceLoop = NewSurfaceLoop;
197133
+ SurfaceLoop.ptr.prototype.Start = function() {
197134
+ var {sl, $s, $r, $c} = $restore(this, {});
197135
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197136
+ sl = [sl];
197137
+ sl[0] = this;
197138
+ $r = sl[0].mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197139
+ /* */ if (sl[0].started) { $s = 2; continue; }
197140
+ /* */ $s = 3; continue;
197141
+ /* if (sl[0].started) { */ case 2:
197142
+ $r = sl[0].mutex.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197143
+ $s = -1; return;
197144
+ /* } */ case 3:
197145
+ sl[0].started = true;
197146
+ $r = sl[0].mutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197147
+ $go((function(sl) { return function $b() {
197148
+ var {_arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _selection$1, _selection$2, _selection$3, _selection$4, _tuple, _tuple$1, activeDecoder, collected, err, $s, $deferred, $r, $c} = $restore(this, {});
197149
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
197150
+ $deferred.push([function(_arg) { $close(_arg); }, [sl[0].stopped]]);
197151
+ /* while (true) { */ case 1:
197152
+ _r = sl[0].frameCollector.CollectFrame($methodVal(sl[0].stats, "NotifyFrameCollectionStarted"), $methodVal(sl[0].stats, "NotifyFrameCollectionEnded"), $methodVal(sl[0].stats, "NotifyFrameCollectionDuration")); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197153
+ _tuple = _r;
197154
+ collected = _tuple[0];
197155
+ err = _tuple[1];
197156
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
197157
+ /* */ $s = 5; continue;
197158
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
197159
+ _r$1 = time.After(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
197160
+ _r$2 = $select([[sl[0].done], [_r$1]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
197161
+ _selection = _r$2;
197162
+ /* */ if (_selection[0] === 0) { $s = 8; continue; }
197163
+ /* */ if (_selection[0] === 1) { $s = 9; continue; }
197164
+ /* */ $s = 10; continue;
197165
+ /* if (_selection[0] === 0) { */ case 8:
197166
+ $s = 11; case 11: return;
197167
+ /* } else if (_selection[0] === 1) { */ case 9:
197168
+ /* } */ case 10:
197169
+ _selection$1 = $select([[sl[0].done], []]);
197170
+ /* */ if (_selection$1[0] === 0) { $s = 12; continue; }
197171
+ /* */ if (_selection$1[0] === 1) { $s = 13; continue; }
197172
+ /* */ $s = 14; continue;
197173
+ /* if (_selection$1[0] === 0) { */ case 12:
197174
+ $s = 15; case 15: return;
197175
+ /* } else if (_selection$1[0] === 1) { */ case 13:
197176
+ $r = errs.Print("External-surface frame collection failed", err); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197177
+ /* } */ case 14:
197178
+ /* continue; */ $s = 1; continue;
197179
+ /* } */ case 5:
197180
+ _selection$2 = $select([[sl[0].done], []]);
197181
+ /* */ if (_selection$2[0] === 0) { $s = 17; continue; }
197182
+ /* */ if (_selection$2[0] === 1) { $s = 18; continue; }
197183
+ /* */ $s = 19; continue;
197184
+ /* if (_selection$2[0] === 0) { */ case 17:
197185
+ _r$3 = frame.Release(collected); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
197186
+ _r$3;
197187
+ $s = 21; case 21: return;
197188
+ /* } else if (_selection$2[0] === 1) { */ case 18:
197189
+ /* } */ case 19:
197190
+ _r$4 = collected.FrameType(); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
197191
+ /* */ if (!((_r$4 === 1))) { $s = 22; continue; }
197192
+ /* */ $s = 23; continue;
197193
+ /* if (!((_r$4 === 1))) { */ case 22:
197194
+ _r$5 = collected.FrameType(); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
197195
+ /* */ if (_r$5 === 255) { $s = 25; continue; }
197196
+ /* */ $s = 26; continue;
197197
+ /* if (_r$5 === 255) { */ case 25:
197198
+ $r = sl[0].stats.NotifyScreenPing(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197199
+ /* } */ case 26:
197200
+ _r$6 = frame.Release(collected); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
197201
+ _r$6;
197202
+ /* continue; */ $s = 1; continue;
197203
+ /* } */ case 23:
197204
+ $r = sl[0].mutex.Lock(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197205
+ _selection$3 = $select([[sl[0].done], []]);
197206
+ /* */ if (_selection$3[0] === 0) { $s = 31; continue; }
197207
+ /* */ if (_selection$3[0] === 1) { $s = 32; continue; }
197208
+ /* */ $s = 33; continue;
197209
+ /* if (_selection$3[0] === 0) { */ case 31:
197210
+ $r = sl[0].mutex.Unlock(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197211
+ _r$7 = frame.Release(collected); /* */ $s = 35; case 35: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
197212
+ _r$7;
197213
+ $s = 36; case 36: return;
197214
+ /* } else if (_selection$3[0] === 1) { */ case 32:
197215
+ /* } */ case 33:
197216
+ /* */ if ($interfaceIsEqual(sl[0].decoder, $ifaceNil)) { $s = 37; continue; }
197217
+ /* */ $s = 38; continue;
197218
+ /* if ($interfaceIsEqual(sl[0].decoder, $ifaceNil)) { */ case 37:
197219
+ _r$8 = collected.Buffer(); /* */ $s = 39; case 39: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
197220
+ _r$9 = decoder.NewDecoder(_r$8, sl[0].screenDriver); /* */ $s = 40; case 40: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
197221
+ _tuple$1 = _r$9;
197222
+ sl[0].decoder = _tuple$1[0];
197223
+ err = _tuple$1[1];
197224
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 41; continue; }
197225
+ /* */ $s = 42; continue;
197226
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 41:
197227
+ $r = sl[0].mutex.Unlock(); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197228
+ _r$10 = frame.Release(collected); /* */ $s = 44; case 44: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
197229
+ _r$10;
197230
+ $r = errs.Print("External-surface decoder cannot be created", err); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197231
+ /* continue; */ $s = 1; continue;
197232
+ /* } */ case 42:
197233
+ /* } */ case 38:
197234
+ activeDecoder = sl[0].decoder;
197235
+ $r = sl[0].mutex.Unlock(); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197236
+ $r = sl[0].stats.NotifyFrameDecodeWriteStarted(); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197237
+ _r$11 = activeDecoder.Write(collected); /* */ $s = 48; case 48: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
197238
+ err = _r$11;
197239
+ $r = sl[0].stats.NotifyFrameDecodeWriteEnded(); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197240
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 50; continue; }
197241
+ /* */ $s = 51; continue;
197242
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 50:
197243
+ _selection$4 = $select([[sl[0].done], []]);
197244
+ /* */ if (_selection$4[0] === 0) { $s = 53; continue; }
197245
+ /* */ if (_selection$4[0] === 1) { $s = 54; continue; }
197246
+ /* */ $s = 55; continue;
197247
+ /* if (_selection$4[0] === 0) { */ case 53:
197248
+ $s = 55; continue;
197249
+ /* } else if (_selection$4[0] === 1) { */ case 54:
197250
+ $r = errs.Print("External-surface frame write failed", err); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197251
+ /* } */ case 55:
197252
+ $s = 52; continue;
197253
+ /* } else { */ case 51:
197254
+ $r = sl[0].stats.NotifyFrame(collected); /* */ $s = 57; case 57: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197255
+ /* } */ case 52:
197256
+ $s = 1; continue;
197257
+ case 2:
197258
+ $s = -1; return;
197259
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: $b, $c: true, $r, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _selection$1, _selection$2, _selection$3, _selection$4, _tuple, _tuple$1, activeDecoder, collected, err, $s, $deferred};return $f; } }
197260
+ }; })(sl), []);
197261
+ $s = -1; return;
197262
+ /* */ } return; } var $f = {$blk: SurfaceLoop.ptr.prototype.Start, $c: true, $r, sl, $s};return $f;
197263
+ };
197264
+ SurfaceLoop.prototype.Start = function() { return this.$val.Start(); };
197265
+ SurfaceLoop.ptr.prototype.Stop = function() {
197266
+ var {$24r, _r, _tuple, activeDecoder, closeable, ok, sl, $s, $r, $c} = $restore(this, {});
197267
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197268
+ sl = [sl];
197269
+ sl[0] = this;
197270
+ $r = sl[0].mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197271
+ sl[0].started = false;
197272
+ activeDecoder = sl[0].decoder;
197273
+ $r = sl[0].mutex.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197274
+ $r = sl[0].stopOnce.Do((function(sl) { return function() {
197275
+ $close(sl[0].done);
197276
+ }; })(sl)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197277
+ _tuple = $assertType(activeDecoder, interfaceType, true);
197278
+ closeable = _tuple[0];
197279
+ ok = _tuple[1];
197280
+ /* */ if (ok) { $s = 4; continue; }
197281
+ /* */ $s = 5; continue;
197282
+ /* if (ok) { */ case 4:
197283
+ _r = closeable.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197284
+ $24r = _r;
197285
+ $s = 7; case 7: return $24r;
197286
+ /* } */ case 5:
197287
+ $s = -1; return $ifaceNil;
197288
+ /* */ } return; } var $f = {$blk: SurfaceLoop.ptr.prototype.Stop, $c: true, $r, $24r, _r, _tuple, activeDecoder, closeable, ok, sl, $s};return $f;
197289
+ };
197290
+ SurfaceLoop.prototype.Stop = function() { return this.$val.Stop(); };
197291
+ SurfaceLoop.ptr.prototype.Wait = function(timeout) {
197292
+ var {_r, _r$1, _selection, sl, timeout, $s, $r, $c} = $restore(this, {timeout});
197293
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197294
+ sl = this;
197295
+ _r = time.After(timeout); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197296
+ _r$1 = $select([[sl.stopped], [_r]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
197297
+ _selection = _r$1;
197298
+ /* */ if (_selection[0] === 0) { $s = 3; continue; }
197299
+ /* */ if (_selection[0] === 1) { $s = 4; continue; }
197300
+ /* */ $s = 5; continue;
197301
+ /* if (_selection[0] === 0) { */ case 3:
197302
+ $s = -1; return true;
197303
+ /* } else if (_selection[0] === 1) { */ case 4:
197304
+ $s = -1; return false;
197305
+ /* } */ case 5:
197306
+ $s = -1; return false;
197307
+ /* */ } return; } var $f = {$blk: SurfaceLoop.ptr.prototype.Wait, $c: true, $r, _r, _r$1, _selection, sl, timeout, $s};return $f;
197308
+ };
197309
+ SurfaceLoop.prototype.Wait = function(timeout) { return this.$val.Wait(timeout); };
196788
197310
  NewRenderingLoop = function(decodeResultProvider, window, stats$1) {
196789
197311
  var decodeResultProvider, stats$1, window;
196790
197312
  return new RenderingLoop.ptr(decodeResultProvider, window, stats$1, false, false, new $Chan(structType, 0), new $Chan(structType, 0));
@@ -196852,8 +197374,27 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196852
197374
  /* */ } return; } var $f = {$blk: RenderingLoop.ptr.prototype.Wait, $c: true, $r, _r, dl, $s};return $f;
196853
197375
  };
196854
197376
  RenderingLoop.prototype.Wait = function() { return this.$val.Wait(); };
197377
+ RenderingLoop.ptr.prototype.WaitFor = function(timeout) {
197378
+ var {_r, _r$1, _selection, dl, timeout, $s, $r, $c} = $restore(this, {timeout});
197379
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197380
+ dl = this;
197381
+ _r = time.After(timeout); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197382
+ _r$1 = $select([[dl.stopped], [_r]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
197383
+ _selection = _r$1;
197384
+ /* */ if (_selection[0] === 0) { $s = 3; continue; }
197385
+ /* */ if (_selection[0] === 1) { $s = 4; continue; }
197386
+ /* */ $s = 5; continue;
197387
+ /* if (_selection[0] === 0) { */ case 3:
197388
+ $s = -1; return true;
197389
+ /* } else if (_selection[0] === 1) { */ case 4:
197390
+ $s = -1; return false;
197391
+ /* } */ case 5:
197392
+ $s = -1; return false;
197393
+ /* */ } return; } var $f = {$blk: RenderingLoop.ptr.prototype.WaitFor, $c: true, $r, _r, _r$1, _selection, dl, timeout, $s};return $f;
197394
+ };
197395
+ RenderingLoop.prototype.WaitFor = function(timeout) { return this.$val.WaitFor(timeout); };
196855
197396
  RenderingLoop.ptr.prototype.renderBuffer = function() {
196856
- var {$24r, $24r$1, $24r$2, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s, $deferred, $r, $c} = $restore(this, {});
197397
+ var {$24r, $24r$1, $24r$2, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _tuple, currentFrame, decodeResult, dl, err, screenBuffer, $s, $deferred, $r, $c} = $restore(this, {});
196857
197398
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
196858
197399
  dl = this;
196859
197400
  _r = dl.decodeResultProvider.NextDecodedResult(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
@@ -196867,10 +197408,11 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196867
197408
  $24r = _r$1;
196868
197409
  $s = 5; case 5: return $24r;
196869
197410
  /* } */ case 3:
196870
- frame$1 = decodeResult.Frame;
197411
+ currentFrame = decodeResult.Frame;
196871
197412
  screenBuffer = decodeResult.Buffer;
196872
- $r = dl.waitForRenderTime(frame$1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197413
+ $r = dl.waitForRenderTime(currentFrame); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196873
197414
  $deferred.push([decodeResult.Release, []]);
197415
+ $deferred.push([frame.Release, [currentFrame]]);
196874
197416
  /* */ if (dl.renderingInProgress) { $s = 7; continue; }
196875
197417
  /* */ $s = 8; continue;
196876
197418
  /* if (dl.renderingInProgress) { */ case 7:
@@ -196888,11 +197430,11 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196888
197430
  _r$3 = dl.window.Publish(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
196889
197431
  _r$3;
196890
197432
  $r = dl.stats.NotifyFrameRenderEnded(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196891
- $r = dl.stats.NotifyFrame(frame$1); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197433
+ $r = dl.stats.NotifyFrame(currentFrame); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196892
197434
  dl.renderingInProgress = false;
196893
197435
  $24r$2 = $ifaceNil;
196894
197436
  $s = 16; case 16: return $24r$2;
196895
- /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: RenderingLoop.ptr.prototype.renderBuffer, $c: true, $r, $24r, $24r$1, $24r$2, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s, $deferred};return $f; } }
197437
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: RenderingLoop.ptr.prototype.renderBuffer, $c: true, $r, $24r, $24r$1, $24r$2, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _tuple, currentFrame, decodeResult, dl, err, screenBuffer, $s, $deferred};return $f; } }
196896
197438
  };
196897
197439
  RenderingLoop.prototype.renderBuffer = function() { return this.$val.renderBuffer(); };
196898
197440
  RenderingLoop.ptr.prototype.waitForRenderTime = function(frame$1) {
@@ -196924,9 +197466,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196924
197466
  /* */ } return; } var $f = {$blk: RenderingLoop.ptr.prototype.waitForRenderTime, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _selection, dl, frame$1, renderTime, serverTime, waitDuration, $s};return $f;
196925
197467
  };
196926
197468
  RenderingLoop.prototype.waitForRenderTime = function(frame$1) { return this.$val.waitForRenderTime(frame$1); };
196927
- NewDecoderLoop = function(frameProvider, createBuffer, stats$1) {
196928
- var createBuffer, frameProvider, stats$1;
196929
- return new DecoderLoop.ptr(frameProvider, screenbuffer.NewBufferPool(createBuffer, 20), stats$1, new $Chan(ptrType$2, 50), new $Chan(frame.FrameInterface, 50), new $Chan(structType, 0), new $Chan(structType, 0), false, $ifaceNil);
197469
+ NewDecoderLoop = function(frameProvider, createBuffer, stats$1, screenDriver) {
197470
+ var createBuffer, frameProvider, screenDriver, stats$1;
197471
+ return new DecoderLoop.ptr(frameProvider, screenbuffer.NewBufferPool(createBuffer, 20), stats$1, new $Chan(ptrType$2, 50), new $Chan(frame.FrameInterface, 50), new $Chan(structType, 0), new $Chan(structType, 0), false, $ifaceNil, screenDriver);
196930
197472
  };
196931
197473
  $pkg.NewDecoderLoop = NewDecoderLoop;
196932
197474
  DecoderLoop.ptr.prototype.NextDecodedResult = function() {
@@ -196962,6 +197504,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196962
197504
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
196963
197505
  wg = [wg];
196964
197506
  $deferred.push([function(_arg) { $close(_arg); }, [dl.stopped]]);
197507
+ $deferred.push([$methodVal(dl, "releaseQueuedResults"), []]);
196965
197508
  wg[0] = new sync.WaitGroup.ptr(0, $chanNil, new $Uint64(0, 0), 0);
196966
197509
  wg[0].Add(2);
196967
197510
  $go((function(wg) { return function $b() {
@@ -197055,13 +197598,32 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
197055
197598
  /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.Wait, $c: true, $r, _r, dl, $s};return $f;
197056
197599
  };
197057
197600
  DecoderLoop.prototype.Wait = function() { return this.$val.Wait(); };
197601
+ DecoderLoop.ptr.prototype.WaitFor = function(timeout) {
197602
+ var {_r, _r$1, _selection, dl, timeout, $s, $r, $c} = $restore(this, {timeout});
197603
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197604
+ dl = this;
197605
+ _r = time.After(timeout); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197606
+ _r$1 = $select([[dl.stopped], [_r]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
197607
+ _selection = _r$1;
197608
+ /* */ if (_selection[0] === 0) { $s = 3; continue; }
197609
+ /* */ if (_selection[0] === 1) { $s = 4; continue; }
197610
+ /* */ $s = 5; continue;
197611
+ /* if (_selection[0] === 0) { */ case 3:
197612
+ $s = -1; return true;
197613
+ /* } else if (_selection[0] === 1) { */ case 4:
197614
+ $s = -1; return false;
197615
+ /* } */ case 5:
197616
+ $s = -1; return false;
197617
+ /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.WaitFor, $c: true, $r, _r, _r$1, _selection, dl, timeout, $s};return $f;
197618
+ };
197619
+ DecoderLoop.prototype.WaitFor = function(timeout) { return this.$val.WaitFor(timeout); };
197058
197620
  DecoderLoop.ptr.prototype.writeFrame = function() {
197059
- var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _tuple, _tuple$1, decoder$1, dl, err, frame$1, $s, $r, $c} = $restore(this, {});
197621
+ var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _tuple, _tuple$1, currentFrame, decoder$1, dl, err, $s, $r, $c} = $restore(this, {});
197060
197622
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197061
197623
  dl = this;
197062
197624
  _r = dl.frameProvider.NextFrame(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197063
197625
  _tuple = _r;
197064
- frame$1 = _tuple[0];
197626
+ currentFrame = _tuple[0];
197065
197627
  err = _tuple[1];
197066
197628
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
197067
197629
  /* */ $s = 3; continue;
@@ -197070,58 +197632,64 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
197070
197632
  $24r = _r$1;
197071
197633
  $s = 5; case 5: return $24r;
197072
197634
  /* } */ case 3:
197073
- _r$2 = dl.ensureDecoder(frame$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
197635
+ _r$2 = dl.ensureDecoder(currentFrame); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
197074
197636
  _tuple$1 = _r$2;
197075
197637
  decoder$1 = _tuple$1[0];
197076
197638
  err = _tuple$1[1];
197077
197639
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
197078
197640
  /* */ $s = 8; continue;
197079
197641
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
197080
- _r$3 = errs.Errorf("Decoder cannot be created: %s", new sliceType([err])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
197081
- $24r$1 = _r$3;
197082
- $s = 10; case 10: return $24r$1;
197642
+ _r$3 = frame.Release(currentFrame); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
197643
+ _r$3;
197644
+ _r$4 = errs.Errorf("Decoder cannot be created: %s", new sliceType([err])); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
197645
+ $24r$1 = _r$4;
197646
+ $s = 11; case 11: return $24r$1;
197083
197647
  /* } */ case 8:
197084
- $r = dl.stats.NotifyFrameDecodeWriteStarted(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197085
- _r$4 = decoder$1.Write(frame$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
197086
- err = _r$4;
197087
- $r = dl.stats.NotifyFrameDecodeWriteEnded(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197088
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
197089
- /* */ $s = 15; continue;
197090
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
197091
- _r$5 = errs.Errorf("Frame cannot be decoded: %s", new sliceType([err])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
197092
- $24r$2 = _r$5;
197093
- $s = 17; case 17: return $24r$2;
197094
- /* } */ case 15:
197095
- _r$6 = $select([[dl.framesChan, frame$1], [dl.done]]); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
197096
- _selection = _r$6;
197097
- /* */ if (_selection[0] === 0) { $s = 19; continue; }
197098
- /* */ if (_selection[0] === 1) { $s = 20; continue; }
197099
- /* */ $s = 21; continue;
197100
- /* if (_selection[0] === 0) { */ case 19:
197101
- $s = 21; continue;
197102
- /* } else if (_selection[0] === 1) { */ case 20:
197103
- _r$7 = errs.Errorf("Decoder loop stopped", sliceType.nil); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
197104
- $24r$3 = _r$7;
197105
- $s = 23; case 23: return $24r$3;
197106
- /* } */ case 21:
197648
+ $r = dl.stats.NotifyFrameDecodeWriteStarted(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197649
+ _r$5 = decoder$1.Write(currentFrame); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
197650
+ err = _r$5;
197651
+ $r = dl.stats.NotifyFrameDecodeWriteEnded(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197652
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
197653
+ /* */ $s = 16; continue;
197654
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
197655
+ _r$6 = frame.Release(currentFrame); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
197656
+ _r$6;
197657
+ _r$7 = errs.Errorf("Frame cannot be decoded: %s", new sliceType([err])); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
197658
+ $24r$2 = _r$7;
197659
+ $s = 19; case 19: return $24r$2;
197660
+ /* } */ case 16:
197661
+ _r$8 = $select([[dl.framesChan, currentFrame], [dl.done]]); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
197662
+ _selection = _r$8;
197663
+ /* */ if (_selection[0] === 0) { $s = 21; continue; }
197664
+ /* */ if (_selection[0] === 1) { $s = 22; continue; }
197665
+ /* */ $s = 23; continue;
197666
+ /* if (_selection[0] === 0) { */ case 21:
197667
+ $s = 23; continue;
197668
+ /* } else if (_selection[0] === 1) { */ case 22:
197669
+ _r$9 = frame.Release(currentFrame); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
197670
+ _r$9;
197671
+ _r$10 = errs.Errorf("Decoder loop stopped", sliceType.nil); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
197672
+ $24r$3 = _r$10;
197673
+ $s = 26; case 26: return $24r$3;
197674
+ /* } */ case 23:
197107
197675
  $s = -1; return $ifaceNil;
197108
- /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.writeFrame, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _tuple, _tuple$1, decoder$1, dl, err, frame$1, $s};return $f;
197676
+ /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.writeFrame, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _tuple, _tuple$1, currentFrame, decoder$1, dl, err, $s};return $f;
197109
197677
  };
197110
197678
  DecoderLoop.prototype.writeFrame = function() { return this.$val.writeFrame(); };
197111
197679
  DecoderLoop.ptr.prototype.outputBuffer = function() {
197112
- var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _selection$1, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s, $r, $c} = $restore(this, {});
197680
+ var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _selection$1, _tuple, currentFrame, decodeResult, dl, err, screenBuffer, $s, $r, $c} = $restore(this, {});
197113
197681
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197114
197682
  dl = [dl];
197115
197683
  screenBuffer = [screenBuffer];
197116
197684
  dl[0] = this;
197117
- frame$1 = $ifaceNil;
197685
+ currentFrame = $ifaceNil;
197118
197686
  _r = $select([[dl[0].framesChan], [dl[0].done]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197119
197687
  _selection = _r;
197120
197688
  /* */ if (_selection[0] === 0) { $s = 2; continue; }
197121
197689
  /* */ if (_selection[0] === 1) { $s = 3; continue; }
197122
197690
  /* */ $s = 4; continue;
197123
197691
  /* if (_selection[0] === 0) { */ case 2:
197124
- frame$1 = _selection[1][0];
197692
+ currentFrame = _selection[1][0];
197125
197693
  $s = 4; continue;
197126
197694
  /* } else if (_selection[0] === 1) { */ case 3:
197127
197695
  _r$1 = errs.Errorf("Decoder loop stopped", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
@@ -197135,59 +197703,103 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
197135
197703
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
197136
197704
  /* */ $s = 9; continue;
197137
197705
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
197138
- _r$3 = errs.Errorf("Buffer cannot be acquired: %s", new sliceType([err])); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
197139
- $24r$1 = _r$3;
197140
- $s = 11; case 11: return $24r$1;
197706
+ _r$3 = frame.Release(currentFrame); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
197707
+ _r$3;
197708
+ _r$4 = errs.Errorf("Buffer cannot be acquired: %s", new sliceType([err])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
197709
+ $24r$1 = _r$4;
197710
+ $s = 12; case 12: return $24r$1;
197141
197711
  /* } */ case 9:
197142
- $r = dl[0].stats.NotifyFrameDecodeOutputStarted(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197143
- _r$4 = dl[0].decoder.NextOutput(screenBuffer[0]); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
197144
- err = _r$4;
197145
- $r = dl[0].stats.NotifyFrameDecodeOutputEnded(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197146
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
197147
- /* */ $s = 16; continue;
197148
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
197149
- _r$5 = errs.Errorf("Buffer cannot get next output: %s", new sliceType([err])); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
197150
- $24r$2 = _r$5;
197151
- $s = 18; case 18: return $24r$2;
197152
- /* } */ case 16:
197153
- /* */ if (dl[0].decodeResultChan.$buffer.length < 50) { $s = 19; continue; }
197154
- /* */ $s = 20; continue;
197155
- /* if (dl[0].decodeResultChan.$buffer.length < 50) { */ case 19:
197156
- decodeResult = new DecodeResult.ptr(frame$1, screenBuffer[0], (function(dl, screenBuffer) { return function $b() {
197157
- var {_r$6, err$1, $s, $r, $c} = $restore(this, {});
197712
+ $r = dl[0].stats.NotifyFrameDecodeOutputStarted(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197713
+ _r$5 = dl[0].decoder.NextOutput(screenBuffer[0]); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
197714
+ err = _r$5;
197715
+ $r = dl[0].stats.NotifyFrameDecodeOutputEnded(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197716
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 16; continue; }
197717
+ /* */ $s = 17; continue;
197718
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 16:
197719
+ $r = dl[0].decoder.Release(screenBuffer[0]); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197720
+ _r$6 = dl[0].bufferPool.Release(screenBuffer[0]); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
197721
+ $unused(_r$6);
197722
+ _r$7 = frame.Release(currentFrame); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
197723
+ _r$7;
197724
+ _r$8 = errs.Errorf("Buffer cannot get next output: %s", new sliceType([err])); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
197725
+ $24r$2 = _r$8;
197726
+ $s = 22; case 22: return $24r$2;
197727
+ /* } */ case 17:
197728
+ /* */ if (dl[0].decodeResultChan.$buffer.length < 50) { $s = 23; continue; }
197729
+ /* */ $s = 24; continue;
197730
+ /* if (dl[0].decodeResultChan.$buffer.length < 50) { */ case 23:
197731
+ decodeResult = new DecodeResult.ptr(currentFrame, screenBuffer[0], (function(dl, screenBuffer) { return function $b() {
197732
+ var {_r$9, err$1, $s, $r, $c} = $restore(this, {});
197158
197733
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197159
197734
  $r = dl[0].decoder.Release(screenBuffer[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197160
- _r$6 = dl[0].bufferPool.Release(screenBuffer[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
197161
- err$1 = _r$6;
197735
+ _r$9 = dl[0].bufferPool.Release(screenBuffer[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
197736
+ err$1 = _r$9;
197162
197737
  /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
197163
197738
  /* */ $s = 4; continue;
197164
197739
  /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3:
197165
197740
  $r = errs.Print("Buffer cannot be released", err$1); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197166
197741
  /* } */ case 4:
197167
197742
  $s = -1; return;
197168
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$6, err$1, $s};return $f;
197743
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$9, err$1, $s};return $f;
197169
197744
  }; })(dl, screenBuffer));
197170
- _r$6 = $select([[dl[0].decodeResultChan, decodeResult], [dl[0].done]]); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
197171
- _selection$1 = _r$6;
197172
- /* */ if (_selection$1[0] === 0) { $s = 23; continue; }
197173
- /* */ if (_selection$1[0] === 1) { $s = 24; continue; }
197174
- /* */ $s = 25; continue;
197175
- /* if (_selection$1[0] === 0) { */ case 23:
197176
- $s = 25; continue;
197177
- /* } else if (_selection$1[0] === 1) { */ case 24:
197178
- $r = decodeResult.Release(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197179
- _r$7 = errs.Errorf("Decoder loop stopped", sliceType.nil); /* */ $s = 27; case 27: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
197180
- $24r$3 = _r$7;
197181
- $s = 28; case 28: return $24r$3;
197182
- /* } */ case 25:
197183
- $s = 21; continue;
197184
- /* } else { */ case 20:
197745
+ _r$9 = $select([[dl[0].decodeResultChan, decodeResult], [dl[0].done]]); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
197746
+ _selection$1 = _r$9;
197747
+ /* */ if (_selection$1[0] === 0) { $s = 27; continue; }
197748
+ /* */ if (_selection$1[0] === 1) { $s = 28; continue; }
197749
+ /* */ $s = 29; continue;
197750
+ /* if (_selection$1[0] === 0) { */ case 27:
197751
+ $s = 29; continue;
197752
+ /* } else if (_selection$1[0] === 1) { */ case 28:
197753
+ $r = decodeResult.Release(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197754
+ _r$10 = frame.Release(currentFrame); /* */ $s = 31; case 31: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
197755
+ _r$10;
197756
+ _r$11 = errs.Errorf("Decoder loop stopped", sliceType.nil); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
197757
+ $24r$3 = _r$11;
197758
+ $s = 33; case 33: return $24r$3;
197759
+ /* } */ case 29:
197760
+ $s = 25; continue;
197761
+ /* } else { */ case 24:
197185
197762
  dl[0].stats.NotifyThrottledDecodeFrame();
197186
- /* } */ case 21:
197763
+ $r = dl[0].decoder.Release(screenBuffer[0]); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197764
+ _r$12 = dl[0].bufferPool.Release(screenBuffer[0]); /* */ $s = 35; case 35: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
197765
+ $unused(_r$12);
197766
+ _r$13 = frame.Release(currentFrame); /* */ $s = 36; case 36: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
197767
+ _r$13;
197768
+ /* } */ case 25:
197187
197769
  $s = -1; return $ifaceNil;
197188
- /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.outputBuffer, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _selection$1, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s};return $f;
197770
+ /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.outputBuffer, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _selection$1, _tuple, currentFrame, decodeResult, dl, err, screenBuffer, $s};return $f;
197189
197771
  };
197190
197772
  DecoderLoop.prototype.outputBuffer = function() { return this.$val.outputBuffer(); };
197773
+ DecoderLoop.ptr.prototype.releaseQueuedResults = function() {
197774
+ var {_r, _r$1, _selection, dl, queued, result, $s, $r, $c} = $restore(this, {});
197775
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197776
+ dl = this;
197777
+ /* while (true) { */ case 1:
197778
+ _selection = $select([[dl.framesChan], [dl.decodeResultChan], []]);
197779
+ /* */ if (_selection[0] === 0) { $s = 3; continue; }
197780
+ /* */ if (_selection[0] === 1) { $s = 4; continue; }
197781
+ /* */ if (_selection[0] === 2) { $s = 5; continue; }
197782
+ /* */ $s = 6; continue;
197783
+ /* if (_selection[0] === 0) { */ case 3:
197784
+ queued = _selection[1][0];
197785
+ _r = frame.Release(queued); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197786
+ _r;
197787
+ $s = 6; continue;
197788
+ /* } else if (_selection[0] === 1) { */ case 4:
197789
+ result = _selection[1][0];
197790
+ $r = result.Release(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197791
+ _r$1 = frame.Release(result.Frame); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
197792
+ _r$1;
197793
+ $s = 6; continue;
197794
+ /* } else if (_selection[0] === 2) { */ case 5:
197795
+ $s = -1; return;
197796
+ /* } */ case 6:
197797
+ $s = 1; continue;
197798
+ case 2:
197799
+ $s = -1; return;
197800
+ /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.releaseQueuedResults, $c: true, $r, _r, _r$1, _selection, dl, queued, result, $s};return $f;
197801
+ };
197802
+ DecoderLoop.prototype.releaseQueuedResults = function() { return this.$val.releaseQueuedResults(); };
197191
197803
  DecoderLoop.ptr.prototype.ensureDecoder = function(frame$1) {
197192
197804
  var {$24r, _r, _r$1, _r$2, _tuple, dl, err, frame$1, $s, $r, $c} = $restore(this, {frame$1});
197193
197805
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -197197,7 +197809,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
197197
197809
  /* */ $s = 2; continue;
197198
197810
  /* if ($interfaceIsEqual(dl.decoder, $ifaceNil)) { */ case 1:
197199
197811
  _r = frame$1.Buffer(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197200
- _r$1 = decoder.NewDecoder(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
197812
+ _r$1 = decoder.NewDecoder(_r, dl.screenDriver); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
197201
197813
  _tuple = _r$1;
197202
197814
  dl.decoder = _tuple[0];
197203
197815
  err = _tuple[1];
@@ -197281,7 +197893,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
197281
197893
  }
197282
197894
  cl.started = true;
197283
197895
  $go((function $b() {
197284
- var {_1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _selection, _selection$1, _tuple, collectedFrame, err, queued, released, $s, $deferred, $r, $c} = $restore(this, {});
197896
+ var {_1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _selection, _selection$1, _tuple, collectedFrame, err, queued, released, $s, $deferred, $r, $c} = $restore(this, {});
197285
197897
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
197286
197898
  $deferred.push([function(_arg) { $close(_arg); }, [cl.stopped]]);
197287
197899
  $deferred.push([$methodVal(cl, "releaseQueuedFrames"), []]);
@@ -197317,39 +197929,45 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
197317
197929
  /* */ if (_1 === (255)) { $s = 18; continue; }
197318
197930
  /* */ $s = 19; continue;
197319
197931
  /* if (_1 === (1)) { */ case 17:
197320
- _r$4 = cl.now(); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
197932
+ _r$4 = cl.now(); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
197321
197933
  queued = new queuedFrame.ptr(collectedFrame, $clone(_r$4, time.Time));
197322
197934
  _selection$1 = $select([[cl.framesChan, $clone(queued, queuedFrame)], [cl.done], []]);
197323
- /* */ if (_selection$1[0] === 0) { $s = 21; continue; }
197324
- /* */ if (_selection$1[0] === 1) { $s = 22; continue; }
197325
- /* */ if (_selection$1[0] === 2) { $s = 23; continue; }
197326
- /* */ $s = 24; continue;
197327
- /* if (_selection$1[0] === 0) { */ case 21:
197328
- $r = cl.stats.NotifyCollectionQueueDepth(cl.framesChan.$buffer.length); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197329
- $s = 24; continue;
197330
- /* } else if (_selection$1[0] === 1) { */ case 22:
197331
- _r$5 = frame.Release(collectedFrame); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
197332
- /* */ if (_r$5) { $s = 26; continue; }
197333
- /* */ $s = 27; continue;
197334
- /* if (_r$5) { */ case 26:
197335
- $r = cl.stats.NotifyCollectionQueueReleased(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197336
- /* } */ case 27:
197337
- $s = 30; case 30: return;
197338
- /* } else if (_selection$1[0] === 2) { */ case 23:
197339
- _r$6 = frame.Release(collectedFrame); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
197935
+ /* */ if (_selection$1[0] === 0) { $s = 22; continue; }
197936
+ /* */ if (_selection$1[0] === 1) { $s = 23; continue; }
197937
+ /* */ if (_selection$1[0] === 2) { $s = 24; continue; }
197938
+ /* */ $s = 25; continue;
197939
+ /* if (_selection$1[0] === 0) { */ case 22:
197940
+ $r = cl.stats.NotifyCollectionQueueDepth(cl.framesChan.$buffer.length); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197941
+ $s = 25; continue;
197942
+ /* } else if (_selection$1[0] === 1) { */ case 23:
197943
+ _r$5 = frame.Release(collectedFrame); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
197944
+ /* */ if (_r$5) { $s = 27; continue; }
197945
+ /* */ $s = 28; continue;
197946
+ /* if (_r$5) { */ case 27:
197947
+ $r = cl.stats.NotifyCollectionQueueReleased(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197948
+ /* } */ case 28:
197949
+ $s = 31; case 31: return;
197950
+ /* } else if (_selection$1[0] === 2) { */ case 24:
197951
+ _r$6 = frame.Release(collectedFrame); /* */ $s = 32; case 32: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
197340
197952
  released = _r$6;
197341
197953
  cl.stats.NotifyThrottledCollectionFrame();
197342
- $r = cl.stats.NotifyCollectionQueueOverflow(released); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197343
- /* } */ case 24:
197344
- $s = 19; continue;
197954
+ $r = cl.stats.NotifyCollectionQueueOverflow(released); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197955
+ /* } */ case 25:
197956
+ $s = 20; continue;
197345
197957
  /* } else if (_1 === (255)) { */ case 18:
197346
- $r = cl.stats.NotifyScreenPing(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197347
- /* } */ case 19:
197958
+ $r = cl.stats.NotifyScreenPing(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197959
+ _r$7 = frame.Release(collectedFrame); /* */ $s = 35; case 35: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
197960
+ _r$7;
197961
+ $s = 20; continue;
197962
+ /* } else { */ case 19:
197963
+ _r$8 = frame.Release(collectedFrame); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
197964
+ _r$8;
197965
+ /* } */ case 20:
197348
197966
  case 15:
197349
197967
  $s = 1; continue;
197350
197968
  case 2:
197351
197969
  $s = -1; return;
197352
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: $b, $c: true, $r, _1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _selection, _selection$1, _tuple, collectedFrame, err, queued, released, $s, $deferred};return $f; } }
197970
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: $b, $c: true, $r, _1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _selection, _selection$1, _tuple, collectedFrame, err, queued, released, $s, $deferred};return $f; } }
197353
197971
  }), []);
197354
197972
  };
197355
197973
  CollectionLoop.prototype.Start = function() { return this.$val.Start(); };
@@ -197402,13 +198020,34 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
197402
198020
  /* */ } return; } var $f = {$blk: CollectionLoop.ptr.prototype.Wait, $c: true, $r, _r, cl, $s};return $f;
197403
198021
  };
197404
198022
  CollectionLoop.prototype.Wait = function() { return this.$val.Wait(); };
197405
- ptrType$4.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "renderBuffer", name: "renderBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "waitForRenderTime", name: "waitForRenderTime", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([frame.FrameInterface], [], false)}];
197406
- ptrType$5.methods = [{prop: "NextDecodedResult", name: "NextDecodedResult", pkg: "", typ: $funcType([], [ptrType$2, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "outputBuffer", name: "outputBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "ensureDecoder", name: "ensureDecoder", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([frame.FrameInterface], [decoder.Decoder, $error], false)}];
197407
- ptrType$6.methods = [{prop: "NextFrame", name: "NextFrame", pkg: "", typ: $funcType([], [frame.FrameInterface, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "releaseQueuedFrames", name: "releaseQueuedFrames", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}];
198023
+ CollectionLoop.ptr.prototype.WaitFor = function(timeout) {
198024
+ var {_r, _r$1, _selection, cl, timeout, $s, $r, $c} = $restore(this, {timeout});
198025
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
198026
+ cl = this;
198027
+ _r = time.After(timeout); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
198028
+ _r$1 = $select([[cl.stopped], [_r]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
198029
+ _selection = _r$1;
198030
+ /* */ if (_selection[0] === 0) { $s = 3; continue; }
198031
+ /* */ if (_selection[0] === 1) { $s = 4; continue; }
198032
+ /* */ $s = 5; continue;
198033
+ /* if (_selection[0] === 0) { */ case 3:
198034
+ $s = -1; return true;
198035
+ /* } else if (_selection[0] === 1) { */ case 4:
198036
+ $s = -1; return false;
198037
+ /* } */ case 5:
198038
+ $s = -1; return false;
198039
+ /* */ } return; } var $f = {$blk: CollectionLoop.ptr.prototype.WaitFor, $c: true, $r, _r, _r$1, _selection, cl, timeout, $s};return $f;
198040
+ };
198041
+ CollectionLoop.prototype.WaitFor = function(timeout) { return this.$val.WaitFor(timeout); };
198042
+ ptrType$4.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([time.Duration], [$Bool], false)}];
198043
+ ptrType$5.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "WaitFor", name: "WaitFor", pkg: "", typ: $funcType([time.Duration], [$Bool], false)}, {prop: "renderBuffer", name: "renderBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "waitForRenderTime", name: "waitForRenderTime", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([frame.FrameInterface], [], false)}];
198044
+ ptrType$6.methods = [{prop: "NextDecodedResult", name: "NextDecodedResult", pkg: "", typ: $funcType([], [ptrType$2, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "WaitFor", name: "WaitFor", pkg: "", typ: $funcType([time.Duration], [$Bool], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "outputBuffer", name: "outputBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "releaseQueuedResults", name: "releaseQueuedResults", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [], false)}, {prop: "ensureDecoder", name: "ensureDecoder", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([frame.FrameInterface], [decoder.Decoder, $error], false)}];
198045
+ ptrType$7.methods = [{prop: "NextFrame", name: "NextFrame", pkg: "", typ: $funcType([], [frame.FrameInterface, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "releaseQueuedFrames", name: "releaseQueuedFrames", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "WaitFor", name: "WaitFor", pkg: "", typ: $funcType([time.Duration], [$Bool], false)}];
198046
+ SurfaceLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameCollector", name: "frameCollector", embedded: false, exported: false, typ: netframe.FrameCollectorInterface, tag: ""}, {prop: "screenDriver", name: "screenDriver", embedded: false, exported: false, typ: netpacket.Driver, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "decoder", name: "decoder", embedded: false, exported: false, typ: decoder.Decoder, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopped", name: "stopped", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "stopOnce", name: "stopOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}]);
197408
198047
  RenderingLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "decodeResultProvider", name: "decodeResultProvider", embedded: false, exported: false, typ: DecodeResultProvider, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderingInProgress", name: "renderingInProgress", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopped", name: "stopped", embedded: false, exported: false, typ: chanType, tag: ""}]);
197409
198048
  DecodeResultProvider.init([{prop: "NextDecodedResult", name: "NextDecodedResult", pkg: "", typ: $funcType([], [ptrType$2, $error], false)}]);
197410
198049
  DecodeResult.init("", [{prop: "Frame", name: "Frame", embedded: false, exported: true, typ: frame.FrameInterface, tag: ""}, {prop: "Buffer", name: "Buffer", embedded: false, exported: true, typ: screen.Buffer, tag: ""}, {prop: "Release", name: "Release", embedded: false, exported: true, typ: funcType, tag: ""}]);
197411
- DecoderLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameProvider", name: "frameProvider", embedded: false, exported: false, typ: FrameProvider, tag: ""}, {prop: "bufferPool", name: "bufferPool", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "decodeResultChan", name: "decodeResultChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "framesChan", name: "framesChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopped", name: "stopped", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "decoder", name: "decoder", embedded: false, exported: false, typ: decoder.Decoder, tag: ""}]);
198050
+ DecoderLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameProvider", name: "frameProvider", embedded: false, exported: false, typ: FrameProvider, tag: ""}, {prop: "bufferPool", name: "bufferPool", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "decodeResultChan", name: "decodeResultChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "framesChan", name: "framesChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopped", name: "stopped", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "decoder", name: "decoder", embedded: false, exported: false, typ: decoder.Decoder, tag: ""}, {prop: "screenDriver", name: "screenDriver", embedded: false, exported: false, typ: netpacket.Driver, tag: ""}]);
197412
198051
  FrameProvider.init([{prop: "NextFrame", name: "NextFrame", pkg: "", typ: $funcType([], [frame.FrameInterface, $error], false)}]);
197413
198052
  queuedFrame.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frame", name: "frame", embedded: false, exported: false, typ: frame.FrameInterface, tag: ""}, {prop: "enqueuedAt", name: "enqueuedAt", embedded: false, exported: false, typ: time.Time, tag: ""}]);
197414
198053
  CollectionLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameCollector", name: "frameCollector", embedded: false, exported: false, typ: netframe.FrameCollectorInterface, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "now", name: "now", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "framesChan", name: "framesChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopped", name: "stopped", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}]);
@@ -197417,14 +198056,15 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
197417
198056
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
197418
198057
  $r = decoder.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197419
198058
  $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197420
- $r = frame.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197421
- $r = netframe.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197422
- $r = screenbuffer.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197423
- $r = stats.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197424
- $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197425
- $r = image.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197426
- $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197427
- $r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198059
+ $r = netpacket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198060
+ $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198061
+ $r = netframe.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198062
+ $r = screenbuffer.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198063
+ $r = stats.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198064
+ $r = screen.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198065
+ $r = image.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198066
+ $r = sync.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198067
+ $r = time.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197428
198068
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
197429
198069
  };
197430
198070
  $pkg.$init = $init;
@@ -198079,14 +198719,13 @@ $packages["golang.org/x/mobile/event/lifecycle"] = (function() {
198079
198719
  return $pkg;
198080
198720
  })();
198081
198721
  $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198082
- var $pkg = {}, $init, binary, json, fmt, query, clientscreen, clipboard, brightsigndecoder, nacldecoder, nacldriver, samsungwasmdecoder, webcodecs, errs, helper, input, message, netclient, netpacket, netstream, netframe, jswebsocketworker, player, overlaydriver, stats, videostream, window, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, touch, geom, image, io, ioutil, log, os, path, filepath, runtime, strconv, strings, sync, js, time, ScreenWindow, Geometry, screenWindowDetachEvent, nonBlockingWindowEventSender, ProcessInfo, ProcessInfoManager, sliceType, sliceType$1, ptrType, ptrType$1, ptrType$2, funcType, sliceType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, structType, interfaceType, sliceType$3, sliceType$4, arrayType, mapType, funcType$1, ptrType$15, chanType, chanType$1, chanType$2, chanType$3, chanType$4, chanType$5, chanType$6, onScreenWindowStarted, RegisterVideoStream, shouldManageVideoStream, UnregisterVideoStream, encodeDisconnectReason, NewScreenWindow, sendWindowEventNonBlocking, MainDriver, NewProcessInfoManager, isNativeDecoderActive, init, registerJSBridge, newJSBridgeFacades, geometryValue;
198722
+ var $pkg = {}, $init, binary, json, fmt, query, clientscreen, clipboard, nacldecoder, nacldriver, samsungwasmdecoder, webcodecs, errs, helper, input, message, netclient, netpacket, netstream, netframe, jswebsocketworker, player, overlaydriver, stats, videostream, window, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, touch, geom, image, io, ioutil, log, os, path, filepath, runtime, strconv, strings, sync, js, time, ScreenWindow, Geometry, screenWindowDetachEvent, nonBlockingWindowEventSender, ProcessInfo, ProcessInfoManager, sliceType, sliceType$1, ptrType, ptrType$1, ptrType$2, funcType, sliceType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, structType, interfaceType, sliceType$3, sliceType$4, arrayType, mapType, funcType$1, ptrType$16, chanType, chanType$1, chanType$2, chanType$3, chanType$4, chanType$5, chanType$6, onScreenWindowStarted, RegisterVideoStream, shouldManageVideoStream, UnregisterVideoStream, encodeDisconnectReason, NewScreenWindow, sendWindowEventNonBlocking, MainDriver, NewProcessInfoManager, isNativeDecoderActive, init, registerJSBridge, newJSBridgeFacades, geometryValue;
198083
198723
  binary = $packages["encoding/binary"];
198084
198724
  json = $packages["encoding/json"];
198085
198725
  fmt = $packages["fmt"];
198086
198726
  query = $packages["github.com/google/go-querystring/query"];
198087
198727
  clientscreen = $packages["github.com/supraio/client-daemon/pkg/clientscreen"];
198088
198728
  clipboard = $packages["github.com/supraio/client-daemon/pkg/clipboard"];
198089
- brightsigndecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/brightsigndecoder"];
198090
198729
  nacldecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"];
198091
198730
  nacldriver = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"];
198092
198731
  samsungwasmdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"];
@@ -198128,7 +198767,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198128
198767
  sync = $packages["sync"];
198129
198768
  js = $packages["syscall/js"];
198130
198769
  time = $packages["time"];
198131
- ScreenWindow = $pkg.ScreenWindow = $newType(0, $kindStruct, "render.ScreenWindow", true, "github.com/supraio/client-daemon/pkg/render", true, function(processInfoManager_, screenDriver_, screenHost_, metadataDriver_, metadataHost_, clientID_, clientSecret_, screenID_, secure_, forceScreenSize_, timeoutDuration_, closed_, closeDone_, closeMu_, screenMu_, stats_, onClose_, window_, screen_, screenConn_, metadataServer_, responsiveSender_, collectionLoop_, decoderLoop_, renderingLoop_, sizeHandler_, touchHandler_, keyHandler_, mouseHandler_, eventMetrics_, pinger_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, touchEventChan_, winCloseChannel_, eventLoopStop_, eventLoopDone_, windowSize_, geometry_, closeReason_) {
198770
+ ScreenWindow = $pkg.ScreenWindow = $newType(0, $kindStruct, "render.ScreenWindow", true, "github.com/supraio/client-daemon/pkg/render", true, function(processInfoManager_, screenDriver_, screenHost_, metadataDriver_, metadataHost_, clientID_, clientSecret_, screenID_, secure_, forceScreenSize_, timeoutDuration_, closed_, closeDone_, closeMu_, screenMu_, stats_, onClose_, window_, screen_, screenConn_, metadataServer_, responsiveSender_, collectionLoop_, decoderLoop_, renderingLoop_, surfaceLoop_, sizeHandler_, touchHandler_, keyHandler_, mouseHandler_, eventMetrics_, pinger_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, touchEventChan_, winCloseChannel_, eventLoopStop_, eventLoopDone_, windowSize_, geometry_, closeReason_) {
198132
198771
  this.$val = this;
198133
198772
  if (arguments.length === 0) {
198134
198773
  this.processInfoManager = ptrType.nil;
@@ -198156,12 +198795,13 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198156
198795
  this.collectionLoop = ptrType$5.nil;
198157
198796
  this.decoderLoop = ptrType$6.nil;
198158
198797
  this.renderingLoop = ptrType$7.nil;
198159
- this.sizeHandler = ptrType$8.nil;
198160
- this.touchHandler = ptrType$9.nil;
198161
- this.keyHandler = ptrType$10.nil;
198162
- this.mouseHandler = ptrType$11.nil;
198163
- this.eventMetrics = ptrType$12.nil;
198164
- this.pinger = ptrType$13.nil;
198798
+ this.surfaceLoop = ptrType$8.nil;
198799
+ this.sizeHandler = ptrType$9.nil;
198800
+ this.touchHandler = ptrType$10.nil;
198801
+ this.keyHandler = ptrType$11.nil;
198802
+ this.mouseHandler = ptrType$12.nil;
198803
+ this.eventMetrics = ptrType$13.nil;
198804
+ this.pinger = ptrType$14.nil;
198165
198805
  this.keyEventChan = $chanNil;
198166
198806
  this.mouseEventChan = $chanNil;
198167
198807
  this.sizeEventChan = $chanNil;
@@ -198171,7 +198811,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198171
198811
  this.eventLoopStop = $chanNil;
198172
198812
  this.eventLoopDone = $chanNil;
198173
198813
  this.windowSize = new image.Point.ptr(0, 0);
198174
- this.geometry = ptrType$14.nil;
198814
+ this.geometry = ptrType$15.nil;
198175
198815
  this.closeReason = "";
198176
198816
  return;
198177
198817
  }
@@ -198200,6 +198840,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198200
198840
  this.collectionLoop = collectionLoop_;
198201
198841
  this.decoderLoop = decoderLoop_;
198202
198842
  this.renderingLoop = renderingLoop_;
198843
+ this.surfaceLoop = surfaceLoop_;
198203
198844
  this.sizeHandler = sizeHandler_;
198204
198845
  this.touchHandler = touchHandler_;
198205
198846
  this.keyHandler = keyHandler_;
@@ -198271,13 +198912,14 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198271
198912
  ptrType$5 = $ptrType(player.CollectionLoop);
198272
198913
  ptrType$6 = $ptrType(player.DecoderLoop);
198273
198914
  ptrType$7 = $ptrType(player.RenderingLoop);
198274
- ptrType$8 = $ptrType(window.SizeHandler);
198275
- ptrType$9 = $ptrType(input.TouchHandler);
198276
- ptrType$10 = $ptrType(input.KeyHandler);
198277
- ptrType$11 = $ptrType(input.MouseHandler);
198278
- ptrType$12 = $ptrType(input.EventMetrics);
198279
- ptrType$13 = $ptrType(netclient.Pinger);
198280
- ptrType$14 = $ptrType(Geometry);
198915
+ ptrType$8 = $ptrType(player.SurfaceLoop);
198916
+ ptrType$9 = $ptrType(window.SizeHandler);
198917
+ ptrType$10 = $ptrType(input.TouchHandler);
198918
+ ptrType$11 = $ptrType(input.KeyHandler);
198919
+ ptrType$12 = $ptrType(input.MouseHandler);
198920
+ ptrType$13 = $ptrType(input.EventMetrics);
198921
+ ptrType$14 = $ptrType(netclient.Pinger);
198922
+ ptrType$15 = $ptrType(Geometry);
198281
198923
  structType = $structType("", []);
198282
198924
  interfaceType = $interfaceType([{prop: "CancelPendingUploads", name: "CancelPendingUploads", pkg: "", typ: $funcType([], [], false)}]);
198283
198925
  sliceType$3 = $sliceType($error);
@@ -198285,7 +198927,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198285
198927
  arrayType = $arrayType(funcType, 0);
198286
198928
  mapType = $mapType($String, $emptyInterface);
198287
198929
  funcType$1 = $funcType([], [$error], false);
198288
- ptrType$15 = $ptrType(ScreenWindow);
198930
+ ptrType$16 = $ptrType(ScreenWindow);
198289
198931
  chanType = $chanType(structType, false, false);
198290
198932
  chanType$1 = $chanType(key.Event, false, false);
198291
198933
  chanType$2 = $chanType(mouse.Event, false, false);
@@ -198483,7 +199125,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198483
199125
  _r = stats.NewStats(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
198484
199126
  s = _r;
198485
199127
  s.SetEncodingPreferences($clone(encodingPreferences, stats.EncodingPreferences));
198486
- $s = -1; return new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, true, $chanNil, new sync.Mutex.ptr(0, 0), new sync.Mutex.ptr(0, 0), s, sliceType$2.nil, $ifaceNil, $ifaceNil, $ifaceNil, ptrType$3.nil, ptrType$4.nil, ptrType$5.nil, ptrType$6.nil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, ptrType$10.nil, ptrType$11.nil, input.NewEventMetrics(), ptrType$13.nil, new $Chan(key.Event, 50), new $Chan(mouse.Event, 50), new $Chan(size.Event, 50), new $Chan(focus.Event, 50), new $Chan(touch.Event, 50), new $Chan($emptyInterface, 0), $chanNil, $chanNil, new image.Point.ptr(0, 0), geometry, "");
199128
+ $s = -1; return new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, true, $chanNil, new sync.Mutex.ptr(0, 0), new sync.Mutex.ptr(0, 0), s, sliceType$2.nil, $ifaceNil, $ifaceNil, $ifaceNil, ptrType$3.nil, ptrType$4.nil, ptrType$5.nil, ptrType$6.nil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, ptrType$10.nil, ptrType$11.nil, ptrType$12.nil, input.NewEventMetrics(), ptrType$14.nil, new $Chan(key.Event, 50), new $Chan(mouse.Event, 50), new $Chan(size.Event, 50), new $Chan(focus.Event, 50), new $Chan(touch.Event, 50), new $Chan($emptyInterface, 0), $chanNil, $chanNil, new image.Point.ptr(0, 0), geometry, "");
198487
199129
  /* */ } return; } var $f = {$blk: NewScreenWindow, $c: true, $r, _r, clientID, clientSecret, encodingPreferences, forceScreenSize, geometry, metadataDriver, metadataHost, processInfoManager, s, screenDriver, screenHost, screenID, secure, timeoutDuration, $s};return $f;
198488
199130
  };
198489
199131
  $pkg.NewScreenWindow = NewScreenWindow;
@@ -198739,7 +199381,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198739
199381
  $go((function(eventLoopDone, eventLoopStop, w, window$1, windowChannel) { return function $b() {
198740
199382
  var {$s, $r, $c} = $restore(this, {});
198741
199383
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
198742
- $r = MainDriver((function(eventLoopDone, eventLoopStop, w, window$1, windowChannel) { return function $b(s) {
199384
+ $r = MainDriver(w[0].screenDriver, (function(eventLoopDone, eventLoopStop, w, window$1, windowChannel) { return function $b(s) {
198743
199385
  var {_r, _r$1, _tuple, err, opts, s, window$2, $s, $r, $c} = $restore(this, {s});
198744
199386
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
198745
199387
  opts = [opts];
@@ -198915,7 +199557,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198915
199557
  opts.Height = w.forceScreenSize.Y;
198916
199558
  }
198917
199559
  g = w.geometry;
198918
- if (!(g === ptrType$14.nil)) {
199560
+ if (!(g === ptrType$15.nil)) {
198919
199561
  opts.X = g.X;
198920
199562
  opts.Y = g.Y;
198921
199563
  opts.Width = g.Width;
@@ -199097,25 +199739,25 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
199097
199739
  w[0].responsiveSender = ptrType$4.nil;
199098
199740
  }
199099
199741
  w[0].metadataServer = ptrType$3.nil;
199100
- if (!(w[0].keyHandler === ptrType$10.nil)) {
199742
+ if (!(w[0].keyHandler === ptrType$11.nil)) {
199101
199743
  w[0].keyHandler.Close();
199102
- w[0].keyHandler = ptrType$10.nil;
199744
+ w[0].keyHandler = ptrType$11.nil;
199103
199745
  }
199104
- /* */ if (!(w[0].mouseHandler === ptrType$11.nil)) { $s = 1; continue; }
199746
+ /* */ if (!(w[0].mouseHandler === ptrType$12.nil)) { $s = 1; continue; }
199105
199747
  /* */ $s = 2; continue;
199106
- /* if (!(w[0].mouseHandler === ptrType$11.nil)) { */ case 1:
199748
+ /* if (!(w[0].mouseHandler === ptrType$12.nil)) { */ case 1:
199107
199749
  $r = w[0].mouseHandler.Close(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199108
- w[0].mouseHandler = ptrType$11.nil;
199750
+ w[0].mouseHandler = ptrType$12.nil;
199109
199751
  /* } */ case 2:
199110
- if (!(w[0].sizeHandler === ptrType$8.nil)) {
199752
+ if (!(w[0].sizeHandler === ptrType$9.nil)) {
199111
199753
  w[0].sizeHandler.Close();
199112
- w[0].sizeHandler = ptrType$8.nil;
199754
+ w[0].sizeHandler = ptrType$9.nil;
199113
199755
  }
199114
- /* */ if (!(w[0].touchHandler === ptrType$9.nil)) { $s = 4; continue; }
199756
+ /* */ if (!(w[0].touchHandler === ptrType$10.nil)) { $s = 4; continue; }
199115
199757
  /* */ $s = 5; continue;
199116
- /* if (!(w[0].touchHandler === ptrType$9.nil)) { */ case 4:
199758
+ /* if (!(w[0].touchHandler === ptrType$10.nil)) { */ case 4:
199117
199759
  $r = w[0].touchHandler.Close(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199118
- w[0].touchHandler = ptrType$9.nil;
199760
+ w[0].touchHandler = ptrType$10.nil;
199119
199761
  /* } */ case 5:
199120
199762
  _r$8 = w[0].isClosed(); /* */ $s = 9; case 9: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
199121
199763
  /* */ if (_r$8) { $s = 7; continue; }
@@ -199355,51 +199997,59 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
199355
199997
  maxPacketSize = netpacket.GetMaxPacketSize(w.screenDriver);
199356
199998
  _r$4 = netframe.NewFrameCollector(conn, maxPacketSize); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
199357
199999
  frameCollector = _r$4;
199358
- w.collectionLoop = player.NewCollectionLoop(frameCollector, w.stats);
199359
- w.collectionLoop.Start();
199360
- w.decoderLoop = player.NewDecoderLoop(w.collectionLoop, $methodVal(w, "createScreenBuffer"), w.stats);
199361
- w.decoderLoop.Start();
199362
- w.renderingLoop = player.NewRenderingLoop(w.decoderLoop, w.window, w.stats);
199363
- w.renderingLoop.Start();
200000
+ /* */ if (w.screenDriver === "brightsign_tcp") { $s = 17; continue; }
200001
+ /* */ $s = 18; continue;
200002
+ /* if (w.screenDriver === "brightsign_tcp") { */ case 17:
200003
+ w.surfaceLoop = player.NewSurfaceLoop(frameCollector, w.screenDriver, w.stats);
200004
+ $r = w.surfaceLoop.Start(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200005
+ $s = 19; continue;
200006
+ /* } else { */ case 18:
200007
+ w.collectionLoop = player.NewCollectionLoop(frameCollector, w.stats);
200008
+ w.collectionLoop.Start();
200009
+ w.decoderLoop = player.NewDecoderLoop(w.collectionLoop, $methodVal(w, "createScreenBuffer"), w.stats, w.screenDriver);
200010
+ w.decoderLoop.Start();
200011
+ w.renderingLoop = player.NewRenderingLoop(w.decoderLoop, w.window, w.stats);
200012
+ w.renderingLoop.Start();
200013
+ /* } */ case 19:
199364
200014
  screenSender = w.createScreenSender();
199365
200015
  msgData = (new sliceType$1($stringToBytes(w.clientID + w.clientSecret + w.screenID)));
199366
- _r$5 = screenSender.Send(1, msgData); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
200016
+ _r$5 = screenSender.Send(1, msgData); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
199367
200017
  err = _r$5;
199368
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 18; continue; }
199369
- /* */ $s = 19; continue;
199370
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 18:
199371
- $r = log.Printf("Screen connect send failed: %v", new sliceType([err])); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199372
- _r$6 = w.closeScreenLocked(); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
200018
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 22; continue; }
200019
+ /* */ $s = 23; continue;
200020
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 22:
200021
+ $r = log.Printf("Screen connect send failed: %v", new sliceType([err])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200022
+ _r$6 = w.closeScreenLocked(); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
199373
200023
  closeErr = _r$6;
199374
- /* */ if (!($interfaceIsEqual(closeErr, $ifaceNil))) { $s = 22; continue; }
199375
- /* */ $s = 23; continue;
199376
- /* if (!($interfaceIsEqual(closeErr, $ifaceNil))) { */ case 22:
199377
- $r = errs.Print("Cannot clean up screen after connection failure", closeErr); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199378
- /* } */ case 23:
200024
+ /* */ if (!($interfaceIsEqual(closeErr, $ifaceNil))) { $s = 26; continue; }
200025
+ /* */ $s = 27; continue;
200026
+ /* if (!($interfaceIsEqual(closeErr, $ifaceNil))) { */ case 26:
200027
+ $r = errs.Print("Cannot clean up screen after connection failure", closeErr); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200028
+ /* } */ case 27:
199379
200029
  $24r$3 = err;
199380
- $s = 25; case 25: return $24r$3;
199381
- /* } */ case 19:
200030
+ $s = 29; case 29: return $24r$3;
200031
+ /* } */ case 23:
199382
200032
  w.pinger = netclient.NewPinger(screenSender);
199383
- $r = w.pinger.Start(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199384
- _r$7 = RegisterVideoStream(screenSender); /* */ $s = 27; case 27: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
200033
+ $r = w.pinger.Start(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200034
+ _r$7 = RegisterVideoStream(screenSender); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
199385
200035
  err = _r$7;
199386
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 28; continue; }
199387
- /* */ $s = 29; continue;
199388
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 28:
199389
- $r = log.Printf("Screen video stream registration failed: %v", new sliceType([err])); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199390
- _r$8 = w.closeScreenLocked(); /* */ $s = 31; case 31: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
200036
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 32; continue; }
200037
+ /* */ $s = 33; continue;
200038
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 32:
200039
+ $r = log.Printf("Screen video stream registration failed: %v", new sliceType([err])); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200040
+ _r$8 = w.closeScreenLocked(); /* */ $s = 35; case 35: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
199391
200041
  closeErr$1 = _r$8;
199392
- /* */ if (!($interfaceIsEqual(closeErr$1, $ifaceNil))) { $s = 32; continue; }
199393
- /* */ $s = 33; continue;
199394
- /* if (!($interfaceIsEqual(closeErr$1, $ifaceNil))) { */ case 32:
199395
- $r = errs.Print("Cannot clean up screen after registration failure", closeErr$1); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199396
- /* } */ case 33:
200042
+ /* */ if (!($interfaceIsEqual(closeErr$1, $ifaceNil))) { $s = 36; continue; }
200043
+ /* */ $s = 37; continue;
200044
+ /* if (!($interfaceIsEqual(closeErr$1, $ifaceNil))) { */ case 36:
200045
+ $r = errs.Print("Cannot clean up screen after registration failure", closeErr$1); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200046
+ /* } */ case 37:
199397
200047
  $24r$4 = err;
199398
- $s = 35; case 35: return $24r$4;
199399
- /* } */ case 29:
199400
- $r = log.Println(new sliceType([new $String("Screen open complete")])); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200048
+ $s = 39; case 39: return $24r$4;
200049
+ /* } */ case 33:
200050
+ $r = log.Println(new sliceType([new $String("Screen open complete")])); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199401
200051
  $24r$5 = $ifaceNil;
199402
- $s = 37; case 37: return $24r$5;
200052
+ $s = 41; case 41: return $24r$5;
199403
200053
  /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ScreenWindow.ptr.prototype.openScreen, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, closeErr, closeErr$1, conn, connect, err, frameCollector, maxPacketSize, msgData, screenSender, w, $s, $deferred};return $f; } }
199404
200054
  };
199405
200055
  ScreenWindow.prototype.openScreen = function() { return this.$val.openScreen(); };
@@ -199426,146 +200076,213 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
199426
200076
  };
199427
200077
  ScreenWindow.prototype.closeScreen = function() { return this.$val.closeScreen(); };
199428
200078
  ScreenWindow.ptr.prototype.closeScreenLocked = function() {
199429
- var {$24r, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, canceler, closeReason, err, err$1, errList, ok, pingerStopped, screenSender, w, waitDuration, $s, $r, $c} = $restore(this, {});
200079
+ var {$24r, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _tuple, canceler, closeReason, err, err$1, errList, ok, pingerStopped, screenSender, sendErrors, senderResult, w, waitDuration, $s, $r, $c} = $restore(this, {});
199430
200080
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
199431
- w = this;
199432
- _r = w.getCloseReason(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
200081
+ screenSender = [screenSender];
200082
+ senderResult = [senderResult];
200083
+ w = [w];
200084
+ w[0] = this;
200085
+ _r = w[0].getCloseReason(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
199433
200086
  closeReason = _r;
199434
200087
  /* */ if (closeReason === "unspecified") { $s = 2; continue; }
199435
200088
  /* */ $s = 3; continue;
199436
200089
  /* if (closeReason === "unspecified") { */ case 2:
199437
- $r = w.closeMu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199438
- _r$1 = w.ensureCloseReasonLocked(2, "closeScreenLocked without explicit reason"); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
200090
+ $r = w[0].closeMu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200091
+ _r$1 = w[0].ensureCloseReasonLocked(2, "closeScreenLocked without explicit reason"); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
199439
200092
  closeReason = _r$1;
199440
- $r = w.closeMu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200093
+ $r = w[0].closeMu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199441
200094
  $r = log.Printf("Screen close lifecycle: synthesized close reason=%s", new sliceType([new $String(closeReason)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199442
200095
  /* } */ case 3:
199443
200096
  pingerStopped = true;
199444
- /* */ if (!(w.collectionLoop === ptrType$5.nil)) { $s = 8; continue; }
200097
+ waitDuration = w[0].timeoutDuration;
200098
+ if ((waitDuration.$high < 0 || (waitDuration.$high === 0 && waitDuration.$low <= 0))) {
200099
+ waitDuration = new time.Duration(0, 1000000000);
200100
+ }
200101
+ /* */ if (!(w[0].surfaceLoop === ptrType$8.nil)) { $s = 8; continue; }
199445
200102
  /* */ $s = 9; continue;
199446
- /* if (!(w.collectionLoop === ptrType$5.nil)) { */ case 8:
199447
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: collection loop stop begin")])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199448
- w.collectionLoop.Stop();
199449
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: collection loop stop complete")])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200103
+ /* if (!(w[0].surfaceLoop === ptrType$8.nil)) { */ case 8:
200104
+ _r$2 = w[0].surfaceLoop.Stop(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
200105
+ err = _r$2;
200106
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
200107
+ /* */ $s = 12; continue;
200108
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
200109
+ $r = errs.Print("Cannot stop external-surface decoder", err); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200110
+ /* } */ case 12:
199450
200111
  /* } */ case 9:
199451
- /* */ if (!(w.decoderLoop === ptrType$6.nil)) { $s = 12; continue; }
199452
- /* */ $s = 13; continue;
199453
- /* if (!(w.decoderLoop === ptrType$6.nil)) { */ case 12:
199454
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: decoder loop stop begin")])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199455
- w.decoderLoop.Stop();
199456
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: decoder loop stop complete")])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199457
- /* } */ case 13:
199458
- /* */ if (!(w.renderingLoop === ptrType$7.nil)) { $s = 16; continue; }
199459
- /* */ $s = 17; continue;
199460
- /* if (!(w.renderingLoop === ptrType$7.nil)) { */ case 16:
199461
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: rendering loop stop begin")])); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199462
- w.renderingLoop.Stop();
199463
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: rendering loop stop complete")])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199464
- /* } */ case 17:
199465
- _tuple = $assertType(w.window, interfaceType, true);
200112
+ /* */ if (!(w[0].collectionLoop === ptrType$5.nil)) { $s = 14; continue; }
200113
+ /* */ $s = 15; continue;
200114
+ /* if (!(w[0].collectionLoop === ptrType$5.nil)) { */ case 14:
200115
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: collection loop stop begin")])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200116
+ w[0].collectionLoop.Stop();
200117
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: collection loop stop complete")])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200118
+ /* } */ case 15:
200119
+ /* */ if (!(w[0].decoderLoop === ptrType$6.nil)) { $s = 18; continue; }
200120
+ /* */ $s = 19; continue;
200121
+ /* if (!(w[0].decoderLoop === ptrType$6.nil)) { */ case 18:
200122
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: decoder loop stop begin")])); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200123
+ w[0].decoderLoop.Stop();
200124
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: decoder loop stop complete")])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200125
+ /* } */ case 19:
200126
+ /* */ if (!(w[0].renderingLoop === ptrType$7.nil)) { $s = 22; continue; }
200127
+ /* */ $s = 23; continue;
200128
+ /* if (!(w[0].renderingLoop === ptrType$7.nil)) { */ case 22:
200129
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: rendering loop stop begin")])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200130
+ w[0].renderingLoop.Stop();
200131
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: rendering loop stop complete")])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200132
+ /* } */ case 23:
200133
+ _tuple = $assertType(w[0].window, interfaceType, true);
199466
200134
  canceler = _tuple[0];
199467
200135
  ok = _tuple[1];
199468
- /* */ if (ok) { $s = 20; continue; }
199469
- /* */ $s = 21; continue;
199470
- /* if (ok) { */ case 20:
199471
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: pending window uploads cancel begin")])); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199472
- $r = canceler.CancelPendingUploads(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199473
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: pending window uploads cancel complete")])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199474
- /* } */ case 21:
199475
- /* */ if (!(w.pinger === ptrType$13.nil)) { $s = 25; continue; }
199476
- /* */ $s = 26; continue;
199477
- /* if (!(w.pinger === ptrType$13.nil)) { */ case 25:
199478
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: pinger close begin")])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199479
- $r = w.pinger.Close(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199480
- waitDuration = w.timeoutDuration;
199481
- if ((waitDuration.$high < 0 || (waitDuration.$high === 0 && waitDuration.$low <= 0))) {
199482
- waitDuration = new time.Duration(0, 1000000000);
199483
- }
199484
- _r$2 = w.pinger.Wait(waitDuration); /* */ $s = 29; case 29: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
199485
- pingerStopped = _r$2;
199486
- /* */ if (!pingerStopped) { $s = 30; continue; }
199487
- /* */ $s = 31; continue;
199488
- /* if (!pingerStopped) { */ case 30:
199489
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: pinger wait timed out; forcing transport close")])); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199490
- /* } */ case 31:
199491
- w.pinger = ptrType$13.nil;
199492
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: pinger close complete")])); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199493
- /* } */ case 26:
199494
- errList = new sliceType$3([]);
199495
- /* */ if (!($interfaceIsEqual(w.screenConn, $ifaceNil))) { $s = 34; continue; }
199496
- /* */ $s = 35; continue;
199497
- /* if (!($interfaceIsEqual(w.screenConn, $ifaceNil))) { */ case 34:
199498
- /* */ if (pingerStopped) { $s = 36; continue; }
200136
+ /* */ if (ok) { $s = 26; continue; }
200137
+ /* */ $s = 27; continue;
200138
+ /* if (ok) { */ case 26:
200139
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: pending window uploads cancel begin")])); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200140
+ $r = canceler.CancelPendingUploads(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200141
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: pending window uploads cancel complete")])); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200142
+ /* } */ case 27:
200143
+ /* */ if (!(w[0].pinger === ptrType$14.nil)) { $s = 31; continue; }
200144
+ /* */ $s = 32; continue;
200145
+ /* if (!(w[0].pinger === ptrType$14.nil)) { */ case 31:
200146
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: pinger close begin")])); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200147
+ $r = w[0].pinger.Close(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200148
+ _r$3 = w[0].pinger.Wait(waitDuration); /* */ $s = 35; case 35: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
200149
+ pingerStopped = _r$3;
200150
+ /* */ if (!pingerStopped) { $s = 36; continue; }
199499
200151
  /* */ $s = 37; continue;
199500
- /* if (pingerStopped) { */ case 36:
199501
- screenSender = w.createScreenSender();
199502
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: video stream unregister begin")])); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199503
- _r$3 = UnregisterVideoStream(screenSender); /* */ $s = 39; case 39: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
199504
- err = _r$3;
199505
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 40; continue; }
199506
- /* */ $s = 41; continue;
199507
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 40:
199508
- _r$4 = errs.Errorf("Could not unregister video stream: %s", new sliceType([err])); /* */ $s = 42; case 42: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
199509
- errList = $append(errList, _r$4);
199510
- /* } */ case 41:
199511
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: video stream unregister complete")])); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199512
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: disconnect send begin")])); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199513
- _r$5 = w.getCloseReason(); /* */ $s = 45; case 45: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
199514
- _r$6 = encodeDisconnectReason(_r$5); /* */ $s = 46; case 46: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
199515
- _arg = _r$6;
199516
- _r$7 = screenSender.Send(3, _arg); /* */ $s = 47; case 47: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
199517
- err = _r$7;
199518
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 48; continue; }
199519
- /* */ $s = 49; continue;
199520
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 48:
199521
- _r$8 = errs.Errorf("Could not send disconnect msg to screen: %s", new sliceType([err])); /* */ $s = 50; case 50: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
199522
- errList = $append(errList, _r$8);
199523
- /* } */ case 49:
199524
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: disconnect send complete")])); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200152
+ /* if (!pingerStopped) { */ case 36:
200153
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: pinger wait timed out; forcing transport close")])); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199525
200154
  /* } */ case 37:
199526
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: screen connection close begin")])); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199527
- _r$9 = w.screenConn.Close(); /* */ $s = 53; case 53: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
199528
- err$1 = _r$9;
199529
- /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 54; continue; }
199530
- /* */ $s = 55; continue;
199531
- /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 54:
199532
- _r$10 = errs.Errorf("Could not close screen connection: %s", new sliceType([err$1])); /* */ $s = 56; case 56: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
200155
+ w[0].pinger = ptrType$14.nil;
200156
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: pinger close complete")])); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200157
+ /* } */ case 32:
200158
+ errList = new sliceType$3([]);
200159
+ /* */ if (!($interfaceIsEqual(w[0].screenConn, $ifaceNil))) { $s = 40; continue; }
200160
+ /* */ $s = 41; continue;
200161
+ /* if (!($interfaceIsEqual(w[0].screenConn, $ifaceNil))) { */ case 40:
200162
+ /* */ if (pingerStopped) { $s = 42; continue; }
200163
+ /* */ $s = 43; continue;
200164
+ /* if (pingerStopped) { */ case 42:
200165
+ screenSender[0] = w[0].createScreenSender();
200166
+ senderResult[0] = new $Chan(sliceType$3, 1);
200167
+ $go((function(screenSender, senderResult, w) { return function $b() {
200168
+ var {_arg, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, err$1, err$2, sendErrors, $s, $r, $c} = $restore(this, {});
200169
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
200170
+ sendErrors = new sliceType$3([]);
200171
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: video stream unregister begin")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200172
+ _r$4 = UnregisterVideoStream(screenSender[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
200173
+ err$1 = _r$4;
200174
+ /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
200175
+ /* */ $s = 4; continue;
200176
+ /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3:
200177
+ _r$5 = errs.Errorf("Could not unregister video stream: %s", new sliceType([err$1])); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
200178
+ sendErrors = $append(sendErrors, _r$5);
200179
+ /* } */ case 4:
200180
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: video stream unregister complete")])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200181
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: disconnect send begin")])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200182
+ _r$6 = w[0].getCloseReason(); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
200183
+ _r$7 = encodeDisconnectReason(_r$6); /* */ $s = 9; case 9: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
200184
+ _arg = _r$7;
200185
+ _r$8 = screenSender[0].Send(3, _arg); /* */ $s = 10; case 10: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
200186
+ err$2 = _r$8;
200187
+ /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 11; continue; }
200188
+ /* */ $s = 12; continue;
200189
+ /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 11:
200190
+ _r$9 = errs.Errorf("Could not send disconnect msg to screen: %s", new sliceType([err$2])); /* */ $s = 13; case 13: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
200191
+ sendErrors = $append(sendErrors, _r$9);
200192
+ /* } */ case 12:
200193
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: disconnect send complete")])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200194
+ $r = $send(senderResult[0], sendErrors); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200195
+ $s = -1; return;
200196
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, err$1, err$2, sendErrors, $s};return $f;
200197
+ }; })(screenSender, senderResult, w), []);
200198
+ _r$4 = time.After(waitDuration); /* */ $s = 44; case 44: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
200199
+ _r$5 = $select([[senderResult[0]], [_r$4]]); /* */ $s = 45; case 45: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
200200
+ _selection = _r$5;
200201
+ /* */ if (_selection[0] === 0) { $s = 46; continue; }
200202
+ /* */ if (_selection[0] === 1) { $s = 47; continue; }
200203
+ /* */ $s = 48; continue;
200204
+ /* if (_selection[0] === 0) { */ case 46:
200205
+ sendErrors = _selection[1][0];
200206
+ errList = $appendSlice(errList, sendErrors);
200207
+ $s = 48; continue;
200208
+ /* } else if (_selection[0] === 1) { */ case 47:
200209
+ _r$6 = errs.Errorf("Timed out unregistering and disconnecting screen", sliceType.nil); /* */ $s = 49; case 49: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
200210
+ errList = $append(errList, _r$6);
200211
+ /* } */ case 48:
200212
+ /* } */ case 43:
200213
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: screen connection close begin")])); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200214
+ _r$7 = w[0].screenConn.Close(); /* */ $s = 51; case 51: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
200215
+ err$1 = _r$7;
200216
+ /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 52; continue; }
200217
+ /* */ $s = 53; continue;
200218
+ /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 52:
200219
+ _r$8 = errs.Errorf("Could not close screen connection: %s", new sliceType([err$1])); /* */ $s = 54; case 54: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
200220
+ errList = $append(errList, _r$8);
200221
+ /* } */ case 53:
200222
+ w[0].screenConn = $ifaceNil;
200223
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: screen connection close complete")])); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200224
+ /* } */ case 41:
200225
+ /* */ if (!(w[0].surfaceLoop === ptrType$8.nil)) { $s = 56; continue; }
200226
+ /* */ $s = 57; continue;
200227
+ /* if (!(w[0].surfaceLoop === ptrType$8.nil)) { */ case 56:
200228
+ _r$9 = w[0].surfaceLoop.Wait(waitDuration); /* */ $s = 60; case 60: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
200229
+ /* */ if (!_r$9) { $s = 58; continue; }
200230
+ /* */ $s = 59; continue;
200231
+ /* if (!_r$9) { */ case 58:
200232
+ _r$10 = errs.Errorf("External-surface loop shutdown timed out", sliceType.nil); /* */ $s = 61; case 61: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
199533
200233
  errList = $append(errList, _r$10);
199534
- /* } */ case 55:
199535
- w.screenConn = $ifaceNil;
199536
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: screen connection close complete")])); /* */ $s = 57; case 57: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199537
- /* } */ case 35:
199538
- /* */ if (!(w.collectionLoop === ptrType$5.nil)) { $s = 58; continue; }
199539
- /* */ $s = 59; continue;
199540
- /* if (!(w.collectionLoop === ptrType$5.nil)) { */ case 58:
199541
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: collection loop wait begin")])); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199542
- $r = w.collectionLoop.Wait(); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199543
- w.collectionLoop = ptrType$5.nil;
199544
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: collection loop wait complete")])); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199545
- /* } */ case 59:
199546
- /* */ if (!(w.decoderLoop === ptrType$6.nil)) { $s = 63; continue; }
199547
- /* */ $s = 64; continue;
199548
- /* if (!(w.decoderLoop === ptrType$6.nil)) { */ case 63:
199549
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: decoder loop wait begin")])); /* */ $s = 65; case 65: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199550
- $r = w.decoderLoop.Wait(); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199551
- w.decoderLoop = ptrType$6.nil;
199552
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: decoder loop wait complete")])); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199553
- /* } */ case 64:
199554
- /* */ if (!(w.renderingLoop === ptrType$7.nil)) { $s = 68; continue; }
199555
- /* */ $s = 69; continue;
199556
- /* if (!(w.renderingLoop === ptrType$7.nil)) { */ case 68:
199557
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: rendering loop wait begin")])); /* */ $s = 70; case 70: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199558
- $r = w.renderingLoop.Wait(); /* */ $s = 71; case 71: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199559
- w.renderingLoop = ptrType$7.nil;
199560
- $r = log.Println(new sliceType([new $String("Screen close lifecycle: rendering loop wait complete")])); /* */ $s = 72; case 72: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199561
- /* } */ case 69:
200234
+ /* } */ case 59:
200235
+ w[0].surfaceLoop = ptrType$8.nil;
200236
+ /* } */ case 57:
200237
+ /* */ if (!(w[0].collectionLoop === ptrType$5.nil)) { $s = 62; continue; }
200238
+ /* */ $s = 63; continue;
200239
+ /* if (!(w[0].collectionLoop === ptrType$5.nil)) { */ case 62:
200240
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: collection loop wait begin")])); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200241
+ _r$11 = w[0].collectionLoop.WaitFor(waitDuration); /* */ $s = 67; case 67: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
200242
+ /* */ if (!_r$11) { $s = 65; continue; }
200243
+ /* */ $s = 66; continue;
200244
+ /* if (!_r$11) { */ case 65:
200245
+ _r$12 = errs.Errorf("Collection loop shutdown timed out", sliceType.nil); /* */ $s = 68; case 68: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
200246
+ errList = $append(errList, _r$12);
200247
+ /* } */ case 66:
200248
+ w[0].collectionLoop = ptrType$5.nil;
200249
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: collection loop wait complete")])); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200250
+ /* } */ case 63:
200251
+ /* */ if (!(w[0].decoderLoop === ptrType$6.nil)) { $s = 70; continue; }
200252
+ /* */ $s = 71; continue;
200253
+ /* if (!(w[0].decoderLoop === ptrType$6.nil)) { */ case 70:
200254
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: decoder loop wait begin")])); /* */ $s = 72; case 72: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200255
+ _r$13 = w[0].decoderLoop.WaitFor(waitDuration); /* */ $s = 75; case 75: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
200256
+ /* */ if (!_r$13) { $s = 73; continue; }
200257
+ /* */ $s = 74; continue;
200258
+ /* if (!_r$13) { */ case 73:
200259
+ _r$14 = errs.Errorf("Decoder loop shutdown timed out", sliceType.nil); /* */ $s = 76; case 76: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
200260
+ errList = $append(errList, _r$14);
200261
+ /* } */ case 74:
200262
+ w[0].decoderLoop = ptrType$6.nil;
200263
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: decoder loop wait complete")])); /* */ $s = 77; case 77: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200264
+ /* } */ case 71:
200265
+ /* */ if (!(w[0].renderingLoop === ptrType$7.nil)) { $s = 78; continue; }
200266
+ /* */ $s = 79; continue;
200267
+ /* if (!(w[0].renderingLoop === ptrType$7.nil)) { */ case 78:
200268
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: rendering loop wait begin")])); /* */ $s = 80; case 80: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200269
+ _r$15 = w[0].renderingLoop.WaitFor(waitDuration); /* */ $s = 83; case 83: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
200270
+ /* */ if (!_r$15) { $s = 81; continue; }
200271
+ /* */ $s = 82; continue;
200272
+ /* if (!_r$15) { */ case 81:
200273
+ _r$16 = errs.Errorf("Rendering loop shutdown timed out", sliceType.nil); /* */ $s = 84; case 84: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
200274
+ errList = $append(errList, _r$16);
200275
+ /* } */ case 82:
200276
+ w[0].renderingLoop = ptrType$7.nil;
200277
+ $r = log.Println(new sliceType([new $String("Screen close lifecycle: rendering loop wait complete")])); /* */ $s = 85; case 85: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200278
+ /* } */ case 79:
199562
200279
  if (errList.$length === 0) {
199563
200280
  $s = -1; return $ifaceNil;
199564
200281
  }
199565
- _r$11 = errs.CombineErrors(errList); /* */ $s = 73; case 73: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
199566
- $24r = _r$11;
199567
- $s = 74; case 74: return $24r;
199568
- /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.closeScreenLocked, $c: true, $r, $24r, _arg, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, canceler, closeReason, err, err$1, errList, ok, pingerStopped, screenSender, w, waitDuration, $s};return $f;
200282
+ _r$17 = errs.CombineErrors(errList); /* */ $s = 86; case 86: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
200283
+ $24r = _r$17;
200284
+ $s = 87; case 87: return $24r;
200285
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.closeScreenLocked, $c: true, $r, $24r, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _tuple, canceler, closeReason, err, err$1, errList, ok, pingerStopped, screenSender, sendErrors, senderResult, w, waitDuration, $s};return $f;
199569
200286
  };
199570
200287
  ScreenWindow.prototype.closeScreenLocked = function() { return this.$val.closeScreenLocked(); };
199571
200288
  ScreenWindow.ptr.prototype.createScreenBuffer = function() {
@@ -199589,17 +200306,17 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
199589
200306
  /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.createScreenBuffer, $c: true, $r, _r, _tuple, _tuple$1, err, localScreenSize, screenBuffer, w, $s};return $f;
199590
200307
  };
199591
200308
  ScreenWindow.prototype.createScreenBuffer = function() { return this.$val.createScreenBuffer(); };
199592
- MainDriver = function(f) {
199593
- var {_r, f, $s, $r, $c} = $restore(this, {f});
200309
+ MainDriver = function(screenDriver, f) {
200310
+ var {_r, f, screenDriver, $s, $r, $c} = $restore(this, {screenDriver, f});
199594
200311
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
199595
- /* */ if (brightsigndecoder.IsAvailable()) { $s = 1; continue; }
200312
+ /* */ if (screenDriver === "brightsign_tcp") { $s = 1; continue; }
199596
200313
  _r = videostream.Get().IsAvailable(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
199597
200314
  /* */ if (_r) { $s = 2; continue; }
199598
200315
  /* */ if (nacldecoder.IsAvailable()) { $s = 3; continue; }
199599
200316
  /* */ if (samsungwasmdecoder.IsAvailable()) { $s = 4; continue; }
199600
200317
  /* */ if (webcodecs.IsAvailable()) { $s = 5; continue; }
199601
200318
  /* */ $s = 6; continue;
199602
- /* if (brightsigndecoder.IsAvailable()) { */ case 1:
200319
+ /* if (screenDriver === "brightsign_tcp") { */ case 1:
199603
200320
  $r = overlaydriver.Main(f); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199604
200321
  $s = 7; continue;
199605
200322
  /* } else if (_r) { */ case 2:
@@ -199618,7 +200335,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
199618
200335
  $r = webgldriver.Main(f); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199619
200336
  /* } */ case 7:
199620
200337
  $s = -1; return;
199621
- /* */ } return; } var $f = {$blk: MainDriver, $c: true, $r, _r, f, $s};return $f;
200338
+ /* */ } return; } var $f = {$blk: MainDriver, $c: true, $r, _r, f, screenDriver, $s};return $f;
199622
200339
  };
199623
200340
  $pkg.MainDriver = MainDriver;
199624
200341
  NewProcessInfoManager = function(username, processDir) {
@@ -199962,14 +200679,14 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
199962
200679
  };
199963
200680
  geometryValue = function(g) {
199964
200681
  var g;
199965
- if (g === ptrType$14.nil) {
200682
+ if (g === ptrType$15.nil) {
199966
200683
  return $ifaceNil;
199967
200684
  }
199968
200685
  return new mapType($makeMap($String.keyFor, [{ k: "x", v: new $Int(g.X) }, { k: "y", v: new $Int(g.Y) }, { k: "width", v: new $Int(g.Width) }, { k: "height", v: new $Int(g.Height) }]));
199969
200686
  };
199970
- ptrType$15.methods = [{prop: "Geometry", name: "Geometry", pkg: "", typ: $funcType([], [ptrType$14], false)}, {prop: "setCloseReason", name: "setCloseReason", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$String], [], false)}, {prop: "getCloseReason", name: "getCloseReason", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$String], false)}, {prop: "ensureCloseReasonLocked", name: "ensureCloseReasonLocked", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$Int, $String], [$String], false)}, {prop: "SetEncodingPreferences", name: "SetEncodingPreferences", pkg: "", typ: $funcType([stats.EncodingPreferences], [], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "startWindow", name: "startWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "newWindowOptions", name: "newWindowOptions", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [screen.NewWindowOptions], false)}, {prop: "startClipboard", name: "startClipboard", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "isClosed", name: "isClosed", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$Bool], false)}, {prop: "retriableOpen", name: "retriableOpen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$Int, funcType$1], [$error], false)}, {prop: "openMetadata", name: "openMetadata", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "createMetadataSender", name: "createMetadataSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [message.Sender], false)}, {prop: "createScreenSender", name: "createScreenSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [message.Sender], false)}, {prop: "getEventMultiplier", name: "getEventMultiplier", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [geom.Point], false)}, {prop: "startTimestampSyncing", name: "startTimestampSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "startStatsSyncing", name: "startStatsSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "sendStats", name: "sendStats", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "getFrameHealthCheckTimeout", name: "getFrameHealthCheckTimeout", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [time.Duration], false)}, {prop: "startScreenHealthChecking", name: "startScreenHealthChecking", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "openScreen", name: "openScreen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "closeScreen", name: "closeScreen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "closeScreenLocked", name: "closeScreenLocked", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "createScreenBuffer", name: "createScreenBuffer", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [screen.Buffer, $error], false)}];
200687
+ ptrType$16.methods = [{prop: "Geometry", name: "Geometry", pkg: "", typ: $funcType([], [ptrType$15], false)}, {prop: "setCloseReason", name: "setCloseReason", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$String], [], false)}, {prop: "getCloseReason", name: "getCloseReason", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$String], false)}, {prop: "ensureCloseReasonLocked", name: "ensureCloseReasonLocked", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$Int, $String], [$String], false)}, {prop: "SetEncodingPreferences", name: "SetEncodingPreferences", pkg: "", typ: $funcType([stats.EncodingPreferences], [], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "startWindow", name: "startWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "newWindowOptions", name: "newWindowOptions", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [screen.NewWindowOptions], false)}, {prop: "startClipboard", name: "startClipboard", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "isClosed", name: "isClosed", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$Bool], false)}, {prop: "retriableOpen", name: "retriableOpen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$Int, funcType$1], [$error], false)}, {prop: "openMetadata", name: "openMetadata", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "createMetadataSender", name: "createMetadataSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [message.Sender], false)}, {prop: "createScreenSender", name: "createScreenSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [message.Sender], false)}, {prop: "getEventMultiplier", name: "getEventMultiplier", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [geom.Point], false)}, {prop: "startTimestampSyncing", name: "startTimestampSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "startStatsSyncing", name: "startStatsSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "sendStats", name: "sendStats", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "getFrameHealthCheckTimeout", name: "getFrameHealthCheckTimeout", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [time.Duration], false)}, {prop: "startScreenHealthChecking", name: "startScreenHealthChecking", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "openScreen", name: "openScreen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "closeScreen", name: "closeScreen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "closeScreenLocked", name: "closeScreenLocked", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "createScreenBuffer", name: "createScreenBuffer", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [screen.Buffer, $error], false)}];
199971
200688
  ptrType.methods = [{prop: "CreateProcessInfo", name: "CreateProcessInfo", pkg: "", typ: $funcType([$String, $Int], [$error], false)}, {prop: "RemoveProcessInfo", name: "RemoveProcessInfo", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "RemoveProcessInfoByPid", name: "RemoveProcessInfoByPid", pkg: "", typ: $funcType([$String, $Int], [$error], false)}, {prop: "WaitProcess", name: "WaitProcess", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "WaitProcessStopped", name: "WaitProcessStopped", pkg: "", typ: $funcType([$String, time.Duration], [$error], false)}, {prop: "GetProcessInfo", name: "GetProcessInfo", pkg: "", typ: $funcType([$String], [ProcessInfo, $error], false)}, {prop: "ListScreenIDs", name: "ListScreenIDs", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}, {prop: "getUserProcessDirPath", name: "getUserProcessDirPath", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$String], false)}];
199972
- ScreenWindow.init("github.com/supraio/client-daemon/pkg/render", [{prop: "processInfoManager", name: "processInfoManager", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "screenDriver", name: "screenDriver", embedded: false, exported: false, typ: netpacket.Driver, tag: ""}, {prop: "screenHost", name: "screenHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "metadataDriver", name: "metadataDriver", embedded: false, exported: false, typ: netstream.Driver, tag: ""}, {prop: "metadataHost", name: "metadataHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientID", name: "clientID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientSecret", name: "clientSecret", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "screenID", name: "screenID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "secure", name: "secure", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "forceScreenSize", name: "forceScreenSize", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "timeoutDuration", name: "timeoutDuration", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "closeDone", name: "closeDone", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "closeMu", name: "closeMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "screenMu", name: "screenMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "screen", name: "screen", embedded: false, exported: false, typ: screen.Screen, tag: ""}, {prop: "screenConn", name: "screenConn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "metadataServer", name: "metadataServer", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "responsiveSender", name: "responsiveSender", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "collectionLoop", name: "collectionLoop", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "decoderLoop", name: "decoderLoop", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "renderingLoop", name: "renderingLoop", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "sizeHandler", name: "sizeHandler", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "touchHandler", name: "touchHandler", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "keyHandler", name: "keyHandler", embedded: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "mouseHandler", name: "mouseHandler", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "eventMetrics", name: "eventMetrics", embedded: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "pinger", name: "pinger", embedded: false, exported: false, typ: ptrType$13, tag: ""}, {prop: "keyEventChan", name: "keyEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "sizeEventChan", name: "sizeEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$4, tag: ""}, {prop: "touchEventChan", name: "touchEventChan", embedded: false, exported: false, typ: chanType$5, tag: ""}, {prop: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$6, tag: ""}, {prop: "eventLoopStop", name: "eventLoopStop", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "eventLoopDone", name: "eventLoopDone", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "windowSize", name: "windowSize", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "geometry", name: "geometry", embedded: false, exported: false, typ: ptrType$14, tag: ""}, {prop: "closeReason", name: "closeReason", embedded: false, exported: false, typ: $String, tag: ""}]);
200689
+ ScreenWindow.init("github.com/supraio/client-daemon/pkg/render", [{prop: "processInfoManager", name: "processInfoManager", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "screenDriver", name: "screenDriver", embedded: false, exported: false, typ: netpacket.Driver, tag: ""}, {prop: "screenHost", name: "screenHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "metadataDriver", name: "metadataDriver", embedded: false, exported: false, typ: netstream.Driver, tag: ""}, {prop: "metadataHost", name: "metadataHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientID", name: "clientID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientSecret", name: "clientSecret", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "screenID", name: "screenID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "secure", name: "secure", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "forceScreenSize", name: "forceScreenSize", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "timeoutDuration", name: "timeoutDuration", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "closeDone", name: "closeDone", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "closeMu", name: "closeMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "screenMu", name: "screenMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "screen", name: "screen", embedded: false, exported: false, typ: screen.Screen, tag: ""}, {prop: "screenConn", name: "screenConn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "metadataServer", name: "metadataServer", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "responsiveSender", name: "responsiveSender", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "collectionLoop", name: "collectionLoop", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "decoderLoop", name: "decoderLoop", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "renderingLoop", name: "renderingLoop", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "surfaceLoop", name: "surfaceLoop", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "sizeHandler", name: "sizeHandler", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "touchHandler", name: "touchHandler", embedded: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "keyHandler", name: "keyHandler", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "mouseHandler", name: "mouseHandler", embedded: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "eventMetrics", name: "eventMetrics", embedded: false, exported: false, typ: ptrType$13, tag: ""}, {prop: "pinger", name: "pinger", embedded: false, exported: false, typ: ptrType$14, tag: ""}, {prop: "keyEventChan", name: "keyEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "sizeEventChan", name: "sizeEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$4, tag: ""}, {prop: "touchEventChan", name: "touchEventChan", embedded: false, exported: false, typ: chanType$5, tag: ""}, {prop: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$6, tag: ""}, {prop: "eventLoopStop", name: "eventLoopStop", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "eventLoopDone", name: "eventLoopDone", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "windowSize", name: "windowSize", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "geometry", name: "geometry", embedded: false, exported: false, typ: ptrType$15, tag: ""}, {prop: "closeReason", name: "closeReason", embedded: false, exported: false, typ: $String, tag: ""}]);
199973
200690
  Geometry.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: $Int, tag: "json:\"x\""}, {prop: "Y", name: "Y", embedded: false, exported: true, typ: $Int, tag: "json:\"y\""}, {prop: "Width", name: "Width", embedded: false, exported: true, typ: $Int, tag: "json:\"width\""}, {prop: "Height", name: "Height", embedded: false, exported: true, typ: $Int, tag: "json:\"height\""}]);
199974
200691
  screenWindowDetachEvent.init("", []);
199975
200692
  nonBlockingWindowEventSender.init([{prop: "SendNonBlocking", name: "SendNonBlocking", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}]);
@@ -199984,48 +200701,47 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
199984
200701
  $r = query.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199985
200702
  $r = clientscreen.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199986
200703
  $r = clipboard.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199987
- $r = brightsigndecoder.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199988
- $r = nacldecoder.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199989
- $r = nacldriver.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199990
- $r = samsungwasmdecoder.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199991
- $r = webcodecs.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199992
- $r = errs.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199993
- $r = helper.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199994
- $r = input.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199995
- $r = message.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199996
- $r = netclient.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199997
- $r = netpacket.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199998
- $r = netstream.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199999
- $r = netframe.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200000
- $r = jswebsocketworker.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200001
- $r = player.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200002
- $r = overlaydriver.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200003
- $r = stats.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200004
- $r = videostream.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200005
- $r = window.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200006
- $r = canvasdriver.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200007
- $r = webgldriver.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200008
- $r = screen.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200009
- $r = focus.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200010
- $r = key.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200011
- $r = lifecycle.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200012
- $r = mouse.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200013
- $r = size.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200014
- $r = touch.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200015
- $r = geom.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200016
- $r = image.$init(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200017
- $r = io.$init(); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200018
- $r = ioutil.$init(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200019
- $r = log.$init(); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200020
- $r = os.$init(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200021
- $r = path.$init(); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200022
- $r = filepath.$init(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200023
- $r = runtime.$init(); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200024
- $r = strconv.$init(); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200025
- $r = strings.$init(); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200026
- $r = sync.$init(); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200027
- $r = js.$init(); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200028
- $r = time.$init(); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200704
+ $r = nacldecoder.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200705
+ $r = nacldriver.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200706
+ $r = samsungwasmdecoder.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200707
+ $r = webcodecs.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200708
+ $r = errs.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200709
+ $r = helper.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200710
+ $r = input.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200711
+ $r = message.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200712
+ $r = netclient.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200713
+ $r = netpacket.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200714
+ $r = netstream.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200715
+ $r = netframe.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200716
+ $r = jswebsocketworker.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200717
+ $r = player.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200718
+ $r = overlaydriver.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200719
+ $r = stats.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200720
+ $r = videostream.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200721
+ $r = window.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200722
+ $r = canvasdriver.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200723
+ $r = webgldriver.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200724
+ $r = screen.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200725
+ $r = focus.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200726
+ $r = key.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200727
+ $r = lifecycle.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200728
+ $r = mouse.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200729
+ $r = size.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200730
+ $r = touch.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200731
+ $r = geom.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200732
+ $r = image.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200733
+ $r = io.$init(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200734
+ $r = ioutil.$init(); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200735
+ $r = log.$init(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200736
+ $r = os.$init(); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200737
+ $r = path.$init(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200738
+ $r = filepath.$init(); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200739
+ $r = runtime.$init(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200740
+ $r = strconv.$init(); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200741
+ $r = strings.$init(); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200742
+ $r = sync.$init(); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200743
+ $r = js.$init(); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200744
+ $r = time.$init(); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
200029
200745
  onScreenWindowStarted = $throwNilPointerError;
200030
200746
  init();
200031
200747
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;