@supraio/client-daemon-js 0.0.1 → 1.0.0-mzscreengeometry.447

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.
@@ -5619,7 +5619,7 @@ $packages["internal/race"] = (function() {
5619
5619
  return $pkg;
5620
5620
  })();
5621
5621
  $packages["sync/atomic"] = (function() {
5622
- var $pkg = {}, $init, js, Value, ptrType$5, CompareAndSwapInt32, CompareAndSwapUint32, CompareAndSwapUint64, CompareAndSwapPointer, AddInt32, LoadInt32, LoadUint32, LoadUint64, LoadPointer, StoreInt32, StoreUint32, StoreUint64, StorePointer, sameType;
5622
+ var $pkg = {}, $init, js, Value, Bool, noCopy, ptrType, ptrType$5, ptrType$6, ptrType$12, b32, SwapUint32, CompareAndSwapInt32, CompareAndSwapUint32, CompareAndSwapUint64, CompareAndSwapPointer, AddInt32, LoadInt32, LoadUint32, LoadUint64, LoadPointer, StoreInt32, StoreUint32, StoreUint64, StorePointer, sameType;
5623
5623
  js = $packages["github.com/gopherjs/gopherjs/js"];
5624
5624
  Value = $pkg.Value = $newType(0, $kindStruct, "atomic.Value", true, "sync/atomic", true, function(v_) {
5625
5625
  this.$val = this;
@@ -5629,7 +5629,74 @@ $packages["sync/atomic"] = (function() {
5629
5629
  }
5630
5630
  this.v = v_;
5631
5631
  });
5632
+ Bool = $pkg.Bool = $newType(0, $kindStruct, "atomic.Bool", true, "sync/atomic", true, function(_$0_, v_) {
5633
+ this.$val = this;
5634
+ if (arguments.length === 0) {
5635
+ this._$0 = new noCopy.ptr();
5636
+ this.v = 0;
5637
+ return;
5638
+ }
5639
+ this._$0 = _$0_;
5640
+ this.v = v_;
5641
+ });
5642
+ noCopy = $pkg.noCopy = $newType(0, $kindStruct, "atomic.noCopy", true, "sync/atomic", false, function() {
5643
+ this.$val = this;
5644
+ if (arguments.length === 0) {
5645
+ return;
5646
+ }
5647
+ });
5648
+ ptrType = $ptrType($Uint32);
5632
5649
  ptrType$5 = $ptrType(Value);
5650
+ ptrType$6 = $ptrType(Bool);
5651
+ ptrType$12 = $ptrType(noCopy);
5652
+ Bool.ptr.prototype.Load = function() {
5653
+ var x;
5654
+ x = this;
5655
+ return !((LoadUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x)))) === 0));
5656
+ };
5657
+ Bool.prototype.Load = function() { return this.$val.Load(); };
5658
+ Bool.ptr.prototype.Store = function(val) {
5659
+ var val, x;
5660
+ x = this;
5661
+ StoreUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(val));
5662
+ };
5663
+ Bool.prototype.Store = function(val) { return this.$val.Store(val); };
5664
+ Bool.ptr.prototype.Swap = function(new$1) {
5665
+ var new$1, old, x;
5666
+ old = false;
5667
+ x = this;
5668
+ old = !((SwapUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(new$1)) === 0));
5669
+ return old;
5670
+ };
5671
+ Bool.prototype.Swap = function(new$1) { return this.$val.Swap(new$1); };
5672
+ Bool.ptr.prototype.CompareAndSwap = function(old, new$1) {
5673
+ var new$1, old, swapped, x;
5674
+ swapped = false;
5675
+ x = this;
5676
+ swapped = CompareAndSwapUint32((x.$ptr_v || (x.$ptr_v = new ptrType(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(old), b32(new$1));
5677
+ return swapped;
5678
+ };
5679
+ Bool.prototype.CompareAndSwap = function(old, new$1) { return this.$val.CompareAndSwap(old, new$1); };
5680
+ b32 = function(b) {
5681
+ var b;
5682
+ if (b) {
5683
+ return 1;
5684
+ }
5685
+ return 0;
5686
+ };
5687
+ noCopy.ptr.prototype.Lock = function() {
5688
+ };
5689
+ noCopy.prototype.Lock = function() { return this.$val.Lock(); };
5690
+ noCopy.ptr.prototype.Unlock = function() {
5691
+ };
5692
+ noCopy.prototype.Unlock = function() { return this.$val.Unlock(); };
5693
+ SwapUint32 = function(addr, new$1) {
5694
+ var addr, new$1, old;
5695
+ old = addr.$get();
5696
+ addr.$set(new$1);
5697
+ return old;
5698
+ };
5699
+ $pkg.SwapUint32 = SwapUint32;
5633
5700
  CompareAndSwapInt32 = function(addr, old, new$1) {
5634
5701
  var addr, new$1, old;
5635
5702
  if (addr.$get() === old) {
@@ -5774,7 +5841,11 @@ $packages["sync/atomic"] = (function() {
5774
5841
  return x.constructor === y.constructor;
5775
5842
  };
5776
5843
  ptrType$5.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [$Bool], false)}, {prop: "checkNew", name: "checkNew", pkg: "sync/atomic", typ: $funcType([$String, $emptyInterface], [], false)}];
5844
+ ptrType$6.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Bool], [$Bool], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$Bool, $Bool], [$Bool], false)}];
5845
+ ptrType$12.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
5777
5846
  Value.init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: $emptyInterface, tag: ""}]);
5847
+ Bool.init("sync/atomic", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "v", name: "v", embedded: false, exported: false, typ: $Uint32, tag: ""}]);
5848
+ noCopy.init("", []);
5778
5849
  $init = function() {
5779
5850
  $pkg.$init = function() {};
5780
5851
  /* */ 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:
@@ -180043,7 +180114,7 @@ $packages["github.com/supraio/client-daemon/pkg/netsamsungwasmtcp"] = (function(
180043
180114
  return $pkg;
180044
180115
  })();
180045
180116
  $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180046
- var $pkg = {}, $init, context, websocket, errs, jshelper, netnacltcp, netsamsungwasmtcp, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, JsWebsocketWorkerConn, ReaderWriterCloser, Driver, sliceType, ptrType, mapType, funcType, arrayType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, connects, maxPacketSizes, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, ConnectJsWebsocket, Create, GetMaxPacketSize;
180117
+ var $pkg = {}, $init, context, websocket, errs, jshelper, netnacltcp, netsamsungwasmtcp, js, time, SamsungWasmTCPConn, NaClTCPConn, JsWebsocketConn, JsWebsocketWorkerConn, ReaderWriterCloser, Driver, sliceType, ptrType, mapType, funcType, arrayType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, connects, maxPacketSizes, init, ConnectSamsungWasmTCP, init$1, ConnectNaClTCP, init$2, getPerformanceTimestamp, ConnectJsWebsocket, Create, GetMaxPacketSize;
180047
180118
  context = $packages["context"];
180048
180119
  websocket = $packages["github.com/coder/websocket"];
180049
180120
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -180439,7 +180510,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180439
180510
  };
180440
180511
  JsWebsocketWorkerConn.prototype.Close = function() { return this.$val.Close(); };
180441
180512
  JsWebsocketWorkerConn.ptr.prototype.CollectFrame = function() {
180442
- var {$24r, _r, _r$1, _r$2, _tuple, c, err, frame, $s, $r, $c} = $restore(this, {});
180513
+ var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, err, frame, $s, $r, $c} = $restore(this, {});
180443
180514
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180444
180515
  c = this;
180445
180516
  _r = $clone(c.conn, js.Value).Call("collectFrame", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
@@ -180451,13 +180522,56 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180451
180522
  /* */ $s = 4; continue;
180452
180523
  /* if (!(err === ptrType.nil)) { */ case 3:
180453
180524
  _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; }
180454
- $24r = [ptrType.nil, _r$2];
180525
+ $24r = [ptrType.nil, 0, _r$2];
180455
180526
  $s = 6; case 6: return $24r;
180456
180527
  /* } */ case 4:
180457
- $s = -1; return [frame, $ifaceNil];
180458
- /* */ } return; } var $f = {$blk: JsWebsocketWorkerConn.ptr.prototype.CollectFrame, $c: true, $r, $24r, _r, _r$1, _r$2, _tuple, c, err, frame, $s};return $f;
180528
+ /* */ if (frame === ptrType.nil || $clone(frame, js.Value).IsUndefined() || $clone(frame, js.Value).IsNull()) { $s = 7; continue; }
180529
+ /* */ $s = 8; continue;
180530
+ /* if (frame === ptrType.nil || $clone(frame, js.Value).IsUndefined() || $clone(frame, js.Value).IsNull()) { */ case 7:
180531
+ _r$3 = errs.Errorf("Worker frame collection returned no frame", sliceType.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180532
+ $24r$1 = [ptrType.nil, 0, _r$3];
180533
+ $s = 10; case 10: return $24r$1;
180534
+ /* } */ case 8:
180535
+ _r$4 = getPerformanceTimestamp(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180536
+ $24r$2 = [frame, _r$4, $ifaceNil];
180537
+ $s = 12; case 12: return $24r$2;
180538
+ /* */ } return; } var $f = {$blk: JsWebsocketWorkerConn.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, err, frame, $s};return $f;
180459
180539
  };
180460
180540
  JsWebsocketWorkerConn.prototype.CollectFrame = function() { return this.$val.CollectFrame(); };
180541
+ getPerformanceTimestamp = function() {
180542
+ var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, date, global, now, performance, timeOrigin, $s, $r, $c} = $restore(this, {});
180543
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180544
+ global = $clone(js.Global(), js.Value);
180545
+ performance = $clone($clone(global, js.Value).Get("performance"), js.Value);
180546
+ /* */ if (!$clone(performance, js.Value).IsUndefined() && !$clone(performance, js.Value).IsNull()) { $s = 1; continue; }
180547
+ /* */ $s = 2; continue;
180548
+ /* if (!$clone(performance, js.Value).IsUndefined() && !$clone(performance, js.Value).IsNull()) { */ case 1:
180549
+ timeOrigin = $clone($clone(performance, js.Value).Get("timeOrigin"), js.Value);
180550
+ now = $clone($clone(performance, js.Value).Get("now"), js.Value);
180551
+ /* */ if (($clone(timeOrigin, js.Value).Type() === 3) && ($clone(now, js.Value).Type() === 7)) { $s = 3; continue; }
180552
+ /* */ $s = 4; continue;
180553
+ /* if (($clone(timeOrigin, js.Value).Type() === 3) && ($clone(now, js.Value).Type() === 7)) { */ case 3:
180554
+ _r = $clone(performance, js.Value).Call("now", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180555
+ _r$1 = $clone(_r, js.Value).Float(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
180556
+ $24r = $clone(timeOrigin, js.Value).Float() + _r$1;
180557
+ $s = 7; case 7: return $24r;
180558
+ /* } */ case 4:
180559
+ /* } */ case 2:
180560
+ date = $clone($clone(global, js.Value).Get("Date"), js.Value);
180561
+ /* */ if (!$clone(date, js.Value).IsUndefined() && !$clone(date, js.Value).IsNull() && ($clone($clone(date, js.Value).Get("now"), js.Value).Type() === 7)) { $s = 8; continue; }
180562
+ /* */ $s = 9; continue;
180563
+ /* if (!$clone(date, js.Value).IsUndefined() && !$clone(date, js.Value).IsNull() && ($clone($clone(date, js.Value).Get("now"), js.Value).Type() === 7)) { */ case 8:
180564
+ _r$2 = $clone(date, js.Value).Call("now", sliceType.nil); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180565
+ _r$3 = $clone(_r$2, js.Value).Float(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180566
+ $24r$1 = _r$3;
180567
+ $s = 12; case 12: return $24r$1;
180568
+ /* } */ case 9:
180569
+ _r$4 = time.Now(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
180570
+ _r$5 = $clone(_r$4, time.Time).UnixNano(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
180571
+ $24r$2 = ($flatten64(_r$5)) / 1e+06;
180572
+ $s = 15; case 15: return $24r$2;
180573
+ /* */ } return; } var $f = {$blk: getPerformanceTimestamp, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, date, global, now, performance, timeOrigin, $s};return $f;
180574
+ };
180461
180575
  ConnectJsWebsocket = function(host, timeout, secure) {
180462
180576
  var {$24r, $24r$1, $24r$2, _r, _r$1, _tuple, _tuple$1, cancel, conn, ctx, err, host, protocol, secure, timeout, url, workerFactory, $s, $deferred, $r, $c} = $restore(this, {host, timeout, secure});
180463
180577
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
@@ -180516,7 +180630,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
180516
180630
  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)}];
180517
180631
  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)}];
180518
180632
  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)}];
180519
- 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, $error], false)}];
180633
+ 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)}];
180520
180634
  SamsungWasmTCPConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
180521
180635
  NaClTCPConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
180522
180636
  JsWebsocketConn.init("github.com/supraio/client-daemon/pkg/netpacket", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType$3, tag: ""}]);
@@ -182161,23 +182275,27 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
182161
182275
  handler = [handler];
182162
182276
  opts = [opts];
182163
182277
  d[0] = this;
182164
- handler[0] = $clone(js.FuncOf((function(d, eventName, eventType, handler, opts) { return function(this$1, args) {
182165
- var args, changedTouches, ev, t, this$1;
182278
+ handler[0] = $clone(js.FuncOf((function(d, eventName, eventType, handler, opts) { return function $b(this$1, args) {
182279
+ var {_r, args, changedTouches, ev, t, this$1, $s, $r, $c} = $restore(this, {this$1, args});
182280
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
182166
182281
  if (args.$length === 0) {
182167
- return $ifaceNil;
182282
+ $s = -1; return $ifaceNil;
182168
182283
  }
182169
182284
  ev = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value);
182285
+ _r = $clone(ev, js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
182286
+ _r;
182170
182287
  changedTouches = $clone($clone(ev, js.Value).Get("changedTouches"), js.Value);
182171
182288
  if ($clone(changedTouches, js.Value).IsUndefined() || $clone(changedTouches, js.Value).IsNull() || ($clone(changedTouches, js.Value).Length() === 0)) {
182172
- return $ifaceNil;
182289
+ $s = -1; return $ifaceNil;
182173
182290
  }
182174
182291
  t = $clone($clone(changedTouches, js.Value).Index(0), js.Value);
182175
182292
  d[0].emitTouchEvent($clone(new touch.Event.ptr(($fround($clone($clone(t, js.Value).Get("clientX"), js.Value).Float())), ($fround($clone($clone(t, js.Value).Get("clientY"), js.Value).Float())), (new touch.Sequence(0, $clone($clone(t, js.Value).Get("identifier"), js.Value).Int())), eventType[0]), touch.Event));
182176
- return $ifaceNil;
182293
+ $s = -1; return $ifaceNil;
182294
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, changedTouches, ev, t, this$1, $s};return $f;
182177
182295
  }; })(d, eventName, eventType, handler, opts)), js.Func);
182178
182296
  _r = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
182179
182297
  opts[0] = $clone(_r, js.Value);
182180
- $clone(opts[0], js.Value).Set("passive", new $Bool(true));
182298
+ $clone(opts[0], js.Value).Set("passive", new $Bool(false));
182181
182299
  $clone(opts[0], js.Value).Set("capture", new $Bool(false));
182182
182300
  _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String(eventName[0]), new handler[0].constructor.elem(handler[0]), new opts[0].constructor.elem(opts[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
182183
182301
  _r$1;
@@ -184245,14 +184363,18 @@ $packages["golang.org/x/exp/shiny/screen"] = (function() {
184245
184363
  }
184246
184364
  this.BackBufferPreserved = BackBufferPreserved_;
184247
184365
  });
184248
- NewWindowOptions = $pkg.NewWindowOptions = $newType(0, $kindStruct, "screen.NewWindowOptions", true, "golang.org/x/exp/shiny/screen", true, function(Width_, Height_, Title_) {
184366
+ NewWindowOptions = $pkg.NewWindowOptions = $newType(0, $kindStruct, "screen.NewWindowOptions", true, "golang.org/x/exp/shiny/screen", true, function(X_, Y_, Width_, Height_, Title_) {
184249
184367
  this.$val = this;
184250
184368
  if (arguments.length === 0) {
184369
+ this.X = 0;
184370
+ this.Y = 0;
184251
184371
  this.Width = 0;
184252
184372
  this.Height = 0;
184253
184373
  this.Title = "";
184254
184374
  return;
184255
184375
  }
184376
+ this.X = X_;
184377
+ this.Y = Y_;
184256
184378
  this.Width = Width_;
184257
184379
  this.Height = Height_;
184258
184380
  this.Title = Title_;
@@ -184300,7 +184422,7 @@ $packages["golang.org/x/exp/shiny/screen"] = (function() {
184300
184422
  Texture.init([{prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}]);
184301
184423
  Window.init([{prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [PublishResult], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}]);
184302
184424
  PublishResult.init("", [{prop: "BackBufferPreserved", name: "BackBufferPreserved", embedded: false, exported: true, typ: $Bool, tag: ""}]);
184303
- NewWindowOptions.init("", [{prop: "Width", name: "Width", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Height", name: "Height", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Title", name: "Title", embedded: false, exported: true, typ: $String, tag: ""}]);
184425
+ NewWindowOptions.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Y", name: "Y", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Width", name: "Width", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Height", name: "Height", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Title", name: "Title", embedded: false, exported: true, typ: $String, tag: ""}]);
184304
184426
  DrawOptions.init("", []);
184305
184427
  $init = function() {
184306
184428
  $pkg.$init = function() {};
@@ -184680,8 +184802,21 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
184680
184802
  return $pkg;
184681
184803
  })();
184682
184804
  $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
184683
- var $pkg = {}, $init, time, FrameType, FrameInterface, Frame, sliceType, ptrType, NewFrame;
184805
+ var $pkg = {}, $init, js, time, JSFrame, FrameType, FrameInterface, Frame, funcType, arrayType, sliceType, ptrType, ptrType$1, NewJSFrame, NewFrame;
184806
+ js = $packages["syscall/js"];
184684
184807
  time = $packages["time"];
184808
+ JSFrame = $pkg.JSFrame = $newType(0, $kindStruct, "frame.JSFrame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, function(frameType_, buffer_, timestamp_) {
184809
+ this.$val = this;
184810
+ if (arguments.length === 0) {
184811
+ this.frameType = 0;
184812
+ this.buffer = new js.Value.ptr(null, false, arrayType.zero());
184813
+ this.timestamp = new $Uint64(0, 0);
184814
+ return;
184815
+ }
184816
+ this.frameType = frameType_;
184817
+ this.buffer = buffer_;
184818
+ this.timestamp = timestamp_;
184819
+ });
184685
184820
  FrameType = $pkg.FrameType = $newType(1, $kindUint8, "frame.FrameType", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
184686
184821
  FrameInterface = $pkg.FrameInterface = $newType(8, $kindInterface, "frame.FrameInterface", true, "github.com/supraio/client-daemon/pkg/render/frame", true, null);
184687
184822
  Frame = $pkg.Frame = $newType(0, $kindStruct, "frame.Frame", true, "github.com/supraio/client-daemon/pkg/render/frame", true, function(frameType_, buffer_, timestamp_) {
@@ -184696,8 +184831,46 @@ $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
184696
184831
  this.buffer = buffer_;
184697
184832
  this.timestamp = timestamp_;
184698
184833
  });
184834
+ funcType = $funcType([], [], false);
184835
+ arrayType = $arrayType(funcType, 0);
184699
184836
  sliceType = $sliceType($Uint8);
184700
- ptrType = $ptrType(Frame);
184837
+ ptrType = $ptrType(JSFrame);
184838
+ ptrType$1 = $ptrType(Frame);
184839
+ NewJSFrame = function(frameType, buffer, timestamp) {
184840
+ var buffer, frameType, timestamp;
184841
+ return new JSFrame.ptr(frameType, $clone(buffer, js.Value), timestamp);
184842
+ };
184843
+ $pkg.NewJSFrame = NewJSFrame;
184844
+ JSFrame.ptr.prototype.FrameType = function() {
184845
+ var f;
184846
+ f = this;
184847
+ return f.frameType;
184848
+ };
184849
+ JSFrame.prototype.FrameType = function() { return this.$val.FrameType(); };
184850
+ JSFrame.ptr.prototype.Buffer = function() {
184851
+ var f;
184852
+ f = this;
184853
+ return sliceType.nil;
184854
+ };
184855
+ JSFrame.prototype.Buffer = function() { return this.$val.Buffer(); };
184856
+ JSFrame.ptr.prototype.JSBuffer = function() {
184857
+ var f;
184858
+ f = this;
184859
+ return f.buffer;
184860
+ };
184861
+ JSFrame.prototype.JSBuffer = function() { return this.$val.JSBuffer(); };
184862
+ JSFrame.ptr.prototype.ByteLength = function() {
184863
+ var f;
184864
+ f = this;
184865
+ return $clone($clone(f.buffer, js.Value).Get("byteLength"), js.Value).Int();
184866
+ };
184867
+ JSFrame.prototype.ByteLength = function() { return this.$val.ByteLength(); };
184868
+ JSFrame.ptr.prototype.GetTimestamp = function() {
184869
+ var f, x;
184870
+ f = this;
184871
+ return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
184872
+ };
184873
+ JSFrame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
184701
184874
  NewFrame = function(frameType, buffer, timestamp) {
184702
184875
  var buffer, frameType, timestamp;
184703
184876
  return new Frame.ptr(frameType, buffer, timestamp);
@@ -184721,24 +184894,28 @@ $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
184721
184894
  return time.Unix(new $Int64(0, 0), ((x = f.timestamp, new $Int64(x.$high, x.$low))));
184722
184895
  };
184723
184896
  Frame.prototype.GetTimestamp = function() { return this.$val.GetTimestamp(); };
184724
- ptrType.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)}];
184897
+ 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)}];
184898
+ 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)}];
184899
+ 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: ""}]);
184725
184900
  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)}]);
184726
184901
  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: ""}]);
184727
184902
  $init = function() {
184728
184903
  $pkg.$init = function() {};
184729
184904
  /* */ 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:
184730
- $r = time.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184905
+ $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184906
+ $r = time.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184731
184907
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
184732
184908
  };
184733
184909
  $pkg.$init = $init;
184734
184910
  return $pkg;
184735
184911
  })();
184736
184912
  $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function() {
184737
- var $pkg = {}, $init, binary, errs, netpacket, frame, GenericFrameCollector, FrameMapItem, FrameCollectorInterface, sliceType, ptrType, sliceType$1, funcType, ptrType$1, mapType, frameCollectorFactories, NewGenericFrameCollector, NewFrameCollector, RegisterFrameCollector;
184913
+ var $pkg = {}, $init, binary, errs, netpacket, frame, time, GenericFrameCollector, FrameMapItem, FrameCollectionDurationCallback, FrameCollectorInterface, sliceType, ptrType, sliceType$1, funcType, ptrType$1, mapType, frameCollectorFactories, NewGenericFrameCollector, NewFrameCollector, RegisterFrameCollector;
184738
184914
  binary = $packages["encoding/binary"];
184739
184915
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
184740
184916
  netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
184741
184917
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
184918
+ time = $packages["time"];
184742
184919
  GenericFrameCollector = $pkg.GenericFrameCollector = $newType(0, $kindStruct, "netframe.GenericFrameCollector", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, function(conn_, framesMap_, maxPacketSize_, packetBuffer_) {
184743
184920
  this.$val = this;
184744
184921
  if (arguments.length === 0) {
@@ -184771,6 +184948,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
184771
184948
  this.total = total_;
184772
184949
  this.received = received_;
184773
184950
  });
184951
+ FrameCollectionDurationCallback = $pkg.FrameCollectionDurationCallback = $newType(4, $kindFunc, "netframe.FrameCollectionDurationCallback", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, null);
184774
184952
  FrameCollectorInterface = $pkg.FrameCollectorInterface = $newType(8, $kindInterface, "netframe.FrameCollectorInterface", true, "github.com/supraio/client-daemon/pkg/render/netframe", true, null);
184775
184953
  sliceType = $sliceType($Uint8);
184776
184954
  ptrType = $ptrType(FrameMapItem);
@@ -184783,8 +184961,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
184783
184961
  return new GenericFrameCollector.ptr(screenConn, $makeMap($Uint16.keyFor, []), maxPacketSize, $makeSlice(sliceType, maxPacketSize));
184784
184962
  };
184785
184963
  $pkg.NewGenericFrameCollector = NewGenericFrameCollector;
184786
- GenericFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
184787
- var {$24r, _entry, _key, _r, _r$1, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, endCb, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, received, seq, startCb, total, $s, $r, $c} = $restore(this, {startCb, endCb});
184964
+ GenericFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
184965
+ 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});
184788
184966
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
184789
184967
  c = this;
184790
184968
  packetBuffer = c.packetBuffer;
@@ -184846,9 +185024,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
184846
185024
  $s = 1; continue;
184847
185025
  case 2:
184848
185026
  $s = -1; return [$ifaceNil, $ifaceNil];
184849
- /* */ } 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, received, seq, startCb, total, $s};return $f;
185027
+ /* */ } 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;
184850
185028
  };
184851
- GenericFrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
185029
+ GenericFrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
184852
185030
  NewFrameCollector = function(screenConn, maxPacketSize) {
184853
185031
  var {_entry, _i, _key, _keys, _r, _ref, _size, factory, frameCollector, maxPacketSize, screenConn, $s, $r, $c} = $restore(this, {screenConn, maxPacketSize});
184854
185032
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -184882,10 +185060,11 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
184882
185060
  _key = name; (frameCollectorFactories || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: factory });
184883
185061
  };
184884
185062
  $pkg.RegisterFrameCollector = RegisterFrameCollector;
184885
- ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
185063
+ ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
184886
185064
  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: ""}]);
184887
185065
  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: ""}]);
184888
- FrameCollectorInterface.init([{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}]);
185066
+ FrameCollectionDurationCallback.init([time.Duration], [], false);
185067
+ FrameCollectorInterface.init([{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}]);
184889
185068
  $init = function() {
184890
185069
  $pkg.$init = function() {};
184891
185070
  /* */ 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:
@@ -184893,6 +185072,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function()
184893
185072
  $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184894
185073
  $r = netpacket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184895
185074
  $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185075
+ $r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184896
185076
  frameCollectorFactories = new $global.Map();
184897
185077
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
184898
185078
  };
@@ -184961,8 +185141,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
184961
185141
  /* */ } return; } var $f = {$blk: NewNaClTCPFrameCollector, $c: true, $r, _ref, maxPacketSize, screenConn, screenConnTyped, screenConnTyped$1, $s};return $f;
184962
185142
  };
184963
185143
  $pkg.NewNaClTCPFrameCollector = NewNaClTCPFrameCollector;
184964
- NTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
184965
- var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, startCb, timestampHi, timestampLo, x, $s, $deferred, $r, $c} = $restore(this, {startCb, endCb});
185144
+ NTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
185145
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, param, startCb, timestampHi, timestampLo, x, $s, $deferred, $r, $c} = $restore(this, {startCb, endCb, param});
184966
185146
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
184967
185147
  endCb = [endCb];
184968
185148
  startCb = [startCb];
@@ -185009,9 +185189,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
185009
185189
  frame$1 = new NTFrame.ptr((($clone($clone(collectedFrame, 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(collectedFrame, js.Value).Get("dataRef"), js.Value).Int() >>> 0)));
185010
185190
  $24r$1 = [frame$1, $ifaceNil];
185011
185191
  $s = 10; case 10: return $24r$1;
185012
- /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, startCb, timestampHi, timestampLo, x, $s, $deferred};return $f; } }
185192
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, onEnd, onStart, opts, param, startCb, timestampHi, timestampLo, x, $s, $deferred};return $f; } }
185013
185193
  };
185014
- NTFrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
185194
+ NTFrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
185015
185195
  NTFrame.ptr.prototype.FrameType = function() {
185016
185196
  var f;
185017
185197
  f = this;
@@ -185039,7 +185219,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
185039
185219
  return f.dataRef;
185040
185220
  };
185041
185221
  NTFrame.prototype.DataRef = function() { return this.$val.DataRef(); };
185042
- ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
185222
+ ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
185043
185223
  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: "DataRef", name: "DataRef", pkg: "", typ: $funcType([], [$Uint32], false)}];
185044
185224
  NTFrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/nacltcp", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.NaClTCPConn, tag: ""}]);
185045
185225
  NTFrame.init("github.com/supraio/client-daemon/pkg/render/netframe/nacltcp", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "dataRef", name: "dataRef", embedded: false, exported: false, typ: $Uint32, tag: ""}]);
@@ -185062,7 +185242,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"] = (fun
185062
185242
  return $pkg;
185063
185243
  })();
185064
185244
  $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (function() {
185065
- var $pkg = {}, $init, general, jsdecoder, nacldriver, errs, jshelper, frame, nacltcp, sync, js, NaClDecoder, sliceType, ptrType, ptrType$1, ptrType$2, sliceType$1, ptrType$3, ptrType$4, IsAvailable, NewDecoder;
185245
+ var $pkg = {}, $init, general, jsdecoder, nacldriver, errs, jshelper, frame, nacltcp, sync, atomic, js, NaClDecoder, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, sliceType$1, ptrType$4, ptrType$5, IsAvailable, NewDecoder;
185066
185246
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
185067
185247
  jsdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/jsdecoder"];
185068
185248
  nacldriver = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"];
@@ -185071,12 +185251,13 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185071
185251
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
185072
185252
  nacltcp = $packages["github.com/supraio/client-daemon/pkg/render/netframe/nacltcp"];
185073
185253
  sync = $packages["sync"];
185254
+ atomic = $packages["sync/atomic"];
185074
185255
  js = $packages["syscall/js"];
185075
185256
  NaClDecoder = $pkg.NaClDecoder = $newType(0, $kindStruct, "nacldecoder.NaClDecoder", true, "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", true, function(initialized_, renderedDirect_, mutexDecode_, mutexGetPicture_) {
185076
185257
  this.$val = this;
185077
185258
  if (arguments.length === 0) {
185078
185259
  this.initialized = false;
185079
- this.renderedDirect = false;
185260
+ this.renderedDirect = new atomic.Bool.ptr(new atomic.noCopy.ptr(), 0);
185080
185261
  this.mutexDecode = new sync.Mutex.ptr(0, 0);
185081
185262
  this.mutexGetPicture = new sync.Mutex.ptr(0, 0);
185082
185263
  return;
@@ -185089,17 +185270,18 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185089
185270
  sliceType = $sliceType($emptyInterface);
185090
185271
  ptrType = $ptrType(js.Value);
185091
185272
  ptrType$1 = $ptrType(frame.Frame);
185092
- ptrType$2 = $ptrType(nacltcp.NTFrame);
185273
+ ptrType$2 = $ptrType(frame.JSFrame);
185274
+ ptrType$3 = $ptrType(nacltcp.NTFrame);
185093
185275
  sliceType$1 = $sliceType($Uint8);
185094
- ptrType$3 = $ptrType(nacldriver.BufferImpl);
185095
- ptrType$4 = $ptrType(NaClDecoder);
185276
+ ptrType$4 = $ptrType(nacldriver.BufferImpl);
185277
+ ptrType$5 = $ptrType(NaClDecoder);
185096
185278
  IsAvailable = function() {
185097
185279
  return jsdecoder.IsAvailable();
185098
185280
  };
185099
185281
  $pkg.IsAvailable = IsAvailable;
185100
185282
  NewDecoder = function(header) {
185101
185283
  var header;
185102
- return [new NaClDecoder.ptr(false, false, $clone(new sync.Mutex.ptr(0, 0), sync.Mutex), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex)), $ifaceNil];
185284
+ return [new NaClDecoder.ptr(false, new atomic.Bool.ptr(new atomic.noCopy.ptr(), 0), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex)), $ifaceNil];
185103
185285
  };
185104
185286
  $pkg.NewDecoder = NewDecoder;
185105
185287
  NaClDecoder.ptr.prototype.initialize = function(param) {
@@ -185196,7 +185378,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185196
185378
  };
185197
185379
  NaClDecoder.prototype.destroy = function() { return this.$val.destroy(); };
185198
185380
  NaClDecoder.ptr.prototype.Write = function(someFrame) {
185199
- var {$24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, decodeArgs, decodePromise, decodePromise$1, decodeResult, decodeResult$1, err, err$1, err$2, err$3, err$4, frame$1, frame$2, jsNaClDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s, $r, $c} = $restore(this, {someFrame});
185381
+ var {$24r, $24r$1, $24r$2, $24r$3, _arg, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, currentFrame, currentFrame$1, currentFrame$2, decodePromise, decodeResult, err, err$1, err$2, err$3, err$4, jsNaClDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s, $r, $c} = $restore(this, {someFrame});
185200
185382
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185201
185383
  m = this;
185202
185384
  /* */ if (jsdecoder.ShouldResetOnNextDecode()) { $s = 1; continue; }
@@ -185230,105 +185412,165 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185230
185412
  _ref = someFrame;
185231
185413
  /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 14; continue; }
185232
185414
  /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 15; continue; }
185233
- /* */ $s = 16; continue;
185415
+ /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 16; continue; }
185416
+ /* */ $s = 17; continue;
185234
185417
  /* if ($assertType(_ref, ptrType$1, true)[1]) { */ case 14:
185235
- frame$1 = _ref.$val;
185236
- nal = frame$1.Buffer();
185237
- /* */ if (!m.initialized) { $s = 17; continue; }
185238
- /* */ $s = 18; continue;
185239
- /* if (!m.initialized) { */ case 17:
185240
- _r$3 = m.initialize(nal); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185418
+ currentFrame = _ref.$val;
185419
+ m.renderedDirect.Store(false);
185420
+ nal = currentFrame.Buffer();
185421
+ /* */ if (!m.initialized) { $s = 18; continue; }
185422
+ /* */ $s = 19; continue;
185423
+ /* if (!m.initialized) { */ case 18:
185424
+ _r$3 = m.initialize(nal); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185241
185425
  err$1 = _r$3;
185242
185426
  if (!($interfaceIsEqual(err$1, $ifaceNil))) {
185243
185427
  $s = -1; return err$1;
185244
185428
  }
185245
185429
  m.initialized = true;
185246
- /* } */ case 18:
185247
- _r$4 = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185430
+ /* } */ case 19:
185431
+ _r$4 = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185248
185432
  pictureBuffer = $clone(_r$4, js.Value);
185249
- _r$5 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185433
+ _r$5 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185250
185434
  pictureUint8Array = $clone(_r$5, js.Value);
185251
185435
  js.CopyBytesToJS($clone(pictureUint8Array, js.Value), nal);
185252
- _r$6 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
185253
- decodeArgs = $clone(_r$6, js.Value);
185254
- $clone(decodeArgs, js.Value).Set("decodeId", new $Int(0));
185255
- $clone(decodeArgs, js.Value).Set("data", new pictureBuffer.constructor.elem(pictureBuffer));
185256
- $r = m.mutexDecode.Lock(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185257
- _r$7 = $clone(jsNaClDecoder, js.Value).Call("decode", new sliceType([new decodeArgs.constructor.elem(decodeArgs)])); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
185258
- decodePromise = $clone(_r$7, js.Value);
185259
- _r$8 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
185260
- _tuple = _r$8;
185261
- decodeResult = _tuple[0];
185262
- err$2 = _tuple[1];
185263
- $r = m.mutexDecode.Unlock(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185264
- /* */ if (!(err$2 === ptrType.nil)) { $s = 27; continue; }
185265
- /* */ $s = 28; continue;
185266
- /* if (!(err$2 === ptrType.nil)) { */ case 27:
185267
- _r$9 = jshelper.GetError(err$2); /* */ $s = 29; case 29: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
185268
- _r$10 = _r$9.Error(); /* */ $s = 30; case 30: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
185269
- _arg = new $String(_r$10);
185270
- _r$11 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 31; case 31: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
185271
- $24r = _r$11;
185272
- $s = 32; case 32: return $24r;
185273
- /* } */ case 28:
185274
- /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 33; continue; }
185275
- /* */ $s = 34; continue;
185276
- /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 33:
185277
- _r$12 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 35; case 35: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
185278
- $24r$1 = _r$12;
185279
- $s = 36; case 36: return $24r$1;
185280
- /* } */ case 34:
185281
- m.renderedDirect = false;
185282
- $s = 16; continue;
185436
+ _r$6 = m.decodeBuffer(jsNaClDecoder, $clone(pictureBuffer, js.Value)); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
185437
+ $24r = _r$6;
185438
+ $s = 24; case 24: return $24r;
185283
185439
  /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 15:
185284
- frame$2 = _ref.$val;
185285
- /* */ if (!m.initialized) { $s = 37; continue; }
185286
- /* */ $s = 38; continue;
185287
- /* if (!m.initialized) { */ case 37:
185288
- _r$13 = m.initialize(sliceType$1.nil); /* */ $s = 39; case 39: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
185289
- err$3 = _r$13;
185440
+ currentFrame$1 = _ref.$val;
185441
+ m.renderedDirect.Store(true);
185442
+ /* */ if (!m.initialized) { $s = 25; continue; }
185443
+ /* */ $s = 26; continue;
185444
+ /* if (!m.initialized) { */ case 25:
185445
+ _r$7 = m.initialize(sliceType$1.nil); /* */ $s = 27; case 27: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
185446
+ err$2 = _r$7;
185447
+ if (!($interfaceIsEqual(err$2, $ifaceNil))) {
185448
+ $s = -1; return err$2;
185449
+ }
185450
+ m.initialized = true;
185451
+ /* } */ case 26:
185452
+ _r$8 = m.decodeAndRenderBuffer(jsNaClDecoder, $clone(currentFrame$1.JSBuffer(), js.Value)); /* */ $s = 28; case 28: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
185453
+ $24r$1 = _r$8;
185454
+ $s = 29; case 29: return $24r$1;
185455
+ /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 16:
185456
+ currentFrame$2 = _ref.$val;
185457
+ m.renderedDirect.Store(true);
185458
+ /* */ if (!m.initialized) { $s = 30; continue; }
185459
+ /* */ $s = 31; continue;
185460
+ /* if (!m.initialized) { */ case 30:
185461
+ _r$9 = m.initialize(sliceType$1.nil); /* */ $s = 32; case 32: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
185462
+ err$3 = _r$9;
185290
185463
  if (!($interfaceIsEqual(err$3, $ifaceNil))) {
185291
185464
  $s = -1; return err$3;
185292
185465
  }
185293
185466
  m.initialized = true;
185467
+ /* } */ case 31:
185468
+ $r = m.mutexDecode.Lock(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185469
+ _r$10 = $clone(jsNaClDecoder, js.Value).Call("decodeAndRenderRef", new sliceType([new $Uint32(currentFrame$2.DataRef())])); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
185470
+ decodePromise = $clone(_r$10, js.Value);
185471
+ _r$11 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
185472
+ _tuple = _r$11;
185473
+ decodeResult = _tuple[0];
185474
+ err$4 = _tuple[1];
185475
+ $r = m.mutexDecode.Unlock(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185476
+ /* */ if (!(err$4 === ptrType.nil)) { $s = 37; continue; }
185477
+ /* */ $s = 38; continue;
185478
+ /* if (!(err$4 === ptrType.nil)) { */ case 37:
185479
+ _r$12 = jshelper.GetError(err$4); /* */ $s = 39; case 39: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
185480
+ _r$13 = _r$12.Error(); /* */ $s = 40; case 40: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
185481
+ _arg = new $String(_r$13);
185482
+ _r$14 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 41; case 41: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
185483
+ $24r$2 = _r$14;
185484
+ $s = 42; case 42: return $24r$2;
185294
185485
  /* } */ case 38:
185295
- $r = m.mutexDecode.Lock(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185296
- _r$14 = $clone(jsNaClDecoder, js.Value).Call("decodeAndRenderRef", new sliceType([new $Uint32(frame$2.DataRef())])); /* */ $s = 41; case 41: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
185297
- decodePromise$1 = $clone(_r$14, js.Value);
185298
- _r$15 = jshelper.Await($clone(decodePromise$1, js.Value)); /* */ $s = 42; case 42: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
185299
- _tuple$1 = _r$15;
185300
- decodeResult$1 = _tuple$1[0];
185301
- err$4 = _tuple$1[1];
185302
- $r = m.mutexDecode.Unlock(); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185303
- /* */ if (!(err$4 === ptrType.nil)) { $s = 44; continue; }
185304
- /* */ $s = 45; continue;
185305
- /* if (!(err$4 === ptrType.nil)) { */ case 44:
185306
- _r$16 = jshelper.GetError(err$4); /* */ $s = 46; case 46: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
185307
- _r$17 = _r$16.Error(); /* */ $s = 47; case 47: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
185308
- _arg$1 = new $String(_r$17);
185309
- _r$18 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg$1])); /* */ $s = 48; case 48: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
185310
- $24r$2 = _r$18;
185311
- $s = 49; case 49: return $24r$2;
185312
- /* } */ case 45:
185313
- /* */ if (!(($clone(decodeResult$1, js.Value).Float() === 0))) { $s = 50; continue; }
185314
- /* */ $s = 51; continue;
185315
- /* if (!(($clone(decodeResult$1, js.Value).Float() === 0))) { */ case 50:
185316
- _r$19 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult$1, js.Value).Float())])); /* */ $s = 52; case 52: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
185317
- $24r$3 = _r$19;
185318
- $s = 53; case 53: return $24r$3;
185319
- /* } */ case 51:
185320
- m.renderedDirect = true;
185321
- /* } */ case 16:
185486
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 43; continue; }
185487
+ /* */ $s = 44; continue;
185488
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 43:
185489
+ _r$15 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 45; case 45: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
185490
+ $24r$3 = _r$15;
185491
+ $s = 46; case 46: return $24r$3;
185492
+ /* } */ case 44:
185493
+ /* } */ case 17:
185322
185494
  $s = -1; return $ifaceNil;
185323
- /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, decodeArgs, decodePromise, decodePromise$1, decodeResult, decodeResult$1, err, err$1, err$2, err$3, err$4, frame$1, frame$2, jsNaClDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s};return $f;
185495
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, currentFrame, currentFrame$1, currentFrame$2, decodePromise, decodeResult, err, err$1, err$2, err$3, err$4, jsNaClDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s};return $f;
185324
185496
  };
185325
185497
  NaClDecoder.prototype.Write = function(someFrame) { return this.$val.Write(someFrame); };
185498
+ NaClDecoder.ptr.prototype.decodeBuffer = function(jsNaClDecoder, pictureBuffer) {
185499
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, decodeArgs, decodePromise, decodeResult, err, jsNaClDecoder, m, pictureBuffer, $s, $r, $c} = $restore(this, {jsNaClDecoder, pictureBuffer});
185500
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185501
+ m = this;
185502
+ _r = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185503
+ decodeArgs = $clone(_r, js.Value);
185504
+ $clone(decodeArgs, js.Value).Set("decodeId", new $Int(0));
185505
+ $clone(decodeArgs, js.Value).Set("data", new pictureBuffer.constructor.elem(pictureBuffer));
185506
+ $r = m.mutexDecode.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185507
+ _r$1 = $clone(jsNaClDecoder, js.Value).Call("decode", new sliceType([new decodeArgs.constructor.elem(decodeArgs)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185508
+ decodePromise = $clone(_r$1, js.Value);
185509
+ _r$2 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
185510
+ _tuple = _r$2;
185511
+ decodeResult = _tuple[0];
185512
+ err = _tuple[1];
185513
+ $r = m.mutexDecode.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185514
+ /* */ if (!(err === ptrType.nil)) { $s = 6; continue; }
185515
+ /* */ $s = 7; continue;
185516
+ /* if (!(err === ptrType.nil)) { */ case 6:
185517
+ _r$3 = jshelper.GetError(err); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185518
+ _r$4 = _r$3.Error(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185519
+ _arg = new $String(_r$4);
185520
+ _r$5 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185521
+ $24r = _r$5;
185522
+ $s = 11; case 11: return $24r;
185523
+ /* } */ case 7:
185524
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 12; continue; }
185525
+ /* */ $s = 13; continue;
185526
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 12:
185527
+ _r$6 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
185528
+ $24r$1 = _r$6;
185529
+ $s = 15; case 15: return $24r$1;
185530
+ /* } */ case 13:
185531
+ $s = -1; return $ifaceNil;
185532
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.decodeBuffer, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, decodeArgs, decodePromise, decodeResult, err, jsNaClDecoder, m, pictureBuffer, $s};return $f;
185533
+ };
185534
+ NaClDecoder.prototype.decodeBuffer = function(jsNaClDecoder, pictureBuffer) { return this.$val.decodeBuffer(jsNaClDecoder, pictureBuffer); };
185535
+ NaClDecoder.ptr.prototype.decodeAndRenderBuffer = function(jsNaClDecoder, pictureBuffer) {
185536
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, decodePromise, decodeResult, err, jsNaClDecoder, m, pictureBuffer, $s, $r, $c} = $restore(this, {jsNaClDecoder, pictureBuffer});
185537
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185538
+ m = this;
185539
+ $r = m.mutexDecode.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185540
+ _r = $clone(jsNaClDecoder, js.Value).Call("decodeAndRender", new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185541
+ decodePromise = $clone(_r, js.Value);
185542
+ _r$1 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185543
+ _tuple = _r$1;
185544
+ decodeResult = _tuple[0];
185545
+ err = _tuple[1];
185546
+ $r = m.mutexDecode.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185547
+ /* */ if (!(err === ptrType.nil)) { $s = 5; continue; }
185548
+ /* */ $s = 6; continue;
185549
+ /* if (!(err === ptrType.nil)) { */ case 5:
185550
+ _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; }
185551
+ _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; }
185552
+ _arg = new $String(_r$3);
185553
+ _r$4 = errs.Errorf("Failed to decode and render 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; }
185554
+ $24r = _r$4;
185555
+ $s = 10; case 10: return $24r;
185556
+ /* } */ case 6:
185557
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 11; continue; }
185558
+ /* */ $s = 12; continue;
185559
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 11:
185560
+ _r$5 = errs.Errorf("Failed to decode and render frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185561
+ $24r$1 = _r$5;
185562
+ $s = 14; case 14: return $24r$1;
185563
+ /* } */ case 12:
185564
+ $s = -1; return $ifaceNil;
185565
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.decodeAndRenderBuffer, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, decodePromise, decodeResult, err, jsNaClDecoder, m, pictureBuffer, $s};return $f;
185566
+ };
185567
+ NaClDecoder.prototype.decodeAndRenderBuffer = function(jsNaClDecoder, pictureBuffer) { return this.$val.decodeAndRenderBuffer(jsNaClDecoder, pictureBuffer); };
185326
185568
  NaClDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
185327
185569
  var {$24r, $24r$1, $24r$2, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, err, jsNaClDecoder, m, outputBuffer, picture, picturePromise, $s, $r, $c} = $restore(this, {outputBuffer});
185328
185570
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185329
185571
  m = this;
185330
- if (m.renderedDirect) {
185331
- $assertType(outputBuffer, ptrType$3).Picture = ptrType.nil;
185572
+ if (m.renderedDirect.Load()) {
185573
+ $assertType(outputBuffer, ptrType$4).Picture = ptrType.nil;
185332
185574
  $s = -1; return $ifaceNil;
185333
185575
  }
185334
185576
  /* */ if (!m.initialized) { $s = 1; continue; }
@@ -185365,7 +185607,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185365
185607
  $24r$2 = _r$6;
185366
185608
  $s = 18; case 18: return $24r$2;
185367
185609
  /* } */ case 14:
185368
- $assertType(outputBuffer, ptrType$3).Picture = picture;
185610
+ $assertType(outputBuffer, ptrType$4).Picture = picture;
185369
185611
  $s = -1; return $ifaceNil;
185370
185612
  /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.NextOutput, $c: true, $r, $24r, $24r$1, $24r$2, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, err, jsNaClDecoder, m, outputBuffer, picture, picturePromise, $s};return $f;
185371
185613
  };
@@ -185374,28 +185616,23 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185374
185616
  var {_r, jsNaClDecoder, m, outputBuffer, picture, x, $s, $r, $c} = $restore(this, {outputBuffer});
185375
185617
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185376
185618
  m = this;
185377
- if (m.renderedDirect) {
185378
- m.renderedDirect = false;
185619
+ picture = $assertType(outputBuffer, ptrType$4).Picture;
185620
+ if (picture === ptrType.nil) {
185379
185621
  $s = -1; return;
185380
185622
  }
185381
185623
  jsNaClDecoder = jsdecoder.GetJsNaClDecoder();
185382
185624
  /* */ if (!(jsNaClDecoder === ptrType.nil)) { $s = 1; continue; }
185383
185625
  /* */ $s = 2; continue;
185384
185626
  /* if (!(jsNaClDecoder === ptrType.nil)) { */ case 1:
185385
- picture = $assertType(outputBuffer, ptrType$3).Picture;
185386
- /* */ if (!(picture === ptrType.nil)) { $s = 3; continue; }
185387
- /* */ $s = 4; continue;
185388
- /* if (!(picture === ptrType.nil)) { */ case 3:
185389
- _r = $clone(jsNaClDecoder, js.Value).Call("recyclePicture", new sliceType([(x = picture, new x.constructor.elem(x))])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185390
- _r;
185391
- /* } */ case 4:
185627
+ _r = $clone(jsNaClDecoder, js.Value).Call("recyclePicture", new sliceType([(x = picture, new x.constructor.elem(x))])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185628
+ _r;
185392
185629
  /* } */ case 2:
185393
185630
  $s = -1; return;
185394
185631
  /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.Release, $c: true, $r, _r, jsNaClDecoder, m, outputBuffer, picture, x, $s};return $f;
185395
185632
  };
185396
185633
  NaClDecoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
185397
- ptrType$4.methods = [{prop: "initialize", name: "initialize", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([sliceType$1], [$error], false)}, {prop: "reset", name: "reset", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([], [$error], false)}, {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)}];
185398
- NaClDecoder.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder", [{prop: "initialized", name: "initialized", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderedDirect", name: "renderedDirect", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "mutexDecode", name: "mutexDecode", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "mutexGetPicture", name: "mutexGetPicture", embedded: false, exported: false, typ: sync.Mutex, tag: ""}]);
185634
+ ptrType$5.methods = [{prop: "initialize", name: "initialize", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([sliceType$1], [$error], false)}, {prop: "reset", name: "reset", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "decodeBuffer", name: "decodeBuffer", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([ptrType, js.Value], [$error], false)}, {prop: "decodeAndRenderBuffer", name: "decodeAndRenderBuffer", pkg: "github.com/supraio/client-daemon/pkg/decoder/nacldecoder", typ: $funcType([ptrType, js.Value], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
185635
+ NaClDecoder.init("github.com/supraio/client-daemon/pkg/decoder/nacldecoder", [{prop: "initialized", name: "initialized", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderedDirect", name: "renderedDirect", embedded: false, exported: false, typ: atomic.Bool, tag: ""}, {prop: "mutexDecode", name: "mutexDecode", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "mutexGetPicture", name: "mutexGetPicture", embedded: false, exported: false, typ: sync.Mutex, tag: ""}]);
185399
185636
  $init = function() {
185400
185637
  $pkg.$init = function() {};
185401
185638
  /* */ 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:
@@ -185407,7 +185644,8 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185407
185644
  $r = frame.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185408
185645
  $r = nacltcp.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185409
185646
  $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185410
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185647
+ $r = atomic.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185648
+ $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185411
185649
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
185412
185650
  };
185413
185651
  $pkg.$init = $init;
@@ -185507,8 +185745,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
185507
185745
  /* */ } return; } var $f = {$blk: NewSamsungWasmTCPFrameCollector, $c: true, $r, _ref, maxPacketSize, screenConn, screenConnTyped, screenConnTyped$1, $s};return $f;
185508
185746
  };
185509
185747
  $pkg.NewSamsungWasmTCPFrameCollector = NewSamsungWasmTCPFrameCollector;
185510
- SWTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
185511
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, startCb, timestampHi, timestampLo, x, x$1, x$2, $s, $r, $c} = $restore(this, {startCb, endCb});
185748
+ SWTFrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb, param) {
185749
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, param, startCb, timestampHi, timestampLo, x, x$1, x$2, $s, $r, $c} = $restore(this, {startCb, endCb, param});
185512
185750
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185513
185751
  endCb = [endCb];
185514
185752
  startCb = [startCb];
@@ -185548,9 +185786,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
185548
185786
  timestampHi = (new $Uint64(0, (($clone($clone($clone(collectedFrame, js.Value).Get("timestamp"), js.Value).Get("hi"), js.Value).Int() >>> 0))));
185549
185787
  frame$1 = new SWTFrame.ptr((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), (x$2 = $shiftLeft64(timestampHi, 32), new $Uint64(timestampLo.$high | x$2.$high, (timestampLo.$low | x$2.$low) >>> 0)), (($clone($clone(collectedFrame, js.Value).Get("dataRef"), js.Value).Int() >>> 0)));
185550
185788
  $s = -1; return [frame$1, $ifaceNil];
185551
- /* */ } return; } var $f = {$blk: SWTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, startCb, timestampHi, timestampLo, x, x$1, x$2, $s};return $f;
185789
+ /* */ } return; } var $f = {$blk: SWTFrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, collectPromise, collectedFrame, endCb, err, frame$1, jsConn, opts, param, startCb, timestampHi, timestampLo, x, x$1, x$2, $s};return $f;
185552
185790
  };
185553
- SWTFrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
185791
+ SWTFrameCollector.prototype.CollectFrame = function(startCb, endCb, param) { return this.$val.CollectFrame(startCb, endCb, param); };
185554
185792
  SWTFrame.ptr.prototype.FrameType = function() {
185555
185793
  var f;
185556
185794
  f = this;
@@ -185578,7 +185816,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
185578
185816
  return f.dataRef;
185579
185817
  };
185580
185818
  SWTFrame.prototype.DataRef = function() { return this.$val.DataRef(); };
185581
- ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
185819
+ ptrType$2.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
185582
185820
  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: "DataRef", name: "DataRef", pkg: "", typ: $funcType([], [$Uint32], false)}];
185583
185821
  SWTFrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.SamsungWasmTCPConn, tag: ""}]);
185584
185822
  SWTFrame.init("github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: frame.FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "dataRef", name: "dataRef", embedded: false, exported: false, typ: $Uint32, tag: ""}]);
@@ -185601,7 +185839,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/samsungwasmtcp"]
185601
185839
  return $pkg;
185602
185840
  })();
185603
185841
  $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (function() {
185604
- var $pkg = {}, $init, general, jsdecoder, errs, jshelper, frame, samsungwasmtcp, sync, js, SamsungWasmDecoder, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, IsAvailable, NewDecoder;
185842
+ var $pkg = {}, $init, general, jsdecoder, errs, jshelper, frame, samsungwasmtcp, sync, js, SamsungWasmDecoder, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, IsAvailable, NewDecoder;
185605
185843
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
185606
185844
  jsdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder/jsdecoder"];
185607
185845
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -185623,8 +185861,9 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (
185623
185861
  sliceType = $sliceType($emptyInterface);
185624
185862
  ptrType = $ptrType(js.Value);
185625
185863
  ptrType$1 = $ptrType(frame.Frame);
185626
- ptrType$2 = $ptrType(samsungwasmtcp.SWTFrame);
185627
- ptrType$3 = $ptrType(SamsungWasmDecoder);
185864
+ ptrType$2 = $ptrType(frame.JSFrame);
185865
+ ptrType$3 = $ptrType(samsungwasmtcp.SWTFrame);
185866
+ ptrType$4 = $ptrType(SamsungWasmDecoder);
185628
185867
  IsAvailable = function() {
185629
185868
  return jsdecoder.IsAvailable();
185630
185869
  };
@@ -185635,7 +185874,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (
185635
185874
  };
185636
185875
  $pkg.NewDecoder = NewDecoder;
185637
185876
  SamsungWasmDecoder.ptr.prototype.Write = function(someFrame) {
185638
- var {$24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _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, _tuple$1, decodePromise, decodePromise$1, decodeResult, decodeResult$1, err, err$1, frame$1, frame$2, jsSamsungWasmDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s, $r, $c} = $restore(this, {someFrame});
185877
+ var {$24r, $24r$1, $24r$2, $24r$3, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, currentFrame, currentFrame$1, currentFrame$2, decodePromise, decodeResult, err, jsSamsungWasmDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s, $r, $c} = $restore(this, {someFrame});
185639
185878
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185640
185879
  m = this;
185641
185880
  jsSamsungWasmDecoder = jsdecoder.GetJsSamsungWasmDecoder();
@@ -185645,73 +185884,89 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (
185645
185884
  _ref = someFrame;
185646
185885
  /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 1; continue; }
185647
185886
  /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 2; continue; }
185648
- /* */ $s = 3; continue;
185887
+ /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 3; continue; }
185888
+ /* */ $s = 4; continue;
185649
185889
  /* if ($assertType(_ref, ptrType$1, true)[1]) { */ case 1:
185650
- frame$1 = _ref.$val;
185651
- nal = frame$1.Buffer();
185652
- _r = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185890
+ currentFrame = _ref.$val;
185891
+ nal = currentFrame.Buffer();
185892
+ _r = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185653
185893
  pictureBuffer = $clone(_r, js.Value);
185654
- _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185894
+ _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185655
185895
  pictureUint8Array = $clone(_r$1, js.Value);
185656
185896
  js.CopyBytesToJS($clone(pictureUint8Array, js.Value), nal);
185657
- $r = m.mutexDecode.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185658
- _r$2 = $clone(jsSamsungWasmDecoder, js.Value).Call("decodeAndRender", new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
185659
- decodePromise = $clone(_r$2, js.Value);
185660
- _r$3 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185661
- _tuple = _r$3;
185897
+ _r$2 = m.decodeBuffer(jsSamsungWasmDecoder, $clone(pictureBuffer, js.Value)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
185898
+ $24r = _r$2;
185899
+ $s = 8; case 8: return $24r;
185900
+ /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 2:
185901
+ currentFrame$1 = _ref.$val;
185902
+ _r$3 = m.decodeBuffer(jsSamsungWasmDecoder, $clone(currentFrame$1.JSBuffer(), js.Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
185903
+ $24r$1 = _r$3;
185904
+ $s = 10; case 10: return $24r$1;
185905
+ /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 3:
185906
+ currentFrame$2 = _ref.$val;
185907
+ $r = m.mutexDecode.Lock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185908
+ _r$4 = $clone(jsSamsungWasmDecoder, js.Value).Call("decodeAndRenderRef", new sliceType([new $Uint32(currentFrame$2.DataRef())])); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185909
+ decodePromise = $clone(_r$4, js.Value);
185910
+ _r$5 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185911
+ _tuple = _r$5;
185662
185912
  decodeResult = _tuple[0];
185663
185913
  err = _tuple[1];
185664
- $r = m.mutexDecode.Unlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185665
- /* */ if (!(err === ptrType.nil)) { $s = 10; continue; }
185666
- /* */ $s = 11; continue;
185667
- /* if (!(err === ptrType.nil)) { */ case 10:
185668
- _r$4 = jshelper.GetError(err); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
185669
- _r$5 = _r$4.Error(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185670
- _arg = new $String(_r$5);
185671
- _r$6 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
185672
- $24r = _r$6;
185673
- $s = 15; case 15: return $24r;
185674
- /* } */ case 11:
185675
- /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 16; continue; }
185676
- /* */ $s = 17; continue;
185677
- /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 16:
185678
- _r$7 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
185679
- $24r$1 = _r$7;
185680
- $s = 19; case 19: return $24r$1;
185681
- /* } */ case 17:
185682
- $s = 3; continue;
185683
- /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 2:
185684
- frame$2 = _ref.$val;
185685
- $r = m.mutexDecode.Lock(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185686
- _r$8 = $clone(jsSamsungWasmDecoder, js.Value).Call("decodeAndRenderRef", new sliceType([new $Uint32(frame$2.DataRef())])); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
185687
- decodePromise$1 = $clone(_r$8, js.Value);
185688
- _r$9 = jshelper.Await($clone(decodePromise$1, js.Value)); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
185689
- _tuple$1 = _r$9;
185690
- decodeResult$1 = _tuple$1[0];
185691
- err$1 = _tuple$1[1];
185692
- $r = m.mutexDecode.Unlock(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185693
- /* */ if (!(err$1 === ptrType.nil)) { $s = 24; continue; }
185694
- /* */ $s = 25; continue;
185695
- /* if (!(err$1 === ptrType.nil)) { */ case 24:
185696
- _r$10 = jshelper.GetError(err$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
185697
- _r$11 = _r$10.Error(); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
185698
- _arg$1 = new $String(_r$11);
185699
- _r$12 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg$1])); /* */ $s = 28; case 28: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
185700
- $24r$2 = _r$12;
185701
- $s = 29; case 29: return $24r$2;
185702
- /* } */ case 25:
185703
- /* */ if (!(($clone(decodeResult$1, js.Value).Float() === 0))) { $s = 30; continue; }
185704
- /* */ $s = 31; continue;
185705
- /* if (!(($clone(decodeResult$1, js.Value).Float() === 0))) { */ case 30:
185706
- _r$13 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult$1, js.Value).Float())])); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
185707
- $24r$3 = _r$13;
185708
- $s = 33; case 33: return $24r$3;
185709
- /* } */ case 31:
185710
- /* } */ case 3:
185914
+ $r = m.mutexDecode.Unlock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185915
+ /* */ if (!(err === ptrType.nil)) { $s = 15; continue; }
185916
+ /* */ $s = 16; continue;
185917
+ /* if (!(err === ptrType.nil)) { */ case 15:
185918
+ _r$6 = jshelper.GetError(err); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
185919
+ _r$7 = _r$6.Error(); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
185920
+ _arg = new $String(_r$7);
185921
+ _r$8 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
185922
+ $24r$2 = _r$8;
185923
+ $s = 20; case 20: return $24r$2;
185924
+ /* } */ case 16:
185925
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 21; continue; }
185926
+ /* */ $s = 22; continue;
185927
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 21:
185928
+ _r$9 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
185929
+ $24r$3 = _r$9;
185930
+ $s = 24; case 24: return $24r$3;
185931
+ /* } */ case 22:
185932
+ /* } */ case 4:
185711
185933
  $s = -1; return $ifaceNil;
185712
- /* */ } return; } var $f = {$blk: SamsungWasmDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _arg$1, _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, _tuple$1, decodePromise, decodePromise$1, decodeResult, decodeResult$1, err, err$1, frame$1, frame$2, jsSamsungWasmDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s};return $f;
185934
+ /* */ } return; } var $f = {$blk: SamsungWasmDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, currentFrame, currentFrame$1, currentFrame$2, decodePromise, decodeResult, err, jsSamsungWasmDecoder, m, nal, pictureBuffer, pictureUint8Array, someFrame, $s};return $f;
185713
185935
  };
185714
185936
  SamsungWasmDecoder.prototype.Write = function(someFrame) { return this.$val.Write(someFrame); };
185937
+ SamsungWasmDecoder.ptr.prototype.decodeBuffer = function(jsSamsungWasmDecoder, pictureBuffer) {
185938
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, decodePromise, decodeResult, err, jsSamsungWasmDecoder, m, pictureBuffer, $s, $r, $c} = $restore(this, {jsSamsungWasmDecoder, pictureBuffer});
185939
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
185940
+ m = this;
185941
+ $r = m.mutexDecode.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185942
+ _r = $clone(jsSamsungWasmDecoder, js.Value).Call("decodeAndRender", new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
185943
+ decodePromise = $clone(_r, js.Value);
185944
+ _r$1 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
185945
+ _tuple = _r$1;
185946
+ decodeResult = _tuple[0];
185947
+ err = _tuple[1];
185948
+ $r = m.mutexDecode.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185949
+ /* */ if (!(err === ptrType.nil)) { $s = 5; continue; }
185950
+ /* */ $s = 6; continue;
185951
+ /* if (!(err === ptrType.nil)) { */ case 5:
185952
+ _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; }
185953
+ _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; }
185954
+ _arg = new $String(_r$3);
185955
+ _r$4 = errs.Errorf("Failed to decode 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; }
185956
+ $24r = _r$4;
185957
+ $s = 10; case 10: return $24r;
185958
+ /* } */ case 6:
185959
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 11; continue; }
185960
+ /* */ $s = 12; continue;
185961
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 11:
185962
+ _r$5 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
185963
+ $24r$1 = _r$5;
185964
+ $s = 14; case 14: return $24r$1;
185965
+ /* } */ case 12:
185966
+ $s = -1; return $ifaceNil;
185967
+ /* */ } return; } var $f = {$blk: SamsungWasmDecoder.ptr.prototype.decodeBuffer, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, decodePromise, decodeResult, err, jsSamsungWasmDecoder, m, pictureBuffer, $s};return $f;
185968
+ };
185969
+ SamsungWasmDecoder.prototype.decodeBuffer = function(jsSamsungWasmDecoder, pictureBuffer) { return this.$val.decodeBuffer(jsSamsungWasmDecoder, pictureBuffer); };
185715
185970
  SamsungWasmDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
185716
185971
  var m, outputBuffer;
185717
185972
  m = this;
@@ -185723,7 +185978,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (
185723
185978
  m = this;
185724
185979
  };
185725
185980
  SamsungWasmDecoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
185726
- ptrType$3.methods = [{prop: "destroy", name: "destroy", pkg: "github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder", typ: $funcType([], [$error], false)}, {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)}];
185981
+ ptrType$4.methods = [{prop: "destroy", name: "destroy", pkg: "github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([frame.FrameInterface], [$error], false)}, {prop: "decodeBuffer", name: "decodeBuffer", pkg: "github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder", typ: $funcType([ptrType, js.Value], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
185727
185982
  SamsungWasmDecoder.init("github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder", [{prop: "mutexDecode", name: "mutexDecode", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "mutexGetPicture", name: "mutexGetPicture", embedded: false, exported: false, typ: sync.Mutex, tag: ""}]);
185728
185983
  $init = function() {
185729
185984
  $pkg.$init = function() {};
@@ -190153,7 +190408,7 @@ $packages["golang.org/x/exp/shiny/driver/internal/errscreen"] = (function() {
190153
190408
  return $pkg;
190154
190409
  })();
190155
190410
  $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190156
- var $pkg = {}, $init, fmt, errscreen, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, YCbCrJS, BufferImpl, sliceType, ptrType, ptrType$1, funcType, arrayType, ptrType$2, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, newWindow, newScreenImpl, Main, main, newBuffer;
190411
+ var $pkg = {}, $init, fmt, errscreen, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, YCbCrJS, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, ptrType$4, sliceType$1, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, newWindow, newScreenImpl, Main, main, newBuffer;
190157
190412
  fmt = $packages["fmt"];
190158
190413
  errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
190159
190414
  dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
@@ -190167,12 +190422,12 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190167
190422
  windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "canvasdriver.windowImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(screen_, mutex_, canvasEl_, ctx2d_, released_, domEvents_, resizeCallback_) {
190168
190423
  this.$val = this;
190169
190424
  if (arguments.length === 0) {
190170
- this.screen = ptrType.nil;
190171
- this.mutex = ptrType$1.nil;
190425
+ this.screen = ptrType$1.nil;
190426
+ this.mutex = ptrType$2.nil;
190172
190427
  this.canvasEl = new js.Value.ptr(null, false, arrayType.zero());
190173
190428
  this.ctx2d = new js.Value.ptr(null, false, arrayType.zero());
190174
190429
  this.released = false;
190175
- this.domEvents = ptrType$2.nil;
190430
+ this.domEvents = ptrType$3.nil;
190176
190431
  this.resizeCallback = new js.Func.ptr(new js.Value.ptr(null, false, arrayType.zero()));
190177
190432
  return;
190178
190433
  }
@@ -190195,7 +190450,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190195
190450
  YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "canvasdriver.YCbCrJS", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(CanvasImageSource_) {
190196
190451
  this.$val = this;
190197
190452
  if (arguments.length === 0) {
190198
- this.CanvasImageSource = ptrType$5.nil;
190453
+ this.CanvasImageSource = ptrType$6.nil;
190199
190454
  return;
190200
190455
  }
190201
190456
  this.CanvasImageSource = CanvasImageSource_;
@@ -190203,13 +190458,13 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190203
190458
  BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "canvasdriver.BufferImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(screen_, size_, mutex_, released_, rgba_, ycbcr_, ycbcrJS_) {
190204
190459
  this.$val = this;
190205
190460
  if (arguments.length === 0) {
190206
- this.screen = ptrType.nil;
190461
+ this.screen = ptrType$1.nil;
190207
190462
  this.size = new image.Point.ptr(0, 0);
190208
- this.mutex = ptrType$1.nil;
190463
+ this.mutex = ptrType$2.nil;
190209
190464
  this.released = false;
190210
190465
  this.rgba = new image.RGBA.ptr(sliceType$1.nil, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
190211
190466
  this.ycbcr = new image.YCbCr.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
190212
- this.ycbcrJS = ptrType$4.nil;
190467
+ this.ycbcrJS = ptrType$5.nil;
190213
190468
  return;
190214
190469
  }
190215
190470
  this.screen = screen_;
@@ -190221,31 +190476,50 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190221
190476
  this.ycbcrJS = ycbcrJS_;
190222
190477
  });
190223
190478
  sliceType = $sliceType($emptyInterface);
190224
- ptrType = $ptrType(screenImpl);
190225
- ptrType$1 = $ptrType(sync.Mutex);
190479
+ ptrType = $ptrType(screen.NewWindowOptions);
190480
+ ptrType$1 = $ptrType(screenImpl);
190481
+ ptrType$2 = $ptrType(sync.Mutex);
190226
190482
  funcType = $funcType([], [], false);
190227
190483
  arrayType = $arrayType(funcType, 0);
190228
- ptrType$2 = $ptrType(dom.DomEvents);
190229
- ptrType$3 = $ptrType(BufferImpl);
190484
+ ptrType$3 = $ptrType(dom.DomEvents);
190485
+ ptrType$4 = $ptrType(BufferImpl);
190230
190486
  sliceType$1 = $sliceType($Uint8);
190231
- ptrType$4 = $ptrType(YCbCrJS);
190232
- ptrType$5 = $ptrType(js.Value);
190233
- ptrType$6 = $ptrType(screen.DrawOptions);
190234
- ptrType$7 = $ptrType(windowImpl);
190235
- ptrType$8 = $ptrType(screen.NewWindowOptions);
190487
+ ptrType$5 = $ptrType(YCbCrJS);
190488
+ ptrType$6 = $ptrType(js.Value);
190489
+ ptrType$7 = $ptrType(screen.DrawOptions);
190490
+ ptrType$8 = $ptrType(windowImpl);
190236
190491
  ptrType$9 = $ptrType(image.RGBA);
190237
190492
  ptrType$10 = $ptrType(image.YCbCr);
190238
190493
  newWindow = function(screen$1, opts) {
190239
- var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, adaptCanvas, canvasEl, ctx2d, domEvents, opts, resizeCallback, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
190494
+ var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, adaptCanvas, canvasEl, ctx2d, domEvents, hasGeometry, opts, resizeCallback, screen$1, style, w, $s, $r, $c} = $restore(this, {screen$1, opts});
190240
190495
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190241
190496
  adaptCanvas = [adaptCanvas];
190242
190497
  canvasEl = [canvasEl];
190498
+ hasGeometry = [hasGeometry];
190243
190499
  _r = $clone(screen$1.doc, js.Value).Call("createElement", new sliceType([new $String("canvas")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190244
190500
  canvasEl[0] = $clone(_r, js.Value);
190245
190501
  _r$1 = $clone($clone(screen$1.doc, js.Value).Get("body"), js.Value).Call("appendChild", new sliceType([new canvasEl[0].constructor.elem(canvasEl[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190246
190502
  _r$1;
190247
- adaptCanvas[0] = (function(adaptCanvas, canvasEl) { return function() {
190503
+ hasGeometry[0] = !(opts === ptrType.nil) && opts.Width > 0 && opts.Height > 0;
190504
+ /* */ if (hasGeometry[0]) { $s = 3; continue; }
190505
+ /* */ $s = 4; continue;
190506
+ /* if (hasGeometry[0]) { */ case 3:
190507
+ style = $clone($clone(canvasEl[0], js.Value).Get("style"), js.Value);
190508
+ $clone(style, js.Value).Set("position", new $String("absolute"));
190509
+ _r$2 = fmt.Sprintf("%dpx", new sliceType([new $Int(opts.X)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190510
+ _arg = new $String(_r$2);
190511
+ $r = $clone(style, js.Value).Set("left", _arg); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190512
+ _r$3 = fmt.Sprintf("%dpx", new sliceType([new $Int(opts.Y)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190513
+ _arg$1 = new $String(_r$3);
190514
+ $r = $clone(style, js.Value).Set("top", _arg$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190515
+ $clone(canvasEl[0], js.Value).Set("width", new $Int(opts.Width));
190516
+ $clone(canvasEl[0], js.Value).Set("height", new $Int(opts.Height));
190517
+ /* } */ case 4:
190518
+ adaptCanvas[0] = (function(adaptCanvas, canvasEl, hasGeometry) { return function() {
190248
190519
  var height, scale, width;
190520
+ if (hasGeometry[0]) {
190521
+ return;
190522
+ }
190249
190523
  scale = dom.GetBrowserZoomRatio();
190250
190524
  width = (((dom.GetDocWidth()) / scale >> 0));
190251
190525
  if (!(($clone($clone(canvasEl[0], js.Value).Get("width"), js.Value).Int() === width))) {
@@ -190255,47 +190529,47 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190255
190529
  if (!(($clone($clone(canvasEl[0], js.Value).Get("height"), js.Value).Int() === height))) {
190256
190530
  $clone(canvasEl[0], js.Value).Set("height", new $Int(height));
190257
190531
  }
190258
- }; })(adaptCanvas, canvasEl);
190259
- $r = adaptCanvas[0](); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190260
- resizeCallback = $clone(js.FuncOf((function(adaptCanvas, canvasEl) { return function $b(this$1, args) {
190532
+ }; })(adaptCanvas, canvasEl, hasGeometry);
190533
+ $r = adaptCanvas[0](); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190534
+ resizeCallback = $clone(js.FuncOf((function(adaptCanvas, canvasEl, hasGeometry) { return function $b(this$1, args) {
190261
190535
  var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
190262
190536
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190263
190537
  $r = adaptCanvas[0](); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190264
190538
  $s = -1; return $ifaceNil;
190265
190539
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
190266
- }; })(adaptCanvas, canvasEl)), js.Func);
190267
- _r$2 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new resizeCallback.constructor.elem(resizeCallback)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190268
- _r$2;
190269
- /* */ if (!((opts.Width === 0))) { $s = 5; continue; }
190270
- /* */ $s = 6; continue;
190271
- /* if (!((opts.Width === 0))) { */ case 5:
190272
- $r = dom.SetWindowWidth(opts.Width); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190273
- /* } */ case 6:
190274
- /* */ if (!((opts.Height === 0))) { $s = 8; continue; }
190275
- /* */ $s = 9; continue;
190276
- /* if (!((opts.Height === 0))) { */ case 8:
190277
- $r = dom.SetWindowHeight(opts.Height); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190278
- /* } */ case 9:
190279
- /* */ if (!(opts.Title === "")) { $s = 11; continue; }
190540
+ }; })(adaptCanvas, canvasEl, hasGeometry)), js.Func);
190541
+ _r$4 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new resizeCallback.constructor.elem(resizeCallback)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190542
+ _r$4;
190543
+ /* */ if (!((opts.Width === 0))) { $s = 11; continue; }
190280
190544
  /* */ $s = 12; continue;
190281
- /* if (!(opts.Title === "")) { */ case 11:
190282
- _r$3 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType([new $String("title")])); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190283
- _r$4 = $clone(_r$3, js.Value).Call("item", new sliceType([new $Int(0)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190284
- $r = $clone(_r$4, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190545
+ /* if (!((opts.Width === 0))) { */ case 11:
190546
+ $r = dom.SetWindowWidth(opts.Width); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190285
190547
  /* } */ case 12:
190286
- _r$5 = $clone(canvasEl[0], js.Value).Call("getContext", new sliceType([new $String("2d")])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190287
- ctx2d = $clone(_r$5, js.Value);
190288
- /* */ if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { $s = 17; continue; }
190548
+ /* */ if (!((opts.Height === 0))) { $s = 14; continue; }
190549
+ /* */ $s = 15; continue;
190550
+ /* if (!((opts.Height === 0))) { */ case 14:
190551
+ $r = dom.SetWindowHeight(opts.Height); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190552
+ /* } */ case 15:
190553
+ /* */ if (!(opts.Title === "")) { $s = 17; continue; }
190289
190554
  /* */ $s = 18; continue;
190290
- /* if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { */ case 17:
190291
- _r$6 = fmt.Errorf("Cannot get 2d context of canvas", sliceType.nil); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190292
- $panic(_r$6);
190555
+ /* if (!(opts.Title === "")) { */ case 17:
190556
+ _r$5 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType([new $String("title")])); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190557
+ _r$6 = $clone(_r$5, js.Value).Call("item", new sliceType([new $Int(0)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190558
+ $r = $clone(_r$6, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190293
190559
  /* } */ case 18:
190560
+ _r$7 = $clone(canvasEl[0], js.Value).Call("getContext", new sliceType([new $String("2d")])); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
190561
+ ctx2d = $clone(_r$7, js.Value);
190562
+ /* */ if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { $s = 23; continue; }
190563
+ /* */ $s = 24; continue;
190564
+ /* if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { */ case 23:
190565
+ _r$8 = fmt.Errorf("Cannot get 2d context of canvas", sliceType.nil); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
190566
+ $panic(_r$8);
190567
+ /* } */ case 24:
190294
190568
  domEvents = dom.NewDomEvents();
190295
- w = new windowImpl.ptr(screen$1, ptrType$1.nil, $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func));
190296
- $r = domEvents.BindEvents(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190569
+ w = new windowImpl.ptr(screen$1, ptrType$2.nil, $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func));
190570
+ $r = domEvents.BindEvents(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190297
190571
  $s = -1; return w;
190298
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, adaptCanvas, canvasEl, ctx2d, domEvents, opts, resizeCallback, screen$1, w, $s};return $f;
190572
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, adaptCanvas, canvasEl, ctx2d, domEvents, hasGeometry, opts, resizeCallback, screen$1, style, w, $s};return $f;
190299
190573
  };
190300
190574
  windowImpl.ptr.prototype.Release = function() {
190301
190575
  var {_r, _r$1, w, x, $s, $deferred, $r, $c} = $restore(this, {});
@@ -190377,9 +190651,9 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190377
190651
  $s = -1; return;
190378
190652
  }
190379
190653
  _ref = src;
190380
- /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 1; continue; }
190654
+ /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 1; continue; }
190381
190655
  /* */ $s = 2; continue;
190382
- /* if ($assertType(_ref, ptrType$3, true)[1]) { */ case 1:
190656
+ /* if ($assertType(_ref, ptrType$4, true)[1]) { */ case 1:
190383
190657
  jsSrc = _ref.$val;
190384
190658
  _r = $clone(w.ctx2d, js.Value).Call("drawImage", new sliceType([(x = jsSrc.YCbCrJS().CanvasImageSource, new x.constructor.elem(x)), new $Int(0), new $Int(0)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190385
190659
  _r;
@@ -190501,7 +190775,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190501
190775
  newBuffer = function(screen$1, size) {
190502
190776
  var _q, _q$1, _q$2, b, rect, screen$1, size;
190503
190777
  rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(size, image.Point));
190504
- b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$1, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$1, ($imul(size.X, size.Y))), $makeSlice(sliceType$1, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$1, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$4.nil);
190778
+ b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$1, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$1, ($imul(size.X, size.Y))), $makeSlice(sliceType$1, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$1, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$5.nil);
190505
190779
  return b;
190506
190780
  };
190507
190781
  BufferImpl.ptr.prototype.Size = function() {
@@ -190531,8 +190805,8 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190531
190805
  BufferImpl.ptr.prototype.YCbCrJS = function() {
190532
190806
  var b;
190533
190807
  b = this;
190534
- if (b.ycbcrJS === ptrType$4.nil) {
190535
- b.ycbcrJS = new YCbCrJS.ptr(ptrType$5.nil);
190808
+ if (b.ycbcrJS === ptrType$5.nil) {
190809
+ b.ycbcrJS = new YCbCrJS.ptr(ptrType$6.nil);
190536
190810
  }
190537
190811
  return b.ycbcrJS;
190538
190812
  };
@@ -190553,13 +190827,13 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190553
190827
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BufferImpl.ptr.prototype.Release, $c: true, $r, b, $s, $deferred};return $f; } }
190554
190828
  };
190555
190829
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
190556
- ptrType$7.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], 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)}];
190557
- 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)}];
190558
- ptrType$3.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$9], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$4], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
190559
- windowImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "ctx2d", name: "ctx2d", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "resizeCallback", name: "resizeCallback", embedded: false, exported: false, typ: js.Func, tag: ""}]);
190830
+ ptrType$8.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], 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$7], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$7], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$7], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$7], [], false)}];
190831
+ ptrType$1.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], [screen.Window, $error], false)}];
190832
+ 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$9], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$5], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
190833
+ windowImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "ctx2d", name: "ctx2d", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "resizeCallback", name: "resizeCallback", embedded: false, exported: false, typ: js.Func, tag: ""}]);
190560
190834
  screenImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190561
- YCbCrJS.init("", [{prop: "CanvasImageSource", name: "CanvasImageSource", embedded: false, exported: true, typ: ptrType$5, tag: ""}]);
190562
- BufferImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$4, tag: ""}]);
190835
+ YCbCrJS.init("", [{prop: "CanvasImageSource", name: "CanvasImageSource", embedded: false, exported: true, typ: ptrType$6, tag: ""}]);
190836
+ BufferImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$5, tag: ""}]);
190563
190837
  $init = function() {
190564
190838
  $pkg.$init = function() {};
190565
190839
  /* */ 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:
@@ -190579,8 +190853,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190579
190853
  return $pkg;
190580
190854
  })();
190581
190855
  $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function() {
190582
- var $pkg = {}, $init, hex, webgl, general, errs, jshelper, frame, canvasdriver, image, js, WebCodecsDecoder, ptrType, sliceType, ptrType$1, sliceType$1, ptrType$2, chanType, chanType$1, funcType, IsAvailable, NewDecoder;
190583
- hex = $packages["encoding/hex"];
190856
+ var $pkg = {}, $init, webgl, general, errs, jshelper, frame, canvasdriver, image, js, WebCodecsDecoder, ptrType, sliceType, sliceType$1, funcType, arrayType, ptrType$1, ptrType$2, ptrType$3, chanType, chanType$1, IsAvailable, NewDecoder, byteToHex;
190584
190857
  webgl = $packages["github.com/nuberu/webgl"];
190585
190858
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
190586
190859
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -190605,12 +190878,14 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190605
190878
  });
190606
190879
  ptrType = $ptrType(js.Value);
190607
190880
  sliceType = $sliceType($emptyInterface);
190608
- ptrType$1 = $ptrType(canvasdriver.BufferImpl);
190609
190881
  sliceType$1 = $sliceType($Uint8);
190610
- ptrType$2 = $ptrType(WebCodecsDecoder);
190882
+ funcType = $funcType([], [], false);
190883
+ arrayType = $arrayType(funcType, 0);
190884
+ ptrType$1 = $ptrType(frame.JSFrame);
190885
+ ptrType$2 = $ptrType(canvasdriver.BufferImpl);
190886
+ ptrType$3 = $ptrType(WebCodecsDecoder);
190611
190887
  chanType = $chanType(js.Value, false, false);
190612
190888
  chanType$1 = $chanType($error, false, false);
190613
- funcType = $funcType([], [], false);
190614
190889
  IsAvailable = function() {
190615
190890
  return !$clone($clone(js.Global(), js.Value).Get("VideoDecoder"), js.Value).IsUndefined();
190616
190891
  };
@@ -190651,7 +190926,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190651
190926
  $clone(init, js.Value).Set("error", new errorCallback[0].constructor.elem(errorCallback[0]));
190652
190927
  _r$1 = $clone($clone(js.Global(), js.Value).Get("VideoDecoder"), js.Value).New(new sliceType([new init.constructor.elem(init)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190653
190928
  jsVideoDecoder[0] = $clone(_r$1, js.Value);
190654
- h264CodecName = d[0].detectCodecName(nal);
190929
+ h264CodecName = d[0].detectCodecName($clone(nal, js.Value));
190655
190930
  _r$2 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190656
190931
  config = $clone(_r$2, js.Value);
190657
190932
  $clone(config, js.Value).Set("codec", new $String(h264CodecName));
@@ -190670,57 +190945,78 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190670
190945
  };
190671
190946
  WebCodecsDecoder.prototype.configure = function(nal) { return this.$val.configure(nal); };
190672
190947
  WebCodecsDecoder.ptr.prototype.detectCodecName = function(nal) {
190673
- var codecName, d, nal;
190948
+ var d, nal;
190674
190949
  d = this;
190675
- codecName = "avc1." + hex.EncodeToString($subslice(nal, 5, 8));
190676
- return codecName;
190950
+ return "avc1." + byteToHex($clone($clone(nal, js.Value).Index(5), js.Value).Int()) + byteToHex($clone($clone(nal, js.Value).Index(6), js.Value).Int()) + byteToHex($clone($clone(nal, js.Value).Index(7), js.Value).Int());
190677
190951
  };
190678
190952
  WebCodecsDecoder.prototype.detectCodecName = function(nal) { return this.$val.detectCodecName(nal); };
190679
- WebCodecsDecoder.ptr.prototype.Write = function(frame$1) {
190680
- var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, chunk, chunkOpts, d, errDec, frame$1, frameData, frameType, nal, $s, $r, $c} = $restore(this, {frame$1});
190953
+ byteToHex = function(value) {
190954
+ var value;
190955
+ return ($bytesToString(new sliceType$1(["0123456789abcdef".charCodeAt((((value >> 4 >> 0)) & 15)), "0123456789abcdef".charCodeAt((value & 15))])));
190956
+ };
190957
+ WebCodecsDecoder.ptr.prototype.Write = function(someFrame) {
190958
+ var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, chunk, chunkOpts, currentFrame, currentFrame$1, d, errDec, frameData, frameType, someFrame, x, $s, $r, $c} = $restore(this, {someFrame});
190681
190959
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190682
190960
  d = this;
190683
- _r = frame$1.Buffer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190684
- nal = _r;
190961
+ frameData = new js.Value.ptr(null, false, arrayType.zero());
190962
+ _ref = someFrame;
190963
+ /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 1; continue; }
190964
+ /* */ $s = 2; continue;
190965
+ /* if ($assertType(_ref, ptrType$1, true)[1]) { */ case 1:
190966
+ currentFrame = _ref.$val;
190967
+ _r = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([(x = currentFrame.JSBuffer(), new x.constructor.elem(x))])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190968
+ js.Value.copy(frameData, _r);
190969
+ $s = 3; continue;
190970
+ /* } else { */ case 2:
190971
+ currentFrame$1 = _ref;
190972
+ _r$1 = currentFrame$1.Buffer(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190973
+ _r$2 = webgl.TypedArrayOf(_r$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190974
+ js.Value.copy(frameData, _r$2);
190975
+ /* } */ case 3:
190976
+ /* */ if ($clone($clone(frameData, js.Value).Get("byteLength"), js.Value).Int() < 8) { $s = 7; continue; }
190977
+ /* */ $s = 8; continue;
190978
+ /* if ($clone($clone(frameData, js.Value).Get("byteLength"), js.Value).Int() < 8) { */ case 7:
190979
+ _r$3 = errs.Errorf("H264 frame is too short to detect codec", sliceType.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190980
+ $24r = _r$3;
190981
+ $s = 10; case 10: return $24r;
190982
+ /* } */ case 8:
190685
190983
  frameType = "delta";
190686
190984
  frameType = "key";
190687
- /* */ if (d.jsVideoDecoder === ptrType.nil) { $s = 2; continue; }
190688
- /* */ $s = 3; continue;
190689
- /* if (d.jsVideoDecoder === ptrType.nil) { */ case 2:
190690
- $r = d.configure(nal); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190691
- /* } */ case 3:
190692
- /* */ if (d.jsVideoDecoder === ptrType.nil) { $s = 5; continue; }
190693
- /* */ $s = 6; continue;
190694
- /* if (d.jsVideoDecoder === ptrType.nil) { */ case 5:
190695
- _r$1 = errs.Errorf("VideoDecoder was not properly configured", sliceType.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190696
- $24r = _r$1;
190697
- $s = 8; case 8: return $24r;
190698
- /* } */ case 6:
190699
- _r$2 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190700
- chunkOpts = $clone(_r$2, js.Value);
190701
- _r$3 = webgl.TypedArrayOf(nal); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190702
- frameData = $clone(_r$3, js.Value);
190985
+ /* */ if (d.jsVideoDecoder === ptrType.nil) { $s = 11; continue; }
190986
+ /* */ $s = 12; continue;
190987
+ /* if (d.jsVideoDecoder === ptrType.nil) { */ case 11:
190988
+ $r = d.configure($clone(frameData, js.Value)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190989
+ /* } */ case 12:
190990
+ /* */ if (d.jsVideoDecoder === ptrType.nil) { $s = 14; continue; }
190991
+ /* */ $s = 15; continue;
190992
+ /* if (d.jsVideoDecoder === ptrType.nil) { */ case 14:
190993
+ _r$4 = errs.Errorf("VideoDecoder was not properly configured", sliceType.nil); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190994
+ $24r$1 = _r$4;
190995
+ $s = 17; case 17: return $24r$1;
190996
+ /* } */ case 15:
190997
+ _r$5 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190998
+ chunkOpts = $clone(_r$5, js.Value);
190703
190999
  $clone(chunkOpts, js.Value).Set("type", new $String(frameType));
190704
191000
  $clone(chunkOpts, js.Value).Set("data", new frameData.constructor.elem(frameData));
190705
191001
  $clone(chunkOpts, js.Value).Set("timestamp", new $Int(0));
190706
- _r$4 = $clone($clone(js.Global(), js.Value).Get("EncodedVideoChunk"), js.Value).New(new sliceType([new chunkOpts.constructor.elem(chunkOpts)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190707
- chunk = $clone(_r$4, js.Value);
190708
- _r$5 = d.jsSafeDecode($clone(chunk, js.Value)); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190709
- errDec = _r$5;
190710
- /* */ if (!($interfaceIsEqual(errDec, $ifaceNil))) { $s = 13; continue; }
190711
- /* */ $s = 14; continue;
190712
- /* if (!($interfaceIsEqual(errDec, $ifaceNil))) { */ case 13:
190713
- /* */ if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { $s = 15; continue; }
190714
- /* */ $s = 16; continue;
190715
- /* if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { */ case 15:
190716
- $r = d.releaseVideoDecoder(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190717
- /* } */ case 16:
191002
+ _r$6 = $clone($clone(js.Global(), js.Value).Get("EncodedVideoChunk"), js.Value).New(new sliceType([new chunkOpts.constructor.elem(chunkOpts)])); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
191003
+ chunk = $clone(_r$6, js.Value);
191004
+ _r$7 = d.jsSafeDecode($clone(chunk, js.Value)); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
191005
+ errDec = _r$7;
191006
+ /* */ if (!($interfaceIsEqual(errDec, $ifaceNil))) { $s = 21; continue; }
191007
+ /* */ $s = 22; continue;
191008
+ /* if (!($interfaceIsEqual(errDec, $ifaceNil))) { */ case 21:
191009
+ /* */ if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { $s = 23; continue; }
191010
+ /* */ $s = 24; continue;
191011
+ /* if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { */ case 23:
191012
+ $r = d.releaseVideoDecoder(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191013
+ /* } */ case 24:
190718
191014
  $s = -1; return errDec;
190719
- /* } */ case 14:
191015
+ /* } */ case 22:
190720
191016
  $s = -1; return $ifaceNil;
190721
- /* */ } return; } var $f = {$blk: WebCodecsDecoder.ptr.prototype.Write, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, chunk, chunkOpts, d, errDec, frame$1, frameData, frameType, nal, $s};return $f;
191017
+ /* */ } return; } var $f = {$blk: WebCodecsDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, chunk, chunkOpts, currentFrame, currentFrame$1, d, errDec, frameData, frameType, someFrame, x, $s};return $f;
190722
191018
  };
190723
- WebCodecsDecoder.prototype.Write = function(frame$1) { return this.$val.Write(frame$1); };
191019
+ WebCodecsDecoder.prototype.Write = function(someFrame) { return this.$val.Write(someFrame); };
190724
191020
  WebCodecsDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
190725
191021
  var {_r, _r$1, _selection, d, displayHeight, displayWidth, err, frame$1, output, outputBuffer, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {outputBuffer});
190726
191022
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -190736,7 +191032,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190736
191032
  err = _selection[1][0];
190737
191033
  $s = -1; return err;
190738
191034
  }
190739
- ycbcrJSImg = $assertType(outputBuffer, ptrType$1).YCbCrJS();
191035
+ ycbcrJSImg = $assertType(outputBuffer, ptrType$2).YCbCrJS();
190740
191036
  ycbcrJSImg.CanvasImageSource = frame$1;
190741
191037
  displayWidth = $clone($clone(frame$1, js.Value).Get("displayWidth"), js.Value).Int();
190742
191038
  displayHeight = $clone($clone(frame$1, js.Value).Get("displayHeight"), js.Value).Int();
@@ -190752,7 +191048,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190752
191048
  var {_r, m, outputBuffer, ycbcrJSImg, $s, $r, $c} = $restore(this, {outputBuffer});
190753
191049
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190754
191050
  m = this;
190755
- ycbcrJSImg = $assertType(outputBuffer, ptrType$1).YCbCrJS();
191051
+ ycbcrJSImg = $assertType(outputBuffer, ptrType$2).YCbCrJS();
190756
191052
  /* */ if (!(ycbcrJSImg.CanvasImageSource === ptrType.nil)) { $s = 1; continue; }
190757
191053
  /* */ $s = 2; continue;
190758
191054
  /* if (!(ycbcrJSImg.CanvasImageSource === ptrType.nil)) { */ case 1:
@@ -190790,20 +191086,19 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
190790
191086
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { var $f = {$blk: WebCodecsDecoder.ptr.prototype.jsSafeDecode, $c: true, $r, $24r, _r, chunk, d, err, $s, $deferred};return $f; } }
190791
191087
  };
190792
191088
  WebCodecsDecoder.prototype.jsSafeDecode = function(chunk) { return this.$val.jsSafeDecode(chunk); };
190793
- ptrType$2.methods = [{prop: "configure", name: "configure", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([sliceType$1], [], false)}, {prop: "detectCodecName", name: "detectCodecName", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([sliceType$1], [$String], false)}, {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)}, {prop: "jsSafeDecode", name: "jsSafeDecode", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([js.Value], [$error], false)}];
191089
+ ptrType$3.methods = [{prop: "configure", name: "configure", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([js.Value], [], false)}, {prop: "detectCodecName", name: "detectCodecName", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([js.Value], [$String], false)}, {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)}, {prop: "jsSafeDecode", name: "jsSafeDecode", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([js.Value], [$error], false)}];
190794
191090
  WebCodecsDecoder.init("github.com/supraio/client-daemon/pkg/decoder/webcodecs", [{prop: "jsVideoDecoder", name: "jsVideoDecoder", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "outputChan", name: "outputChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "errorChan", name: "errorChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "releaseVideoDecoder", name: "releaseVideoDecoder", embedded: false, exported: false, typ: funcType, tag: ""}]);
190795
191091
  $init = function() {
190796
191092
  $pkg.$init = function() {};
190797
191093
  /* */ 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:
190798
- $r = hex.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190799
- $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190800
- $r = general.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190801
- $r = errs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190802
- $r = jshelper.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190803
- $r = frame.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190804
- $r = canvasdriver.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190805
- $r = image.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190806
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191094
+ $r = webgl.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191095
+ $r = general.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191096
+ $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191097
+ $r = jshelper.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191098
+ $r = frame.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191099
+ $r = canvasdriver.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191100
+ $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191101
+ $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190807
191102
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190808
191103
  };
190809
191104
  $pkg.$init = $init;
@@ -192500,11 +192795,14 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
192500
192795
  return $pkg;
192501
192796
  })();
192502
192797
  $packages["github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker"] = (function() {
192503
- var $pkg = {}, $init, netpacket, frame, netframe, js, FrameCollector, ptrType, sliceType, sliceType$1, funcType, ptrType$1, init, NewFrameCollector;
192798
+ var $pkg = {}, $init, errs, netpacket, frame, netframe, math, js, time, FrameCollector, ptrType, sliceType, funcType, ptrType$1, init, NewFrameCollector;
192799
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
192504
192800
  netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
192505
192801
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
192506
192802
  netframe = $packages["github.com/supraio/client-daemon/pkg/render/netframe"];
192803
+ math = $packages["math"];
192507
192804
  js = $packages["syscall/js"];
192805
+ time = $packages["time"];
192508
192806
  FrameCollector = $pkg.FrameCollector = $newType(0, $kindStruct, "jswebsocketworker.FrameCollector", true, "github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker", true, function(conn_) {
192509
192807
  this.$val = this;
192510
192808
  if (arguments.length === 0) {
@@ -192514,8 +192812,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworke
192514
192812
  this.conn = conn_;
192515
192813
  });
192516
192814
  ptrType = $ptrType(netpacket.JsWebsocketWorkerConn);
192517
- sliceType = $sliceType($Uint8);
192518
- sliceType$1 = $sliceType($emptyInterface);
192815
+ sliceType = $sliceType($emptyInterface);
192519
192816
  funcType = $funcType([], [], false);
192520
192817
  ptrType$1 = $ptrType(FrameCollector);
192521
192818
  init = function() {
@@ -192532,48 +192829,66 @@ $packages["github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworke
192532
192829
  return new FrameCollector.ptr(conn);
192533
192830
  };
192534
192831
  $pkg.NewFrameCollector = NewFrameCollector;
192535
- FrameCollector.ptr.prototype.CollectFrame = function(startCb, endCb) {
192536
- var {$24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$2, _tuple, buffer, c, collectedFrame, data, endCb, err, frameLength, length, startCb, $s, $deferred, $r, $c} = $restore(this, {startCb, endCb});
192537
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
192832
+ FrameCollector.ptr.prototype.CollectFrame = function(param, param$1, durationCb) {
192833
+ var {$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, $r, $c} = $restore(this, {param, param$1, durationCb});
192834
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192538
192835
  c = this;
192539
- $r = startCb(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192540
- $deferred.push([endCb, []]);
192541
- _r = c.conn.CollectFrame(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192836
+ _r = c.conn.CollectFrame(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192542
192837
  _tuple = _r;
192543
192838
  collectedFrame = _tuple[0];
192544
- err = _tuple[1];
192545
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
192546
- /* */ $s = 4; continue;
192547
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
192548
- $24r = [$ifaceNil, err];
192549
- $s = 5; case 5: return $24r;
192550
- /* } */ case 4:
192839
+ goReceivedAt = _tuple[1];
192840
+ err = _tuple[2];
192841
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
192842
+ $s = -1; return [$ifaceNil, err];
192843
+ }
192551
192844
  data = $clone($clone(collectedFrame, js.Value).Get("data"), js.Value);
192552
- length = $clone($clone(data, js.Value).Get("byteLength"), js.Value).Int();
192845
+ byteLength = $clone($clone(data, js.Value).Get("byteLength"), js.Value).Int();
192846
+ length = byteLength;
192553
192847
  frameLength = $clone($clone(collectedFrame, js.Value).Get("length"), js.Value);
192554
192848
  if (!$clone(frameLength, js.Value).IsUndefined() && !$clone(frameLength, js.Value).IsNull()) {
192555
192849
  length = $clone(frameLength, js.Value).Int();
192556
192850
  }
192557
- buffer = $makeSlice(sliceType, length);
192558
- _arg = buffer;
192559
- _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType$1([new data.constructor.elem(data), new $Int(0), new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192560
- _arg$1 = $clone(_r$1, js.Value);
192561
- _r$2 = js.CopyBytesToGo(_arg, _arg$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192562
- _r$2;
192563
- $24r$1 = [frame.NewFrame((($clone($clone(collectedFrame, js.Value).Get("frameType"), js.Value).Int() << 24 >>> 24)), buffer, (new $Uint64(0, $clone($clone(collectedFrame, js.Value).Get("timestamp"), js.Value).Float()))), $ifaceNil];
192564
- $s = 8; case 8: return $24r$1;
192565
- /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: FrameCollector.ptr.prototype.CollectFrame, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$2, _tuple, buffer, c, collectedFrame, data, endCb, err, frameLength, length, startCb, $s, $deferred};return $f; } }
192851
+ /* */ if (!((length === byteLength))) { $s = 2; continue; }
192852
+ /* */ $s = 3; continue;
192853
+ /* if (!((length === byteLength))) { */ case 2:
192854
+ _r$1 = errs.Errorf("Worker frame buffer length mismatch: expected %d, received %d", new sliceType([new $Int(length), new $Int(byteLength)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192855
+ $24r = [$ifaceNil, _r$1];
192856
+ $s = 5; case 5: return $24r;
192857
+ /* } */ case 3:
192858
+ firstPacketAtValue = $clone($clone(collectedFrame, js.Value).Get("firstPacketAt"), js.Value);
192859
+ /* */ if (!(($clone(firstPacketAtValue, js.Value).Type() === 3))) { $s = 6; continue; }
192860
+ /* */ $s = 7; continue;
192861
+ /* if (!(($clone(firstPacketAtValue, js.Value).Type() === 3))) { */ case 6:
192862
+ _r$2 = errs.Errorf("Worker frame is missing first packet timestamp", sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192863
+ $24r$1 = [$ifaceNil, _r$2];
192864
+ $s = 9; case 9: return $24r$1;
192865
+ /* } */ case 7:
192866
+ firstPacketAt = $clone(firstPacketAtValue, js.Value).Float();
192867
+ collectionDurationMs = goReceivedAt - firstPacketAt;
192868
+ /* */ if (math.IsNaN(collectionDurationMs) || math.IsInf(collectionDurationMs, 0) || collectionDurationMs < 0) { $s = 10; continue; }
192869
+ /* */ $s = 11; continue;
192870
+ /* if (math.IsNaN(collectionDurationMs) || math.IsInf(collectionDurationMs, 0) || collectionDurationMs < 0) { */ case 10:
192871
+ _r$3 = errs.Errorf("Invalid worker frame collection duration: %fms", new sliceType([new $Float64(collectionDurationMs)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192872
+ $24r$2 = [$ifaceNil, _r$3];
192873
+ $s = 13; case 13: return $24r$2;
192874
+ /* } */ case 11:
192875
+ $r = durationCb((new time.Duration(0, collectionDurationMs * 1e+06))); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192876
+ $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];
192877
+ /* */ } 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;
192566
192878
  };
192567
- FrameCollector.prototype.CollectFrame = function(startCb, endCb) { return this.$val.CollectFrame(startCb, endCb); };
192568
- ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType], [frame.FrameInterface, $error], false)}];
192879
+ FrameCollector.prototype.CollectFrame = function(param, param$1, durationCb) { return this.$val.CollectFrame(param, param$1, durationCb); };
192880
+ ptrType$1.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([funcType, funcType, netframe.FrameCollectionDurationCallback], [frame.FrameInterface, $error], false)}];
192569
192881
  FrameCollector.init("github.com/supraio/client-daemon/pkg/render/netframe/jswebsocketworker", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: ptrType, tag: ""}]);
192570
192882
  $init = function() {
192571
192883
  $pkg.$init = function() {};
192572
192884
  /* */ 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:
192573
- $r = netpacket.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192574
- $r = frame.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192575
- $r = netframe.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192576
- $r = js.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192885
+ $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192886
+ $r = netpacket.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192887
+ $r = frame.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192888
+ $r = netframe.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192889
+ $r = math.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192890
+ $r = js.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192891
+ $r = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192577
192892
  init();
192578
192893
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
192579
192894
  };
@@ -192614,7 +192929,7 @@ $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
192614
192929
  return $pkg;
192615
192930
  })();
192616
192931
  $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192617
- var $pkg = {}, $init, fmt, webgl, types, errscreen, dom, imageutil, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, ArrayBufferSlice, YCbCrJS, BufferImpl, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, funcType, arrayType, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, sliceType$3, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, texCoordsVertices, elementsIndices, newWindow, Main, main, newScreenImpl, newBuffer;
192932
+ var $pkg = {}, $init, fmt, webgl, types, errscreen, dom, imageutil, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, ArrayBufferSlice, YCbCrJS, BufferImpl, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, sliceType$3, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, texCoordsVertices, elementsIndices, newWindow, Main, main, newScreenImpl, newBuffer;
192618
192933
  fmt = $packages["fmt"];
192619
192934
  webgl = $packages["github.com/nuberu/webgl"];
192620
192935
  types = $packages["github.com/nuberu/webgl/types"];
@@ -192631,19 +192946,19 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192631
192946
  windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "webgldriver.windowImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(screen_, mutex_, canvasEl_, gl_, programRGBA_, imageTexRGBA_, programYUV420_, imageTexY_, imageTexU_, imageTexV_, vertexArray_, released_, domEvents_, width_, height_) {
192632
192947
  this.$val = this;
192633
192948
  if (arguments.length === 0) {
192634
- this.screen = ptrType.nil;
192635
- this.mutex = ptrType$1.nil;
192949
+ this.screen = ptrType$1.nil;
192950
+ this.mutex = ptrType$2.nil;
192636
192951
  this.canvasEl = new js.Value.ptr(null, false, arrayType.zero());
192637
- this.gl = ptrType$2.nil;
192638
- this.programRGBA = ptrType$3.nil;
192639
- this.imageTexRGBA = ptrType$4.nil;
192640
- this.programYUV420 = ptrType$3.nil;
192641
- this.imageTexY = ptrType$4.nil;
192642
- this.imageTexU = ptrType$4.nil;
192643
- this.imageTexV = ptrType$4.nil;
192644
- this.vertexArray = ptrType$5.nil;
192952
+ this.gl = ptrType$3.nil;
192953
+ this.programRGBA = ptrType$4.nil;
192954
+ this.imageTexRGBA = ptrType$5.nil;
192955
+ this.programYUV420 = ptrType$4.nil;
192956
+ this.imageTexY = ptrType$5.nil;
192957
+ this.imageTexU = ptrType$5.nil;
192958
+ this.imageTexV = ptrType$5.nil;
192959
+ this.vertexArray = ptrType$6.nil;
192645
192960
  this.released = false;
192646
- this.domEvents = ptrType$6.nil;
192961
+ this.domEvents = ptrType$7.nil;
192647
192962
  this.width = 0;
192648
192963
  this.height = 0;
192649
192964
  return;
@@ -192709,13 +193024,13 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192709
193024
  BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "webgldriver.BufferImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(screen_, size_, mutex_, released_, rgba_, ycbcr_, ycbcrJS_) {
192710
193025
  this.$val = this;
192711
193026
  if (arguments.length === 0) {
192712
- this.screen = ptrType.nil;
193027
+ this.screen = ptrType$1.nil;
192713
193028
  this.size = new image.Point.ptr(0, 0);
192714
- this.mutex = ptrType$1.nil;
193029
+ this.mutex = ptrType$2.nil;
192715
193030
  this.released = false;
192716
193031
  this.rgba = new image.RGBA.ptr(sliceType$3.nil, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
192717
193032
  this.ycbcr = new image.YCbCr.ptr(sliceType$3.nil, sliceType$3.nil, sliceType$3.nil, 0, 0, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
192718
- this.ycbcrJS = ptrType$8.nil;
193033
+ this.ycbcrJS = ptrType$9.nil;
192719
193034
  return;
192720
193035
  }
192721
193036
  this.screen = screen_;
@@ -192729,62 +193044,80 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192729
193044
  sliceType = $sliceType($Float32);
192730
193045
  sliceType$1 = $sliceType($Uint16);
192731
193046
  sliceType$2 = $sliceType($emptyInterface);
192732
- ptrType = $ptrType(screenImpl);
192733
- ptrType$1 = $ptrType(sync.Mutex);
193047
+ ptrType = $ptrType(screen.NewWindowOptions);
193048
+ ptrType$1 = $ptrType(screenImpl);
193049
+ ptrType$2 = $ptrType(sync.Mutex);
192734
193050
  funcType = $funcType([], [], false);
192735
193051
  arrayType = $arrayType(funcType, 0);
192736
- ptrType$2 = $ptrType(webgl.RenderingContext);
192737
- ptrType$3 = $ptrType(types.Program);
192738
- ptrType$4 = $ptrType(types.Texture);
192739
- ptrType$5 = $ptrType(types.VertexArray);
192740
- ptrType$6 = $ptrType(dom.DomEvents);
192741
- ptrType$7 = $ptrType(BufferImpl);
193052
+ ptrType$3 = $ptrType(webgl.RenderingContext);
193053
+ ptrType$4 = $ptrType(types.Program);
193054
+ ptrType$5 = $ptrType(types.Texture);
193055
+ ptrType$6 = $ptrType(types.VertexArray);
193056
+ ptrType$7 = $ptrType(dom.DomEvents);
193057
+ ptrType$8 = $ptrType(BufferImpl);
192742
193058
  sliceType$3 = $sliceType($Uint8);
192743
- ptrType$8 = $ptrType(YCbCrJS);
192744
- ptrType$9 = $ptrType(screen.DrawOptions);
192745
- ptrType$10 = $ptrType(windowImpl);
192746
- ptrType$11 = $ptrType(screen.NewWindowOptions);
193059
+ ptrType$9 = $ptrType(YCbCrJS);
193060
+ ptrType$10 = $ptrType(screen.DrawOptions);
193061
+ ptrType$11 = $ptrType(windowImpl);
192747
193062
  ptrType$12 = $ptrType(ArrayBufferSlice);
192748
193063
  ptrType$13 = $ptrType(image.RGBA);
192749
193064
  ptrType$14 = $ptrType(image.YCbCr);
192750
193065
  newWindow = function(screen$1, opts) {
192751
- var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
193066
+ var {_arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, style, w, $s, $r, $c} = $restore(this, {screen$1, opts});
192752
193067
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192753
193068
  _r = $clone(screen$1.doc, js.Value).Call("createElement", new sliceType$2([new $String("canvas")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192754
193069
  canvasEl = $clone(_r, js.Value);
192755
193070
  _r$1 = $clone($clone(screen$1.doc, js.Value).Get("body"), js.Value).Call("appendChild", new sliceType$2([new canvasEl.constructor.elem(canvasEl)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192756
193071
  _r$1;
192757
- _r$2 = webgl.FromCanvas($clone(canvasEl, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192758
- _tuple = _r$2;
193072
+ /* */ if (!(opts === ptrType.nil) && opts.Width > 0 && opts.Height > 0) { $s = 3; continue; }
193073
+ /* */ $s = 4; continue;
193074
+ /* if (!(opts === ptrType.nil) && opts.Width > 0 && opts.Height > 0) { */ case 3:
193075
+ style = $clone($clone(canvasEl, js.Value).Get("style"), js.Value);
193076
+ $clone(style, js.Value).Set("position", new $String("absolute"));
193077
+ _r$2 = fmt.Sprintf("%dpx", new sliceType$2([new $Int(opts.X)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193078
+ _arg = new $String(_r$2);
193079
+ $r = $clone(style, js.Value).Set("left", _arg); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193080
+ _r$3 = fmt.Sprintf("%dpx", new sliceType$2([new $Int(opts.Y)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
193081
+ _arg$1 = new $String(_r$3);
193082
+ $r = $clone(style, js.Value).Set("top", _arg$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193083
+ _r$4 = fmt.Sprintf("%dpx", new sliceType$2([new $Int(opts.Width)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
193084
+ _arg$2 = new $String(_r$4);
193085
+ $r = $clone(style, js.Value).Set("width", _arg$2); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193086
+ _r$5 = fmt.Sprintf("%dpx", new sliceType$2([new $Int(opts.Height)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
193087
+ _arg$3 = new $String(_r$5);
193088
+ $r = $clone(style, js.Value).Set("height", _arg$3); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193089
+ /* } */ case 4:
193090
+ _r$6 = webgl.FromCanvas($clone(canvasEl, js.Value)); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
193091
+ _tuple = _r$6;
192759
193092
  gl = _tuple[0];
192760
193093
  err = _tuple[1];
192761
193094
  if (!($interfaceIsEqual(err, $ifaceNil))) {
192762
193095
  $panic(err);
192763
193096
  }
192764
193097
  domEvents = dom.NewDomEvents();
192765
- w = new windowImpl.ptr(screen$1, ptrType$1.nil, $clone(canvasEl, js.Value), gl, ptrType$3.nil, ptrType$4.nil, ptrType$3.nil, ptrType$4.nil, ptrType$4.nil, ptrType$4.nil, ptrType$5.nil, false, domEvents, 0, 0);
192766
- /* */ if (!((opts.Width === 0))) { $s = 4; continue; }
192767
- /* */ $s = 5; continue;
192768
- /* if (!((opts.Width === 0))) { */ case 4:
192769
- $r = dom.SetWindowWidth(opts.Width); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192770
- /* } */ case 5:
192771
- /* */ if (!((opts.Height === 0))) { $s = 7; continue; }
192772
- /* */ $s = 8; continue;
192773
- /* if (!((opts.Height === 0))) { */ case 7:
192774
- $r = dom.SetWindowHeight(opts.Height); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192775
- /* } */ case 8:
192776
- /* */ if (!(opts.Title === "")) { $s = 10; continue; }
192777
- /* */ $s = 11; continue;
192778
- /* if (!(opts.Title === "")) { */ case 10:
192779
- _r$3 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType$2([new $String("title")])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192780
- _r$4 = $clone(_r$3, js.Value).Call("item", new sliceType$2([new $Int(0)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
192781
- $r = $clone(_r$4, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192782
- /* } */ case 11:
192783
- _r$5 = w.createBuffers(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
192784
- w.vertexArray = _r$5;
192785
- $r = domEvents.BindEvents(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193098
+ w = new windowImpl.ptr(screen$1, ptrType$2.nil, $clone(canvasEl, js.Value), gl, ptrType$4.nil, ptrType$5.nil, ptrType$4.nil, ptrType$5.nil, ptrType$5.nil, ptrType$5.nil, ptrType$6.nil, false, domEvents, 0, 0);
193099
+ /* */ if (!((opts.Width === 0))) { $s = 14; continue; }
193100
+ /* */ $s = 15; continue;
193101
+ /* if (!((opts.Width === 0))) { */ case 14:
193102
+ $r = dom.SetWindowWidth(opts.Width); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193103
+ /* } */ case 15:
193104
+ /* */ if (!((opts.Height === 0))) { $s = 17; continue; }
193105
+ /* */ $s = 18; continue;
193106
+ /* if (!((opts.Height === 0))) { */ case 17:
193107
+ $r = dom.SetWindowHeight(opts.Height); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193108
+ /* } */ case 18:
193109
+ /* */ if (!(opts.Title === "")) { $s = 20; continue; }
193110
+ /* */ $s = 21; continue;
193111
+ /* if (!(opts.Title === "")) { */ case 20:
193112
+ _r$7 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType$2([new $String("title")])); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
193113
+ _r$8 = $clone(_r$7, js.Value).Call("item", new sliceType$2([new $Int(0)])); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
193114
+ $r = $clone(_r$8, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193115
+ /* } */ case 21:
193116
+ _r$9 = w.createBuffers(); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
193117
+ w.vertexArray = _r$9;
193118
+ $r = domEvents.BindEvents(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192786
193119
  $s = -1; return w;
192787
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, w, $s};return $f;
193120
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, style, w, $s};return $f;
192788
193121
  };
192789
193122
  windowImpl.ptr.prototype.ensureCanvasSize = function(width, height) {
192790
193123
  var height, w, width;
@@ -192883,9 +193216,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
192883
193216
  $s = -1; return;
192884
193217
  }
192885
193218
  _ref = src;
192886
- /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 1; continue; }
193219
+ /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 1; continue; }
192887
193220
  /* */ $s = 2; continue;
192888
- /* if ($assertType(_ref, ptrType$7, true)[1]) { */ case 1:
193221
+ /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 1:
192889
193222
  jsSrc = _ref.$val;
192890
193223
  _r = jsSrc.YCbCrJS(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192891
193224
  /* */ if (_r.Use) { $s = 3; continue; }
@@ -193068,9 +193401,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193068
193401
  var {_q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _tuple, err, height, w, width, $s, $r, $c} = $restore(this, {width, height});
193069
193402
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193070
193403
  w = this;
193071
- /* */ if (w.programYUV420 === ptrType$3.nil) { $s = 1; continue; }
193404
+ /* */ if (w.programYUV420 === ptrType$4.nil) { $s = 1; continue; }
193072
193405
  /* */ $s = 2; continue;
193073
- /* if (w.programYUV420 === ptrType$3.nil) { */ case 1:
193406
+ /* if (w.programYUV420 === ptrType$4.nil) { */ case 1:
193074
193407
  err = $ifaceNil;
193075
193408
  _r = w.createAndLinkProgramYUV420(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193076
193409
  _tuple = _r;
@@ -193108,12 +193441,12 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193108
193441
  _r$1 = w.createAndAttachVertexShader(shaderProgram); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193109
193442
  err = _r$1;
193110
193443
  if (!($interfaceIsEqual(err, $ifaceNil))) {
193111
- $s = -1; return [ptrType$3.nil, err];
193444
+ $s = -1; return [ptrType$4.nil, err];
193112
193445
  }
193113
193446
  _r$2 = w.createAndAttachFragmentShader(shaderProgram, "\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_imageY;\nuniform sampler2D u_imageU;\nuniform sampler2D u_imageV;\n\nvoid main(void) {\n\tfloat yChannel = texture2D(u_imageY, v_texCoord).x;\n\tfloat uChannel = texture2D(u_imageU, v_texCoord).x;\n\tfloat vChannel = texture2D(u_imageV, v_texCoord).x;\n\n\t// This does the colorspace conversion from Y'UV to RGB as a matrix\n\t// multiply. It also does the offset of the U and V channels from\n\t// [0,1] to [-.5,.5] as part of the transform.\n\tvec4 channels = vec4(yChannel, uChannel, vChannel, 1.0);\n\n\tmat4 conversion = mat4(1.0, 0.0, 1.402, -0.701,\n\t\t\t\t\t\t\t1.0, -0.344, -0.714, 0.529,\n\t\t\t\t\t\t\t1.0, 1.772, 0.0, -0.886,\n\t\t\t\t\t\t\t0, 0, 0, 0);\n\tvec3 rgb = (channels * conversion).xyz;\n\n\t// This is another Y'UV transform that can be used, but it doesn't\n\t// accurately transform my source image. Your images may well fare\n\t// better with it, however, considering they come from a different\n\t// source, and because I'm not sure that my original was converted\n\t// to Y'UV420p with the same RGB->YUV (or YCrCb) conversion as\n\t// yours.\n\t//\n\t// vec4 channels = vec4(yChannel, uChannel, vChannel, 1.0);\n\t// float3x4 conversion = float3x4(1.0, 0.0, 1.13983, -0.569915,\n\t// 1.0, -0.39465, -0.58060, 0.487625,\n\t// 1.0, 2.03211, 0.0, -1.016055);\n\t// float3 rgb = mul(conversion, channels);\n\tgl_FragColor = vec4(rgb, 1.0);\n}\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193114
193447
  err = _r$2;
193115
193448
  if (!($interfaceIsEqual(err, $ifaceNil))) {
193116
- $s = -1; return [ptrType$3.nil, err];
193449
+ $s = -1; return [ptrType$4.nil, err];
193117
193450
  }
193118
193451
  $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193119
193452
  _r$3 = w.gl.GetProgramParameterLinkStatus(shaderProgram); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
@@ -193123,7 +193456,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193123
193456
  _r$4 = w.gl.GetProgramInfoLog(shaderProgram); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
193124
193457
  _arg = new $String(_r$4);
193125
193458
  _r$5 = fmt.Errorf("Program: %s", new sliceType$2([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
193126
- $24r = [ptrType$3.nil, _r$5];
193459
+ $24r = [ptrType$4.nil, _r$5];
193127
193460
  $s = 10; case 10: return $24r;
193128
193461
  /* } */ case 6:
193129
193462
  $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -193182,9 +193515,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193182
193515
  var {_r, _r$1, _tuple, err, height, w, width, $s, $r, $c} = $restore(this, {width, height});
193183
193516
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193184
193517
  w = this;
193185
- /* */ if (w.programRGBA === ptrType$3.nil) { $s = 1; continue; }
193518
+ /* */ if (w.programRGBA === ptrType$4.nil) { $s = 1; continue; }
193186
193519
  /* */ $s = 2; continue;
193187
- /* if (w.programRGBA === ptrType$3.nil) { */ case 1:
193520
+ /* if (w.programRGBA === ptrType$4.nil) { */ case 1:
193188
193521
  err = $ifaceNil;
193189
193522
  _r = w.createAndLinkProgramRGBA(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193190
193523
  _tuple = _r;
@@ -193218,12 +193551,12 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193218
193551
  _r$1 = w.createAndAttachVertexShader(shaderProgram); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193219
193552
  err = _r$1;
193220
193553
  if (!($interfaceIsEqual(err, $ifaceNil))) {
193221
- $s = -1; return [ptrType$3.nil, err];
193554
+ $s = -1; return [ptrType$4.nil, err];
193222
193555
  }
193223
193556
  _r$2 = w.createAndAttachFragmentShader(shaderProgram, "\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_image;\n\nvoid main(void) {\n\tgl_FragColor = texture2D(u_image, v_texCoord);\n}\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193224
193557
  err = _r$2;
193225
193558
  if (!($interfaceIsEqual(err, $ifaceNil))) {
193226
- $s = -1; return [ptrType$3.nil, err];
193559
+ $s = -1; return [ptrType$4.nil, err];
193227
193560
  }
193228
193561
  $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193229
193562
  _r$3 = w.gl.GetProgramParameterLinkStatus(shaderProgram); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
@@ -193233,7 +193566,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193233
193566
  _r$4 = w.gl.GetProgramInfoLog(shaderProgram); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
193234
193567
  _arg = new $String(_r$4);
193235
193568
  _r$5 = fmt.Errorf("Program: %s", new sliceType$2([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
193236
- $24r = [ptrType$3.nil, _r$5];
193569
+ $24r = [ptrType$4.nil, _r$5];
193237
193570
  $s = 10; case 10: return $24r;
193238
193571
  /* } */ case 6:
193239
193572
  $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -193344,7 +193677,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193344
193677
  newBuffer = function(screen$1, size) {
193345
193678
  var _q, _q$1, _q$2, b, rect, screen$1, size;
193346
193679
  rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(size, image.Point));
193347
- b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$3, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$3, ($imul(size.X, size.Y))), $makeSlice(sliceType$3, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$3, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$8.nil);
193680
+ b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$3, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$3, ($imul(size.X, size.Y))), $makeSlice(sliceType$3, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$3, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$9.nil);
193348
193681
  return b;
193349
193682
  };
193350
193683
  BufferImpl.ptr.prototype.Size = function() {
@@ -193375,9 +193708,9 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193375
193708
  var {_r, b, emptyBuffer, $s, $r, $c} = $restore(this, {});
193376
193709
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193377
193710
  b = this;
193378
- /* */ if (b.ycbcrJS === ptrType$8.nil) { $s = 1; continue; }
193711
+ /* */ if (b.ycbcrJS === ptrType$9.nil) { $s = 1; continue; }
193379
193712
  /* */ $s = 2; continue;
193380
- /* if (b.ycbcrJS === ptrType$8.nil) { */ case 1:
193713
+ /* if (b.ycbcrJS === ptrType$9.nil) { */ case 1:
193381
193714
  _r = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(sliceType$2.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193382
193715
  emptyBuffer = $clone(_r, js.Value);
193383
193716
  b.ycbcrJS = new YCbCrJS.ptr($clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), $clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), $clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), b.ycbcr.YStride, b.ycbcr.CStride, 2, $clone(b.ycbcr.Rect, image.Rectangle), false);
@@ -193402,15 +193735,15 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193402
193735
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BufferImpl.ptr.prototype.Release, $c: true, $r, b, $s, $deferred};return $f; } }
193403
193736
  };
193404
193737
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
193405
- ptrType$10.methods = [{prop: "ensureCanvasSize", name: "ensureCanvasSize", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "clear", name: "clear", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], 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$9], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "createAndAttachVertexShader", name: "createAndAttachVertexShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$3], [$error], false)}, {prop: "ensureYUV420Textures", name: "ensureYUV420Textures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramYUV420", name: "createAndLinkProgramYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "drawBufferYUV420", name: "drawBufferYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "drawBufferYUV420JSArrayBuffers", name: "drawBufferYUV420JSArrayBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, js.Value, js.Value, js.Value, image.Rectangle], [], false)}, {prop: "ensureRGBATextures", name: "ensureRGBATextures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramRGBA", name: "createAndLinkProgramRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "drawBufferRGBA", name: "drawBufferRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "createBuffers", name: "createBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$5], false)}, {prop: "createAndAttachFragmentShader", name: "createAndAttachFragmentShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$3, $String], [$error], false)}, {prop: "createTexture", name: "createTexture", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([types.GLEnum, types.GLEnum, $Int, $Int], [ptrType$4], false)}];
193406
- 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$11], [screen.Window, $error], false)}];
193738
+ ptrType$11.methods = [{prop: "ensureCanvasSize", name: "ensureCanvasSize", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "clear", name: "clear", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], 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$10], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$10], [], false)}, {prop: "createAndAttachVertexShader", name: "createAndAttachVertexShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$4], [$error], false)}, {prop: "ensureYUV420Textures", name: "ensureYUV420Textures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramYUV420", name: "createAndLinkProgramYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$4, $error], false)}, {prop: "drawBufferYUV420", name: "drawBufferYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "drawBufferYUV420JSArrayBuffers", name: "drawBufferYUV420JSArrayBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, js.Value, js.Value, js.Value, image.Rectangle], [], false)}, {prop: "ensureRGBATextures", name: "ensureRGBATextures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramRGBA", name: "createAndLinkProgramRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$4, $error], false)}, {prop: "drawBufferRGBA", name: "drawBufferRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "createBuffers", name: "createBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$6], false)}, {prop: "createAndAttachFragmentShader", name: "createAndAttachFragmentShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$4, $String], [$error], false)}, {prop: "createTexture", name: "createTexture", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([types.GLEnum, types.GLEnum, $Int, $Int], [ptrType$5], false)}];
193739
+ ptrType$1.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], [screen.Window, $error], false)}];
193407
193740
  ptrType$12.methods = [{prop: "slice", name: "slice", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [js.Value], false)}];
193408
- ptrType$7.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$13], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$14], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$8], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
193409
- windowImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "gl", name: "gl", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "programRGBA", name: "programRGBA", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "imageTexRGBA", name: "imageTexRGBA", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "programYUV420", name: "programYUV420", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "imageTexY", name: "imageTexY", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexU", name: "imageTexU", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexV", name: "imageTexV", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "vertexArray", name: "vertexArray", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "width", name: "width", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "height", name: "height", embedded: false, exported: false, typ: $Int, tag: ""}]);
193741
+ ptrType$8.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$13], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$14], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
193742
+ windowImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "gl", name: "gl", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "programRGBA", name: "programRGBA", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexRGBA", name: "imageTexRGBA", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "programYUV420", name: "programYUV420", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexY", name: "imageTexY", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "imageTexU", name: "imageTexU", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "imageTexV", name: "imageTexV", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "vertexArray", name: "vertexArray", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "width", name: "width", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "height", name: "height", embedded: false, exported: false, typ: $Int, tag: ""}]);
193410
193743
  screenImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
193411
193744
  ArrayBufferSlice.init("", [{prop: "ArrayBuffer", name: "ArrayBuffer", embedded: false, exported: true, typ: js.Value, tag: ""}, {prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Length", name: "Length", embedded: false, exported: true, typ: $Int, tag: ""}]);
193412
193745
  YCbCrJS.init("", [{prop: "Y", name: "Y", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "Cb", name: "Cb", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "Cr", name: "Cr", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "YStride", name: "YStride", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "CStride", name: "CStride", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "SubsampleRatio", name: "SubsampleRatio", embedded: false, exported: true, typ: image.YCbCrSubsampleRatio, tag: ""}, {prop: "Rect", name: "Rect", embedded: false, exported: true, typ: image.Rectangle, tag: ""}, {prop: "Use", name: "Use", embedded: false, exported: true, typ: $Bool, tag: ""}]);
193413
- BufferImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$8, tag: ""}]);
193746
+ BufferImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$9, tag: ""}]);
193414
193747
  $init = function() {
193415
193748
  $pkg.$init = function() {};
193416
193749
  /* */ 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:
@@ -193435,7 +193768,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193435
193768
  return $pkg;
193436
193769
  })();
193437
193770
  $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (function() {
193438
- var $pkg = {}, $init, general, errs, frame, webgldriver, image, js, H264Decoder, funcType, arrayType, sliceType, ptrType, ptrType$1, chanType, IsAvailable, NewDecoder;
193771
+ var $pkg = {}, $init, general, errs, frame, webgldriver, image, js, H264Decoder, funcType, arrayType, sliceType, ptrType, ptrType$1, ptrType$2, chanType, IsAvailable, NewDecoder;
193439
193772
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
193440
193773
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
193441
193774
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
@@ -193455,8 +193788,9 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (functio
193455
193788
  funcType = $funcType([], [], false);
193456
193789
  arrayType = $arrayType(funcType, 0);
193457
193790
  sliceType = $sliceType($emptyInterface);
193458
- ptrType = $ptrType(webgldriver.BufferImpl);
193459
- ptrType$1 = $ptrType(H264Decoder);
193791
+ ptrType = $ptrType(frame.JSFrame);
193792
+ ptrType$1 = $ptrType(webgldriver.BufferImpl);
193793
+ ptrType$2 = $ptrType(H264Decoder);
193460
193794
  chanType = $chanType($emptyInterface, false, false);
193461
193795
  IsAvailable = function() {
193462
193796
  return !$clone($clone(js.Global(), js.Value).Get("h264Decoder"), js.Value).IsUndefined();
@@ -193468,33 +193802,49 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (functio
193468
193802
  return [new H264Decoder.ptr($clone(decoder, js.Value), new $Chan($emptyInterface, 1)), $ifaceNil];
193469
193803
  };
193470
193804
  $pkg.NewDecoder = NewDecoder;
193471
- H264Decoder.ptr.prototype.Write = function(frame$1) {
193472
- var {$24r, _r, _r$1, _r$2, _r$3, frame$1, m, nal, nalBuffer, nalBufferOffset, pHeight, pPicture, pWidth, status, x, x$1, $s, $r, $c} = $restore(this, {frame$1});
193805
+ H264Decoder.ptr.prototype.Write = function(someFrame) {
193806
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, currentFrame, currentFrame$1, m, nal, nalBuffer, nalBufferOffset, nalLength, pHeight, pPicture, pWidth, someFrame, status, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {someFrame});
193473
193807
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193474
193808
  m = this;
193475
- _r = frame$1.Buffer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193476
- nal = _r;
193477
193809
  nalBufferOffset = $clone($clone(m.decoder, js.Value).Get("decBuffer"), js.Value);
193478
- _r$1 = $clone($clone($clone(m.decoder, js.Value).Get("memory"), js.Value).Get("HEAPU8"), js.Value).Call("subarray", new sliceType([new nalBufferOffset.constructor.elem(nalBufferOffset)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193479
- nalBuffer = $clone(_r$1, js.Value);
193480
- js.CopyBytesToJS($clone(nalBuffer, js.Value), nal);
193810
+ _r = $clone($clone($clone(m.decoder, js.Value).Get("memory"), js.Value).Get("HEAPU8"), js.Value).Call("subarray", new sliceType([new nalBufferOffset.constructor.elem(nalBufferOffset)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193811
+ nalBuffer = $clone(_r, js.Value);
193812
+ nalLength = 0;
193813
+ _ref = someFrame;
193814
+ /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 2; continue; }
193815
+ /* */ $s = 3; continue;
193816
+ /* if ($assertType(_ref, ptrType, true)[1]) { */ case 2:
193817
+ currentFrame = _ref.$val;
193818
+ nalLength = currentFrame.ByteLength();
193819
+ _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([(x$1 = currentFrame.JSBuffer(), new x$1.constructor.elem(x$1))])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193820
+ _arg = (x = _r$1, new x.constructor.elem(x));
193821
+ _r$2 = $clone(nalBuffer, js.Value).Call("set", new sliceType([_arg])); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193822
+ _r$2;
193823
+ $s = 4; continue;
193824
+ /* } else { */ case 3:
193825
+ currentFrame$1 = _ref;
193826
+ _r$3 = currentFrame$1.Buffer(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
193827
+ nal = _r$3;
193828
+ nalLength = nal.$length;
193829
+ js.CopyBytesToJS($clone(nalBuffer, js.Value), nal);
193830
+ /* } */ case 4:
193481
193831
  pPicture = $clone($clone(m.decoder, js.Value).Get("pPicture"), js.Value);
193482
193832
  pWidth = $clone($clone(m.decoder, js.Value).Get("pWidth"), js.Value);
193483
193833
  pHeight = $clone($clone(m.decoder, js.Value).Get("pHeight"), js.Value);
193484
- _r$2 = $clone($clone(m.decoder, js.Value).Get("asm"), js.Value).Call("decode", new sliceType([(x = $clone(m.decoder, js.Value).Get("pStorage"), new x.constructor.elem(x)), (x$1 = $clone(m.decoder, js.Value).Get("decBuffer"), new x$1.constructor.elem(x$1)), new $Int(nal.$length), new pPicture.constructor.elem(pPicture), new pWidth.constructor.elem(pWidth), new pHeight.constructor.elem(pHeight)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193485
- status = $clone(_r$2, js.Value);
193486
- /* */ if (!(($clone(status, js.Value).Int() === 1))) { $s = 4; continue; }
193487
- /* */ $s = 5; continue;
193488
- /* if (!(($clone(status, js.Value).Int() === 1))) { */ case 4:
193489
- _r$3 = errs.Errorf("Decoding failed with status code %d", new sliceType([new $Int($clone(status, js.Value).Int())])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
193490
- $24r = _r$3;
193491
- $s = 7; case 7: return $24r;
193492
- /* } */ case 5:
193493
- $r = $send(m.outputChan, $ifaceNil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193834
+ _r$4 = $clone($clone(m.decoder, js.Value).Get("asm"), js.Value).Call("decode", new sliceType([(x$2 = $clone(m.decoder, js.Value).Get("pStorage"), new x$2.constructor.elem(x$2)), (x$3 = $clone(m.decoder, js.Value).Get("decBuffer"), new x$3.constructor.elem(x$3)), new $Int(nalLength), new pPicture.constructor.elem(pPicture), new pWidth.constructor.elem(pWidth), new pHeight.constructor.elem(pHeight)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
193835
+ status = $clone(_r$4, js.Value);
193836
+ /* */ if (!(($clone(status, js.Value).Int() === 1))) { $s = 9; continue; }
193837
+ /* */ $s = 10; continue;
193838
+ /* if (!(($clone(status, js.Value).Int() === 1))) { */ case 9:
193839
+ _r$5 = errs.Errorf("Decoding failed with status code %d", new sliceType([new $Int($clone(status, js.Value).Int())])); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
193840
+ $24r = _r$5;
193841
+ $s = 12; case 12: return $24r;
193842
+ /* } */ case 10:
193843
+ $r = $send(m.outputChan, $ifaceNil); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193494
193844
  $s = -1; return $ifaceNil;
193495
- /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Write, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, frame$1, m, nal, nalBuffer, nalBufferOffset, pHeight, pPicture, pWidth, status, x, x$1, $s};return $f;
193845
+ /* */ } return; } var $f = {$blk: H264Decoder.ptr.prototype.Write, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, currentFrame, currentFrame$1, m, nal, nalBuffer, nalBufferOffset, nalLength, pHeight, pPicture, pWidth, someFrame, status, x, x$1, x$2, x$3, $s};return $f;
193496
193846
  };
193497
- H264Decoder.prototype.Write = function(frame$1) { return this.$val.Write(frame$1); };
193847
+ H264Decoder.prototype.Write = function(someFrame) { return this.$val.Write(someFrame); };
193498
193848
  H264Decoder.ptr.prototype.NextOutput = function(outputBuffer) {
193499
193849
  var {_q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, cSize, cStride, height, heightIndex, m, outputBuffer, pHeight, pPicture, pWidth, pictureBuffer, pictureBufferOffset, pictureIndex, pictureLen, width, widthIndex, ySize, yStride, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {outputBuffer});
193500
193850
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -193517,7 +193867,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (functio
193517
193867
  cStride = (_q$1 = yStride / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
193518
193868
  ySize = $imul(yStride, height);
193519
193869
  cSize = (_q$2 = ($imul(cStride, height)) / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"));
193520
- _r$2 = $assertType(outputBuffer, ptrType).YCbCrJS(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193870
+ _r$2 = $assertType(outputBuffer, ptrType$1).YCbCrJS(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193521
193871
  ycbcrJSImg = _r$2;
193522
193872
  webgldriver.ArrayBufferSlice.copy(ycbcrJSImg.Y, new webgldriver.ArrayBufferSlice.ptr($clone(pictureBuffer, js.Value), 0, ySize));
193523
193873
  webgldriver.ArrayBufferSlice.copy(ycbcrJSImg.Cb, new webgldriver.ArrayBufferSlice.ptr($clone(pictureBuffer, js.Value), ySize, ySize + cSize >> 0));
@@ -193540,7 +193890,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (functio
193540
193890
  m = this;
193541
193891
  };
193542
193892
  H264Decoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
193543
- ptrType$1.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)}];
193893
+ ptrType$2.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)}];
193544
193894
  H264Decoder.init("github.com/supraio/client-daemon/pkg/decoder/h264decoder", [{prop: "decoder", name: "decoder", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "outputChan", name: "outputChan", embedded: false, exported: false, typ: chanType, tag: ""}]);
193545
193895
  $init = function() {
193546
193896
  $pkg.$init = function() {};
@@ -193671,7 +194021,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
193671
194021
  };
193672
194022
  SOSVideoStreamer.prototype.IsAvailable = function() { return this.$val.IsAvailable(); };
193673
194023
  SOSVideoStreamer.ptr.prototype.Play = function() {
193674
- var {$24r, $24r$1, _arg, _arg$1, _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, err, height, hostname, m, options, playStream, port, preparePromise, protocol, sosProtocol, url, urlProtocol, width, $s, $r, $c} = $restore(this, {});
194024
+ var {$24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, err, geometry, height, hostname, m, options, playStream, port, preparePromise, protocol, sosProtocol, url, urlProtocol, width, x, y, $s, $r, $c} = $restore(this, {});
193675
194025
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193676
194026
  m = this;
193677
194027
  /* */ if (!m.started) { $s = 1; continue; }
@@ -193684,14 +194034,25 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
193684
194034
  sosProtocol = m.getSOSProtocol(protocol);
193685
194035
  _r = fmt.Sprintf("%s://%s:%d", new sliceType([new $String(urlProtocol), new $String(hostname), new $Uint16(port)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193686
194036
  url = _r;
194037
+ _tmp = 0;
194038
+ _tmp$1 = 0;
194039
+ x = _tmp;
194040
+ y = _tmp$1;
193687
194041
  width = $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
193688
194042
  height = $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
194043
+ geometry = $clone($clone($clone(js.Global(), js.Value).Get("__supra"), js.Value).Get("geometry"), js.Value);
194044
+ if (!$clone(geometry, js.Value).IsUndefined() && !$clone(geometry, js.Value).IsNull()) {
194045
+ x = $clone($clone(geometry, js.Value).Get("x"), js.Value).Int();
194046
+ y = $clone($clone(geometry, js.Value).Get("y"), js.Value).Int();
194047
+ width = $clone($clone(geometry, js.Value).Get("width"), js.Value).Int();
194048
+ height = $clone($clone(geometry, js.Value).Get("height"), js.Value).Int();
194049
+ }
193689
194050
  _r$1 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193690
194051
  options = $clone(_r$1, js.Value);
193691
194052
  $clone(options, js.Value).Set("background", new $Bool(true));
193692
194053
  $clone(options, js.Value).Set("protocol", new $String(sosProtocol));
193693
194054
  $clone(options, js.Value).Set("lowLatency", new $Bool(true));
193694
- _r$2 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("prepare", new sliceType([new $String(url), new $Int(0), new $Int(0), new $Int(width), new $Int(height), new options.constructor.elem(options)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
194055
+ _r$2 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("prepare", new sliceType([new $String(url), new $Int(x), new $Int(y), new $Int(width), new $Int(height), new options.constructor.elem(options)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193695
194056
  preparePromise = $clone(_r$2, js.Value);
193696
194057
  _r$3 = jshelper.Await($clone(preparePromise, js.Value)); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
193697
194058
  _tuple = _r$3;
@@ -193706,7 +194067,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
193706
194067
  $24r = _r$6;
193707
194068
  $s = 12; case 12: return $24r;
193708
194069
  /* } */ case 8:
193709
- _r$7 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("play", new sliceType([new $String(url), new $Int(0), new $Int(0), new $Int(width), new $Int(height), new options.constructor.elem(options)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
194070
+ _r$7 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("play", new sliceType([new $String(url), new $Int(x), new $Int(y), new $Int(width), new $Int(height), new options.constructor.elem(options)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
193710
194071
  playStream = $clone(_r$7, js.Value);
193711
194072
  _r$8 = jshelper.Await($clone(playStream, js.Value)); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
193712
194073
  _tuple$1 = _r$8;
@@ -193724,7 +194085,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
193724
194085
  m.started = true;
193725
194086
  /* } */ case 2:
193726
194087
  $s = -1; return $ifaceNil;
193727
- /* */ } return; } var $f = {$blk: SOSVideoStreamer.ptr.prototype.Play, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _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, err, height, hostname, m, options, playStream, port, preparePromise, protocol, sosProtocol, url, urlProtocol, width, $s};return $f;
194088
+ /* */ } return; } var $f = {$blk: SOSVideoStreamer.ptr.prototype.Play, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, err, geometry, height, hostname, m, options, playStream, port, preparePromise, protocol, sosProtocol, url, urlProtocol, width, x, y, $s};return $f;
193728
194089
  };
193729
194090
  SOSVideoStreamer.prototype.Play = function() { return this.$val.Play(); };
193730
194091
  SOSVideoStreamer.ptr.prototype.Stop = function() {
@@ -194516,12 +194877,21 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
194516
194877
  s = this;
194517
194878
  _r = s.stopwatch.Stop("frame_collection"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194518
194879
  dur = _r;
194519
- $r = s.metrics.AddSample("frame_collection", new sliceType$1([dur])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194520
- $r = s.metrics.AddSample("frame_collection_long_term", new sliceType$1([dur])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194880
+ $r = s.NotifyFrameCollectionDuration(dur); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194521
194881
  $s = -1; return;
194522
194882
  /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrameCollectionEnded, $c: true, $r, _r, dur, s, $s};return $f;
194523
194883
  };
194524
194884
  Stats.prototype.NotifyFrameCollectionEnded = function() { return this.$val.NotifyFrameCollectionEnded(); };
194885
+ Stats.ptr.prototype.NotifyFrameCollectionDuration = function(dur) {
194886
+ var {dur, s, $s, $r, $c} = $restore(this, {dur});
194887
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194888
+ s = this;
194889
+ $r = s.metrics.AddSample("frame_collection", new sliceType$1([dur])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194890
+ $r = s.metrics.AddSample("frame_collection_long_term", new sliceType$1([dur])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194891
+ $s = -1; return;
194892
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrameCollectionDuration, $c: true, $r, dur, s, $s};return $f;
194893
+ };
194894
+ Stats.prototype.NotifyFrameCollectionDuration = function(dur) { return this.$val.NotifyFrameCollectionDuration(dur); };
194525
194895
  Stats.ptr.prototype.NotifyThrottledCollectionFrame = function() {
194526
194896
  var s;
194527
194897
  s = this;
@@ -194903,7 +195273,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
194903
195273
  return (new time.Duration(0, math.Sqrt(($flatten64($div64(sum, (new time.Duration(0, values.$length)), false))))));
194904
195274
  };
194905
195275
  ptrType$1.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([$String], [time.Duration], false)}];
194906
- ptrType$5.methods = [{prop: "GetClientStats", name: "GetClientStats", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "SetLatency", name: "SetLatency", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "UpdateServerTimestampAhead", name: "UpdateServerTimestampAhead", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "SetScreenResolution", name: "SetScreenResolution", pkg: "", typ: $funcType([ptrType$4], [], false)}, {prop: "NotifyFrame", name: "NotifyFrame", pkg: "", typ: $funcType([Frame], [], false)}, {prop: "NotifyScreenPing", name: "NotifyScreenPing", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionStarted", name: "NotifyFrameCollectionStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionEnded", name: "NotifyFrameCollectionEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledCollectionFrame", name: "NotifyThrottledCollectionFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteStarted", name: "NotifyFrameDecodeWriteStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteEnded", name: "NotifyFrameDecodeWriteEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputStarted", name: "NotifyFrameDecodeOutputStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputEnded", name: "NotifyFrameDecodeOutputEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledDecodeFrame", name: "NotifyThrottledDecodeFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderStarted", name: "NotifyFrameRenderStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderEnded", name: "NotifyFrameRenderEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledRenderFrame", name: "NotifyThrottledRenderFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "GetLastFrameAt", name: "GetLastFrameAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenPingAt", name: "GetLastScreenPingAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenImpulseAt", name: "GetLastScreenImpulseAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetFrameRate", name: "GetFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "startCalculations", name: "startCalculations", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "print", name: "print", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "GetServerTime", name: "GetServerTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "NotifyInteraction", name: "NotifyInteraction", pkg: "", typ: $funcType([], [], false)}, {prop: "GetInteractionWaitMultiplier", name: "GetInteractionWaitMultiplier", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "SetEncodingPreferences", name: "SetEncodingPreferences", pkg: "", typ: $funcType([EncodingPreferences], [], false)}];
195276
+ ptrType$5.methods = [{prop: "GetClientStats", name: "GetClientStats", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "SetLatency", name: "SetLatency", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "UpdateServerTimestampAhead", name: "UpdateServerTimestampAhead", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "SetScreenResolution", name: "SetScreenResolution", pkg: "", typ: $funcType([ptrType$4], [], false)}, {prop: "NotifyFrame", name: "NotifyFrame", pkg: "", typ: $funcType([Frame], [], false)}, {prop: "NotifyScreenPing", name: "NotifyScreenPing", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionStarted", name: "NotifyFrameCollectionStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionEnded", name: "NotifyFrameCollectionEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionDuration", name: "NotifyFrameCollectionDuration", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "NotifyThrottledCollectionFrame", name: "NotifyThrottledCollectionFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteStarted", name: "NotifyFrameDecodeWriteStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteEnded", name: "NotifyFrameDecodeWriteEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputStarted", name: "NotifyFrameDecodeOutputStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputEnded", name: "NotifyFrameDecodeOutputEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledDecodeFrame", name: "NotifyThrottledDecodeFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderStarted", name: "NotifyFrameRenderStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderEnded", name: "NotifyFrameRenderEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledRenderFrame", name: "NotifyThrottledRenderFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "GetLastFrameAt", name: "GetLastFrameAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenPingAt", name: "GetLastScreenPingAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenImpulseAt", name: "GetLastScreenImpulseAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetFrameRate", name: "GetFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "startCalculations", name: "startCalculations", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "print", name: "print", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "GetServerTime", name: "GetServerTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "NotifyInteraction", name: "NotifyInteraction", pkg: "", typ: $funcType([], [], false)}, {prop: "GetInteractionWaitMultiplier", name: "GetInteractionWaitMultiplier", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "SetEncodingPreferences", name: "SetEncodingPreferences", pkg: "", typ: $funcType([EncodingPreferences], [], false)}];
194907
195277
  ptrType$2.methods = [{prop: "AddSample", name: "AddSample", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "GetCount", name: "GetCount", pkg: "", typ: $funcType([$String], [$Int], false)}, {prop: "GetAverage", name: "GetAverage", pkg: "", typ: $funcType([$String], [time.Duration], false)}, {prop: "GetVariance", name: "GetVariance", pkg: "", typ: $funcType([$String], [time.Duration], false)}, {prop: "RemoveOldest", name: "RemoveOldest", pkg: "", typ: $funcType([$String, $Int], [], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([$String], [], false)}];
194908
195278
  Stopwatch.init("github.com/supraio/client-daemon/pkg/stats", [{prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "groups", name: "groups", embedded: false, exported: false, typ: mapType, tag: ""}]);
194909
195279
  Frame.init([{prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}]);
@@ -195339,7 +195709,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195339
195709
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195340
195710
  /* while (true) { */ case 1:
195341
195711
  /* if (!(cl.started)) { break; } */ if(!(cl.started)) { $s = 2; continue; }
195342
- _r = cl.frameCollector.CollectFrame($methodVal(cl.stats, "NotifyFrameCollectionStarted"), $methodVal(cl.stats, "NotifyFrameCollectionEnded")); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195712
+ _r = cl.frameCollector.CollectFrame($methodVal(cl.stats, "NotifyFrameCollectionStarted"), $methodVal(cl.stats, "NotifyFrameCollectionEnded"), $methodVal(cl.stats, "NotifyFrameCollectionDuration")); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195343
195713
  _tuple = _r;
195344
195714
  collectedFrame = _tuple[0];
195345
195715
  err = _tuple[1];
@@ -195955,7 +196325,7 @@ $packages["golang.org/x/mobile/event/lifecycle"] = (function() {
195955
196325
  return $pkg;
195956
196326
  })();
195957
196327
  $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
195958
- var $pkg = {}, $init, binary, json, 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, strings, sync, js, time, ScreenWindow, ProcessInfo, ProcessInfoManager, sliceType, ptrType, ptrType$1, ptrType$2, funcType, sliceType$1, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, sliceType$2, structType, sliceType$3, sliceType$4, mapType, funcType$1, ptrType$14, chanType, chanType$1, chanType$2, chanType$3, chanType$4, chanType$5, onScreenWindowStarted, RegisterVideoStream, UnregisterVideoStream, NewScreenWindow, MainDriver, NewProcessInfoManager, init, registerJSBridge;
196328
+ var $pkg = {}, $init, binary, json, 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, strings, sync, js, time, ScreenWindow, Geometry, ProcessInfo, ProcessInfoManager, sliceType, ptrType, ptrType$1, ptrType$2, funcType, sliceType$1, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, sliceType$2, structType, sliceType$3, sliceType$4, mapType, funcType$1, ptrType$15, chanType, chanType$1, chanType$2, chanType$3, chanType$4, chanType$5, onScreenWindowStarted, RegisterVideoStream, UnregisterVideoStream, NewScreenWindow, MainDriver, NewProcessInfoManager, init, registerJSBridge, geometryValue;
195959
196329
  binary = $packages["encoding/binary"];
195960
196330
  json = $packages["encoding/json"];
195961
196331
  query = $packages["github.com/google/go-querystring/query"];
@@ -195999,7 +196369,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
195999
196369
  sync = $packages["sync"];
196000
196370
  js = $packages["syscall/js"];
196001
196371
  time = $packages["time"];
196002
- 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_, stats_, onClose_, window_, screen_, screenConn_, metadataServer_, responsiveSender_, collectionLoop_, decoderLoop_, renderingLoop_, sizeHandler_, touchHandler_, keyHandler_, mouseHandler_, eventMetrics_, pinger_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, touchEventChan_, winCloseChannel_, windowSize_) {
196372
+ 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_, stats_, onClose_, window_, screen_, screenConn_, metadataServer_, responsiveSender_, collectionLoop_, decoderLoop_, renderingLoop_, sizeHandler_, touchHandler_, keyHandler_, mouseHandler_, eventMetrics_, pinger_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, touchEventChan_, winCloseChannel_, windowSize_, geometry_) {
196003
196373
  this.$val = this;
196004
196374
  if (arguments.length === 0) {
196005
196375
  this.processInfoManager = ptrType.nil;
@@ -196037,6 +196407,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196037
196407
  this.touchEventChan = $chanNil;
196038
196408
  this.winCloseChannel = $chanNil;
196039
196409
  this.windowSize = new image.Point.ptr(0, 0);
196410
+ this.geometry = ptrType$14.nil;
196040
196411
  return;
196041
196412
  }
196042
196413
  this.processInfoManager = processInfoManager_;
@@ -196074,6 +196445,21 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196074
196445
  this.touchEventChan = touchEventChan_;
196075
196446
  this.winCloseChannel = winCloseChannel_;
196076
196447
  this.windowSize = windowSize_;
196448
+ this.geometry = geometry_;
196449
+ });
196450
+ Geometry = $pkg.Geometry = $newType(0, $kindStruct, "render.Geometry", true, "github.com/supraio/client-daemon/pkg/render", true, function(X_, Y_, Width_, Height_) {
196451
+ this.$val = this;
196452
+ if (arguments.length === 0) {
196453
+ this.X = 0;
196454
+ this.Y = 0;
196455
+ this.Width = 0;
196456
+ this.Height = 0;
196457
+ return;
196458
+ }
196459
+ this.X = X_;
196460
+ this.Y = Y_;
196461
+ this.Width = Width_;
196462
+ this.Height = Height_;
196077
196463
  });
196078
196464
  ProcessInfo = $pkg.ProcessInfo = $newType(0, $kindStruct, "render.ProcessInfo", true, "github.com/supraio/client-daemon/pkg/render", true, function(ScreenID_, Pid_) {
196079
196465
  this.$val = this;
@@ -196112,13 +196498,14 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196112
196498
  ptrType$11 = $ptrType(input.MouseHandler);
196113
196499
  ptrType$12 = $ptrType(input.EventMetrics);
196114
196500
  ptrType$13 = $ptrType(netclient.Pinger);
196501
+ ptrType$14 = $ptrType(Geometry);
196115
196502
  sliceType$2 = $sliceType($emptyInterface);
196116
196503
  structType = $structType("", []);
196117
196504
  sliceType$3 = $sliceType($error);
196118
196505
  sliceType$4 = $sliceType($String);
196119
196506
  mapType = $mapType($String, $emptyInterface);
196120
196507
  funcType$1 = $funcType([], [$error], false);
196121
- ptrType$14 = $ptrType(ScreenWindow);
196508
+ ptrType$15 = $ptrType(ScreenWindow);
196122
196509
  chanType = $chanType(key.Event, false, false);
196123
196510
  chanType$1 = $chanType(mouse.Event, false, false);
196124
196511
  chanType$2 = $chanType(size.Event, false, false);
@@ -196183,20 +196570,26 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196183
196570
  /* */ } return; } var $f = {$blk: UnregisterVideoStream, $c: true, $r, _r, _r$1, _r$2, err, sender, videoStreamer, $s};return $f;
196184
196571
  };
196185
196572
  $pkg.UnregisterVideoStream = UnregisterVideoStream;
196573
+ ScreenWindow.ptr.prototype.Geometry = function() {
196574
+ var w;
196575
+ w = this;
196576
+ return w.geometry;
196577
+ };
196578
+ ScreenWindow.prototype.Geometry = function() { return this.$val.Geometry(); };
196186
196579
  ScreenWindow.ptr.prototype.SetEncodingPreferences = function(prefs) {
196187
196580
  var prefs, w;
196188
196581
  w = this;
196189
196582
  w.stats.SetEncodingPreferences($clone(prefs, stats.EncodingPreferences));
196190
196583
  };
196191
196584
  ScreenWindow.prototype.SetEncodingPreferences = function(prefs) { return this.$val.SetEncodingPreferences(prefs); };
196192
- NewScreenWindow = function(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, encodingPreferences) {
196193
- var {_r, clientID, clientSecret, encodingPreferences, forceScreenSize, metadataDriver, metadataHost, processInfoManager, s, screenDriver, screenHost, screenID, secure, timeoutDuration, $s, $r, $c} = $restore(this, {processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, encodingPreferences});
196585
+ NewScreenWindow = function(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, encodingPreferences, geometry) {
196586
+ var {_r, clientID, clientSecret, encodingPreferences, forceScreenSize, geometry, metadataDriver, metadataHost, processInfoManager, s, screenDriver, screenHost, screenID, secure, timeoutDuration, $s, $r, $c} = $restore(this, {processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, encodingPreferences, geometry});
196194
196587
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
196195
196588
  _r = stats.NewStats(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
196196
196589
  s = _r;
196197
196590
  s.SetEncodingPreferences($clone(encodingPreferences, stats.EncodingPreferences));
196198
- $s = -1; return new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, true, s, sliceType$1.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), new image.Point.ptr(0, 0));
196199
- /* */ } return; } var $f = {$blk: NewScreenWindow, $c: true, $r, _r, clientID, clientSecret, encodingPreferences, forceScreenSize, metadataDriver, metadataHost, processInfoManager, s, screenDriver, screenHost, screenID, secure, timeoutDuration, $s};return $f;
196591
+ $s = -1; return new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, true, s, sliceType$1.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), new image.Point.ptr(0, 0), geometry);
196592
+ /* */ } 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;
196200
196593
  };
196201
196594
  $pkg.NewScreenWindow = NewScreenWindow;
196202
196595
  ScreenWindow.ptr.prototype.Start = function() {
@@ -196366,14 +196759,21 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196366
196759
  var {$s, $r, $c} = $restore(this, {});
196367
196760
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
196368
196761
  $r = MainDriver((function(w, windowChannel) { return function $b(s) {
196369
- var {_r, _r$1, _tuple, err, opts, s, window$1, $s, $r, $c} = $restore(this, {s});
196762
+ var {_r, _r$1, _tuple, err, g, opts, s, window$1, $s, $r, $c} = $restore(this, {s});
196370
196763
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
196371
196764
  opts = [opts];
196372
- opts[0] = new screen.NewWindowOptions.ptr(0, 0, "");
196765
+ opts[0] = new screen.NewWindowOptions.ptr(0, 0, 0, 0, "");
196373
196766
  if (!(w[0].forceScreenSize === ptrType$1.nil)) {
196374
196767
  opts[0].Width = w[0].forceScreenSize.X;
196375
196768
  opts[0].Height = w[0].forceScreenSize.Y;
196376
196769
  }
196770
+ g = w[0].geometry;
196771
+ if (!(g === ptrType$14.nil)) {
196772
+ opts[0].X = g.X;
196773
+ opts[0].Y = g.Y;
196774
+ opts[0].Width = g.Width;
196775
+ opts[0].Height = g.Height;
196776
+ }
196377
196777
  _r = s.NewWindow(opts[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
196378
196778
  _tuple = _r;
196379
196779
  window$1 = _tuple[0];
@@ -196390,7 +196790,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196390
196790
  _r$1 = $recv(w[0].winCloseChannel); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
196391
196791
  _r$1[0];
196392
196792
  $s = -1; return;
196393
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _r$1, _tuple, err, opts, s, window$1, $s};return $f;
196793
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _r$1, _tuple, err, g, opts, s, window$1, $s};return $f;
196394
196794
  }; })(w, windowChannel)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196395
196795
  $s = -1; return;
196396
196796
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, $s};return $f;
@@ -197114,10 +197514,10 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
197114
197514
  onScreenWindowStarted = registerJSBridge;
197115
197515
  };
197116
197516
  registerJSBridge = function(w) {
197117
- var {supraObj, w, x, x$1, x$2, $s, $r, $c} = $restore(this, {w});
197517
+ var {supraObj, w, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {w});
197118
197518
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197119
197519
  w = [w];
197120
- supraObj = $makeMap($String.keyFor, [{ k: "setEncodingPreferences", v: (x = js.FuncOf((function(w) { return function $b(this$1, args) {
197520
+ supraObj = $makeMap($String.keyFor, [{ k: "geometry", v: geometryValue(w[0].Geometry()) }, { k: "screenStopped", v: new $Bool(false) }, { k: "setEncodingPreferences", v: (x = js.FuncOf((function(w) { return function $b(this$1, args) {
197121
197521
  var {_r, args, err, jsonStr, prefs, this$1, $s, $r, $c} = $restore(this, {this$1, args});
197122
197522
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197123
197523
  prefs = [prefs];
@@ -197157,15 +197557,31 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
197157
197557
  /* } */ case 3:
197158
197558
  $s = -1; return new $String(($bytesToString(data)));
197159
197559
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _tuple, args, clientStats, data, err, this$1, $s};return $f;
197160
- }; })(w)), new x$1.constructor.elem(x$1)) }]);
197161
- $clone(js.Global(), js.Value).Set("__supra", (x$2 = js.ValueOf(new mapType(supraObj)), new x$2.constructor.elem(x$2)));
197560
+ }; })(w)), new x$1.constructor.elem(x$1)) }, { k: "stopScreen", v: (x$2 = js.FuncOf((function(w) { return function $b(this$1, args) {
197561
+ var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
197562
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197563
+ $r = log.Println(new sliceType$2([new $String("__supra.stopScreen: stopping screen rendering")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197564
+ $clone($clone(js.Global(), js.Value).Get("__supra"), js.Value).Set("screenStopped", new $Bool(true));
197565
+ $go($methodVal(w[0], "Close"), []);
197566
+ $s = -1; return $ifaceNil;
197567
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
197568
+ }; })(w)), new x$2.constructor.elem(x$2)) }]);
197569
+ $clone(js.Global(), js.Value).Set("__supra", (x$3 = js.ValueOf(new mapType(supraObj)), new x$3.constructor.elem(x$3)));
197162
197570
  $r = log.Println(new sliceType$2([new $String("Registered window.__supra JS bridge")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197163
197571
  $s = -1; return;
197164
- /* */ } return; } var $f = {$blk: registerJSBridge, $c: true, $r, supraObj, w, x, x$1, x$2, $s};return $f;
197572
+ /* */ } return; } var $f = {$blk: registerJSBridge, $c: true, $r, supraObj, w, x, x$1, x$2, x$3, $s};return $f;
197573
+ };
197574
+ geometryValue = function(g) {
197575
+ var g;
197576
+ if (g === ptrType$14.nil) {
197577
+ return $ifaceNil;
197578
+ }
197579
+ 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) }]));
197165
197580
  };
197166
- ptrType$14.methods = [{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: "startClipboard", name: "startClipboard", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], 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: "createScreenBuffer", name: "createScreenBuffer", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [screen.Buffer, $error], false)}];
197581
+ ptrType$15.methods = [{prop: "Geometry", name: "Geometry", pkg: "", typ: $funcType([], [ptrType$14], 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: "startClipboard", name: "startClipboard", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], 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: "createScreenBuffer", name: "createScreenBuffer", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [screen.Buffer, $error], false)}];
197167
197582
  ptrType.methods = [{prop: "CreateProcessInfo", name: "CreateProcessInfo", pkg: "", typ: $funcType([$String, $Int], [$error], false)}, {prop: "RemoveProcessInfo", name: "RemoveProcessInfo", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "WaitProcess", name: "WaitProcess", pkg: "", typ: $funcType([$String], [$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)}];
197168
- 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: "stats", name: "stats", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$1, 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, tag: ""}, {prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "sizeEventChan", name: "sizeEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "touchEventChan", name: "touchEventChan", embedded: false, exported: false, typ: chanType$4, tag: ""}, {prop: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$5, tag: ""}, {prop: "windowSize", name: "windowSize", embedded: false, exported: false, typ: image.Point, tag: ""}]);
197583
+ 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: "stats", name: "stats", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$1, 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, tag: ""}, {prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "sizeEventChan", name: "sizeEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "touchEventChan", name: "touchEventChan", embedded: false, exported: false, typ: chanType$4, tag: ""}, {prop: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$5, 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: ""}]);
197584
+ 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\""}]);
197169
197585
  ProcessInfo.init("", [{prop: "ScreenID", name: "ScreenID", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Int, tag: ""}]);
197170
197586
  ProcessInfoManager.init("github.com/supraio/client-daemon/pkg/render", [{prop: "username", name: "username", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "processDir", name: "processDir", embedded: false, exported: false, typ: $String, tag: ""}]);
197171
197587
  $init = function() {
@@ -197222,7 +197638,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
197222
197638
  return $pkg;
197223
197639
  })();
197224
197640
  $packages["main"] = (function() {
197225
- var $pkg = {}, $init, json, config, errs, helper, netpacket, netstream, render, stats, image, log, os, path, time, sliceType, sliceType$1, ptrType, sliceType$2, main;
197641
+ var $pkg = {}, $init, json, config, errs, helper, netpacket, netstream, render, stats, image, log, os, path, time, sliceType, sliceType$1, ptrType, sliceType$2, ptrType$1, main;
197226
197642
  json = $packages["encoding/json"];
197227
197643
  config = $packages["github.com/supraio/client-daemon/pkg/config"];
197228
197644
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -197240,11 +197656,13 @@ $packages["main"] = (function() {
197240
197656
  sliceType$1 = $sliceType($emptyInterface);
197241
197657
  ptrType = $ptrType(image.Point);
197242
197658
  sliceType$2 = $sliceType($Uint8);
197659
+ ptrType$1 = $ptrType(render.Geometry);
197243
197660
  main = function() {
197244
- var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, cfg, clientID, clientSecret, encodingPrefs, err, err$1, err$2, forceSize, logFile, metadataDriver, metadataHost, processInfoManager, screenDriver, screenHost, screenID, screenStartChan, screenWindow, secure, signalChannel, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $deferred, $r, $c} = $restore(this, {});
197661
+ var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, cfg, clientID, clientSecret, encodingPrefs, err, err$1, err$2, err$3, forceSize, geometry, logFile, metadataDriver, metadataHost, parsed, processInfoManager, screenDriver, screenHost, screenID, screenStartChan, screenWindow, secure, signalChannel, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $deferred, $r, $c} = $restore(this, {});
197245
197662
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
197246
197663
  encodingPrefs = [encodingPrefs];
197247
197664
  logFile = [logFile];
197665
+ parsed = [parsed];
197248
197666
  screenStartChan = [screenStartChan];
197249
197667
  screenWindow = [screenWindow];
197250
197668
  signalChannel = [signalChannel];
@@ -197276,14 +197694,14 @@ $packages["main"] = (function() {
197276
197694
  $r = errs.Print("Error creating log directory", err$1); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197277
197695
  $s = 15; case 15: return;
197278
197696
  /* } */ case 13:
197279
- $deferred.push([(function(encodingPrefs, logFile, screenStartChan, screenWindow, signalChannel) { return function $b() {
197697
+ $deferred.push([(function(encodingPrefs, logFile, parsed, screenStartChan, screenWindow, signalChannel) { return function $b() {
197280
197698
  var {_r$5, $s, $r, $c} = $restore(this, {});
197281
197699
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197282
197700
  _r$5 = logFile[0].Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
197283
197701
  $unused(_r$5);
197284
197702
  $s = -1; return;
197285
197703
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$5, $s};return $f;
197286
- }; })(encodingPrefs, logFile, screenStartChan, screenWindow, signalChannel), []]);
197704
+ }; })(encodingPrefs, logFile, parsed, screenStartChan, screenWindow, signalChannel), []]);
197287
197705
  log.SetOutput(logFile[0]);
197288
197706
  /* } */ case 7:
197289
197707
  $r = log.Println(new sliceType$1([new $String("Supra screen is starting")])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -197315,41 +197733,57 @@ $packages["main"] = (function() {
197315
197733
  $r = log.Printf("Warning: could not parse encoding preferences: %v\n", new sliceType$1([err$2])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197316
197734
  /* } */ case 24:
197317
197735
  /* } */ case 21:
197736
+ geometry = ptrType$1.nil;
197737
+ /* */ if (os.Args.$length >= 12 && !((x$12 = os.Args, (11 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 11])) === "")) { $s = 26; continue; }
197738
+ /* */ $s = 27; continue;
197739
+ /* if (os.Args.$length >= 12 && !((x$12 = os.Args, (11 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 11])) === "")) { */ case 26:
197740
+ parsed[0] = new render.Geometry.ptr(0, 0, 0, 0);
197741
+ _r$7 = json.Unmarshal((new sliceType$2($stringToBytes((x$13 = os.Args, (11 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 11]))))), parsed[0]); /* */ $s = 28; case 28: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
197742
+ err$3 = _r$7;
197743
+ /* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 29; continue; }
197744
+ /* */ $s = 30; continue;
197745
+ /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 29:
197746
+ $r = log.Printf("Warning: could not parse screen geometry: %v\n", new sliceType$1([err$3])); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197747
+ $s = 31; continue;
197748
+ /* } else { */ case 30:
197749
+ geometry = parsed[0];
197750
+ /* } */ case 31:
197751
+ /* } */ case 27:
197318
197752
  log.SetPrefix(screenID + " ");
197319
197753
  processInfoManager = render.NewProcessInfoManager(cfg.Username, cfg.ScreenProcessDir);
197320
- _r$7 = render.NewScreenWindow(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceSize, $mul64(cfg.TimeoutSeconds, new time.Duration(0, 1000000000)), $clone(encodingPrefs[0], stats.EncodingPreferences)); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
197321
- screenWindow[0] = _r$7;
197322
- screenWindow[0].OnClose((function(encodingPrefs, logFile, screenStartChan, screenWindow, signalChannel) { return function $b() {
197754
+ _r$8 = render.NewScreenWindow(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceSize, $mul64(cfg.TimeoutSeconds, new time.Duration(0, 1000000000)), $clone(encodingPrefs[0], stats.EncodingPreferences), geometry); /* */ $s = 33; case 33: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
197755
+ screenWindow[0] = _r$8;
197756
+ screenWindow[0].OnClose((function(encodingPrefs, logFile, parsed, screenStartChan, screenWindow, signalChannel) { return function $b() {
197323
197757
  var {$s, $r, $c} = $restore(this, {});
197324
197758
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197325
197759
  $r = log.Println(new sliceType$1([new $String("Screen window was closed")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197326
197760
  $r = $send(signalChannel[0], os.Interrupt); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197327
197761
  $s = -1; return;
197328
197762
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, $s};return $f;
197329
- }; })(encodingPrefs, logFile, screenStartChan, screenWindow, signalChannel));
197763
+ }; })(encodingPrefs, logFile, parsed, screenStartChan, screenWindow, signalChannel));
197330
197764
  screenStartChan[0] = new $Chan($error, 0);
197331
- $go((function(encodingPrefs, logFile, screenStartChan, screenWindow, signalChannel) { return function $b() {
197332
- var {_r$8, $s, $r, $c} = $restore(this, {});
197765
+ $go((function(encodingPrefs, logFile, parsed, screenStartChan, screenWindow, signalChannel) { return function $b() {
197766
+ var {_r$9, $s, $r, $c} = $restore(this, {});
197333
197767
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197334
- _r$8 = screenWindow[0].Start(); /* */ $s = 1; case 1: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
197335
- $r = $send(screenStartChan[0], _r$8); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197768
+ _r$9 = screenWindow[0].Start(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
197769
+ $r = $send(screenStartChan[0], _r$9); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197336
197770
  $s = -1; return;
197337
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$8, $s};return $f;
197338
- }; })(encodingPrefs, logFile, screenStartChan, screenWindow, signalChannel), []);
197339
- _r$8 = $recv(screenStartChan[0]); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
197340
- err = _r$8[0];
197341
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 28; continue; }
197342
- /* */ $s = 29; continue;
197343
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 28:
197344
- $r = errs.Print("Error starting screen window", err); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197345
- $s = 31; case 31: return;
197346
- /* } */ case 29:
197771
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$9, $s};return $f;
197772
+ }; })(encodingPrefs, logFile, parsed, screenStartChan, screenWindow, signalChannel), []);
197773
+ _r$9 = $recv(screenStartChan[0]); /* */ $s = 34; case 34: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
197774
+ err = _r$9[0];
197775
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 35; continue; }
197776
+ /* */ $s = 36; continue;
197777
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 35:
197778
+ $r = errs.Print("Error starting screen window", err); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197779
+ $s = 38; case 38: return;
197780
+ /* } */ case 36:
197347
197781
  $deferred.push([$methodVal(screenWindow[0], "Close"), []]);
197348
- $r = log.Println(new sliceType$1([new $String("Supra screen started")])); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197349
- $r = helper.WaitOnStopSignal(signalChannel[0]); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197350
- $r = log.Println(new sliceType$1([new $String("Supra screen is stopping")])); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197782
+ $r = log.Println(new sliceType$1([new $String("Supra screen started")])); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197783
+ $r = helper.WaitOnStopSignal(signalChannel[0]); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197784
+ $r = log.Println(new sliceType$1([new $String("Supra screen is stopping")])); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197351
197785
  $s = -1; return;
197352
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: main, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, cfg, clientID, clientSecret, encodingPrefs, err, err$1, err$2, forceSize, logFile, metadataDriver, metadataHost, processInfoManager, screenDriver, screenHost, screenID, screenStartChan, screenWindow, secure, signalChannel, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $deferred};return $f; } }
197786
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: main, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, cfg, clientID, clientSecret, encodingPrefs, err, err$1, err$2, err$3, forceSize, geometry, logFile, metadataDriver, metadataHost, parsed, processInfoManager, screenDriver, screenHost, screenID, screenStartChan, screenWindow, secure, signalChannel, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $deferred};return $f; } }
197353
197787
  };
197354
197788
  $init = function() {
197355
197789
  $pkg.$init = function() {};