@supraio/client-daemon-js 0.0.0-jvmaster.371 → 0.0.0-jvtouches.393

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.
@@ -65023,7 +65023,7 @@ $packages["log"] = (function() {
65023
65023
  return $pkg;
65024
65024
  })();
65025
65025
  $packages["github.com/supraio/client-daemon/pkg/errs"] = (function() {
65026
- var $pkg = {}, $init, errors, log, sliceType, ptrType, Print, Errorf;
65026
+ var $pkg = {}, $init, errors, log, sliceType, ptrType, Print, Errorf, CombineErrors;
65027
65027
  errors = $packages["github.com/go-errors/errors"];
65028
65028
  log = $packages["log"];
65029
65029
  sliceType = $sliceType($emptyInterface);
@@ -65062,6 +65062,26 @@ $packages["github.com/supraio/client-daemon/pkg/errs"] = (function() {
65062
65062
  /* */ } return; } var $f = {$blk: Errorf, $c: true, $r, $24r, _r, extra, msg, $s};return $f;
65063
65063
  };
65064
65064
  $pkg.Errorf = Errorf;
65065
+ CombineErrors = function(errs) {
65066
+ var {$24r, _i, _r, _ref, err, errs, message, untypedErrs, $s, $r, $c} = $restore(this, {errs});
65067
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
65068
+ untypedErrs = new sliceType([]);
65069
+ message = "";
65070
+ _ref = errs;
65071
+ _i = 0;
65072
+ while (true) {
65073
+ if (!(_i < _ref.$length)) { break; }
65074
+ err = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
65075
+ message = message + "%s\n";
65076
+ untypedErrs = $append(untypedErrs, err);
65077
+ _i++;
65078
+ }
65079
+ _r = errors.Errorf(message, untypedErrs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
65080
+ $24r = _r;
65081
+ $s = 2; case 2: return $24r;
65082
+ /* */ } return; } var $f = {$blk: CombineErrors, $c: true, $r, $24r, _i, _r, _ref, err, errs, message, untypedErrs, $s};return $f;
65083
+ };
65084
+ $pkg.CombineErrors = CombineErrors;
65065
65085
  $init = function() {
65066
65086
  $pkg.$init = function() {};
65067
65087
  /* */ 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:
@@ -180245,10 +180265,9 @@ $packages["github.com/supraio/client-daemon/pkg/jshelper"] = (function() {
180245
180265
  return $pkg;
180246
180266
  })();
180247
180267
  $packages["github.com/supraio/client-daemon/pkg/clipboard"] = (function() {
180248
- var $pkg = {}, $init, jshelper, log, strings, js, time, JsClipboard, UpdateClipboardInfo, ptrType, sliceType, ptrType$1, funcType, arrayType, ptrType$2, chanType, NewClipboard;
180268
+ var $pkg = {}, $init, jshelper, log, js, time, JsClipboard, UpdateClipboardInfo, ptrType, sliceType, ptrType$1, funcType, arrayType, ptrType$2, chanType, NewClipboard;
180249
180269
  jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
180250
180270
  log = $packages["log"];
180251
- strings = $packages["strings"];
180252
180271
  js = $packages["syscall/js"];
180253
180272
  time = $packages["time"];
180254
180273
  JsClipboard = $pkg.JsClipboard = $newType(0, $kindStruct, "clipboard.JsClipboard", true, "github.com/supraio/client-daemon/pkg/clipboard", true, function(clipboard_, clipboardInfoChan_, lastInfo_) {
@@ -180364,9 +180383,9 @@ $packages["github.com/supraio/client-daemon/pkg/clipboard"] = (function() {
180364
180383
  /* */ $s = 12; continue;
180365
180384
  /* if (!(err === ptrType$1.nil)) { */ case 11:
180366
180385
  errMessage = $clone($clone(err, js.Value).Get("message"), js.Value).String();
180367
- /* */ if (strings.Contains(errMessage, "Document is not focused")) { $s = 13; continue; }
180386
+ /* */ if (errMessage === "Document is not focused.") { $s = 13; continue; }
180368
180387
  /* */ $s = 14; continue;
180369
- /* if (strings.Contains(errMessage, "Document is not focused")) { */ case 13:
180388
+ /* if (errMessage === "Document is not focused.") { */ case 13:
180370
180389
  _r$2 = c.whenFocused(); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
180371
180390
  _r$3 = jshelper.Await($clone(_r$2, js.Value)); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
180372
180391
  _r$3;
@@ -180424,9 +180443,8 @@ $packages["github.com/supraio/client-daemon/pkg/clipboard"] = (function() {
180424
180443
  /* */ 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:
180425
180444
  $r = jshelper.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180426
180445
  $r = log.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180427
- $r = strings.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180428
- $r = js.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180429
- $r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180446
+ $r = js.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180447
+ $r = time.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180430
180448
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
180431
180449
  };
180432
180450
  $pkg.$init = $init;
@@ -180842,17 +180860,67 @@ $packages["golang.org/x/mobile/event/size"] = (function() {
180842
180860
  $pkg.$init = $init;
180843
180861
  return $pkg;
180844
180862
  })();
180845
- $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
180846
- var $pkg = {}, $init, focus, key, mouse, size, geom, math, strings, js, DomEvents, sliceType, funcType, sliceType$1, sliceType$2, chanType, ptrType, keyCodesMap, keyCodesByKeyMap, GetDocWidth, GetDocHeight, GetScreenWidth, GetScreenHeight, GetBrowserZoomRatio, SetWindowWidth, SetWindowHeight, GetOrientation, NewDomEvents, getMouseDirection, getWheelButton, getMouseButton, getEventModifiers, isFocusIn, getKeyRune, getKeyDirection, getKeyCode;
180863
+ $packages["golang.org/x/mobile/event/touch"] = (function() {
180864
+ var $pkg = {}, $init, fmt, Event, Sequence, Type, sliceType;
180865
+ fmt = $packages["fmt"];
180866
+ Event = $pkg.Event = $newType(0, $kindStruct, "touch.Event", true, "golang.org/x/mobile/event/touch", true, function(X_, Y_, Sequence_, Type_) {
180867
+ this.$val = this;
180868
+ if (arguments.length === 0) {
180869
+ this.X = 0;
180870
+ this.Y = 0;
180871
+ this.Sequence = new Sequence(0, 0);
180872
+ this.Type = 0;
180873
+ return;
180874
+ }
180875
+ this.X = X_;
180876
+ this.Y = Y_;
180877
+ this.Sequence = Sequence_;
180878
+ this.Type = Type_;
180879
+ });
180880
+ Sequence = $pkg.Sequence = $newType(8, $kindInt64, "touch.Sequence", true, "golang.org/x/mobile/event/touch", true, null);
180881
+ Type = $pkg.Type = $newType(1, $kindUint8, "touch.Type", true, "golang.org/x/mobile/event/touch", true, null);
180882
+ sliceType = $sliceType($emptyInterface);
180883
+ Type.prototype.String = function() {
180884
+ var {$24r, _1, _r, t, $s, $r, $c} = $restore(this, {});
180885
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180886
+ t = this.$val;
180887
+ _1 = t;
180888
+ if (_1 === (0)) {
180889
+ $s = -1; return "begin";
180890
+ } else if (_1 === (1)) {
180891
+ $s = -1; return "move";
180892
+ } else if (_1 === (2)) {
180893
+ $s = -1; return "end";
180894
+ }
180895
+ _r = fmt.Sprintf("touch.Type(%d)", new sliceType([new Type(t)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180896
+ $24r = _r;
180897
+ $s = 2; case 2: return $24r;
180898
+ /* */ } return; } var $f = {$blk: Type.prototype.String, $c: true, $r, $24r, _1, _r, t, $s};return $f;
180899
+ };
180900
+ $ptrType(Type).prototype.String = function() { return new Type(this.$get()).String(); };
180901
+ Type.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
180902
+ Event.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: $Float32, tag: ""}, {prop: "Y", name: "Y", embedded: false, exported: true, typ: $Float32, tag: ""}, {prop: "Sequence", name: "Sequence", embedded: false, exported: true, typ: Sequence, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}]);
180903
+ $init = function() {
180904
+ $pkg.$init = function() {};
180905
+ /* */ 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:
180906
+ $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180907
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
180908
+ };
180909
+ $pkg.$init = $init;
180910
+ return $pkg;
180911
+ })();
180912
+ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/util/dom"] = (function() {
180913
+ var $pkg = {}, $init, focus, key, mouse, size, touch, geom, math, strings, js, DomEvents, sliceType, funcType, sliceType$1, sliceType$2, chanType, ptrType, keyCodesMap, keyCodesByKeyMap, GetDocWidth, GetDocHeight, GetOrientation, NewDomEvents, getMouseDirection, getWheelButton, getMouseButton, getEventModifiers, isFocusIn, getKeyRune, getKeyDirection, getKeyCode;
180847
180914
  focus = $packages["golang.org/x/mobile/event/focus"];
180848
180915
  key = $packages["golang.org/x/mobile/event/key"];
180849
180916
  mouse = $packages["golang.org/x/mobile/event/mouse"];
180850
180917
  size = $packages["golang.org/x/mobile/event/size"];
180918
+ touch = $packages["golang.org/x/mobile/event/touch"];
180851
180919
  geom = $packages["golang.org/x/mobile/geom"];
180852
180920
  math = $packages["math"];
180853
180921
  strings = $packages["strings"];
180854
180922
  js = $packages["syscall/js"];
180855
- DomEvents = $pkg.DomEvents = $newType(0, $kindStruct, "dom.DomEvents", true, "golang.org/x/exp/shiny/driver/util/dom", true, function(eventChan_, releases_) {
180923
+ DomEvents = $pkg.DomEvents = $newType(0, $kindStruct, "dom.DomEvents", true, "github.com/supraio/client-daemon/pkg/shiny/driver/util/dom", true, function(eventChan_, releases_) {
180856
180924
  this.$val = this;
180857
180925
  if (arguments.length === 0) {
180858
180926
  this.eventChan = $chanNil;
@@ -180876,62 +180944,6 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
180876
180944
  return $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
180877
180945
  };
180878
180946
  $pkg.GetDocHeight = GetDocHeight;
180879
- GetScreenWidth = function() {
180880
- return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
180881
- };
180882
- $pkg.GetScreenWidth = GetScreenWidth;
180883
- GetScreenHeight = function() {
180884
- return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
180885
- };
180886
- $pkg.GetScreenHeight = GetScreenHeight;
180887
- GetBrowserZoomRatio = function() {
180888
- var chromeZoom1, chromeZoom2, chromeZoom3, docElClientWidth, scrollerWidthInNoZoom, scrollerWidthInZoom1, scrollerWidthInZoom2, windowInnerWidth, windowOuterWidth;
180889
- windowInnerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Float();
180890
- windowOuterWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Float();
180891
- docElClientWidth = $clone($clone($clone($clone(js.Global(), js.Value).Get("document"), js.Value).Get("documentElement"), js.Value).Get("clientWidth"), js.Value).Float();
180892
- scrollerWidthInNoZoom = windowInnerWidth - docElClientWidth;
180893
- chromeZoom1 = (windowOuterWidth - scrollerWidthInNoZoom) / windowInnerWidth;
180894
- scrollerWidthInZoom1 = math.Round(scrollerWidthInNoZoom * chromeZoom1);
180895
- chromeZoom2 = (windowOuterWidth - scrollerWidthInZoom1) / windowInnerWidth;
180896
- scrollerWidthInZoom2 = math.Round(scrollerWidthInNoZoom * chromeZoom2);
180897
- chromeZoom3 = (windowOuterWidth - scrollerWidthInZoom2) / windowInnerWidth;
180898
- return chromeZoom3;
180899
- };
180900
- $pkg.GetBrowserZoomRatio = GetBrowserZoomRatio;
180901
- SetWindowWidth = function(newInnerWidth) {
180902
- var {_r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s, $r, $c} = $restore(this, {newInnerWidth});
180903
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180904
- innerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
180905
- outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
180906
- outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
180907
- newOuterWidth = newInnerWidth + ((outerWidth - innerWidth >> 0)) >> 0;
180908
- screenWidth = GetScreenWidth();
180909
- if (newOuterWidth > screenWidth) {
180910
- newOuterWidth = screenWidth;
180911
- }
180912
- _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(newOuterWidth), new $Int(outerHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180913
- _r;
180914
- $s = -1; return;
180915
- /* */ } return; } var $f = {$blk: SetWindowWidth, $c: true, $r, _r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s};return $f;
180916
- };
180917
- $pkg.SetWindowWidth = SetWindowWidth;
180918
- SetWindowHeight = function(newInnerHeight) {
180919
- var {_r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s, $r, $c} = $restore(this, {newInnerHeight});
180920
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
180921
- innerHeight = $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
180922
- outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
180923
- outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
180924
- newOuterHeight = newInnerHeight + ((outerHeight - innerHeight >> 0)) >> 0;
180925
- screenHeight = GetScreenHeight();
180926
- if (newOuterHeight > screenHeight) {
180927
- newOuterHeight = screenHeight;
180928
- }
180929
- _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(outerWidth), new $Int(newOuterHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180930
- _r;
180931
- $s = -1; return;
180932
- /* */ } return; } var $f = {$blk: SetWindowHeight, $c: true, $r, _r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s};return $f;
180933
- };
180934
- $pkg.SetWindowHeight = SetWindowHeight;
180935
180947
  GetOrientation = function() {
180936
180948
  var {$24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred, $r, $c} = $restore(this, {});
180937
180949
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
@@ -180999,6 +181011,7 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
180999
181011
  $r = d.bindMouseEvents(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181000
181012
  $r = d.bindKeyEvents(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181001
181013
  $r = d.bindFocusEvents(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181014
+ $r = d.bindTouchEvents(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181002
181015
  $s = -1; return;
181003
181016
  /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.BindEvents, $c: true, $r, d, $s};return $f;
181004
181017
  };
@@ -181282,8 +181295,56 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
181282
181295
  }
181283
181296
  return 0;
181284
181297
  };
181285
- ptrType.methods = [{prop: "GetEventChan", name: "GetEventChan", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "BindEvents", name: "BindEvents", pkg: "", typ: $funcType([], [], false)}, {prop: "bindSizeEvents", name: "bindSizeEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}];
181286
- DomEvents.init("golang.org/x/exp/shiny/driver/util/dom", [{prop: "eventChan", name: "eventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "releases", name: "releases", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
181298
+ DomEvents.ptr.prototype.addTouchListener = function(eventName, eventType) {
181299
+ var {_r, _r$1, d, eventName, eventType, handler, opts, $s, $r, $c} = $restore(this, {eventName, eventType});
181300
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181301
+ d = [d];
181302
+ eventName = [eventName];
181303
+ eventType = [eventType];
181304
+ handler = [handler];
181305
+ d[0] = this;
181306
+ handler[0] = $clone(js.FuncOf((function(d, eventName, eventType, handler) { return function $b(this$1, args) {
181307
+ var {_r, args, t, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
181308
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181309
+ _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
181310
+ _r;
181311
+ t = $clone($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("changedTouches"), js.Value).Index(0), js.Value);
181312
+ $r = $send(d[0].eventChan, (x = new touch.Event.ptr(($fround($clone($clone(t, js.Value).Get("screenX"), js.Value).Float())), ($fround($clone($clone(t, js.Value).Get("screenY"), js.Value).Float())), (new touch.Sequence(0, $clone($clone(t, js.Value).Get("identifier"), js.Value).Int())), eventType[0]), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181313
+ $s = -1; return $ifaceNil;
181314
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, t, this$1, x, $s};return $f;
181315
+ }; })(d, eventName, eventType, handler)), js.Func);
181316
+ _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; }
181317
+ opts = $clone(_r, js.Value);
181318
+ $clone(opts, js.Value).Set("passive", new $Bool(false));
181319
+ $clone(opts, js.Value).Set("capture", new $Bool(false));
181320
+ _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String(eventName[0]), new handler[0].constructor.elem(handler[0]), new opts.constructor.elem(opts)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
181321
+ _r$1;
181322
+ d[0].releases = $append(d[0].releases, (function(d, eventName, eventType, handler) { return function $b() {
181323
+ var {_r$2, $s, $r, $c} = $restore(this, {});
181324
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181325
+ _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String(eventName[0]), new handler[0].constructor.elem(handler[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
181326
+ _r$2;
181327
+ $clone(handler[0], js.Func).Release();
181328
+ $s = -1; return;
181329
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, $s};return $f;
181330
+ }; })(d, eventName, eventType, handler));
181331
+ $s = -1; return;
181332
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.addTouchListener, $c: true, $r, _r, _r$1, d, eventName, eventType, handler, opts, $s};return $f;
181333
+ };
181334
+ DomEvents.prototype.addTouchListener = function(eventName, eventType) { return this.$val.addTouchListener(eventName, eventType); };
181335
+ DomEvents.ptr.prototype.bindTouchEvents = function() {
181336
+ var {d, $s, $r, $c} = $restore(this, {});
181337
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
181338
+ d = this;
181339
+ $r = d.addTouchListener("touchstart", 0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181340
+ $r = d.addTouchListener("touchend", 2); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181341
+ $r = d.addTouchListener("touchmove", 1); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181342
+ $s = -1; return;
181343
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindTouchEvents, $c: true, $r, d, $s};return $f;
181344
+ };
181345
+ DomEvents.prototype.bindTouchEvents = function() { return this.$val.bindTouchEvents(); };
181346
+ ptrType.methods = [{prop: "GetEventChan", name: "GetEventChan", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "BindEvents", name: "BindEvents", pkg: "", typ: $funcType([], [], false)}, {prop: "bindSizeEvents", name: "bindSizeEvents", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "addTouchListener", name: "addTouchListener", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/util/dom", typ: $funcType([$String, touch.Type], [], false)}, {prop: "bindTouchEvents", name: "bindTouchEvents", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/util/dom", typ: $funcType([], [], false)}];
181347
+ DomEvents.init("github.com/supraio/client-daemon/pkg/shiny/driver/util/dom", [{prop: "eventChan", name: "eventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "releases", name: "releases", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
181287
181348
  $init = function() {
181288
181349
  $pkg.$init = function() {};
181289
181350
  /* */ 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:
@@ -181291,10 +181352,11 @@ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
181291
181352
  $r = key.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181292
181353
  $r = mouse.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181293
181354
  $r = size.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181294
- $r = geom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181295
- $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181296
- $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181297
- $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181355
+ $r = touch.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181356
+ $r = geom.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181357
+ $r = math.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181358
+ $r = strings.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181359
+ $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
181298
181360
  keyCodesMap = $makeMap($String.keyFor, [{ k: "KeyA", v: 4 }, { k: "KeyB", v: 5 }, { k: "KeyC", v: 6 }, { k: "KeyD", v: 7 }, { k: "KeyE", v: 8 }, { k: "KeyF", v: 9 }, { k: "KeyG", v: 10 }, { k: "KeyH", v: 11 }, { k: "KeyI", v: 12 }, { k: "KeyJ", v: 13 }, { k: "KeyK", v: 14 }, { k: "KeyL", v: 15 }, { k: "KeyM", v: 16 }, { k: "KeyN", v: 17 }, { k: "KeyO", v: 18 }, { k: "KeyP", v: 19 }, { k: "KeyQ", v: 20 }, { k: "KeyR", v: 21 }, { k: "KeyS", v: 22 }, { k: "KeyT", v: 23 }, { k: "KeyU", v: 24 }, { k: "KeyV", v: 25 }, { k: "KeyW", v: 26 }, { k: "KeyX", v: 27 }, { k: "KeyY", v: 28 }, { k: "KeyZ", v: 29 }, { k: "Digit1", v: 30 }, { k: "Digit2", v: 31 }, { k: "Digit3", v: 32 }, { k: "Digit4", v: 33 }, { k: "Digit5", v: 34 }, { k: "Digit6", v: 35 }, { k: "Digit7", v: 36 }, { k: "Digit8", v: 37 }, { k: "Digit9", v: 38 }, { k: "Digit0", v: 39 }, { k: "Enter", v: 40 }, { k: "Escape", v: 41 }, { k: "Backspace", v: 42 }, { k: "Tab", v: 43 }, { k: "Space", v: 44 }, { k: "Minus", v: 45 }, { k: "Equal", v: 46 }, { k: "BracketLeft", v: 47 }, { k: "BracketRight", v: 48 }, { k: "Backslash", v: 49 }, { k: "Semicolon", v: 51 }, { k: "Quote", v: 52 }, { k: "Backquote", v: 53 }, { k: "Comma", v: 54 }, { k: "Period", v: 55 }, { k: "Slash", v: 56 }, { k: "CapsLock", v: 57 }, { k: "F1", v: 58 }, { k: "F2", v: 59 }, { k: "F3", v: 60 }, { k: "F4", v: 61 }, { k: "F5", v: 62 }, { k: "F6", v: 63 }, { k: "F7", v: 64 }, { k: "F8", v: 65 }, { k: "F9", v: 66 }, { k: "F10", v: 67 }, { k: "F11", v: 68 }, { k: "F12", v: 69 }, { k: "Pause", v: 72 }, { k: "Insert", v: 73 }, { k: "Home", v: 74 }, { k: "PageUp", v: 75 }, { k: "Delete", v: 76 }, { k: "End", v: 77 }, { k: "PageDown", v: 78 }, { k: "ArrowRight", v: 79 }, { k: "ArrowLeft", v: 80 }, { k: "ArrowDown", v: 81 }, { k: "ArrowUp", v: 82 }, { k: "NumLock", v: 83 }, { k: "NumpadDivide", v: 84 }, { k: "NumpadMultiply", v: 85 }, { k: "NumpadSubtract", v: 86 }, { k: "NumpadAdd", v: 87 }, { k: "NumpadEnter", v: 88 }, { k: "Numpad1", v: 89 }, { k: "Numpad2", v: 90 }, { k: "Numpad3", v: 91 }, { k: "Numpad4", v: 92 }, { k: "Numpad5", v: 93 }, { k: "Numpad6", v: 94 }, { k: "Numpad7", v: 95 }, { k: "Numpad8", v: 96 }, { k: "Numpad9", v: 97 }, { k: "Numpad0", v: 98 }, { k: "NumpadDecimal", v: 99 }, { k: "NumpadEqual", v: 103 }, { k: "F13", v: 104 }, { k: "F14", v: 105 }, { k: "F15", v: 106 }, { k: "F16", v: 107 }, { k: "F17", v: 108 }, { k: "F18", v: 109 }, { k: "F19", v: 110 }, { k: "F20", v: 111 }, { k: "F21", v: 112 }, { k: "F22", v: 113 }, { k: "F23", v: 114 }, { k: "F24", v: 115 }, { k: "Help", v: 117 }, { k: "ContextMenu", v: 118 }, { k: "VolumeMute", v: 127 }, { k: "VolumeUp", v: 128 }, { k: "VolumeDown", v: 129 }, { k: "ControlLeft", v: 224 }, { k: "ShiftLeft", v: 225 }, { k: "AltLeft", v: 226 }, { k: "MetaLeft", v: 227 }, { k: "ControlRight", v: 228 }, { k: "ShiftRight", v: 229 }, { k: "AltRight", v: 230 }, { k: "MetaRight", v: 231 }, { k: "PrintScreen", v: 0 }]);
181299
181361
  keyCodesByKeyMap = $makeMap($String.keyFor, [{ k: "AudioVolumeMute", v: 127 }, { k: "AudioVolumeUp", v: 128 }, { k: "AudioVolumeDown", v: 129 }]);
181300
181362
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
@@ -183376,7 +183438,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
183376
183438
  jsdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/jsdecoder"];
183377
183439
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
183378
183440
  jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
183379
- dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
183441
+ dom = $packages["github.com/supraio/client-daemon/pkg/shiny/driver/util/dom"];
183380
183442
  screen = $packages["golang.org/x/exp/shiny/screen"];
183381
183443
  f64 = $packages["golang.org/x/image/math/f64"];
183382
183444
  image = $packages["image"];
@@ -184016,6 +184078,138 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
184016
184078
  $pkg.$init = $init;
184017
184079
  return $pkg;
184018
184080
  })();
184081
+ $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder/jsdecoder"] = (function() {
184082
+ var $pkg = {}, $init, js, ptrType, jsSamsungWasmDecoder, IsAvailable, CreateJsSamsungWasmDecoder, GetJsSamsungWasmDecoder;
184083
+ js = $packages["syscall/js"];
184084
+ ptrType = $ptrType(js.Value);
184085
+ IsAvailable = function() {
184086
+ return !$clone($clone(js.Global(), js.Value).Get("samsungWasmDecoder"), js.Value).IsUndefined();
184087
+ };
184088
+ $pkg.IsAvailable = IsAvailable;
184089
+ CreateJsSamsungWasmDecoder = function() {
184090
+ var createdJsSamsungWasmDecoder;
184091
+ if (!(jsSamsungWasmDecoder === ptrType.nil)) {
184092
+ $panic(new $String("JsSamsungWasmDecoder already created"));
184093
+ }
184094
+ createdJsSamsungWasmDecoder = $clone($clone(js.Global(), js.Value).Get("samsungWasmDecoder"), js.Value);
184095
+ jsSamsungWasmDecoder = createdJsSamsungWasmDecoder;
184096
+ return jsSamsungWasmDecoder;
184097
+ };
184098
+ $pkg.CreateJsSamsungWasmDecoder = CreateJsSamsungWasmDecoder;
184099
+ GetJsSamsungWasmDecoder = function() {
184100
+ return jsSamsungWasmDecoder;
184101
+ };
184102
+ $pkg.GetJsSamsungWasmDecoder = GetJsSamsungWasmDecoder;
184103
+ $init = function() {
184104
+ $pkg.$init = function() {};
184105
+ /* */ 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:
184106
+ $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184107
+ jsSamsungWasmDecoder = ptrType.nil;
184108
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
184109
+ };
184110
+ $pkg.$init = $init;
184111
+ return $pkg;
184112
+ })();
184113
+ $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"] = (function() {
184114
+ var $pkg = {}, $init, general, jsdecoder, errs, jshelper, sync, js, SamsungWasmDecoder, sliceType, ptrType, sliceType$1, ptrType$1, IsAvailable, NewDecoder;
184115
+ general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
184116
+ jsdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder/jsdecoder"];
184117
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
184118
+ jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
184119
+ sync = $packages["sync"];
184120
+ js = $packages["syscall/js"];
184121
+ SamsungWasmDecoder = $pkg.SamsungWasmDecoder = $newType(0, $kindStruct, "samsungwasmdecoder.SamsungWasmDecoder", true, "github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder", true, function(mutexDecode_, mutexGetPicture_) {
184122
+ this.$val = this;
184123
+ if (arguments.length === 0) {
184124
+ this.mutexDecode = new sync.Mutex.ptr(0, 0);
184125
+ this.mutexGetPicture = new sync.Mutex.ptr(0, 0);
184126
+ return;
184127
+ }
184128
+ this.mutexDecode = mutexDecode_;
184129
+ this.mutexGetPicture = mutexGetPicture_;
184130
+ });
184131
+ sliceType = $sliceType($emptyInterface);
184132
+ ptrType = $ptrType(js.Value);
184133
+ sliceType$1 = $sliceType($Uint8);
184134
+ ptrType$1 = $ptrType(SamsungWasmDecoder);
184135
+ IsAvailable = function() {
184136
+ return jsdecoder.IsAvailable();
184137
+ };
184138
+ $pkg.IsAvailable = IsAvailable;
184139
+ NewDecoder = function(header) {
184140
+ var header;
184141
+ return [new SamsungWasmDecoder.ptr($clone(new sync.Mutex.ptr(0, 0), sync.Mutex), $clone(new sync.Mutex.ptr(0, 0), sync.Mutex)), $ifaceNil];
184142
+ };
184143
+ $pkg.NewDecoder = NewDecoder;
184144
+ SamsungWasmDecoder.ptr.prototype.Write = function(nal) {
184145
+ var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, decodePromise, decodeResult, err, jsSamsungWasmDecoder, m, nal, pictureBuffer, pictureUint8Array, $s, $r, $c} = $restore(this, {nal});
184146
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
184147
+ m = this;
184148
+ jsSamsungWasmDecoder = jsdecoder.GetJsSamsungWasmDecoder();
184149
+ if (jsSamsungWasmDecoder === ptrType.nil) {
184150
+ jsSamsungWasmDecoder = jsdecoder.CreateJsSamsungWasmDecoder();
184151
+ }
184152
+ _r = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(new sliceType([new $Int(nal.$length)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
184153
+ pictureBuffer = $clone(_r, js.Value);
184154
+ _r$1 = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value).New(new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
184155
+ pictureUint8Array = $clone(_r$1, js.Value);
184156
+ js.CopyBytesToJS($clone(pictureUint8Array, js.Value), nal);
184157
+ $r = m.mutexDecode.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184158
+ _r$2 = $clone(jsSamsungWasmDecoder, js.Value).Call("decodeAndRender", new sliceType([new pictureBuffer.constructor.elem(pictureBuffer)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
184159
+ decodePromise = $clone(_r$2, js.Value);
184160
+ _r$3 = jshelper.Await($clone(decodePromise, js.Value)); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
184161
+ _tuple = _r$3;
184162
+ decodeResult = _tuple[0];
184163
+ err = _tuple[1];
184164
+ $r = m.mutexDecode.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184165
+ /* */ if (!(err === ptrType.nil)) { $s = 7; continue; }
184166
+ /* */ $s = 8; continue;
184167
+ /* if (!(err === ptrType.nil)) { */ case 7:
184168
+ _r$4 = jshelper.GetError(err); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
184169
+ _r$5 = _r$4.Error(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
184170
+ _arg = new $String(_r$5);
184171
+ _r$6 = errs.Errorf("Failed to decode frame: %s", new sliceType([_arg])); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
184172
+ $24r = _r$6;
184173
+ $s = 12; case 12: return $24r;
184174
+ /* } */ case 8:
184175
+ /* */ if (!(($clone(decodeResult, js.Value).Float() === 0))) { $s = 13; continue; }
184176
+ /* */ $s = 14; continue;
184177
+ /* if (!(($clone(decodeResult, js.Value).Float() === 0))) { */ case 13:
184178
+ _r$7 = errs.Errorf("Failed to decode frame with code: %f", new sliceType([new $Float64($clone(decodeResult, js.Value).Float())])); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
184179
+ $24r$1 = _r$7;
184180
+ $s = 16; case 16: return $24r$1;
184181
+ /* } */ case 14:
184182
+ $s = -1; return $ifaceNil;
184183
+ /* */ } return; } var $f = {$blk: SamsungWasmDecoder.ptr.prototype.Write, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, decodePromise, decodeResult, err, jsSamsungWasmDecoder, m, nal, pictureBuffer, pictureUint8Array, $s};return $f;
184184
+ };
184185
+ SamsungWasmDecoder.prototype.Write = function(nal) { return this.$val.Write(nal); };
184186
+ SamsungWasmDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
184187
+ var m, outputBuffer;
184188
+ m = this;
184189
+ return $ifaceNil;
184190
+ };
184191
+ SamsungWasmDecoder.prototype.NextOutput = function(outputBuffer) { return this.$val.NextOutput(outputBuffer); };
184192
+ SamsungWasmDecoder.ptr.prototype.Release = function(outputBuffer) {
184193
+ var m, outputBuffer;
184194
+ m = this;
184195
+ };
184196
+ SamsungWasmDecoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
184197
+ ptrType$1.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([sliceType$1], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
184198
+ 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: ""}]);
184199
+ $init = function() {
184200
+ $pkg.$init = function() {};
184201
+ /* */ 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:
184202
+ $r = general.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184203
+ $r = jsdecoder.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184204
+ $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184205
+ $r = jshelper.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184206
+ $r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184207
+ $r = js.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184208
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
184209
+ };
184210
+ $pkg.$init = $init;
184211
+ return $pkg;
184212
+ })();
184019
184213
  $packages["github.com/nuberu/webgl/types"] = (function() {
184020
184214
  var $pkg = {}, $init, js, VertexArray, UniformLocation, Texture, Shader, ShaderPrecisionFormat, Program, Buffer, FrameBuffer, RenderBuffer, GLEnum, PowerPreference, Attributes, ActiveInfo, funcType, arrayType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, NewVertexArray, NewUniformLocation, NewTexture, NewShader, NewShaderPrecisionFormat, NewProgram, NewBuffer, NewFrameBuffer, NewRenderBuffer, NewActiveInfo;
184021
184215
  js = $packages["syscall/js"];
@@ -188379,9 +188573,518 @@ $packages["github.com/nuberu/webgl"] = (function() {
188379
188573
  $pkg.$init = $init;
188380
188574
  return $pkg;
188381
188575
  })();
188382
- $packages["github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver"] = (function() {
188383
- var $pkg = {}, $init, fmt, 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, Main, main, newScreenImpl, newBuffer;
188576
+ $packages["golang.org/x/exp/shiny/driver/internal/errscreen"] = (function() {
188577
+ var $pkg = {}, $init, screen, image, stub, ptrType, Stub;
188578
+ screen = $packages["golang.org/x/exp/shiny/screen"];
188579
+ image = $packages["image"];
188580
+ stub = $pkg.stub = $newType(0, $kindStruct, "errscreen.stub", true, "golang.org/x/exp/shiny/driver/internal/errscreen", false, function(err_) {
188581
+ this.$val = this;
188582
+ if (arguments.length === 0) {
188583
+ this.err = $ifaceNil;
188584
+ return;
188585
+ }
188586
+ this.err = err_;
188587
+ });
188588
+ ptrType = $ptrType(screen.NewWindowOptions);
188589
+ Stub = function(err) {
188590
+ var err, x;
188591
+ return (x = new stub.ptr(err), new x.constructor.elem(x));
188592
+ };
188593
+ $pkg.Stub = Stub;
188594
+ stub.ptr.prototype.NewBuffer = function(size) {
188595
+ var s, size;
188596
+ s = this;
188597
+ return [$ifaceNil, s.err];
188598
+ };
188599
+ stub.prototype.NewBuffer = function(size) { return this.$val.NewBuffer(size); };
188600
+ stub.ptr.prototype.NewTexture = function(size) {
188601
+ var s, size;
188602
+ s = this;
188603
+ return [$ifaceNil, s.err];
188604
+ };
188605
+ stub.prototype.NewTexture = function(size) { return this.$val.NewTexture(size); };
188606
+ stub.ptr.prototype.NewWindow = function(opts) {
188607
+ var opts, s;
188608
+ s = this;
188609
+ return [$ifaceNil, s.err];
188610
+ };
188611
+ stub.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
188612
+ stub.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)}];
188613
+ stub.init("golang.org/x/exp/shiny/driver/internal/errscreen", [{prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]);
188614
+ $init = function() {
188615
+ $pkg.$init = function() {};
188616
+ /* */ 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:
188617
+ $r = screen.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188618
+ $r = image.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188619
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
188620
+ };
188621
+ $pkg.$init = $init;
188622
+ return $pkg;
188623
+ })();
188624
+ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
188625
+ var $pkg = {}, $init, focus, key, mouse, size, geom, math, strings, js, DomEvents, sliceType, funcType, sliceType$1, sliceType$2, chanType, ptrType, keyCodesMap, keyCodesByKeyMap, GetDocWidth, GetDocHeight, GetScreenWidth, GetScreenHeight, GetBrowserZoomRatio, SetWindowWidth, SetWindowHeight, GetOrientation, NewDomEvents, getMouseDirection, getWheelButton, getMouseButton, getEventModifiers, isFocusIn, getKeyRune, getKeyDirection, getKeyCode;
188626
+ focus = $packages["golang.org/x/mobile/event/focus"];
188627
+ key = $packages["golang.org/x/mobile/event/key"];
188628
+ mouse = $packages["golang.org/x/mobile/event/mouse"];
188629
+ size = $packages["golang.org/x/mobile/event/size"];
188630
+ geom = $packages["golang.org/x/mobile/geom"];
188631
+ math = $packages["math"];
188632
+ strings = $packages["strings"];
188633
+ js = $packages["syscall/js"];
188634
+ DomEvents = $pkg.DomEvents = $newType(0, $kindStruct, "dom.DomEvents", true, "golang.org/x/exp/shiny/driver/util/dom", true, function(eventChan_, releases_) {
188635
+ this.$val = this;
188636
+ if (arguments.length === 0) {
188637
+ this.eventChan = $chanNil;
188638
+ this.releases = sliceType$1.nil;
188639
+ return;
188640
+ }
188641
+ this.eventChan = eventChan_;
188642
+ this.releases = releases_;
188643
+ });
188644
+ sliceType = $sliceType($emptyInterface);
188645
+ funcType = $funcType([], [], false);
188646
+ sliceType$1 = $sliceType(funcType);
188647
+ sliceType$2 = $sliceType($Int32);
188648
+ chanType = $chanType($emptyInterface, false, false);
188649
+ ptrType = $ptrType(DomEvents);
188650
+ GetDocWidth = function() {
188651
+ return $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
188652
+ };
188653
+ $pkg.GetDocWidth = GetDocWidth;
188654
+ GetDocHeight = function() {
188655
+ return $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
188656
+ };
188657
+ $pkg.GetDocHeight = GetDocHeight;
188658
+ GetScreenWidth = function() {
188659
+ return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
188660
+ };
188661
+ $pkg.GetScreenWidth = GetScreenWidth;
188662
+ GetScreenHeight = function() {
188663
+ return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
188664
+ };
188665
+ $pkg.GetScreenHeight = GetScreenHeight;
188666
+ GetBrowserZoomRatio = function() {
188667
+ var chromeZoom1, chromeZoom2, chromeZoom3, docElClientWidth, scrollerWidthInNoZoom, scrollerWidthInZoom1, scrollerWidthInZoom2, windowInnerWidth, windowOuterWidth;
188668
+ windowInnerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Float();
188669
+ windowOuterWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Float();
188670
+ docElClientWidth = $clone($clone($clone($clone(js.Global(), js.Value).Get("document"), js.Value).Get("documentElement"), js.Value).Get("clientWidth"), js.Value).Float();
188671
+ scrollerWidthInNoZoom = windowInnerWidth - docElClientWidth;
188672
+ chromeZoom1 = (windowOuterWidth - scrollerWidthInNoZoom) / windowInnerWidth;
188673
+ scrollerWidthInZoom1 = math.Round(scrollerWidthInNoZoom * chromeZoom1);
188674
+ chromeZoom2 = (windowOuterWidth - scrollerWidthInZoom1) / windowInnerWidth;
188675
+ scrollerWidthInZoom2 = math.Round(scrollerWidthInNoZoom * chromeZoom2);
188676
+ chromeZoom3 = (windowOuterWidth - scrollerWidthInZoom2) / windowInnerWidth;
188677
+ return chromeZoom3;
188678
+ };
188679
+ $pkg.GetBrowserZoomRatio = GetBrowserZoomRatio;
188680
+ SetWindowWidth = function(newInnerWidth) {
188681
+ var {_r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s, $r, $c} = $restore(this, {newInnerWidth});
188682
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188683
+ innerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
188684
+ outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
188685
+ outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
188686
+ newOuterWidth = newInnerWidth + ((outerWidth - innerWidth >> 0)) >> 0;
188687
+ screenWidth = GetScreenWidth();
188688
+ if (newOuterWidth > screenWidth) {
188689
+ newOuterWidth = screenWidth;
188690
+ }
188691
+ _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(newOuterWidth), new $Int(outerHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188692
+ _r;
188693
+ $s = -1; return;
188694
+ /* */ } return; } var $f = {$blk: SetWindowWidth, $c: true, $r, _r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s};return $f;
188695
+ };
188696
+ $pkg.SetWindowWidth = SetWindowWidth;
188697
+ SetWindowHeight = function(newInnerHeight) {
188698
+ var {_r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s, $r, $c} = $restore(this, {newInnerHeight});
188699
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188700
+ innerHeight = $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
188701
+ outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
188702
+ outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
188703
+ newOuterHeight = newInnerHeight + ((outerHeight - innerHeight >> 0)) >> 0;
188704
+ screenHeight = GetScreenHeight();
188705
+ if (newOuterHeight > screenHeight) {
188706
+ newOuterHeight = screenHeight;
188707
+ }
188708
+ _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(outerWidth), new $Int(newOuterHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188709
+ _r;
188710
+ $s = -1; return;
188711
+ /* */ } return; } var $f = {$blk: SetWindowHeight, $c: true, $r, _r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s};return $f;
188712
+ };
188713
+ $pkg.SetWindowHeight = SetWindowHeight;
188714
+ GetOrientation = function() {
188715
+ var {$24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred, $r, $c} = $restore(this, {});
188716
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
188717
+ orientation = [orientation];
188718
+ orientation[0] = 0;
188719
+ $deferred.push([(function(orientation) { return function() {
188720
+ if (!($interfaceIsEqual($recover(), $ifaceNil))) {
188721
+ orientation[0] = 0;
188722
+ }
188723
+ }; })(orientation), []]);
188724
+ orientationType = $clone($clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("orientation"), js.Value).Get("type"), js.Value).String();
188725
+ /* */ if (strings.HasPrefix(orientationType, "landscape")) { $s = 1; continue; }
188726
+ /* */ $s = 2; continue;
188727
+ /* if (strings.HasPrefix(orientationType, "landscape")) { */ case 1:
188728
+ orientation[0] = 2;
188729
+ $24r = orientation[0];
188730
+ $s = 3; case 3: return $24r;
188731
+ /* } */ case 2:
188732
+ /* */ if (strings.HasPrefix(orientationType, "portrait")) { $s = 4; continue; }
188733
+ /* */ $s = 5; continue;
188734
+ /* if (strings.HasPrefix(orientationType, "portrait")) { */ case 4:
188735
+ orientation[0] = 2;
188736
+ $24r$1 = orientation[0];
188737
+ $s = 6; case 6: return $24r$1;
188738
+ /* } */ case 5:
188739
+ orientation[0] = 0;
188740
+ $24r$2 = orientation[0];
188741
+ $s = 7; case 7: return $24r$2;
188742
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return orientation[0]; } if($curGoroutine.asleep) { var $f = {$blk: GetOrientation, $c: true, $r, $24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred};return $f; } }
188743
+ };
188744
+ $pkg.GetOrientation = GetOrientation;
188745
+ NewDomEvents = function() {
188746
+ return new DomEvents.ptr(new $Chan($emptyInterface, 0), $makeSlice(sliceType$1, 0));
188747
+ };
188748
+ $pkg.NewDomEvents = NewDomEvents;
188749
+ DomEvents.ptr.prototype.GetEventChan = function() {
188750
+ var d;
188751
+ d = this;
188752
+ return d.eventChan;
188753
+ };
188754
+ DomEvents.prototype.GetEventChan = function() { return this.$val.GetEventChan(); };
188755
+ DomEvents.ptr.prototype.Release = function() {
188756
+ var {_i, _ref, d, release, $s, $r, $c} = $restore(this, {});
188757
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188758
+ d = this;
188759
+ _ref = d.releases;
188760
+ _i = 0;
188761
+ /* while (true) { */ case 1:
188762
+ /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
188763
+ release = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
188764
+ $r = release(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188765
+ _i++;
188766
+ $s = 1; continue;
188767
+ case 2:
188768
+ $s = -1; return;
188769
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.Release, $c: true, $r, _i, _ref, d, release, $s};return $f;
188770
+ };
188771
+ DomEvents.prototype.Release = function() { return this.$val.Release(); };
188772
+ DomEvents.ptr.prototype.BindEvents = function() {
188773
+ var {d, $s, $r, $c} = $restore(this, {});
188774
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188775
+ d = this;
188776
+ $r = d.bindSizeEvents(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188777
+ $go($methodVal(d, "emitSizeEvent"), []);
188778
+ $r = d.bindMouseEvents(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188779
+ $r = d.bindKeyEvents(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188780
+ $r = d.bindFocusEvents(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188781
+ $s = -1; return;
188782
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.BindEvents, $c: true, $r, d, $s};return $f;
188783
+ };
188784
+ DomEvents.prototype.BindEvents = function() { return this.$val.BindEvents(); };
188785
+ DomEvents.ptr.prototype.bindSizeEvents = function() {
188786
+ var {_r, d, onResize, $s, $r, $c} = $restore(this, {});
188787
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188788
+ d = [d];
188789
+ onResize = [onResize];
188790
+ d[0] = this;
188791
+ onResize[0] = $clone(js.FuncOf((function(d, onResize) { return function $b(this$1, args) {
188792
+ var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
188793
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188794
+ $r = d[0].emitSizeEvent(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188795
+ $s = -1; return $ifaceNil;
188796
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
188797
+ }; })(d, onResize)), js.Func);
188798
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188799
+ _r;
188800
+ d[0].releases = $append(d[0].releases, (function(d, onResize) { return function $b() {
188801
+ var {_r$1, $s, $r, $c} = $restore(this, {});
188802
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188803
+ _r$1 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
188804
+ _r$1;
188805
+ $clone(onResize[0], js.Func).Release();
188806
+ $s = -1; return;
188807
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, $s};return $f;
188808
+ }; })(d, onResize));
188809
+ $s = -1; return;
188810
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindSizeEvents, $c: true, $r, _r, d, onResize, $s};return $f;
188811
+ };
188812
+ DomEvents.prototype.bindSizeEvents = function() { return this.$val.bindSizeEvents(); };
188813
+ DomEvents.ptr.prototype.emitSizeEvent = function() {
188814
+ var {_q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s, $r, $c} = $restore(this, {});
188815
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188816
+ d = this;
188817
+ _r = GetOrientation(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188818
+ orientation = _r;
188819
+ pixelsPerPt = 1;
188820
+ width = GetDocWidth();
188821
+ height = GetDocHeight();
188822
+ $r = $send(d.eventChan, (x = new size.Event.ptr(width, height, ((_q = width / ((pixelsPerPt >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), ((_q$1 = height / ((pixelsPerPt >> 0)), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), pixelsPerPt, orientation), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188823
+ $s = -1; return;
188824
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.emitSizeEvent, $c: true, $r, _q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s};return $f;
188825
+ };
188826
+ DomEvents.prototype.emitSizeEvent = function() { return this.$val.emitSizeEvent(); };
188827
+ DomEvents.ptr.prototype.bindMouseEvents = function() {
188828
+ var {_r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s, $r, $c} = $restore(this, {});
188829
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188830
+ d = [d];
188831
+ onClick = [onClick];
188832
+ onMove = [onMove];
188833
+ onWheel = [onWheel];
188834
+ d[0] = this;
188835
+ onMove[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
188836
+ var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
188837
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188838
+ _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188839
+ _r;
188840
+ $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), 0, getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 0), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188841
+ $s = -1; return $ifaceNil;
188842
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
188843
+ }; })(d, onClick, onMove, onWheel)), js.Func);
188844
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188845
+ _r;
188846
+ onClick[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
188847
+ var {_r$1, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
188848
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188849
+ _r$1 = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
188850
+ _r$1;
188851
+ $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getMouseButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getMouseDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188852
+ $s = -1; return $ifaceNil;
188853
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, args, this$1, x, $s};return $f;
188854
+ }; })(d, onClick, onMove, onWheel)), js.Func);
188855
+ _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
188856
+ _r$1;
188857
+ _r$2 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
188858
+ _r$2;
188859
+ onWheel[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
188860
+ var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
188861
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188862
+ $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getWheelButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 3), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188863
+ $s = -1; return $ifaceNil;
188864
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
188865
+ }; })(d, onClick, onMove, onWheel)), js.Func);
188866
+ _r$3 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
188867
+ _r$3;
188868
+ d[0].releases = $append(d[0].releases, (function(d, onClick, onMove, onWheel) { return function $b() {
188869
+ var {_r$4, _r$5, _r$6, _r$7, $s, $r, $c} = $restore(this, {});
188870
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188871
+ _r$4 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
188872
+ _r$4;
188873
+ _r$5 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
188874
+ _r$5;
188875
+ _r$6 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
188876
+ _r$6;
188877
+ _r$7 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
188878
+ _r$7;
188879
+ $clone(onMove[0], js.Func).Release();
188880
+ $clone(onClick[0], js.Func).Release();
188881
+ $clone(onWheel[0], js.Func).Release();
188882
+ $s = -1; return;
188883
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$4, _r$5, _r$6, _r$7, $s};return $f;
188884
+ }; })(d, onClick, onMove, onWheel));
188885
+ $s = -1; return;
188886
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindMouseEvents, $c: true, $r, _r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s};return $f;
188887
+ };
188888
+ DomEvents.prototype.bindMouseEvents = function() { return this.$val.bindMouseEvents(); };
188889
+ getMouseDirection = function(ev) {
188890
+ var dir, ev;
188891
+ dir = 0;
188892
+ dir = 0;
188893
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mousedown") {
188894
+ dir = 1;
188895
+ }
188896
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mouseup") {
188897
+ dir = 2;
188898
+ }
188899
+ return dir;
188900
+ };
188901
+ getWheelButton = function(ev) {
188902
+ var deltaX, deltaY, ev;
188903
+ deltaY = $clone($clone(ev, js.Value).Get("deltaY"), js.Value).Int();
188904
+ deltaX = $clone($clone(ev, js.Value).Get("deltaX"), js.Value).Int();
188905
+ if (deltaY > 0) {
188906
+ return -2;
188907
+ }
188908
+ if (deltaY < 0) {
188909
+ return -1;
188910
+ }
188911
+ if (deltaX > 0) {
188912
+ return -4;
188913
+ }
188914
+ if (deltaX < 0) {
188915
+ return -3;
188916
+ }
188917
+ return 0;
188918
+ };
188919
+ getMouseButton = function(ev) {
188920
+ var _1, ev;
188921
+ _1 = $clone($clone(ev, js.Value).Get("button"), js.Value).Int();
188922
+ if (_1 === (0)) {
188923
+ return 1;
188924
+ } else if (_1 === (1)) {
188925
+ return 2;
188926
+ } else if (_1 === (2)) {
188927
+ return 3;
188928
+ } else if (_1 === (3)) {
188929
+ return 8;
188930
+ } else if (_1 === (4)) {
188931
+ return 9;
188932
+ } else {
188933
+ return 0;
188934
+ }
188935
+ };
188936
+ getEventModifiers = function(ev) {
188937
+ var ev, mod;
188938
+ mod = 0;
188939
+ if ($clone($clone(ev, js.Value).Get("altKey"), js.Value).Bool()) {
188940
+ mod = (mod | (4)) >>> 0;
188941
+ }
188942
+ if ($clone($clone(ev, js.Value).Get("ctrlKey"), js.Value).Bool()) {
188943
+ mod = (mod | (2)) >>> 0;
188944
+ }
188945
+ if ($clone($clone(ev, js.Value).Get("shiftKey"), js.Value).Bool()) {
188946
+ mod = (mod | (1)) >>> 0;
188947
+ }
188948
+ if ($clone($clone(ev, js.Value).Get("metaKey"), js.Value).Bool()) {
188949
+ mod = (mod | (8)) >>> 0;
188950
+ }
188951
+ return mod;
188952
+ };
188953
+ DomEvents.ptr.prototype.bindFocusEvents = function() {
188954
+ var {_r, _r$1, d, onFocus, $s, $r, $c} = $restore(this, {});
188955
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188956
+ d = [d];
188957
+ onFocus = [onFocus];
188958
+ d[0] = this;
188959
+ onFocus[0] = $clone(js.FuncOf((function(d, onFocus) { return function $b(this$1, args) {
188960
+ var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
188961
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188962
+ $r = $send(d[0].eventChan, (x = new focus.Event.ptr(isFocusIn($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188963
+ $s = -1; return $ifaceNil;
188964
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
188965
+ }; })(d, onFocus)), js.Func);
188966
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188967
+ _r;
188968
+ _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
188969
+ _r$1;
188970
+ d[0].releases = $append(d[0].releases, (function(d, onFocus) { return function $b() {
188971
+ var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
188972
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188973
+ _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
188974
+ _r$2;
188975
+ _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
188976
+ _r$3;
188977
+ $clone(onFocus[0], js.Func).Release();
188978
+ $s = -1; return;
188979
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
188980
+ }; })(d, onFocus));
188981
+ $s = -1; return;
188982
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindFocusEvents, $c: true, $r, _r, _r$1, d, onFocus, $s};return $f;
188983
+ };
188984
+ DomEvents.prototype.bindFocusEvents = function() { return this.$val.bindFocusEvents(); };
188985
+ isFocusIn = function(ev) {
188986
+ var ev;
188987
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "focus") {
188988
+ return true;
188989
+ }
188990
+ return false;
188991
+ };
188992
+ DomEvents.ptr.prototype.bindKeyEvents = function() {
188993
+ var {_r, _r$1, d, onKey, $s, $r, $c} = $restore(this, {});
188994
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188995
+ d = [d];
188996
+ onKey = [onKey];
188997
+ d[0] = this;
188998
+ onKey[0] = $clone(js.FuncOf((function(d, onKey) { return function $b(this$1, args) {
188999
+ var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
189000
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189001
+ _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189002
+ _r;
189003
+ $r = $send(d[0].eventChan, (x = new key.Event.ptr(getKeyRune($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getKeyCode($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getKeyDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189004
+ $s = -1; return $ifaceNil;
189005
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
189006
+ }; })(d, onKey)), js.Func);
189007
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189008
+ _r;
189009
+ _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189010
+ _r$1;
189011
+ d[0].releases = $append(d[0].releases, (function(d, onKey) { return function $b() {
189012
+ var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
189013
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189014
+ _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189015
+ _r$2;
189016
+ _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189017
+ _r$3;
189018
+ $clone(onKey[0], js.Func).Release();
189019
+ $s = -1; return;
189020
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
189021
+ }; })(d, onKey));
189022
+ $s = -1; return;
189023
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindKeyEvents, $c: true, $r, _r, _r$1, d, onKey, $s};return $f;
189024
+ };
189025
+ DomEvents.prototype.bindKeyEvents = function() { return this.$val.bindKeyEvents(); };
189026
+ getKeyRune = function(ev) {
189027
+ var ev, key$1;
189028
+ key$1 = (new sliceType$2($stringToRunes($clone($clone(ev, js.Value).Get("key"), js.Value).String())));
189029
+ if (key$1.$length === 1) {
189030
+ return (0 >= key$1.$length ? ($throwRuntimeError("index out of range"), undefined) : key$1.$array[key$1.$offset + 0]);
189031
+ }
189032
+ return -1;
189033
+ };
189034
+ getKeyDirection = function(ev) {
189035
+ var dir, ev;
189036
+ dir = 0;
189037
+ dir = 0;
189038
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keydown") {
189039
+ dir = 1;
189040
+ }
189041
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keyup") {
189042
+ dir = 2;
189043
+ }
189044
+ return dir;
189045
+ };
189046
+ getKeyCode = function(ev) {
189047
+ var _entry, _entry$1, _tuple, _tuple$1, code, code$1, domCode, domKey, ev, exists, exists$1;
189048
+ domCode = $clone($clone(ev, js.Value).Get("code"), js.Value).String();
189049
+ _tuple = (_entry = $mapIndex(keyCodesMap,$String.keyFor(domCode)), _entry !== undefined ? [_entry.v, true] : [0, false]);
189050
+ code = _tuple[0];
189051
+ exists = _tuple[1];
189052
+ if (exists) {
189053
+ return code;
189054
+ }
189055
+ domKey = $clone($clone(ev, js.Value).Get("key"), js.Value).String();
189056
+ _tuple$1 = (_entry$1 = $mapIndex(keyCodesByKeyMap,$String.keyFor(domKey)), _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
189057
+ code$1 = _tuple$1[0];
189058
+ exists$1 = _tuple$1[1];
189059
+ if (exists$1) {
189060
+ return code$1;
189061
+ }
189062
+ return 0;
189063
+ };
189064
+ ptrType.methods = [{prop: "GetEventChan", name: "GetEventChan", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "BindEvents", name: "BindEvents", pkg: "", typ: $funcType([], [], false)}, {prop: "bindSizeEvents", name: "bindSizeEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}];
189065
+ DomEvents.init("golang.org/x/exp/shiny/driver/util/dom", [{prop: "eventChan", name: "eventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "releases", name: "releases", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
189066
+ $init = function() {
189067
+ $pkg.$init = function() {};
189068
+ /* */ 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:
189069
+ $r = focus.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189070
+ $r = key.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189071
+ $r = mouse.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189072
+ $r = size.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189073
+ $r = geom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189074
+ $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189075
+ $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189076
+ $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189077
+ keyCodesMap = $makeMap($String.keyFor, [{ k: "KeyA", v: 4 }, { k: "KeyB", v: 5 }, { k: "KeyC", v: 6 }, { k: "KeyD", v: 7 }, { k: "KeyE", v: 8 }, { k: "KeyF", v: 9 }, { k: "KeyG", v: 10 }, { k: "KeyH", v: 11 }, { k: "KeyI", v: 12 }, { k: "KeyJ", v: 13 }, { k: "KeyK", v: 14 }, { k: "KeyL", v: 15 }, { k: "KeyM", v: 16 }, { k: "KeyN", v: 17 }, { k: "KeyO", v: 18 }, { k: "KeyP", v: 19 }, { k: "KeyQ", v: 20 }, { k: "KeyR", v: 21 }, { k: "KeyS", v: 22 }, { k: "KeyT", v: 23 }, { k: "KeyU", v: 24 }, { k: "KeyV", v: 25 }, { k: "KeyW", v: 26 }, { k: "KeyX", v: 27 }, { k: "KeyY", v: 28 }, { k: "KeyZ", v: 29 }, { k: "Digit1", v: 30 }, { k: "Digit2", v: 31 }, { k: "Digit3", v: 32 }, { k: "Digit4", v: 33 }, { k: "Digit5", v: 34 }, { k: "Digit6", v: 35 }, { k: "Digit7", v: 36 }, { k: "Digit8", v: 37 }, { k: "Digit9", v: 38 }, { k: "Digit0", v: 39 }, { k: "Enter", v: 40 }, { k: "Escape", v: 41 }, { k: "Backspace", v: 42 }, { k: "Tab", v: 43 }, { k: "Space", v: 44 }, { k: "Minus", v: 45 }, { k: "Equal", v: 46 }, { k: "BracketLeft", v: 47 }, { k: "BracketRight", v: 48 }, { k: "Backslash", v: 49 }, { k: "Semicolon", v: 51 }, { k: "Quote", v: 52 }, { k: "Backquote", v: 53 }, { k: "Comma", v: 54 }, { k: "Period", v: 55 }, { k: "Slash", v: 56 }, { k: "CapsLock", v: 57 }, { k: "F1", v: 58 }, { k: "F2", v: 59 }, { k: "F3", v: 60 }, { k: "F4", v: 61 }, { k: "F5", v: 62 }, { k: "F6", v: 63 }, { k: "F7", v: 64 }, { k: "F8", v: 65 }, { k: "F9", v: 66 }, { k: "F10", v: 67 }, { k: "F11", v: 68 }, { k: "F12", v: 69 }, { k: "Pause", v: 72 }, { k: "Insert", v: 73 }, { k: "Home", v: 74 }, { k: "PageUp", v: 75 }, { k: "Delete", v: 76 }, { k: "End", v: 77 }, { k: "PageDown", v: 78 }, { k: "ArrowRight", v: 79 }, { k: "ArrowLeft", v: 80 }, { k: "ArrowDown", v: 81 }, { k: "ArrowUp", v: 82 }, { k: "NumLock", v: 83 }, { k: "NumpadDivide", v: 84 }, { k: "NumpadMultiply", v: 85 }, { k: "NumpadSubtract", v: 86 }, { k: "NumpadAdd", v: 87 }, { k: "NumpadEnter", v: 88 }, { k: "Numpad1", v: 89 }, { k: "Numpad2", v: 90 }, { k: "Numpad3", v: 91 }, { k: "Numpad4", v: 92 }, { k: "Numpad5", v: 93 }, { k: "Numpad6", v: 94 }, { k: "Numpad7", v: 95 }, { k: "Numpad8", v: 96 }, { k: "Numpad9", v: 97 }, { k: "Numpad0", v: 98 }, { k: "NumpadDecimal", v: 99 }, { k: "NumpadEqual", v: 103 }, { k: "F13", v: 104 }, { k: "F14", v: 105 }, { k: "F15", v: 106 }, { k: "F16", v: 107 }, { k: "F17", v: 108 }, { k: "F18", v: 109 }, { k: "F19", v: 110 }, { k: "F20", v: 111 }, { k: "F21", v: 112 }, { k: "F22", v: 113 }, { k: "F23", v: 114 }, { k: "F24", v: 115 }, { k: "Help", v: 117 }, { k: "ContextMenu", v: 118 }, { k: "VolumeMute", v: 127 }, { k: "VolumeUp", v: 128 }, { k: "VolumeDown", v: 129 }, { k: "ControlLeft", v: 224 }, { k: "ShiftLeft", v: 225 }, { k: "AltLeft", v: 226 }, { k: "MetaLeft", v: 227 }, { k: "ControlRight", v: 228 }, { k: "ShiftRight", v: 229 }, { k: "AltRight", v: 230 }, { k: "MetaRight", v: 231 }, { k: "PrintScreen", v: 0 }]);
189078
+ keyCodesByKeyMap = $makeMap($String.keyFor, [{ k: "AudioVolumeMute", v: 127 }, { k: "AudioVolumeUp", v: 128 }, { k: "AudioVolumeDown", v: 129 }]);
189079
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189080
+ };
189081
+ $pkg.$init = $init;
189082
+ return $pkg;
189083
+ })();
189084
+ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
189085
+ 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, Main, main, newScreenImpl, newBuffer;
188384
189086
  fmt = $packages["fmt"];
189087
+ errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
188385
189088
  dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
188386
189089
  screen = $packages["golang.org/x/exp/shiny/screen"];
188387
189090
  f64 = $packages["golang.org/x/image/math/f64"];
@@ -188390,7 +189093,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver"] = (f
188390
189093
  draw = $packages["image/draw"];
188391
189094
  sync = $packages["sync"];
188392
189095
  js = $packages["syscall/js"];
188393
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "canvasdriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver", false, function(screen_, mutex_, canvasEl_, ctx2d_, released_, domEvents_, resizeCallback_) {
189096
+ 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_) {
188394
189097
  this.$val = this;
188395
189098
  if (arguments.length === 0) {
188396
189099
  this.screen = ptrType.nil;
@@ -188410,7 +189113,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver"] = (f
188410
189113
  this.domEvents = domEvents_;
188411
189114
  this.resizeCallback = resizeCallback_;
188412
189115
  });
188413
- screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "canvasdriver.screenImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver", false, function(doc_) {
189116
+ screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "canvasdriver.screenImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(doc_) {
188414
189117
  this.$val = this;
188415
189118
  if (arguments.length === 0) {
188416
189119
  this.doc = new js.Value.ptr(null, false, arrayType.zero());
@@ -188418,7 +189121,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver"] = (f
188418
189121
  }
188419
189122
  this.doc = doc_;
188420
189123
  });
188421
- YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "canvasdriver.YCbCrJS", true, "github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver", true, function(CanvasImageSource_) {
189124
+ YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "canvasdriver.YCbCrJS", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(CanvasImageSource_) {
188422
189125
  this.$val = this;
188423
189126
  if (arguments.length === 0) {
188424
189127
  this.CanvasImageSource = ptrType$5.nil;
@@ -188426,7 +189129,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver"] = (f
188426
189129
  }
188427
189130
  this.CanvasImageSource = CanvasImageSource_;
188428
189131
  });
188429
- BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "canvasdriver.BufferImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver", true, function(screen_, size_, mutex_, released_, rgba_, ycbcr_, ycbcrJS_) {
189132
+ 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_) {
188430
189133
  this.$val = this;
188431
189134
  if (arguments.length === 0) {
188432
189135
  this.screen = ptrType.nil;
@@ -188607,7 +189310,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver"] = (f
188607
189310
  /* */ $s = 2; continue;
188608
189311
  /* if ($assertType(_ref, ptrType$3, true)[1]) { */ case 1:
188609
189312
  jsSrc = _ref.$val;
188610
- _r = $clone(w.ctx2d, js.Value).Call("drawImage", new sliceType([(x = jsSrc.YCbCrJS().CanvasImageSource, new x.constructor.elem(x)), new $Int(dp.X), new $Int(dp.Y), new $Int($clone($clone(w.canvasEl, js.Value).Get("width"), js.Value).Int()), new $Int($clone($clone(w.canvasEl, js.Value).Get("height"), js.Value).Int())])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189313
+ _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; }
188611
189314
  _r;
188612
189315
  $s = -1; return;
188613
189316
  /* } */ case 2:
@@ -188667,9 +189370,11 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver"] = (f
188667
189370
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188668
189371
  _r = main(f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188669
189372
  err = _r;
188670
- if (!($interfaceIsEqual(err, $ifaceNil))) {
188671
- $panic(err);
188672
- }
189373
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
189374
+ /* */ $s = 3; continue;
189375
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
189376
+ $r = f(errscreen.Stub(err)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189377
+ /* } */ case 3:
188673
189378
  $s = -1; return;
188674
189379
  /* */ } return; } var $f = {$blk: Main, $c: true, $r, _r, err, f, $s};return $f;
188675
189380
  };
@@ -188780,669 +189485,37 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver"] = (f
188780
189485
  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)}];
188781
189486
  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)}];
188782
189487
  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)}];
188783
- windowImpl.init("github.com/supraio/client-daemon/pkg/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: ""}]);
188784
- screenImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
189488
+ 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: ""}]);
189489
+ screenImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
188785
189490
  YCbCrJS.init("", [{prop: "CanvasImageSource", name: "CanvasImageSource", embedded: false, exported: true, typ: ptrType$5, tag: ""}]);
188786
- BufferImpl.init("github.com/supraio/client-daemon/pkg/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: ""}]);
189491
+ 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: ""}]);
188787
189492
  $init = function() {
188788
189493
  $pkg.$init = function() {};
188789
189494
  /* */ 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:
188790
189495
  $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188791
- $r = dom.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188792
- $r = screen.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188793
- $r = f64.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188794
- $r = image.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188795
- $r = color.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188796
- $r = draw.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188797
- $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188798
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188799
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
188800
- };
188801
- $pkg.$init = $init;
188802
- return $pkg;
188803
- })();
188804
- $packages["github.com/supraio/client-daemon/pkg/x264"] = (function() {
188805
- var $pkg = {}, $init, hex, fmt, image, strconv, NalHeader, BitReader, SPS, sliceType, sliceType$1, sliceType$2, ptrType, sliceType$3, ptrType$1, ptrType$2, nalStartCodePrefix, nalUnitTypes, parseNalHeader, FindNalStartIndexes, parseSPS, GetFirstSps;
188806
- hex = $packages["encoding/hex"];
188807
- fmt = $packages["fmt"];
188808
- image = $packages["image"];
188809
- strconv = $packages["strconv"];
188810
- NalHeader = $pkg.NalHeader = $newType(0, $kindStruct, "x264.NalHeader", true, "github.com/supraio/client-daemon/pkg/x264", true, function(ByteValue_, BinaryRepresentation_, ForbiddenZeroBit_, NalRefIdc_, NalUnitType_, TypeDescription_) {
188811
- this.$val = this;
188812
- if (arguments.length === 0) {
188813
- this.ByteValue = 0;
188814
- this.BinaryRepresentation = "";
188815
- this.ForbiddenZeroBit = 0;
188816
- this.NalRefIdc = 0;
188817
- this.NalUnitType = 0;
188818
- this.TypeDescription = "";
188819
- return;
188820
- }
188821
- this.ByteValue = ByteValue_;
188822
- this.BinaryRepresentation = BinaryRepresentation_;
188823
- this.ForbiddenZeroBit = ForbiddenZeroBit_;
188824
- this.NalRefIdc = NalRefIdc_;
188825
- this.NalUnitType = NalUnitType_;
188826
- this.TypeDescription = TypeDescription_;
188827
- });
188828
- BitReader = $pkg.BitReader = $newType(0, $kindStruct, "x264.BitReader", true, "github.com/supraio/client-daemon/pkg/x264", true, function(data_, offset_) {
188829
- this.$val = this;
188830
- if (arguments.length === 0) {
188831
- this.data = sliceType.nil;
188832
- this.offset = 0;
188833
- return;
188834
- }
188835
- this.data = data_;
188836
- this.offset = offset_;
188837
- });
188838
- SPS = $pkg.SPS = $newType(0, $kindStruct, "x264.SPS", true, "github.com/supraio/client-daemon/pkg/x264", true, function(ProfileIdc_, ChromaFormatIdc_, SeparateColourPlaneFlag_, ChromaArrayType_, ConstraintSetFlags_, LevelIdc_, SeqParameterSetId_, Log2MaxFrameNumMinus4_, PicOrderCntType_, Log2MaxPicOrderCntLsbMinus4_, MaxNumRefFrames_, GapsInFrameNumValueAllowedFlag_, PicWidthInMbsMinus1_, PicHeightInMapUnitsMinus1_, FrameMbsOnlyFlag_, MbAdaptiveFrameFieldFlag_, Direct8x8InferenceFlag_, FrameCroppingFlag_, FrameCropLeftOffset_, FrameCropRightOffset_, FrameCropTopOffset_, FrameCropBottomOffset_) {
188839
- this.$val = this;
188840
- if (arguments.length === 0) {
188841
- this.ProfileIdc = 0;
188842
- this.ChromaFormatIdc = 0;
188843
- this.SeparateColourPlaneFlag = 0;
188844
- this.ChromaArrayType = 0;
188845
- this.ConstraintSetFlags = 0;
188846
- this.LevelIdc = 0;
188847
- this.SeqParameterSetId = 0;
188848
- this.Log2MaxFrameNumMinus4 = 0;
188849
- this.PicOrderCntType = 0;
188850
- this.Log2MaxPicOrderCntLsbMinus4 = 0;
188851
- this.MaxNumRefFrames = 0;
188852
- this.GapsInFrameNumValueAllowedFlag = 0;
188853
- this.PicWidthInMbsMinus1 = 0;
188854
- this.PicHeightInMapUnitsMinus1 = 0;
188855
- this.FrameMbsOnlyFlag = 0;
188856
- this.MbAdaptiveFrameFieldFlag = 0;
188857
- this.Direct8x8InferenceFlag = 0;
188858
- this.FrameCroppingFlag = 0;
188859
- this.FrameCropLeftOffset = 0;
188860
- this.FrameCropRightOffset = 0;
188861
- this.FrameCropTopOffset = 0;
188862
- this.FrameCropBottomOffset = 0;
188863
- return;
188864
- }
188865
- this.ProfileIdc = ProfileIdc_;
188866
- this.ChromaFormatIdc = ChromaFormatIdc_;
188867
- this.SeparateColourPlaneFlag = SeparateColourPlaneFlag_;
188868
- this.ChromaArrayType = ChromaArrayType_;
188869
- this.ConstraintSetFlags = ConstraintSetFlags_;
188870
- this.LevelIdc = LevelIdc_;
188871
- this.SeqParameterSetId = SeqParameterSetId_;
188872
- this.Log2MaxFrameNumMinus4 = Log2MaxFrameNumMinus4_;
188873
- this.PicOrderCntType = PicOrderCntType_;
188874
- this.Log2MaxPicOrderCntLsbMinus4 = Log2MaxPicOrderCntLsbMinus4_;
188875
- this.MaxNumRefFrames = MaxNumRefFrames_;
188876
- this.GapsInFrameNumValueAllowedFlag = GapsInFrameNumValueAllowedFlag_;
188877
- this.PicWidthInMbsMinus1 = PicWidthInMbsMinus1_;
188878
- this.PicHeightInMapUnitsMinus1 = PicHeightInMapUnitsMinus1_;
188879
- this.FrameMbsOnlyFlag = FrameMbsOnlyFlag_;
188880
- this.MbAdaptiveFrameFieldFlag = MbAdaptiveFrameFieldFlag_;
188881
- this.Direct8x8InferenceFlag = Direct8x8InferenceFlag_;
188882
- this.FrameCroppingFlag = FrameCroppingFlag_;
188883
- this.FrameCropLeftOffset = FrameCropLeftOffset_;
188884
- this.FrameCropRightOffset = FrameCropRightOffset_;
188885
- this.FrameCropTopOffset = FrameCropTopOffset_;
188886
- this.FrameCropBottomOffset = FrameCropBottomOffset_;
188887
- });
188888
- sliceType = $sliceType($Uint8);
188889
- sliceType$1 = $sliceType($emptyInterface);
188890
- sliceType$2 = $sliceType($Int);
188891
- ptrType = $ptrType(SPS);
188892
- sliceType$3 = $sliceType($Uint32);
188893
- ptrType$1 = $ptrType(image.Point);
188894
- ptrType$2 = $ptrType(BitReader);
188895
- parseNalHeader = function(nalHeaderByte) {
188896
- var {_entry, _r, _tuple, binaryRep, description, forbiddenZeroBit, nalHeaderByte, nalRefIdc, nalUnitType, ok, $s, $r, $c} = $restore(this, {nalHeaderByte});
188897
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188898
- forbiddenZeroBit = (((nalHeaderByte >>> 7 << 24 >>> 24)) & 1) >>> 0;
188899
- nalRefIdc = (((nalHeaderByte >>> 5 << 24 >>> 24)) & 3) >>> 0;
188900
- nalUnitType = (nalHeaderByte & 31) >>> 0;
188901
- _tuple = (_entry = $mapIndex(nalUnitTypes,$Uint8.keyFor(nalUnitType)), _entry !== undefined ? [_entry.v, true] : ["", false]);
188902
- description = _tuple[0];
188903
- ok = _tuple[1];
188904
- /* */ if (!ok) { $s = 1; continue; }
188905
- /* */ $s = 2; continue;
188906
- /* if (!ok) { */ case 1:
188907
- _r = fmt.Sprintf("Type %d (Reserved/Other)", new sliceType$1([new $Uint8(nalUnitType)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188908
- description = _r;
188909
- /* } */ case 2:
188910
- binaryRep = strconv.FormatInt((new $Int64(0, nalHeaderByte)), 2);
188911
- while (true) {
188912
- if (!(binaryRep.length < 8)) { break; }
188913
- binaryRep = "0" + binaryRep;
188914
- }
188915
- $s = -1; return new NalHeader.ptr(nalHeaderByte, binaryRep, forbiddenZeroBit, nalRefIdc, nalUnitType, description);
188916
- /* */ } return; } var $f = {$blk: parseNalHeader, $c: true, $r, _entry, _r, _tuple, binaryRep, description, forbiddenZeroBit, nalHeaderByte, nalRefIdc, nalUnitType, ok, $s};return $f;
188917
- };
188918
- FindNalStartIndexes = function(data) {
188919
- var data, i, nalUnitStartIndexes, x, x$1;
188920
- nalUnitStartIndexes = sliceType$2.nil;
188921
- i = 0;
188922
- while (true) {
188923
- if (!(i <= (data.$length - nalStartCodePrefix.$length >> 0))) { break; }
188924
- if ((((i < 0 || i >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + i]) === (0 >= nalStartCodePrefix.$length ? ($throwRuntimeError("index out of range"), undefined) : nalStartCodePrefix.$array[nalStartCodePrefix.$offset + 0])) && ((x = i + 1 >> 0, ((x < 0 || x >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x])) === (1 >= nalStartCodePrefix.$length ? ($throwRuntimeError("index out of range"), undefined) : nalStartCodePrefix.$array[nalStartCodePrefix.$offset + 1])) && ((x$1 = i + 2 >> 0, ((x$1 < 0 || x$1 >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x$1])) === (2 >= nalStartCodePrefix.$length ? ($throwRuntimeError("index out of range"), undefined) : nalStartCodePrefix.$array[nalStartCodePrefix.$offset + 2]))) {
188925
- nalUnitStartIndexes = $append(nalUnitStartIndexes, i + nalStartCodePrefix.$length >> 0);
188926
- }
188927
- i = i + (1) >> 0;
188928
- }
188929
- return nalUnitStartIndexes;
188930
- };
188931
- $pkg.FindNalStartIndexes = FindNalStartIndexes;
188932
- BitReader.ptr.prototype.readBits = function(n) {
188933
- var {$24r, $24r$1, _q, _r, _r$1, _r$2, bit, bitIndex, byteIndex, i, n, r, value, x, y, $s, $r, $c} = $restore(this, {n});
188934
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188935
- r = this;
188936
- /* */ if (n > 32) { $s = 1; continue; }
188937
- /* */ $s = 2; continue;
188938
- /* if (n > 32) { */ case 1:
188939
- _r = fmt.Errorf("readBits: cannot read more than 32 bits at once", sliceType$1.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188940
- $24r = [0, _r];
188941
- $s = 4; case 4: return $24r;
188942
- /* } */ case 2:
188943
- value = 0;
188944
- i = 0;
188945
- /* while (true) { */ case 5:
188946
- /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 6; continue; }
188947
- byteIndex = (_q = r.offset / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
188948
- bitIndex = 7 - ((_r$1 = r.offset % 8, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero"))) >> 0;
188949
- /* */ if (byteIndex >= r.data.$length) { $s = 7; continue; }
188950
- /* */ $s = 8; continue;
188951
- /* if (byteIndex >= r.data.$length) { */ case 7:
188952
- _r$2 = fmt.Errorf("readBits: unexpected end of data", sliceType$1.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
188953
- $24r$1 = [0, _r$2];
188954
- $s = 10; case 10: return $24r$1;
188955
- /* } */ case 8:
188956
- bit = ((((y = bitIndex, y < 32 ? ((x = r.data, ((byteIndex < 0 || byteIndex >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + byteIndex])) >>> y) : 0) << 24 >>> 24)) & 1) >>> 0;
188957
- value = (((value << 1 >>> 0)) | ((bit >>> 0))) >>> 0;
188958
- r.offset = r.offset + (1) >> 0;
188959
- i = i + (1) >> 0;
188960
- $s = 5; continue;
188961
- case 6:
188962
- $s = -1; return [value, $ifaceNil];
188963
- /* */ } return; } var $f = {$blk: BitReader.ptr.prototype.readBits, $c: true, $r, $24r, $24r$1, _q, _r, _r$1, _r$2, bit, bitIndex, byteIndex, i, n, r, value, x, y, $s};return $f;
188964
- };
188965
- BitReader.prototype.readBits = function(n) { return this.$val.readBits(n); };
188966
- BitReader.ptr.prototype.readUEV = function() {
188967
- var {$24r, _r, _r$1, _r$2, _tuple, _tuple$1, bit, codeNum, err, err$1, leadingZeros, r, suffix, y, $s, $r, $c} = $restore(this, {});
188968
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188969
- r = this;
188970
- leadingZeros = 0;
188971
- /* while (true) { */ case 1:
188972
- _r = r.readBits(1); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188973
- _tuple = _r;
188974
- bit = _tuple[0];
188975
- err = _tuple[1];
188976
- if (!($interfaceIsEqual(err, $ifaceNil))) {
188977
- $s = -1; return [0, err];
188978
- }
188979
- if (bit === 1) {
188980
- /* break; */ $s = 2; continue;
188981
- }
188982
- leadingZeros = leadingZeros + (1) >> 0;
188983
- /* */ if (leadingZeros > 31) { $s = 4; continue; }
188984
- /* */ $s = 5; continue;
188985
- /* if (leadingZeros > 31) { */ case 4:
188986
- _r$1 = fmt.Errorf("readUEV: runaway code (too many leading zeros)", sliceType$1.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
188987
- $24r = [0, _r$1];
188988
- $s = 7; case 7: return $24r;
188989
- /* } */ case 5:
188990
- $s = 1; continue;
188991
- case 2:
188992
- if (leadingZeros === 0) {
188993
- $s = -1; return [0, $ifaceNil];
188994
- }
188995
- _r$2 = r.readBits(leadingZeros); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
188996
- _tuple$1 = _r$2;
188997
- suffix = _tuple$1[0];
188998
- err$1 = _tuple$1[1];
188999
- if (!($interfaceIsEqual(err$1, $ifaceNil))) {
189000
- $s = -1; return [0, err$1];
189001
- }
189002
- codeNum = ((((y = leadingZeros, y < 32 ? (1 << y) : 0) >>> 0)) - 1 >>> 0) + suffix >>> 0;
189003
- $s = -1; return [codeNum, $ifaceNil];
189004
- /* */ } return; } var $f = {$blk: BitReader.ptr.prototype.readUEV, $c: true, $r, $24r, _r, _r$1, _r$2, _tuple, _tuple$1, bit, codeNum, err, err$1, leadingZeros, r, suffix, y, $s};return $f;
189005
- };
189006
- BitReader.prototype.readUEV = function() { return this.$val.readUEV(); };
189007
- parseSPS = function(spsPayload) {
189008
- var {$24r, $24r$1, $24r$10, $24r$11, $24r$12, $24r$13, $24r$14, $24r$15, $24r$16, $24r$17, $24r$18, $24r$19, $24r$2, $24r$20, $24r$21, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, $24r$9, _1, _i, _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$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, err, reader, sps, spsPayload, unimplementedIdcProfile, unimplementedIdcProfiles, val, $s, $r, $c} = $restore(this, {spsPayload});
189009
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189010
- reader = new BitReader.ptr(spsPayload, 0);
189011
- sps = new SPS.ptr(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
189012
- val = 0;
189013
- err = $ifaceNil;
189014
- _r = reader.readBits(8); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189015
- _tuple = _r;
189016
- val = _tuple[0];
189017
- err = _tuple[1];
189018
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
189019
- /* */ $s = 3; continue;
189020
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
189021
- _r$1 = fmt.Errorf("failed to read profile_idc: %w", new sliceType$1([err])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189022
- $24r = [ptrType.nil, _r$1];
189023
- $s = 5; case 5: return $24r;
189024
- /* } */ case 3:
189025
- unimplementedIdcProfiles = new sliceType$3([100, 110, 122, 244, 44, 83, 86, 118, 128, 138, 139, 134, 135]);
189026
- _ref = unimplementedIdcProfiles;
189027
- _i = 0;
189028
- /* while (true) { */ case 6:
189029
- /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 7; continue; }
189030
- unimplementedIdcProfile = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
189031
- /* */ if (val === unimplementedIdcProfile) { $s = 8; continue; }
189032
- /* */ $s = 9; continue;
189033
- /* if (val === unimplementedIdcProfile) { */ case 8:
189034
- _r$2 = fmt.Errorf("not implemented: parseSPS for profile_idc: %d", new sliceType$1([new $Uint32(val)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189035
- $24r$1 = [ptrType.nil, _r$2];
189036
- $s = 11; case 11: return $24r$1;
189037
- /* } */ case 9:
189038
- _i++;
189039
- $s = 6; continue;
189040
- case 7:
189041
- sps.ProfileIdc = ((val << 24 >>> 24));
189042
- sps.ChromaFormatIdc = 1;
189043
- sps.SeparateColourPlaneFlag = 0;
189044
- sps.ChromaArrayType = 1;
189045
- _r$3 = reader.readBits(8); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189046
- _tuple$1 = _r$3;
189047
- val = _tuple$1[0];
189048
- err = _tuple$1[1];
189049
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 13; continue; }
189050
- /* */ $s = 14; continue;
189051
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 13:
189052
- _r$4 = fmt.Errorf("failed to read constraint flags: %w", new sliceType$1([err])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189053
- $24r$2 = [ptrType.nil, _r$4];
189054
- $s = 16; case 16: return $24r$2;
189055
- /* } */ case 14:
189056
- sps.ConstraintSetFlags = ((val << 24 >>> 24));
189057
- _r$5 = reader.readBits(8); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189058
- _tuple$2 = _r$5;
189059
- val = _tuple$2[0];
189060
- err = _tuple$2[1];
189061
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 18; continue; }
189062
- /* */ $s = 19; continue;
189063
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 18:
189064
- _r$6 = fmt.Errorf("failed to read level_idc: %w", new sliceType$1([err])); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
189065
- $24r$3 = [ptrType.nil, _r$6];
189066
- $s = 21; case 21: return $24r$3;
189067
- /* } */ case 19:
189068
- sps.LevelIdc = ((val << 24 >>> 24));
189069
- _r$7 = reader.readUEV(); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
189070
- _tuple$3 = _r$7;
189071
- val = _tuple$3[0];
189072
- err = _tuple$3[1];
189073
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 23; continue; }
189074
- /* */ $s = 24; continue;
189075
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 23:
189076
- _r$8 = fmt.Errorf("failed to read seq_parameter_set_id: %w", new sliceType$1([err])); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
189077
- $24r$4 = [ptrType.nil, _r$8];
189078
- $s = 26; case 26: return $24r$4;
189079
- /* } */ case 24:
189080
- sps.SeqParameterSetId = val;
189081
- _r$9 = reader.readUEV(); /* */ $s = 27; case 27: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
189082
- _tuple$4 = _r$9;
189083
- val = _tuple$4[0];
189084
- err = _tuple$4[1];
189085
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 28; continue; }
189086
- /* */ $s = 29; continue;
189087
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 28:
189088
- _r$10 = fmt.Errorf("failed to read log2_max_frame_num_minus4: %w", new sliceType$1([err])); /* */ $s = 30; case 30: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
189089
- $24r$5 = [ptrType.nil, _r$10];
189090
- $s = 31; case 31: return $24r$5;
189091
- /* } */ case 29:
189092
- sps.Log2MaxFrameNumMinus4 = val;
189093
- _r$11 = reader.readUEV(); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
189094
- _tuple$5 = _r$11;
189095
- val = _tuple$5[0];
189096
- err = _tuple$5[1];
189097
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 33; continue; }
189098
- /* */ $s = 34; continue;
189099
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 33:
189100
- _r$12 = fmt.Errorf("failed to read pic_order_cnt_type: %w", new sliceType$1([err])); /* */ $s = 35; case 35: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
189101
- $24r$6 = [ptrType.nil, _r$12];
189102
- $s = 36; case 36: return $24r$6;
189103
- /* } */ case 34:
189104
- sps.PicOrderCntType = val;
189105
- _1 = sps.PicOrderCntType;
189106
- /* */ if (_1 === (0)) { $s = 38; continue; }
189107
- /* */ if (_1 === (1)) { $s = 39; continue; }
189108
- /* */ if (_1 === (2)) { $s = 40; continue; }
189109
- /* */ $s = 41; continue;
189110
- /* if (_1 === (0)) { */ case 38:
189111
- _r$13 = reader.readUEV(); /* */ $s = 42; case 42: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
189112
- _tuple$6 = _r$13;
189113
- val = _tuple$6[0];
189114
- err = _tuple$6[1];
189115
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 43; continue; }
189116
- /* */ $s = 44; continue;
189117
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 43:
189118
- _r$14 = fmt.Errorf("failed to read log2_max_pic_order_cnt_lsb_minus4: %w", new sliceType$1([err])); /* */ $s = 45; case 45: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
189119
- $24r$7 = [ptrType.nil, _r$14];
189120
- $s = 46; case 46: return $24r$7;
189121
- /* } */ case 44:
189122
- sps.Log2MaxPicOrderCntLsbMinus4 = val;
189123
- $s = 41; continue;
189124
- /* } else if (_1 === (1)) { */ case 39:
189125
- _r$15 = fmt.Errorf("SPS pic_order_cnt_type 1 is complex and skipped", sliceType$1.nil); /* */ $s = 47; case 47: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
189126
- $24r$8 = [ptrType.nil, _r$15];
189127
- $s = 48; case 48: return $24r$8;
189128
- /* } else if (_1 === (2)) { */ case 40:
189129
- /* } */ case 41:
189130
- case 37:
189131
- _r$16 = reader.readUEV(); /* */ $s = 49; case 49: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
189132
- _tuple$7 = _r$16;
189133
- val = _tuple$7[0];
189134
- err = _tuple$7[1];
189135
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 50; continue; }
189136
- /* */ $s = 51; continue;
189137
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 50:
189138
- _r$17 = fmt.Errorf("failed to read max_num_ref_frames: %w", new sliceType$1([err])); /* */ $s = 52; case 52: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
189139
- $24r$9 = [ptrType.nil, _r$17];
189140
- $s = 53; case 53: return $24r$9;
189141
- /* } */ case 51:
189142
- sps.MaxNumRefFrames = val;
189143
- _r$18 = reader.readBits(1); /* */ $s = 54; case 54: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
189144
- _tuple$8 = _r$18;
189145
- val = _tuple$8[0];
189146
- err = _tuple$8[1];
189147
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 55; continue; }
189148
- /* */ $s = 56; continue;
189149
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 55:
189150
- _r$19 = fmt.Errorf("failed to read gaps_in_frame_num_value_allowed_flag: %w", new sliceType$1([err])); /* */ $s = 57; case 57: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
189151
- $24r$10 = [ptrType.nil, _r$19];
189152
- $s = 58; case 58: return $24r$10;
189153
- /* } */ case 56:
189154
- sps.GapsInFrameNumValueAllowedFlag = val;
189155
- _r$20 = reader.readUEV(); /* */ $s = 59; case 59: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
189156
- _tuple$9 = _r$20;
189157
- val = _tuple$9[0];
189158
- err = _tuple$9[1];
189159
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 60; continue; }
189160
- /* */ $s = 61; continue;
189161
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 60:
189162
- _r$21 = fmt.Errorf("failed to read pic_width_in_mbs_minus1: %w", new sliceType$1([err])); /* */ $s = 62; case 62: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
189163
- $24r$11 = [ptrType.nil, _r$21];
189164
- $s = 63; case 63: return $24r$11;
189165
- /* } */ case 61:
189166
- sps.PicWidthInMbsMinus1 = val;
189167
- _r$22 = reader.readUEV(); /* */ $s = 64; case 64: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
189168
- _tuple$10 = _r$22;
189169
- val = _tuple$10[0];
189170
- err = _tuple$10[1];
189171
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 65; continue; }
189172
- /* */ $s = 66; continue;
189173
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 65:
189174
- _r$23 = fmt.Errorf("failed to read pic_height_in_map_units_minus1: %w", new sliceType$1([err])); /* */ $s = 67; case 67: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
189175
- $24r$12 = [ptrType.nil, _r$23];
189176
- $s = 68; case 68: return $24r$12;
189177
- /* } */ case 66:
189178
- sps.PicHeightInMapUnitsMinus1 = val;
189179
- _r$24 = reader.readBits(1); /* */ $s = 69; case 69: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
189180
- _tuple$11 = _r$24;
189181
- val = _tuple$11[0];
189182
- err = _tuple$11[1];
189183
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 70; continue; }
189184
- /* */ $s = 71; continue;
189185
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 70:
189186
- _r$25 = fmt.Errorf("failed to read frame_mbs_only_flag: %w", new sliceType$1([err])); /* */ $s = 72; case 72: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
189187
- $24r$13 = [ptrType.nil, _r$25];
189188
- $s = 73; case 73: return $24r$13;
189189
- /* } */ case 71:
189190
- sps.FrameMbsOnlyFlag = ((val >>> 0));
189191
- /* */ if (sps.FrameMbsOnlyFlag === 0) { $s = 74; continue; }
189192
- /* */ $s = 75; continue;
189193
- /* if (sps.FrameMbsOnlyFlag === 0) { */ case 74:
189194
- _r$26 = reader.readBits(1); /* */ $s = 76; case 76: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
189195
- _tuple$12 = _r$26;
189196
- val = _tuple$12[0];
189197
- err = _tuple$12[1];
189198
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 77; continue; }
189199
- /* */ $s = 78; continue;
189200
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 77:
189201
- _r$27 = fmt.Errorf("failed to read mb_adaptive_frame_field_flag: %w", new sliceType$1([err])); /* */ $s = 79; case 79: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
189202
- $24r$14 = [ptrType.nil, _r$27];
189203
- $s = 80; case 80: return $24r$14;
189204
- /* } */ case 78:
189205
- sps.MbAdaptiveFrameFieldFlag = ((val >>> 0));
189206
- /* } */ case 75:
189207
- _r$28 = reader.readBits(1); /* */ $s = 81; case 81: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
189208
- _tuple$13 = _r$28;
189209
- val = _tuple$13[0];
189210
- err = _tuple$13[1];
189211
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 82; continue; }
189212
- /* */ $s = 83; continue;
189213
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 82:
189214
- _r$29 = fmt.Errorf("failed to read direct_8x8_inference_flag: %w", new sliceType$1([err])); /* */ $s = 84; case 84: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
189215
- $24r$15 = [ptrType.nil, _r$29];
189216
- $s = 85; case 85: return $24r$15;
189217
- /* } */ case 83:
189218
- sps.Direct8x8InferenceFlag = ((val >>> 0));
189219
- /* */ if (sps.FrameMbsOnlyFlag === 0) { $s = 86; continue; }
189220
- /* */ $s = 87; continue;
189221
- /* if (sps.FrameMbsOnlyFlag === 0) { */ case 86:
189222
- /* */ if (!((sps.Direct8x8InferenceFlag === 1))) { $s = 88; continue; }
189223
- /* */ $s = 89; continue;
189224
- /* if (!((sps.Direct8x8InferenceFlag === 1))) { */ case 88:
189225
- _r$30 = fmt.Errorf("h264 specification mismatch: frame_mbs_only_flag is equal to 0, but direct_8x8_inference_flag is not equal to 1", sliceType$1.nil); /* */ $s = 90; case 90: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
189226
- $24r$16 = [ptrType.nil, _r$30];
189227
- $s = 91; case 91: return $24r$16;
189228
- /* } */ case 89:
189229
- /* } */ case 87:
189230
- _r$31 = reader.readBits(1); /* */ $s = 92; case 92: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
189231
- _tuple$14 = _r$31;
189232
- val = _tuple$14[0];
189233
- err = _tuple$14[1];
189234
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 93; continue; }
189235
- /* */ $s = 94; continue;
189236
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 93:
189237
- _r$32 = fmt.Errorf("failed to read frame_cropping_flag: %w", new sliceType$1([err])); /* */ $s = 95; case 95: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
189238
- $24r$17 = [ptrType.nil, _r$32];
189239
- $s = 96; case 96: return $24r$17;
189240
- /* } */ case 94:
189241
- sps.FrameCroppingFlag = ((val >>> 0));
189242
- /* */ if (sps.FrameCroppingFlag === 1) { $s = 97; continue; }
189243
- /* */ $s = 98; continue;
189244
- /* if (sps.FrameCroppingFlag === 1) { */ case 97:
189245
- _r$33 = reader.readUEV(); /* */ $s = 99; case 99: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
189246
- _tuple$15 = _r$33;
189247
- val = _tuple$15[0];
189248
- err = _tuple$15[1];
189249
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 100; continue; }
189250
- /* */ $s = 101; continue;
189251
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 100:
189252
- _r$34 = fmt.Errorf("failed to read frame_crop_left_offset: %w", new sliceType$1([err])); /* */ $s = 102; case 102: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
189253
- $24r$18 = [ptrType.nil, _r$34];
189254
- $s = 103; case 103: return $24r$18;
189255
- /* } */ case 101:
189256
- sps.FrameCropLeftOffset = val;
189257
- _r$35 = reader.readUEV(); /* */ $s = 104; case 104: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
189258
- _tuple$16 = _r$35;
189259
- val = _tuple$16[0];
189260
- err = _tuple$16[1];
189261
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 105; continue; }
189262
- /* */ $s = 106; continue;
189263
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 105:
189264
- _r$36 = fmt.Errorf("failed to read frame_crop_right_offset: %w", new sliceType$1([err])); /* */ $s = 107; case 107: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
189265
- $24r$19 = [ptrType.nil, _r$36];
189266
- $s = 108; case 108: return $24r$19;
189267
- /* } */ case 106:
189268
- sps.FrameCropRightOffset = val;
189269
- _r$37 = reader.readUEV(); /* */ $s = 109; case 109: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
189270
- _tuple$17 = _r$37;
189271
- val = _tuple$17[0];
189272
- err = _tuple$17[1];
189273
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 110; continue; }
189274
- /* */ $s = 111; continue;
189275
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 110:
189276
- _r$38 = fmt.Errorf("failed to read frame_crop_top_offset: %w", new sliceType$1([err])); /* */ $s = 112; case 112: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
189277
- $24r$20 = [ptrType.nil, _r$38];
189278
- $s = 113; case 113: return $24r$20;
189279
- /* } */ case 111:
189280
- sps.FrameCropTopOffset = val;
189281
- _r$39 = reader.readUEV(); /* */ $s = 114; case 114: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
189282
- _tuple$18 = _r$39;
189283
- val = _tuple$18[0];
189284
- err = _tuple$18[1];
189285
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 115; continue; }
189286
- /* */ $s = 116; continue;
189287
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 115:
189288
- _r$40 = fmt.Errorf("failed to read frame_crop_bottom_offset: %w", new sliceType$1([err])); /* */ $s = 117; case 117: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; }
189289
- $24r$21 = [ptrType.nil, _r$40];
189290
- $s = 118; case 118: return $24r$21;
189291
- /* } */ case 116:
189292
- sps.FrameCropBottomOffset = val;
189293
- /* } */ case 98:
189294
- $s = -1; return [sps, $ifaceNil];
189295
- /* */ } return; } var $f = {$blk: parseSPS, $c: true, $r, $24r, $24r$1, $24r$10, $24r$11, $24r$12, $24r$13, $24r$14, $24r$15, $24r$16, $24r$17, $24r$18, $24r$19, $24r$2, $24r$20, $24r$21, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, $24r$9, _1, _i, _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$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, err, reader, sps, spsPayload, unimplementedIdcProfile, unimplementedIdcProfiles, val, $s};return $f;
189296
- };
189297
- SPS.ptr.prototype.CodecName = function() {
189298
- var {$24r, _r, sps, $s, $r, $c} = $restore(this, {});
189299
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189300
- sps = this;
189301
- _r = fmt.Sprintf("avc1.%s", new sliceType$1([new $String(hex.EncodeToString(new sliceType([sps.ProfileIdc, sps.ConstraintSetFlags, sps.LevelIdc])))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189302
- $24r = _r;
189303
- $s = 2; case 2: return $24r;
189304
- /* */ } return; } var $f = {$blk: SPS.ptr.prototype.CodecName, $c: true, $r, $24r, _r, sps, $s};return $f;
189305
- };
189306
- SPS.prototype.CodecName = function() { return this.$val.CodecName(); };
189307
- GetFirstSps = function(nalData) {
189308
- var {$24r, $24r$1, _i, _r, _r$1, _r$2, _r$3, _ref, _tuple, err, nalData, nalHeaderByte, nalHeaderResult, nalStartIndex, nalStartIndexes, sps, $s, $r, $c} = $restore(this, {nalData});
189309
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189310
- nalStartIndexes = FindNalStartIndexes(nalData);
189311
- _ref = nalStartIndexes;
189312
- _i = 0;
189313
- /* while (true) { */ case 1:
189314
- /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
189315
- nalStartIndex = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
189316
- nalHeaderByte = ((nalStartIndex < 0 || nalStartIndex >= nalData.$length) ? ($throwRuntimeError("index out of range"), undefined) : nalData.$array[nalData.$offset + nalStartIndex]);
189317
- _r = parseNalHeader(nalHeaderByte); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189318
- nalHeaderResult = $clone(_r, NalHeader);
189319
- /* */ if (nalHeaderResult.NalUnitType === 7) { $s = 4; continue; }
189320
- /* */ $s = 5; continue;
189321
- /* if (nalHeaderResult.NalUnitType === 7) { */ case 4:
189322
- _r$1 = parseSPS($subslice(nalData, (nalStartIndex + 1 >> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189323
- _tuple = _r$1;
189324
- sps = _tuple[0];
189325
- err = _tuple[1];
189326
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
189327
- /* */ $s = 8; continue;
189328
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
189329
- _r$2 = fmt.Errorf("error parsing SPS: %w", new sliceType$1([err])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189330
- $24r = [ptrType.nil, _r$2];
189331
- $s = 11; case 11: return $24r;
189332
- /* } else { */ case 8:
189333
- $s = -1; return [sps, $ifaceNil];
189334
- /* } */ case 9:
189335
- /* } */ case 5:
189336
- _i++;
189337
- $s = 1; continue;
189338
- case 2:
189339
- _r$3 = fmt.Errorf("no SPS NAL found", sliceType$1.nil); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189340
- $24r$1 = [ptrType.nil, _r$3];
189341
- $s = 13; case 13: return $24r$1;
189342
- /* */ } return; } var $f = {$blk: GetFirstSps, $c: true, $r, $24r, $24r$1, _i, _r, _r$1, _r$2, _r$3, _ref, _tuple, err, nalData, nalHeaderByte, nalHeaderResult, nalStartIndex, nalStartIndexes, sps, $s};return $f;
189343
- };
189344
- $pkg.GetFirstSps = GetFirstSps;
189345
- SPS.ptr.prototype.Resolution = function() {
189346
- var {$24r, CroppedHeight, CroppedWidth, FrameHeightInMbs, PicHeightInMapUnits, PicWidthInMbs, PicWidthInSamples, _r, _r$1, _tuple, cropUnitX, cropUnitY, err, sps, $s, $r, $c} = $restore(this, {});
189347
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189348
- sps = this;
189349
- _r = sps.getCropUnits(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189350
- _tuple = _r;
189351
- cropUnitX = _tuple[0];
189352
- cropUnitY = _tuple[1];
189353
- err = _tuple[2];
189354
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
189355
- /* */ $s = 3; continue;
189356
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
189357
- _r$1 = fmt.Errorf("failed to calculate image resolution: %w", new sliceType$1([err])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189358
- $24r = [ptrType$1.nil, _r$1];
189359
- $s = 5; case 5: return $24r;
189360
- /* } */ case 3:
189361
- PicWidthInMbs = sps.PicWidthInMbsMinus1 + 1 >>> 0;
189362
- PicWidthInSamples = $imul(PicWidthInMbs, 16) >>> 0;
189363
- CroppedWidth = ((PicWidthInSamples >> 0)) - ($imul(cropUnitX, (((sps.FrameCropLeftOffset + sps.FrameCropRightOffset >>> 0) >> 0)))) >> 0;
189364
- PicHeightInMapUnits = sps.PicHeightInMapUnitsMinus1 + 1 >>> 0;
189365
- FrameHeightInMbs = $imul((((2 - sps.FrameMbsOnlyFlag >>> 0) >> 0)), ((PicHeightInMapUnits >> 0)));
189366
- CroppedHeight = ($imul(16, FrameHeightInMbs)) - ($imul(cropUnitY, ((((sps.FrameCropTopOffset + sps.FrameCropBottomOffset >>> 0) >> 0))))) >> 0;
189367
- $s = -1; return [new image.Point.ptr(CroppedWidth, CroppedHeight), $ifaceNil];
189368
- /* */ } return; } var $f = {$blk: SPS.ptr.prototype.Resolution, $c: true, $r, $24r, CroppedHeight, CroppedWidth, FrameHeightInMbs, PicHeightInMapUnits, PicWidthInMbs, PicWidthInSamples, _r, _r$1, _tuple, cropUnitX, cropUnitY, err, sps, $s};return $f;
189369
- };
189370
- SPS.prototype.Resolution = function() { return this.$val.Resolution(); };
189371
- SPS.ptr.prototype.getCropUnits = function() {
189372
- var {$24r, CropUnitX, CropUnitY, SubHeightC, SubWidthC, _1, _r, _r$1, _tuple, err, sps, $s, $r, $c} = $restore(this, {});
189373
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189374
- sps = this;
189375
- _1 = sps.ChromaArrayType;
189376
- /* */ if (_1 === (0)) { $s = 2; continue; }
189377
- /* */ if ((_1 === (1)) || (_1 === (2)) || (_1 === (3))) { $s = 3; continue; }
189378
- /* */ $s = 4; continue;
189379
- /* if (_1 === (0)) { */ case 2:
189380
- $s = -1; return [1, 2 - ((sps.FrameMbsOnlyFlag >> 0)) >> 0, $ifaceNil];
189381
- /* } else if ((_1 === (1)) || (_1 === (2)) || (_1 === (3))) { */ case 3:
189382
- _r = sps.getSubWidthCAndSubHeightC(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189383
- _tuple = _r;
189384
- SubWidthC = _tuple[0];
189385
- SubHeightC = _tuple[1];
189386
- err = _tuple[2];
189387
- if (!($interfaceIsEqual(err, $ifaceNil))) {
189388
- $s = -1; return [0, 0, err];
189389
- }
189390
- CropUnitX = SubWidthC;
189391
- CropUnitY = $imul(SubHeightC, ((2 - ((sps.FrameMbsOnlyFlag >> 0)) >> 0)));
189392
- $s = -1; return [CropUnitX, CropUnitY, $ifaceNil];
189393
- /* } else { */ case 4:
189394
- _r$1 = fmt.Errorf("not implemented: getCropUnits for ChromaArrayType %d", new sliceType$1([new $Uint(sps.ChromaArrayType)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189395
- $24r = [0, 0, _r$1];
189396
- $s = 8; case 8: return $24r;
189397
- /* } */ case 5:
189398
- case 1:
189399
- $s = -1; return [0, 0, $ifaceNil];
189400
- /* */ } return; } var $f = {$blk: SPS.ptr.prototype.getCropUnits, $c: true, $r, $24r, CropUnitX, CropUnitY, SubHeightC, SubWidthC, _1, _r, _r$1, _tuple, err, sps, $s};return $f;
189401
- };
189402
- SPS.prototype.getCropUnits = function() { return this.$val.getCropUnits(); };
189403
- SPS.ptr.prototype.getSubWidthCAndSubHeightC = function() {
189404
- var {$24r, _r, sps, $s, $r, $c} = $restore(this, {});
189405
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189406
- sps = this;
189407
- if ((sps.ChromaFormatIdc === 1) && (sps.SeparateColourPlaneFlag === 0)) {
189408
- $s = -1; return [2, 2, $ifaceNil];
189409
- }
189410
- _r = fmt.Errorf("not implemented: getSubWidthCAndSubHeightC for chroma_format_idc: %d, separate_colour_plane_flag: %d", new sliceType$1([new $Uint(sps.ChromaFormatIdc), new $Uint(sps.SeparateColourPlaneFlag)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189411
- $24r = [0, 0, _r];
189412
- $s = 2; case 2: return $24r;
189413
- /* */ } return; } var $f = {$blk: SPS.ptr.prototype.getSubWidthCAndSubHeightC, $c: true, $r, $24r, _r, sps, $s};return $f;
189414
- };
189415
- SPS.prototype.getSubWidthCAndSubHeightC = function() { return this.$val.getSubWidthCAndSubHeightC(); };
189416
- ptrType$2.methods = [{prop: "readBits", name: "readBits", pkg: "github.com/supraio/client-daemon/pkg/x264", typ: $funcType([$Int], [$Uint32, $error], false)}, {prop: "readUEV", name: "readUEV", pkg: "github.com/supraio/client-daemon/pkg/x264", typ: $funcType([], [$Uint32, $error], false)}];
189417
- ptrType.methods = [{prop: "CodecName", name: "CodecName", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Resolution", name: "Resolution", pkg: "", typ: $funcType([], [ptrType$1, $error], false)}, {prop: "getCropUnits", name: "getCropUnits", pkg: "github.com/supraio/client-daemon/pkg/x264", typ: $funcType([], [$Int, $Int, $error], false)}, {prop: "getSubWidthCAndSubHeightC", name: "getSubWidthCAndSubHeightC", pkg: "github.com/supraio/client-daemon/pkg/x264", typ: $funcType([], [$Int, $Int, $error], false)}];
189418
- NalHeader.init("", [{prop: "ByteValue", name: "ByteValue", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "BinaryRepresentation", name: "BinaryRepresentation", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ForbiddenZeroBit", name: "ForbiddenZeroBit", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "NalRefIdc", name: "NalRefIdc", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "NalUnitType", name: "NalUnitType", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "TypeDescription", name: "TypeDescription", embedded: false, exported: true, typ: $String, tag: ""}]);
189419
- BitReader.init("github.com/supraio/client-daemon/pkg/x264", [{prop: "data", name: "data", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}]);
189420
- SPS.init("", [{prop: "ProfileIdc", name: "ProfileIdc", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "ChromaFormatIdc", name: "ChromaFormatIdc", embedded: false, exported: true, typ: $Uint, tag: ""}, {prop: "SeparateColourPlaneFlag", name: "SeparateColourPlaneFlag", embedded: false, exported: true, typ: $Uint, tag: ""}, {prop: "ChromaArrayType", name: "ChromaArrayType", embedded: false, exported: true, typ: $Uint, tag: ""}, {prop: "ConstraintSetFlags", name: "ConstraintSetFlags", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "LevelIdc", name: "LevelIdc", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "SeqParameterSetId", name: "SeqParameterSetId", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Log2MaxFrameNumMinus4", name: "Log2MaxFrameNumMinus4", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "PicOrderCntType", name: "PicOrderCntType", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Log2MaxPicOrderCntLsbMinus4", name: "Log2MaxPicOrderCntLsbMinus4", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "MaxNumRefFrames", name: "MaxNumRefFrames", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "GapsInFrameNumValueAllowedFlag", name: "GapsInFrameNumValueAllowedFlag", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "PicWidthInMbsMinus1", name: "PicWidthInMbsMinus1", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "PicHeightInMapUnitsMinus1", name: "PicHeightInMapUnitsMinus1", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "FrameMbsOnlyFlag", name: "FrameMbsOnlyFlag", embedded: false, exported: true, typ: $Uint, tag: ""}, {prop: "MbAdaptiveFrameFieldFlag", name: "MbAdaptiveFrameFieldFlag", embedded: false, exported: true, typ: $Uint, tag: ""}, {prop: "Direct8x8InferenceFlag", name: "Direct8x8InferenceFlag", embedded: false, exported: true, typ: $Uint, tag: ""}, {prop: "FrameCroppingFlag", name: "FrameCroppingFlag", embedded: false, exported: true, typ: $Uint, tag: ""}, {prop: "FrameCropLeftOffset", name: "FrameCropLeftOffset", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "FrameCropRightOffset", name: "FrameCropRightOffset", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "FrameCropTopOffset", name: "FrameCropTopOffset", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "FrameCropBottomOffset", name: "FrameCropBottomOffset", embedded: false, exported: true, typ: $Uint32, tag: ""}]);
189421
- $init = function() {
189422
- $pkg.$init = function() {};
189423
- /* */ 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:
189424
- $r = hex.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189425
- $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189426
- $r = image.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189427
- $r = strconv.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189428
- nalStartCodePrefix = new sliceType([0, 0, 1]);
189429
- nalUnitTypes = $makeMap($Uint8.keyFor, [{ k: 7, v: "Sequence parameter set (SPS)" }]);
189496
+ $r = errscreen.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189497
+ $r = dom.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189498
+ $r = screen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189499
+ $r = f64.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189500
+ $r = image.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189501
+ $r = color.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189502
+ $r = draw.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189503
+ $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189504
+ $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189430
189505
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189431
189506
  };
189432
189507
  $pkg.$init = $init;
189433
189508
  return $pkg;
189434
189509
  })();
189435
189510
  $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function() {
189436
- var $pkg = {}, $init, fmt, webgl, general, errs, jshelper, canvasdriver, x264, image, log, js, WebCodecsDecoder, ptrType, sliceType, ptrType$1, sliceType$1, ptrType$2, chanType, chanType$1, funcType, IsAvailable, NewDecoder;
189437
- fmt = $packages["fmt"];
189511
+ var $pkg = {}, $init, hex, webgl, general, errs, jshelper, canvasdriver, image, js, WebCodecsDecoder, ptrType, sliceType, ptrType$1, sliceType$1, ptrType$2, chanType, chanType$1, funcType, IsAvailable, NewDecoder;
189512
+ hex = $packages["encoding/hex"];
189438
189513
  webgl = $packages["github.com/nuberu/webgl"];
189439
189514
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
189440
189515
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
189441
189516
  jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
189442
- canvasdriver = $packages["github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver"];
189443
- x264 = $packages["github.com/supraio/client-daemon/pkg/x264"];
189517
+ canvasdriver = $packages["golang.org/x/exp/shiny/driver/canvasdriver"];
189444
189518
  image = $packages["image"];
189445
- log = $packages["log"];
189446
189519
  js = $packages["syscall/js"];
189447
189520
  WebCodecsDecoder = $pkg.WebCodecsDecoder = $newType(0, $kindStruct, "webcodecs.WebCodecsDecoder", true, "github.com/supraio/client-daemon/pkg/decoder/webcodecs", true, function(jsVideoDecoder_, outputChan_, errorChan_, releaseVideoDecoder_) {
189448
189521
  this.$val = this;
@@ -189476,96 +189549,61 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
189476
189549
  };
189477
189550
  $pkg.NewDecoder = NewDecoder;
189478
189551
  WebCodecsDecoder.ptr.prototype.configure = function(nal) {
189479
- var {_arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, config, d, err, errorCallback, expectedResolution, init, jsVideoDecoder, nal, outputCallback, sps, $s, $r, $c} = $restore(this, {nal});
189552
+ var {_r, _r$1, _r$2, _r$3, config, d, errorCallback, h264CodecName, init, jsVideoDecoder, nal, outputCallback, $s, $r, $c} = $restore(this, {nal});
189480
189553
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189481
189554
  d = [d];
189482
189555
  errorCallback = [errorCallback];
189483
- expectedResolution = [expectedResolution];
189484
189556
  jsVideoDecoder = [jsVideoDecoder];
189485
189557
  outputCallback = [outputCallback];
189486
189558
  d[0] = this;
189487
- _r = x264.GetFirstSps(nal); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189488
- _tuple = _r;
189489
- sps = _tuple[0];
189490
- err = _tuple[1];
189491
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
189492
- /* */ $s = 3; continue;
189493
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
189494
- _r$1 = fmt.Errorf("failed to configure WebCodecsDecoder: %w", new sliceType([err])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189495
- $panic(_r$1);
189496
- /* } */ case 3:
189497
- _r$2 = sps.Resolution(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189498
- _tuple$1 = _r$2;
189499
- expectedResolution[0] = _tuple$1[0];
189500
- err = _tuple$1[1];
189501
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
189502
- /* */ $s = 7; continue;
189503
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
189504
- _r$3 = fmt.Errorf("failed to configure WebCodecsDecoder: %w", new sliceType([err])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189505
- $panic(_r$3);
189506
- /* } */ case 7:
189507
- _r$4 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189508
- init = $clone(_r$4, js.Value);
189509
- outputCallback[0] = $clone(js.FuncOf((function(d, errorCallback, expectedResolution, jsVideoDecoder, outputCallback) { return function $b(this$1, args) {
189510
- var {args, frame, frameDisplayHeight, frameDisplayWidth, this$1, $s, $r, $c} = $restore(this, {this$1, args});
189559
+ _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; }
189560
+ init = $clone(_r, js.Value);
189561
+ outputCallback[0] = $clone(js.FuncOf((function(d, errorCallback, jsVideoDecoder, outputCallback) { return function $b(this$1, args) {
189562
+ var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
189511
189563
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189512
- frame = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value);
189513
- frameDisplayWidth = $clone($clone(frame, js.Value).Get("displayWidth"), js.Value).Int();
189514
- frameDisplayHeight = $clone($clone(frame, js.Value).Get("displayHeight"), js.Value).Int();
189515
- /* */ if (!((frameDisplayWidth === expectedResolution[0].X)) || !((frameDisplayHeight === expectedResolution[0].Y))) { $s = 1; continue; }
189516
- /* */ $s = 2; continue;
189517
- /* if (!((frameDisplayWidth === expectedResolution[0].X)) || !((frameDisplayHeight === expectedResolution[0].Y))) { */ case 1:
189518
- $r = log.Printf("WebCodecsDecoder output resolution mismatch. Expected %v, got %dx%d", new sliceType([expectedResolution[0], new $Int(frameDisplayWidth), new $Int(frameDisplayHeight)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189519
- /* } */ case 2:
189520
- $r = $send(d[0].outputChan, $clone($clone(frame, js.Value), js.Value)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189564
+ $r = $send(d[0].outputChan, $clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value), js.Value)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189521
189565
  $s = -1; return $ifaceNil;
189522
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, frame, frameDisplayHeight, frameDisplayWidth, this$1, $s};return $f;
189523
- }; })(d, errorCallback, expectedResolution, jsVideoDecoder, outputCallback)), js.Func);
189524
- errorCallback[0] = $clone(js.FuncOf((function(d, errorCallback, expectedResolution, jsVideoDecoder, outputCallback) { return function $b(this$1, args) {
189525
- var {_arg, _r$5, _r$6, args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
189566
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
189567
+ }; })(d, errorCallback, jsVideoDecoder, outputCallback)), js.Func);
189568
+ errorCallback[0] = $clone(js.FuncOf((function(d, errorCallback, jsVideoDecoder, outputCallback) { return function $b(this$1, args) {
189569
+ var {_arg, _r$1, _r$2, args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
189526
189570
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189527
- _r$5 = jshelper.GetError((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0])); /* */ $s = 1; case 1: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189528
- _arg = _r$5;
189529
- _r$6 = errs.Errorf("Error in WebCodecsDecoder: %s", new sliceType([_arg])); /* */ $s = 2; case 2: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
189530
- $r = $send(d[0].errorChan, _r$6); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189571
+ _r$1 = jshelper.GetError((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189572
+ _arg = _r$1;
189573
+ _r$2 = errs.Errorf("Error in WebCodecsDecoder: %s", new sliceType([_arg])); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189574
+ $r = $send(d[0].errorChan, _r$2); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189531
189575
  $s = -1; return $ifaceNil;
189532
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _r$5, _r$6, args, this$1, $s};return $f;
189533
- }; })(d, errorCallback, expectedResolution, jsVideoDecoder, outputCallback)), js.Func);
189576
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _arg, _r$1, _r$2, args, this$1, $s};return $f;
189577
+ }; })(d, errorCallback, jsVideoDecoder, outputCallback)), js.Func);
189534
189578
  $clone(init, js.Value).Set("output", new outputCallback[0].constructor.elem(outputCallback[0]));
189535
189579
  $clone(init, js.Value).Set("error", new errorCallback[0].constructor.elem(errorCallback[0]));
189536
- _r$5 = $clone($clone(js.Global(), js.Value).Get("VideoDecoder"), js.Value).New(new sliceType([new init.constructor.elem(init)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189537
- jsVideoDecoder[0] = $clone(_r$5, js.Value);
189538
- _r$6 = $clone($clone(js.Global(), js.Value).Get("Object"), js.Value).New(sliceType.nil); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
189539
- config = $clone(_r$6, js.Value);
189540
- _r$7 = sps.CodecName(); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
189541
- _arg = new $String(_r$7);
189542
- $r = $clone(config, js.Value).Set("codec", _arg); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189580
+ _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; }
189581
+ jsVideoDecoder[0] = $clone(_r$1, js.Value);
189582
+ h264CodecName = d[0].detectCodecName(nal);
189583
+ _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; }
189584
+ config = $clone(_r$2, js.Value);
189585
+ $clone(config, js.Value).Set("codec", new $String(h264CodecName));
189543
189586
  $clone(config, js.Value).Set("optimizeForLatency", new $Bool(true));
189544
- /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 14; continue; }
189545
- /* */ $s = 15; continue;
189546
- /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 14:
189547
- $clone(config, js.Value).Set("codedWidth", new $Int(expectedResolution[0].X));
189548
- $clone(config, js.Value).Set("codedHeight", new $Int(expectedResolution[0].Y));
189549
- $clone(config, js.Value).Set("displayAspectWidth", new $Int(expectedResolution[0].X));
189550
- $clone(config, js.Value).Set("displayAspectHeight", new $Int(expectedResolution[0].Y));
189551
- $s = 16; continue;
189552
- /* } else { */ case 15:
189553
- _r$8 = fmt.Errorf("failed to configure WebCodecsDecoder: %w", new sliceType([err])); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
189554
- $panic(_r$8);
189555
- /* } */ case 16:
189556
- _r$9 = $clone(jsVideoDecoder[0], js.Value).Call("configure", new sliceType([new config.constructor.elem(config)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
189557
- _r$9;
189587
+ _r$3 = $clone(jsVideoDecoder[0], js.Value).Call("configure", new sliceType([new config.constructor.elem(config)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189588
+ _r$3;
189558
189589
  d[0].jsVideoDecoder = jsVideoDecoder[0];
189559
- d[0].releaseVideoDecoder = (function(d, errorCallback, expectedResolution, jsVideoDecoder, outputCallback) { return function() {
189590
+ d[0].releaseVideoDecoder = (function(d, errorCallback, jsVideoDecoder, outputCallback) { return function() {
189560
189591
  d[0].jsVideoDecoder = ptrType.nil;
189561
189592
  d[0].releaseVideoDecoder = $throwNilPointerError;
189562
189593
  $clone(outputCallback[0], js.Func).Release();
189563
189594
  $clone(errorCallback[0], js.Func).Release();
189564
- }; })(d, errorCallback, expectedResolution, jsVideoDecoder, outputCallback);
189595
+ }; })(d, errorCallback, jsVideoDecoder, outputCallback);
189565
189596
  $s = -1; return;
189566
- /* */ } return; } var $f = {$blk: WebCodecsDecoder.ptr.prototype.configure, $c: true, $r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, config, d, err, errorCallback, expectedResolution, init, jsVideoDecoder, nal, outputCallback, sps, $s};return $f;
189597
+ /* */ } return; } var $f = {$blk: WebCodecsDecoder.ptr.prototype.configure, $c: true, $r, _r, _r$1, _r$2, _r$3, config, d, errorCallback, h264CodecName, init, jsVideoDecoder, nal, outputCallback, $s};return $f;
189567
189598
  };
189568
189599
  WebCodecsDecoder.prototype.configure = function(nal) { return this.$val.configure(nal); };
189600
+ WebCodecsDecoder.ptr.prototype.detectCodecName = function(nal) {
189601
+ var codecName, d, nal;
189602
+ d = this;
189603
+ codecName = "avc1." + hex.EncodeToString($subslice(nal, 5, 8));
189604
+ return codecName;
189605
+ };
189606
+ WebCodecsDecoder.prototype.detectCodecName = function(nal) { return this.$val.detectCodecName(nal); };
189569
189607
  WebCodecsDecoder.ptr.prototype.Write = function(nal) {
189570
189608
  var {$24r, _r, _r$1, _r$2, _r$3, _r$4, chunk, chunkOpts, d, errDec, frameData, frameType, nal, $s, $r, $c} = $restore(this, {nal});
189571
189609
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -189598,13 +189636,11 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
189598
189636
  /* */ if (!($interfaceIsEqual(errDec, $ifaceNil))) { $s = 12; continue; }
189599
189637
  /* */ $s = 13; continue;
189600
189638
  /* if (!($interfaceIsEqual(errDec, $ifaceNil))) { */ case 12:
189601
- $r = log.Println(new sliceType([new $String("ASDF[GO] WebCodecsDecoder.Write decoding error, decoder state="), new $String($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String())])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189602
- /* */ if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { $s = 15; continue; }
189603
- /* */ $s = 16; continue;
189604
- /* if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { */ case 15:
189605
- $r = log.Println(new sliceType([new $String("ASDF[GO] WebCodecsDecoder.Write going to release video decoder")])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189606
- $r = d.releaseVideoDecoder(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189607
- /* } */ case 16:
189639
+ /* */ if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { $s = 14; continue; }
189640
+ /* */ $s = 15; continue;
189641
+ /* if ($clone($clone(d.jsVideoDecoder, js.Value).Get("state"), js.Value).String() === "closed") { */ case 14:
189642
+ $r = d.releaseVideoDecoder(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189643
+ /* } */ case 15:
189608
189644
  $s = -1; return errDec;
189609
189645
  /* } */ case 13:
189610
189646
  $s = -1; return $ifaceNil;
@@ -189612,7 +189648,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
189612
189648
  };
189613
189649
  WebCodecsDecoder.prototype.Write = function(nal) { return this.$val.Write(nal); };
189614
189650
  WebCodecsDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
189615
- var {_r, _r$1, _selection, d, err, frame, frameDisplayHeight, frameDisplayWidth, output, outputBuffer, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {outputBuffer});
189651
+ var {_r, _r$1, _selection, d, displayHeight, displayWidth, err, frame, output, outputBuffer, ycbcrImg, ycbcrJSImg, $s, $r, $c} = $restore(this, {outputBuffer});
189616
189652
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189617
189653
  output = [output];
189618
189654
  d = this;
@@ -189626,16 +189662,16 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
189626
189662
  err = _selection[1][0];
189627
189663
  $s = -1; return err;
189628
189664
  }
189629
- frameDisplayWidth = $clone($clone(frame, js.Value).Get("displayWidth"), js.Value).Int();
189630
- frameDisplayHeight = $clone($clone(frame, js.Value).Get("displayHeight"), js.Value).Int();
189631
189665
  ycbcrJSImg = $assertType(outputBuffer, ptrType$1).YCbCrJS();
189632
189666
  ycbcrJSImg.CanvasImageSource = frame;
189667
+ displayWidth = $clone($clone(frame, js.Value).Get("displayWidth"), js.Value).Int();
189668
+ displayHeight = $clone($clone(frame, js.Value).Get("displayHeight"), js.Value).Int();
189633
189669
  _r$1 = outputBuffer.YCbCr(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189634
189670
  ycbcrImg = _r$1;
189635
- image.Rectangle.copy(ycbcrImg.Rect, image.Rect(0, 0, frameDisplayWidth, frameDisplayHeight));
189671
+ image.Rectangle.copy(ycbcrImg.Rect, image.Rect(0, 0, displayWidth, displayHeight));
189636
189672
  ycbcrImg.SubsampleRatio = 2;
189637
189673
  $s = -1; return $ifaceNil;
189638
- /* */ } return; } var $f = {$blk: WebCodecsDecoder.ptr.prototype.NextOutput, $c: true, $r, _r, _r$1, _selection, d, err, frame, frameDisplayHeight, frameDisplayWidth, output, outputBuffer, ycbcrImg, ycbcrJSImg, $s};return $f;
189674
+ /* */ } return; } var $f = {$blk: WebCodecsDecoder.ptr.prototype.NextOutput, $c: true, $r, _r, _r$1, _selection, d, displayHeight, displayWidth, err, frame, output, outputBuffer, ycbcrImg, ycbcrJSImg, $s};return $f;
189639
189675
  };
189640
189676
  WebCodecsDecoder.prototype.NextOutput = function(outputBuffer) { return this.$val.NextOutput(outputBuffer); };
189641
189677
  WebCodecsDecoder.ptr.prototype.Release = function(outputBuffer) {
@@ -189680,21 +189716,19 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function(
189680
189716
  /* */ } 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; } }
189681
189717
  };
189682
189718
  WebCodecsDecoder.prototype.jsSafeDecode = function(chunk) { return this.$val.jsSafeDecode(chunk); };
189683
- ptrType$2.methods = [{prop: "configure", name: "configure", pkg: "github.com/supraio/client-daemon/pkg/decoder/webcodecs", typ: $funcType([sliceType$1], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$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)}];
189719
+ 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([sliceType$1], [$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)}];
189684
189720
  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: ""}]);
189685
189721
  $init = function() {
189686
189722
  $pkg.$init = function() {};
189687
189723
  /* */ 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:
189688
- $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189724
+ $r = hex.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189689
189725
  $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189690
189726
  $r = general.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189691
189727
  $r = errs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189692
189728
  $r = jshelper.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189693
189729
  $r = canvasdriver.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189694
- $r = x264.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189695
- $r = image.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189696
- $r = log.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189697
- $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189730
+ $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189731
+ $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189698
189732
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189699
189733
  };
189700
189734
  $pkg.$init = $init;
@@ -189729,7 +189763,7 @@ $packages["github.com/supraio/client-daemon/pkg/message"] = (function() {
189729
189763
  return $pkg;
189730
189764
  })();
189731
189765
  $packages["github.com/supraio/client-daemon/pkg/input"] = (function() {
189732
- var $pkg = {}, $init, binary, fmt, errs, message, focus, key, mouse, sync, MouseHandler, KeyHandler, JsHelper, KeyTransformer, Helper, sliceType, ptrType, sliceType$1, sliceType$2, ptrType$1, chanType, ptrType$2, chanType$1, chanType$2, ptrType$3, NewMouseHandler, NewKeyHandler, NewHelper, NewKeyTransformer;
189766
+ var $pkg = {}, $init, binary, fmt, errs, message, focus, key, mouse, touch, sync, TouchHandler, MouseHandler, KeyHandler, JsHelper, KeyTransformer, Helper, sliceType, ptrType, sliceType$1, sliceType$2, ptrType$1, chanType, ptrType$2, chanType$1, ptrType$3, chanType$2, chanType$3, ptrType$4, NewTouchHandler, NewMouseHandler, NewKeyHandler, NewHelper, NewKeyTransformer;
189733
189767
  binary = $packages["encoding/binary"];
189734
189768
  fmt = $packages["fmt"];
189735
189769
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -189737,7 +189771,20 @@ $packages["github.com/supraio/client-daemon/pkg/input"] = (function() {
189737
189771
  focus = $packages["golang.org/x/mobile/event/focus"];
189738
189772
  key = $packages["golang.org/x/mobile/event/key"];
189739
189773
  mouse = $packages["golang.org/x/mobile/event/mouse"];
189774
+ touch = $packages["golang.org/x/mobile/event/touch"];
189740
189775
  sync = $packages["sync"];
189776
+ TouchHandler = $pkg.TouchHandler = $newType(0, $kindStruct, "input.TouchHandler", true, "github.com/supraio/client-daemon/pkg/input", true, function(touchEventChan_, messageSender_, closed_) {
189777
+ this.$val = this;
189778
+ if (arguments.length === 0) {
189779
+ this.touchEventChan = $chanNil;
189780
+ this.messageSender = $ifaceNil;
189781
+ this.closed = false;
189782
+ return;
189783
+ }
189784
+ this.touchEventChan = touchEventChan_;
189785
+ this.messageSender = messageSender_;
189786
+ this.closed = closed_;
189787
+ });
189741
189788
  MouseHandler = $pkg.MouseHandler = $newType(0, $kindStruct, "input.MouseHandler", true, "github.com/supraio/client-daemon/pkg/input", true, function(mouseEventChan_, messageSender_, closed_) {
189742
189789
  this.$val = this;
189743
189790
  if (arguments.length === 0) {
@@ -189789,12 +189836,68 @@ $packages["github.com/supraio/client-daemon/pkg/input"] = (function() {
189789
189836
  ptrType = $ptrType(KeyTransformer);
189790
189837
  sliceType$1 = $sliceType($emptyInterface);
189791
189838
  sliceType$2 = $sliceType(key.Event);
189792
- ptrType$1 = $ptrType(MouseHandler);
189793
- chanType = $chanType(mouse.Event, false, false);
189794
- ptrType$2 = $ptrType(KeyHandler);
189795
- chanType$1 = $chanType(key.Event, false, false);
189796
- chanType$2 = $chanType(focus.Event, false, false);
189797
- ptrType$3 = $ptrType(JsHelper);
189839
+ ptrType$1 = $ptrType(TouchHandler);
189840
+ chanType = $chanType(touch.Event, false, false);
189841
+ ptrType$2 = $ptrType(MouseHandler);
189842
+ chanType$1 = $chanType(mouse.Event, false, false);
189843
+ ptrType$3 = $ptrType(KeyHandler);
189844
+ chanType$2 = $chanType(key.Event, false, false);
189845
+ chanType$3 = $chanType(focus.Event, false, false);
189846
+ ptrType$4 = $ptrType(JsHelper);
189847
+ NewTouchHandler = function(touchEventChan, messageSender) {
189848
+ var messageSender, touchEventChan;
189849
+ return new TouchHandler.ptr(touchEventChan, messageSender, true);
189850
+ };
189851
+ $pkg.NewTouchHandler = NewTouchHandler;
189852
+ TouchHandler.ptr.prototype.Start = function() {
189853
+ var h;
189854
+ h = this;
189855
+ h.closed = false;
189856
+ $go($methodVal(h, "listenEvents"), []);
189857
+ };
189858
+ TouchHandler.prototype.Start = function() { return this.$val.Start(); };
189859
+ TouchHandler.ptr.prototype.Close = function() {
189860
+ var h;
189861
+ h = this;
189862
+ h.closed = true;
189863
+ };
189864
+ TouchHandler.prototype.Close = function() { return this.$val.Close(); };
189865
+ TouchHandler.ptr.prototype.listenEvents = function() {
189866
+ var {_r, _r$1, err, ev, eventData, h, $s, $r, $c} = $restore(this, {});
189867
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189868
+ h = this;
189869
+ /* while (true) { */ case 1:
189870
+ /* if (!(!h.closed)) { break; } */ if(!(!h.closed)) { $s = 2; continue; }
189871
+ _r = $recv(h.touchEventChan); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189872
+ ev = $clone(_r[0], touch.Event);
189873
+ eventData = h.encodeTouchEvent($clone(ev, touch.Event));
189874
+ _r$1 = h.messageSender.Send(49, eventData); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189875
+ err = _r$1;
189876
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
189877
+ /* */ $s = 6; continue;
189878
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
189879
+ $r = errs.Print("Cannot send screen touch event", err); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189880
+ /* } */ case 6:
189881
+ $s = 1; continue;
189882
+ case 2:
189883
+ $s = -1; return;
189884
+ /* */ } return; } var $f = {$blk: TouchHandler.ptr.prototype.listenEvents, $c: true, $r, _r, _r$1, err, ev, eventData, h, $s};return $f;
189885
+ };
189886
+ TouchHandler.prototype.listenEvents = function() { return this.$val.listenEvents(); };
189887
+ TouchHandler.ptr.prototype.encodeTouchEvent = function(ev) {
189888
+ var ev, h, sequenceData, typeData, x, xData, yData;
189889
+ h = this;
189890
+ sequenceData = $makeSlice(sliceType, 8);
189891
+ $clone(binary.BigEndian, binary.bigEndian).PutUint64(sequenceData, ((x = ev.Sequence, new $Uint64(x.$high, x.$low))));
189892
+ typeData = $makeSlice(sliceType, 2);
189893
+ $clone(binary.BigEndian, binary.bigEndian).PutUint16(typeData, ((ev.Type << 16 >>> 16)));
189894
+ xData = $makeSlice(sliceType, 4);
189895
+ $clone(binary.BigEndian, binary.bigEndian).PutUint32(xData, ((ev.X >> 0)));
189896
+ yData = $makeSlice(sliceType, 4);
189897
+ $clone(binary.BigEndian, binary.bigEndian).PutUint32(yData, ((ev.Y >> 0)));
189898
+ return $appendSlice(sequenceData, $appendSlice(typeData, $appendSlice(xData, yData)));
189899
+ };
189900
+ TouchHandler.prototype.encodeTouchEvent = function(ev) { return this.$val.encodeTouchEvent(ev); };
189798
189901
  NewMouseHandler = function(mouseEventChan, messageSender) {
189799
189902
  var messageSender, mouseEventChan;
189800
189903
  return new MouseHandler.ptr(mouseEventChan, messageSender, true);
@@ -190061,12 +190164,14 @@ $packages["github.com/supraio/client-daemon/pkg/input"] = (function() {
190061
190164
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return transformedEvs; } if($curGoroutine.asleep) { var $f = {$blk: KeyTransformer.ptr.prototype.TransformAltGr, $c: true, $r, $24r, ev, t, transformedEvs, $s, $deferred};return $f; } }
190062
190165
  };
190063
190166
  KeyTransformer.prototype.TransformAltGr = function(ev) { return this.$val.TransformAltGr(ev); };
190064
- ptrType$1.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "listenEvents", name: "listenEvents", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([], [], false)}, {prop: "encodeMouseEvent", name: "encodeMouseEvent", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([mouse.Event], [sliceType], false)}];
190065
- ptrType$2.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "listenEvents", name: "listenEvents", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([], [], false)}, {prop: "listenFocusEvents", name: "listenFocusEvents", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([], [], false)}, {prop: "encodeKeyEvent", name: "encodeKeyEvent", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([key.Event], [sliceType], false)}, {prop: "init", name: "init", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([], [$error], false)}];
190066
- ptrType$3.methods = [{prop: "GetCapsLockState", name: "GetCapsLockState", pkg: "", typ: $funcType([], [$Bool, $error], false)}, {prop: "GetNumLockState", name: "GetNumLockState", pkg: "", typ: $funcType([], [$Bool, $error], false)}, {prop: "GetKeyboardLayout", name: "GetKeyboardLayout", pkg: "", typ: $funcType([], [$String, $error], false)}];
190167
+ ptrType$1.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "listenEvents", name: "listenEvents", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([], [], false)}, {prop: "encodeTouchEvent", name: "encodeTouchEvent", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([touch.Event], [sliceType], false)}];
190168
+ ptrType$2.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "listenEvents", name: "listenEvents", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([], [], false)}, {prop: "encodeMouseEvent", name: "encodeMouseEvent", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([mouse.Event], [sliceType], false)}];
190169
+ ptrType$3.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "listenEvents", name: "listenEvents", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([], [], false)}, {prop: "listenFocusEvents", name: "listenFocusEvents", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([], [], false)}, {prop: "encodeKeyEvent", name: "encodeKeyEvent", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([key.Event], [sliceType], false)}, {prop: "init", name: "init", pkg: "github.com/supraio/client-daemon/pkg/input", typ: $funcType([], [$error], false)}];
190170
+ ptrType$4.methods = [{prop: "GetCapsLockState", name: "GetCapsLockState", pkg: "", typ: $funcType([], [$Bool, $error], false)}, {prop: "GetNumLockState", name: "GetNumLockState", pkg: "", typ: $funcType([], [$Bool, $error], false)}, {prop: "GetKeyboardLayout", name: "GetKeyboardLayout", pkg: "", typ: $funcType([], [$String, $error], false)}];
190067
190171
  ptrType.methods = [{prop: "TransformAltGr", name: "TransformAltGr", pkg: "", typ: $funcType([key.Event], [sliceType$2], false)}];
190068
- MouseHandler.init("github.com/supraio/client-daemon/pkg/input", [{prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "messageSender", name: "messageSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}]);
190069
- KeyHandler.init("github.com/supraio/client-daemon/pkg/input", [{prop: "helper", name: "helper", embedded: false, exported: false, typ: Helper, tag: ""}, {prop: "keyEventChan", name: "keyEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "messageSender", name: "messageSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "keyTransformer", name: "keyTransformer", embedded: false, exported: false, typ: ptrType, tag: ""}]);
190172
+ TouchHandler.init("github.com/supraio/client-daemon/pkg/input", [{prop: "touchEventChan", name: "touchEventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "messageSender", name: "messageSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}]);
190173
+ MouseHandler.init("github.com/supraio/client-daemon/pkg/input", [{prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "messageSender", name: "messageSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}]);
190174
+ KeyHandler.init("github.com/supraio/client-daemon/pkg/input", [{prop: "helper", name: "helper", embedded: false, exported: false, typ: Helper, tag: ""}, {prop: "keyEventChan", name: "keyEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "messageSender", name: "messageSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "keyTransformer", name: "keyTransformer", embedded: false, exported: false, typ: ptrType, tag: ""}]);
190070
190175
  JsHelper.init("", []);
190071
190176
  KeyTransformer.init("github.com/supraio/client-daemon/pkg/input", [{prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "isCtrlLeftPressed", name: "isCtrlLeftPressed", embedded: false, exported: false, typ: $Bool, tag: ""}]);
190072
190177
  Helper.init([{prop: "GetCapsLockState", name: "GetCapsLockState", pkg: "", typ: $funcType([], [$Bool, $error], false)}, {prop: "GetKeyboardLayout", name: "GetKeyboardLayout", pkg: "", typ: $funcType([], [$String, $error], false)}, {prop: "GetNumLockState", name: "GetNumLockState", pkg: "", typ: $funcType([], [$Bool, $error], false)}]);
@@ -190080,7 +190185,8 @@ $packages["github.com/supraio/client-daemon/pkg/input"] = (function() {
190080
190185
  $r = focus.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190081
190186
  $r = key.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190082
190187
  $r = mouse.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190083
- $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190188
+ $r = touch.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190189
+ $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190084
190190
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190085
190191
  };
190086
190192
  $pkg.$init = $init;
@@ -190237,14 +190343,14 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
190237
190343
  h = this;
190238
190344
  /* while (true) { */ case 1:
190239
190345
  /* if (!(!h.closed)) { break; } */ if(!(!h.closed)) { $s = 2; continue; }
190240
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190241
- _r = h.messageSender.Send(2, new sliceType([])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190346
+ _r = h.messageSender.Send(2, new sliceType([])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190242
190347
  err = _r;
190243
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
190244
- /* */ $s = 6; continue;
190245
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
190246
- $r = errs.Print("Ping error", err); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190247
- /* } */ case 6:
190348
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
190349
+ /* */ $s = 5; continue;
190350
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
190351
+ $r = errs.Print("Ping error", err); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190352
+ /* } */ case 5:
190353
+ $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190248
190354
  $s = 1; continue;
190249
190355
  case 2:
190250
190356
  $s = -1; return;
@@ -190924,11 +191030,12 @@ $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
190924
191030
  $pkg.$init = $init;
190925
191031
  return $pkg;
190926
191032
  })();
190927
- $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"] = (function() {
190928
- var $pkg = {}, $init, fmt, webgl, types, 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;
191033
+ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
191034
+ 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;
190929
191035
  fmt = $packages["fmt"];
190930
191036
  webgl = $packages["github.com/nuberu/webgl"];
190931
191037
  types = $packages["github.com/nuberu/webgl/types"];
191038
+ errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
190932
191039
  dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
190933
191040
  imageutil = $packages["golang.org/x/exp/shiny/imageutil"];
190934
191041
  screen = $packages["golang.org/x/exp/shiny/screen"];
@@ -190938,7 +191045,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"] = (fu
190938
191045
  draw = $packages["image/draw"];
190939
191046
  sync = $packages["sync"];
190940
191047
  js = $packages["syscall/js"];
190941
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "webgldriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", false, function(screen_, mutex_, canvasEl_, gl_, programRGBA_, imageTexRGBA_, programYUV420_, imageTexY_, imageTexU_, imageTexV_, vertexArray_, released_, domEvents_, width_, height_) {
191048
+ 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_) {
190942
191049
  this.$val = this;
190943
191050
  if (arguments.length === 0) {
190944
191051
  this.screen = ptrType.nil;
@@ -190974,7 +191081,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"] = (fu
190974
191081
  this.width = width_;
190975
191082
  this.height = height_;
190976
191083
  });
190977
- screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "webgldriver.screenImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", false, function(doc_) {
191084
+ screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "webgldriver.screenImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(doc_) {
190978
191085
  this.$val = this;
190979
191086
  if (arguments.length === 0) {
190980
191087
  this.doc = new js.Value.ptr(null, false, arrayType.zero());
@@ -190982,7 +191089,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"] = (fu
190982
191089
  }
190983
191090
  this.doc = doc_;
190984
191091
  });
190985
- ArrayBufferSlice = $pkg.ArrayBufferSlice = $newType(0, $kindStruct, "webgldriver.ArrayBufferSlice", true, "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", true, function(ArrayBuffer_, Offset_, Length_) {
191092
+ ArrayBufferSlice = $pkg.ArrayBufferSlice = $newType(0, $kindStruct, "webgldriver.ArrayBufferSlice", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(ArrayBuffer_, Offset_, Length_) {
190986
191093
  this.$val = this;
190987
191094
  if (arguments.length === 0) {
190988
191095
  this.ArrayBuffer = new js.Value.ptr(null, false, arrayType.zero());
@@ -190994,7 +191101,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"] = (fu
190994
191101
  this.Offset = Offset_;
190995
191102
  this.Length = Length_;
190996
191103
  });
190997
- YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "webgldriver.YCbCrJS", true, "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", true, function(Y_, Cb_, Cr_, YStride_, CStride_, SubsampleRatio_, Rect_, Use_) {
191104
+ YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "webgldriver.YCbCrJS", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(Y_, Cb_, Cr_, YStride_, CStride_, SubsampleRatio_, Rect_, Use_) {
190998
191105
  this.$val = this;
190999
191106
  if (arguments.length === 0) {
191000
191107
  this.Y = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
@@ -191016,7 +191123,7 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"] = (fu
191016
191123
  this.Rect = Rect_;
191017
191124
  this.Use = Use_;
191018
191125
  });
191019
- BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "webgldriver.BufferImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", true, function(screen_, size_, mutex_, released_, rgba_, ycbcr_, ycbcrJS_) {
191126
+ 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_) {
191020
191127
  this.$val = this;
191021
191128
  if (arguments.length === 0) {
191022
191129
  this.screen = ptrType.nil;
@@ -191291,9 +191398,11 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"] = (fu
191291
191398
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191292
191399
  _r = main(f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191293
191400
  err = _r;
191294
- if (!($interfaceIsEqual(err, $ifaceNil))) {
191295
- $panic(err);
191296
- }
191401
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
191402
+ /* */ $s = 3; continue;
191403
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
191404
+ $r = f(errscreen.Stub(err)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191405
+ /* } */ case 3:
191297
191406
  $s = -1; return;
191298
191407
  /* */ } return; } var $f = {$blk: Main, $c: true, $r, _r, err, f, $s};return $f;
191299
191408
  };
@@ -191630,8 +191739,8 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"] = (fu
191630
191739
  _r = w.gl.CreateTexture(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191631
191740
  imageTex = _r;
191632
191741
  $r = w.gl.BindTexture(3553, imageTex); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191633
- $r = w.gl.TexParameterWrapS(3553, 33071); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191634
- $r = w.gl.TexParameterWrapT(3553, 33071); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191742
+ $r = w.gl.TexParameterWrapS(3553, 10497); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191743
+ $r = w.gl.TexParameterWrapT(3553, 10497); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191635
191744
  $r = w.gl.TexParameterMinFilter(3553, 9729); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191636
191745
  $r = w.gl.TexParameterMagFilter(3553, 9729); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191637
191746
  $r = w.gl.TexImage2Db(3553, 0, format, width, height, 0, format, sliceType$3.nil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -191710,30 +191819,31 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"] = (fu
191710
191819
  /* */ } 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; } }
191711
191820
  };
191712
191821
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
191713
- ptrType$10.methods = [{prop: "ensureCanvasSize", name: "ensureCanvasSize", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "clear", name: "clear", pkg: "github.com/supraio/client-daemon/pkg/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: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([ptrType$3], [$error], false)}, {prop: "ensureYUV420Textures", name: "ensureYUV420Textures", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramYUV420", name: "createAndLinkProgramYUV420", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "drawBufferYUV420", name: "drawBufferYUV420", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "drawBufferYUV420JSArrayBuffers", name: "drawBufferYUV420JSArrayBuffers", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([image.Point, js.Value, js.Value, js.Value, image.Rectangle], [], false)}, {prop: "ensureRGBATextures", name: "ensureRGBATextures", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramRGBA", name: "createAndLinkProgramRGBA", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "drawBufferRGBA", name: "drawBufferRGBA", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "createBuffers", name: "createBuffers", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([], [ptrType$5], false)}, {prop: "createAndAttachFragmentShader", name: "createAndAttachFragmentShader", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([ptrType$3, $String], [$error], false)}, {prop: "createTexture", name: "createTexture", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([types.GLEnum, types.GLEnum, $Int, $Int], [ptrType$4], false)}];
191822
+ 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)}];
191714
191823
  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)}];
191715
- ptrType$12.methods = [{prop: "slice", name: "slice", pkg: "github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", typ: $funcType([], [js.Value], false)}];
191824
+ ptrType$12.methods = [{prop: "slice", name: "slice", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [js.Value], false)}];
191716
191825
  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)}];
191717
- windowImpl.init("github.com/supraio/client-daemon/pkg/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: ""}]);
191718
- screenImpl.init("github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
191826
+ 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: ""}]);
191827
+ screenImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
191719
191828
  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: ""}]);
191720
191829
  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: ""}]);
191721
- BufferImpl.init("github.com/supraio/client-daemon/pkg/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: ""}]);
191830
+ 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: ""}]);
191722
191831
  $init = function() {
191723
191832
  $pkg.$init = function() {};
191724
191833
  /* */ 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:
191725
191834
  $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191726
191835
  $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191727
191836
  $r = types.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191728
- $r = dom.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191729
- $r = imageutil.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191730
- $r = screen.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191731
- $r = f64.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191732
- $r = image.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191733
- $r = color.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191734
- $r = draw.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191735
- $r = sync.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191736
- $r = js.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191837
+ $r = errscreen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191838
+ $r = dom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191839
+ $r = imageutil.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191840
+ $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191841
+ $r = f64.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191842
+ $r = image.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191843
+ $r = color.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191844
+ $r = draw.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191845
+ $r = sync.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191846
+ $r = js.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191737
191847
  texCoordsVertices = new sliceType([1, 1, 1, 0, 1, -1, 1, 1, -1, -1, 0, 1, -1, 1, 0, 0]);
191738
191848
  elementsIndices = new sliceType$1([0, 1, 3, 1, 2, 3]);
191739
191849
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
@@ -191745,7 +191855,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (functio
191745
191855
  var $pkg = {}, $init, general, errs, webgldriver, image, js, H264Decoder, funcType, arrayType, sliceType, ptrType, sliceType$1, ptrType$1, chanType, IsAvailable, NewDecoder;
191746
191856
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
191747
191857
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
191748
- webgldriver = $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"];
191858
+ webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
191749
191859
  image = $packages["image"];
191750
191860
  js = $packages["syscall/js"];
191751
191861
  H264Decoder = $pkg.H264Decoder = $newType(0, $kindStruct, "h264decoder.H264Decoder", true, "github.com/supraio/client-daemon/pkg/decoder/h264decoder", true, function(decoder_, outputChan_) {
@@ -191891,6 +192001,18 @@ $packages["github.com/supraio/client-daemon/pkg/videostream"] = (function() {
191891
192001
  return false;
191892
192002
  };
191893
192003
  UnavailableVideoStreamer.prototype.IsAvailable = function() { return this.$val.IsAvailable(); };
192004
+ UnavailableVideoStreamer.ptr.prototype.Play = function() {
192005
+ var u;
192006
+ u = this;
192007
+ $panic(new $String("not implemented Play"));
192008
+ };
192009
+ UnavailableVideoStreamer.prototype.Play = function() { return this.$val.Play(); };
192010
+ UnavailableVideoStreamer.ptr.prototype.Stop = function() {
192011
+ var u;
192012
+ u = this;
192013
+ $panic(new $String("not implemented Stop"));
192014
+ };
192015
+ UnavailableVideoStreamer.prototype.Stop = function() { return this.$val.Stop(); };
191894
192016
  UnavailableVideoStreamer.ptr.prototype.GetProtocol = function() {
191895
192017
  var u;
191896
192018
  u = this;
@@ -191909,7 +192031,7 @@ $packages["github.com/supraio/client-daemon/pkg/videostream"] = (function() {
191909
192031
  $panic(new $String("not implemented GetHostname"));
191910
192032
  };
191911
192033
  UnavailableVideoStreamer.prototype.GetHostname = function() { return this.$val.GetHostname(); };
191912
- ptrType.methods = [{prop: "IsAvailable", name: "IsAvailable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "GetProtocol", name: "GetProtocol", pkg: "", typ: $funcType([], [Protocol], false)}, {prop: "GetPort", name: "GetPort", pkg: "", typ: $funcType([], [$Uint16], false)}, {prop: "GetHostname", name: "GetHostname", pkg: "", typ: $funcType([], [$String], false)}];
192034
+ ptrType.methods = [{prop: "IsAvailable", name: "IsAvailable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Play", name: "Play", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetProtocol", name: "GetProtocol", pkg: "", typ: $funcType([], [Protocol], false)}, {prop: "GetPort", name: "GetPort", pkg: "", typ: $funcType([], [$Uint16], false)}, {prop: "GetHostname", name: "GetHostname", pkg: "", typ: $funcType([], [$String], false)}];
191913
192035
  UnavailableVideoStreamer.init("", []);
191914
192036
  $init = function() {
191915
192037
  $pkg.$init = function() {};
@@ -191928,23 +192050,21 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
191928
192050
  jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
191929
192051
  videostream = $packages["github.com/supraio/client-daemon/pkg/videostream"];
191930
192052
  js = $packages["syscall/js"];
191931
- SOSVideoStreamer = $pkg.SOSVideoStreamer = $newType(0, $kindStruct, "sosstream.SOSVideoStreamer", true, "github.com/supraio/client-daemon/pkg/decoder/sosstream", true, function(sos_) {
192053
+ SOSVideoStreamer = $pkg.SOSVideoStreamer = $newType(0, $kindStruct, "sosstream.SOSVideoStreamer", true, "github.com/supraio/client-daemon/pkg/decoder/sosstream", true, function(sos_, started_) {
191932
192054
  this.$val = this;
191933
192055
  if (arguments.length === 0) {
191934
192056
  this.sos = new js.Value.ptr(null, false, arrayType.zero());
192057
+ this.started = false;
191935
192058
  return;
191936
192059
  }
191937
192060
  this.sos = sos_;
192061
+ this.started = started_;
191938
192062
  });
191939
- SOSStreamDecoder = $pkg.SOSStreamDecoder = $newType(0, $kindStruct, "sosstream.SOSStreamDecoder", true, "github.com/supraio/client-daemon/pkg/decoder/sosstream", true, function(sos_, started_) {
192063
+ SOSStreamDecoder = $pkg.SOSStreamDecoder = $newType(0, $kindStruct, "sosstream.SOSStreamDecoder", true, "github.com/supraio/client-daemon/pkg/decoder/sosstream", true, function() {
191940
192064
  this.$val = this;
191941
192065
  if (arguments.length === 0) {
191942
- this.sos = new js.Value.ptr(null, false, arrayType.zero());
191943
- this.started = false;
191944
192066
  return;
191945
192067
  }
191946
- this.sos = sos_;
191947
- this.started = started_;
191948
192068
  });
191949
192069
  funcType = $funcType([], [], false);
191950
192070
  arrayType = $arrayType(funcType, 0);
@@ -191955,7 +192075,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
191955
192075
  ptrType$2 = $ptrType(SOSStreamDecoder);
191956
192076
  init = function() {
191957
192077
  var videoStreamer;
191958
- videoStreamer = new SOSVideoStreamer.ptr($clone($clone(js.Global(), js.Value).Get("sos"), js.Value));
192078
+ videoStreamer = new SOSVideoStreamer.ptr($clone($clone(js.Global(), js.Value).Get("sos"), js.Value), false);
191959
192079
  videostream.Register(videoStreamer);
191960
192080
  };
191961
192081
  SOSVideoStreamer.ptr.prototype.IsAvailable = function() {
@@ -191964,65 +192084,15 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
191964
192084
  return !$clone(m.sos, js.Value).IsUndefined() && $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("stream"), js.Value).Truthy();
191965
192085
  };
191966
192086
  SOSVideoStreamer.prototype.IsAvailable = function() { return this.$val.IsAvailable(); };
191967
- SOSVideoStreamer.ptr.prototype.GetProtocol = function() {
191968
- var _1, m, protocol, protocolValue;
191969
- m = this;
191970
- protocolValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamProtocol"), js.Value);
191971
- protocol = 0;
191972
- if (!$clone(protocolValue, js.Value).IsUndefined() && ($clone(protocolValue, js.Value).Type() === 4)) {
191973
- _1 = $clone(protocolValue, js.Value).String();
191974
- if (_1 === ("UDP")) {
191975
- protocol = 0;
191976
- } else if (_1 === ("HTTP")) {
191977
- protocol = 1;
191978
- } else if (_1 === ("HTTPMP4")) {
191979
- protocol = 2;
191980
- } else if (_1 === ("RTP")) {
191981
- protocol = 3;
191982
- } else {
191983
- protocol = 0;
191984
- }
191985
- }
191986
- return protocol;
191987
- };
191988
- SOSVideoStreamer.prototype.GetProtocol = function() { return this.$val.GetProtocol(); };
191989
- SOSVideoStreamer.ptr.prototype.GetPort = function() {
191990
- var m, port, portValue;
191991
- m = this;
191992
- portValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamPort"), js.Value);
191993
- port = 5000;
191994
- if (!$clone(portValue, js.Value).IsUndefined() && ($clone(portValue, js.Value).Type() === 3)) {
191995
- port = $clone(portValue, js.Value).Int();
191996
- }
191997
- return ((port << 16 >>> 16));
191998
- };
191999
- SOSVideoStreamer.prototype.GetPort = function() { return this.$val.GetPort(); };
192000
- SOSVideoStreamer.ptr.prototype.GetHostname = function() {
192001
- var hostname, hostnameValue, m;
192002
- m = this;
192003
- hostnameValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamHostname"), js.Value);
192004
- hostname = "";
192005
- if (!$clone(hostnameValue, js.Value).IsUndefined() && ($clone(hostnameValue, js.Value).Type() === 4)) {
192006
- hostname = $clone(hostnameValue, js.Value).String();
192007
- }
192008
- return hostname;
192009
- };
192010
- SOSVideoStreamer.prototype.GetHostname = function() { return this.$val.GetHostname(); };
192011
- NewDecoder = function(header) {
192012
- var header, sos;
192013
- sos = $clone($clone(js.Global(), js.Value).Get("sos"), js.Value);
192014
- return [new SOSStreamDecoder.ptr($clone(sos, js.Value), false), $ifaceNil];
192015
- };
192016
- $pkg.NewDecoder = NewDecoder;
192017
- SOSStreamDecoder.ptr.prototype.Write = function(nal) {
192018
- 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, nal, options, playStream, port, preparePromise, protocol, sosProtocol, url, urlProtocol, width, $s, $r, $c} = $restore(this, {nal});
192087
+ SOSVideoStreamer.ptr.prototype.Play = function() {
192088
+ 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, {});
192019
192089
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192020
192090
  m = this;
192021
192091
  /* */ if (!m.started) { $s = 1; continue; }
192022
192092
  /* */ $s = 2; continue;
192023
192093
  /* if (!m.started) { */ case 1:
192024
- protocol = m.getProtocol();
192025
- port = m.getPort();
192094
+ protocol = m.GetProtocol();
192095
+ port = m.GetPort();
192026
192096
  hostname = m.getStreamHostname(protocol);
192027
192097
  urlProtocol = m.getURLProtocol(protocol);
192028
192098
  sosProtocol = m.getSOSProtocol(protocol);
@@ -192067,35 +192137,90 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192067
192137
  m.started = true;
192068
192138
  /* } */ case 2:
192069
192139
  $s = -1; return $ifaceNil;
192070
- /* */ } return; } var $f = {$blk: SOSStreamDecoder.ptr.prototype.Write, $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, nal, options, playStream, port, preparePromise, protocol, sosProtocol, url, urlProtocol, width, $s};return $f;
192140
+ /* */ } 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;
192071
192141
  };
192072
- SOSStreamDecoder.prototype.Write = function(nal) { return this.$val.Write(nal); };
192073
- SOSStreamDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
192074
- var m, outputBuffer;
192142
+ SOSVideoStreamer.prototype.Play = function() { return this.$val.Play(); };
192143
+ SOSVideoStreamer.ptr.prototype.Stop = function() {
192144
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, height, hostname, m, port, protocol, stopPromise, url, urlProtocol, width, $s, $r, $c} = $restore(this, {});
192145
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192075
192146
  m = this;
192076
- return $ifaceNil;
192147
+ /* */ if (m.started) { $s = 1; continue; }
192148
+ /* */ $s = 2; continue;
192149
+ /* if (m.started) { */ case 1:
192150
+ protocol = m.GetProtocol();
192151
+ port = m.GetPort();
192152
+ hostname = m.getStreamHostname(protocol);
192153
+ urlProtocol = m.getURLProtocol(protocol);
192154
+ _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; }
192155
+ url = _r;
192156
+ width = $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
192157
+ height = $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
192158
+ _r$1 = $clone($clone(m.sos, js.Value).Get("stream"), js.Value).Call("stop", new sliceType([new $String(url), new $Int(0), new $Int(0), new $Int(width), new $Int(height)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192159
+ stopPromise = $clone(_r$1, js.Value);
192160
+ _r$2 = jshelper.Await($clone(stopPromise, js.Value)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192161
+ _tuple = _r$2;
192162
+ err = _tuple[1];
192163
+ /* */ if (!(err === ptrType.nil)) { $s = 6; continue; }
192164
+ /* */ $s = 7; continue;
192165
+ /* if (!(err === ptrType.nil)) { */ case 6:
192166
+ _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; }
192167
+ _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; }
192168
+ _arg = new $String(_r$4);
192169
+ _r$5 = errs.Errorf("Failed to stop sos video stream: %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; }
192170
+ $24r = _r$5;
192171
+ $s = 11; case 11: return $24r;
192172
+ /* } */ case 7:
192173
+ m.started = false;
192174
+ /* } */ case 2:
192175
+ $s = -1; return $ifaceNil;
192176
+ /* */ } return; } var $f = {$blk: SOSVideoStreamer.ptr.prototype.Stop, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, height, hostname, m, port, protocol, stopPromise, url, urlProtocol, width, $s};return $f;
192077
192177
  };
192078
- SOSStreamDecoder.prototype.NextOutput = function(outputBuffer) { return this.$val.NextOutput(outputBuffer); };
192079
- SOSStreamDecoder.ptr.prototype.Release = function(outputBuffer) {
192080
- var m, outputBuffer;
192178
+ SOSVideoStreamer.prototype.Stop = function() { return this.$val.Stop(); };
192179
+ SOSVideoStreamer.ptr.prototype.GetProtocol = function() {
192180
+ var _1, m, protocol, protocolValue;
192081
192181
  m = this;
192182
+ protocolValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamProtocol"), js.Value);
192183
+ protocol = 0;
192184
+ if (!$clone(protocolValue, js.Value).IsUndefined() && ($clone(protocolValue, js.Value).Type() === 4)) {
192185
+ _1 = $clone(protocolValue, js.Value).String();
192186
+ if (_1 === ("UDP")) {
192187
+ protocol = 0;
192188
+ } else if (_1 === ("HTTP")) {
192189
+ protocol = 1;
192190
+ } else if (_1 === ("HTTPMP4")) {
192191
+ protocol = 2;
192192
+ } else if (_1 === ("RTP")) {
192193
+ protocol = 3;
192194
+ } else {
192195
+ protocol = 0;
192196
+ }
192197
+ }
192198
+ return protocol;
192082
192199
  };
192083
- SOSStreamDecoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
192084
- SOSStreamDecoder.ptr.prototype.getProtocol = function() {
192085
- var m, videoStreamer;
192200
+ SOSVideoStreamer.prototype.GetProtocol = function() { return this.$val.GetProtocol(); };
192201
+ SOSVideoStreamer.ptr.prototype.GetPort = function() {
192202
+ var m, port, portValue;
192086
192203
  m = this;
192087
- videoStreamer = new SOSVideoStreamer.ptr($clone(m.sos, js.Value));
192088
- return videoStreamer.GetProtocol();
192204
+ portValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamPort"), js.Value);
192205
+ port = 5000;
192206
+ if (!$clone(portValue, js.Value).IsUndefined() && ($clone(portValue, js.Value).Type() === 3)) {
192207
+ port = $clone(portValue, js.Value).Int();
192208
+ }
192209
+ return ((port << 16 >>> 16));
192089
192210
  };
192090
- SOSStreamDecoder.prototype.getProtocol = function() { return this.$val.getProtocol(); };
192091
- SOSStreamDecoder.ptr.prototype.getPort = function() {
192092
- var m, videoStreamer;
192211
+ SOSVideoStreamer.prototype.GetPort = function() { return this.$val.GetPort(); };
192212
+ SOSVideoStreamer.ptr.prototype.GetHostname = function() {
192213
+ var hostname, hostnameValue, m;
192093
192214
  m = this;
192094
- videoStreamer = new SOSVideoStreamer.ptr($clone(m.sos, js.Value));
192095
- return videoStreamer.GetPort();
192215
+ hostnameValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamHostname"), js.Value);
192216
+ hostname = "";
192217
+ if (!$clone(hostnameValue, js.Value).IsUndefined() && ($clone(hostnameValue, js.Value).Type() === 4)) {
192218
+ hostname = $clone(hostnameValue, js.Value).String();
192219
+ }
192220
+ return hostname;
192096
192221
  };
192097
- SOSStreamDecoder.prototype.getPort = function() { return this.$val.getPort(); };
192098
- SOSStreamDecoder.ptr.prototype.getServerHostname = function() {
192222
+ SOSVideoStreamer.prototype.GetHostname = function() { return this.$val.GetHostname(); };
192223
+ SOSVideoStreamer.ptr.prototype.getServerHostname = function() {
192099
192224
  var m, serverHostname, serverHostnameValue;
192100
192225
  m = this;
192101
192226
  serverHostnameValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("hostname"), js.Value);
@@ -192105,11 +192230,11 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192105
192230
  }
192106
192231
  return serverHostname;
192107
192232
  };
192108
- SOSStreamDecoder.prototype.getServerHostname = function() { return this.$val.getServerHostname(); };
192109
- SOSStreamDecoder.ptr.prototype.getStreamHostname = function(protocol) {
192233
+ SOSVideoStreamer.prototype.getServerHostname = function() { return this.$val.getServerHostname(); };
192234
+ SOSVideoStreamer.ptr.prototype.getStreamHostname = function(protocol) {
192110
192235
  var _1, hostname, m, protocol, videoStreamer;
192111
192236
  m = this;
192112
- videoStreamer = new SOSVideoStreamer.ptr($clone(m.sos, js.Value));
192237
+ videoStreamer = new SOSVideoStreamer.ptr($clone(m.sos, js.Value), false);
192113
192238
  hostname = videoStreamer.GetHostname();
192114
192239
  if (!(hostname === "")) {
192115
192240
  return hostname;
@@ -192122,8 +192247,8 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192122
192247
  }
192123
192248
  return hostname;
192124
192249
  };
192125
- SOSStreamDecoder.prototype.getStreamHostname = function(protocol) { return this.$val.getStreamHostname(protocol); };
192126
- SOSStreamDecoder.ptr.prototype.getURLProtocol = function(protocol) {
192250
+ SOSVideoStreamer.prototype.getStreamHostname = function(protocol) { return this.$val.getStreamHostname(protocol); };
192251
+ SOSVideoStreamer.ptr.prototype.getURLProtocol = function(protocol) {
192127
192252
  var _1, m, protocol;
192128
192253
  m = this;
192129
192254
  _1 = protocol;
@@ -192137,8 +192262,8 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192137
192262
  $panic(new $String("Unknown url protocol"));
192138
192263
  }
192139
192264
  };
192140
- SOSStreamDecoder.prototype.getURLProtocol = function(protocol) { return this.$val.getURLProtocol(protocol); };
192141
- SOSStreamDecoder.ptr.prototype.getSOSProtocol = function(protocol) {
192265
+ SOSVideoStreamer.prototype.getURLProtocol = function(protocol) { return this.$val.getURLProtocol(protocol); };
192266
+ SOSVideoStreamer.ptr.prototype.getSOSProtocol = function(protocol) {
192142
192267
  var _1, m, protocol;
192143
192268
  m = this;
192144
192269
  _1 = protocol;
@@ -192152,11 +192277,41 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192152
192277
  $panic(new $String("Unknown sos protocol"));
192153
192278
  }
192154
192279
  };
192155
- SOSStreamDecoder.prototype.getSOSProtocol = function(protocol) { return this.$val.getSOSProtocol(protocol); };
192156
- ptrType$1.methods = [{prop: "IsAvailable", name: "IsAvailable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "GetProtocol", name: "GetProtocol", pkg: "", typ: $funcType([], [videostream.Protocol], false)}, {prop: "GetPort", name: "GetPort", pkg: "", typ: $funcType([], [$Uint16], false)}, {prop: "GetHostname", name: "GetHostname", pkg: "", typ: $funcType([], [$String], false)}];
192157
- ptrType$2.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}, {prop: "getProtocol", name: "getProtocol", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([], [videostream.Protocol], false)}, {prop: "getPort", name: "getPort", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([], [$Uint16], false)}, {prop: "getServerHostname", name: "getServerHostname", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([], [$String], false)}, {prop: "getStreamHostname", name: "getStreamHostname", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([videostream.Protocol], [$String], false)}, {prop: "getURLProtocol", name: "getURLProtocol", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([videostream.Protocol], [$String], false)}, {prop: "getSOSProtocol", name: "getSOSProtocol", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([videostream.Protocol], [$String], false)}];
192158
- SOSVideoStreamer.init("github.com/supraio/client-daemon/pkg/decoder/sosstream", [{prop: "sos", name: "sos", embedded: false, exported: false, typ: js.Value, tag: ""}]);
192159
- SOSStreamDecoder.init("github.com/supraio/client-daemon/pkg/decoder/sosstream", [{prop: "sos", name: "sos", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}]);
192280
+ SOSVideoStreamer.prototype.getSOSProtocol = function(protocol) { return this.$val.getSOSProtocol(protocol); };
192281
+ NewDecoder = function(header) {
192282
+ var header;
192283
+ return [new SOSStreamDecoder.ptr(), $ifaceNil];
192284
+ };
192285
+ $pkg.NewDecoder = NewDecoder;
192286
+ SOSStreamDecoder.ptr.prototype.Write = function(nal) {
192287
+ var {$24r, _r, m, nal, $s, $r, $c} = $restore(this, {nal});
192288
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192289
+ m = this;
192290
+ _r = errs.Errorf("SOSStreamDecoder does not expect any input data. Play SOS stream directly", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192291
+ $24r = _r;
192292
+ $s = 2; case 2: return $24r;
192293
+ /* */ } return; } var $f = {$blk: SOSStreamDecoder.ptr.prototype.Write, $c: true, $r, $24r, _r, m, nal, $s};return $f;
192294
+ };
192295
+ SOSStreamDecoder.prototype.Write = function(nal) { return this.$val.Write(nal); };
192296
+ SOSStreamDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
192297
+ var {$24r, _r, m, outputBuffer, $s, $r, $c} = $restore(this, {outputBuffer});
192298
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192299
+ m = this;
192300
+ _r = errs.Errorf("SOSStreamDecoder does not expect any input data. Play SOS stream directly", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192301
+ $24r = _r;
192302
+ $s = 2; case 2: return $24r;
192303
+ /* */ } return; } var $f = {$blk: SOSStreamDecoder.ptr.prototype.NextOutput, $c: true, $r, $24r, _r, m, outputBuffer, $s};return $f;
192304
+ };
192305
+ SOSStreamDecoder.prototype.NextOutput = function(outputBuffer) { return this.$val.NextOutput(outputBuffer); };
192306
+ SOSStreamDecoder.ptr.prototype.Release = function(outputBuffer) {
192307
+ var m, outputBuffer;
192308
+ m = this;
192309
+ };
192310
+ SOSStreamDecoder.prototype.Release = function(outputBuffer) { return this.$val.Release(outputBuffer); };
192311
+ ptrType$1.methods = [{prop: "IsAvailable", name: "IsAvailable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Play", name: "Play", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetProtocol", name: "GetProtocol", pkg: "", typ: $funcType([], [videostream.Protocol], false)}, {prop: "GetPort", name: "GetPort", pkg: "", typ: $funcType([], [$Uint16], false)}, {prop: "GetHostname", name: "GetHostname", pkg: "", typ: $funcType([], [$String], false)}, {prop: "getServerHostname", name: "getServerHostname", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([], [$String], false)}, {prop: "getStreamHostname", name: "getStreamHostname", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([videostream.Protocol], [$String], false)}, {prop: "getURLProtocol", name: "getURLProtocol", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([videostream.Protocol], [$String], false)}, {prop: "getSOSProtocol", name: "getSOSProtocol", pkg: "github.com/supraio/client-daemon/pkg/decoder/sosstream", typ: $funcType([videostream.Protocol], [$String], false)}];
192312
+ ptrType$2.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}];
192313
+ SOSVideoStreamer.init("github.com/supraio/client-daemon/pkg/decoder/sosstream", [{prop: "sos", name: "sos", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}]);
192314
+ SOSStreamDecoder.init("", []);
192160
192315
  $init = function() {
192161
192316
  $pkg.$init = function() {};
192162
192317
  /* */ 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:
@@ -192173,57 +192328,50 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function(
192173
192328
  return $pkg;
192174
192329
  })();
192175
192330
  $packages["github.com/supraio/client-daemon/pkg/decoder"] = (function() {
192176
- var $pkg = {}, $init, general, h264decoder, nacldecoder, sosstream, webcodecs, errs, videostream, log, Decoder, sliceType, sliceType$1, NewDecoder;
192331
+ var $pkg = {}, $init, general, h264decoder, nacldecoder, samsungwasmdecoder, sosstream, webcodecs, errs, videostream, Decoder, sliceType, sliceType$1, NewDecoder;
192177
192332
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
192178
192333
  h264decoder = $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"];
192179
192334
  nacldecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"];
192335
+ samsungwasmdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"];
192180
192336
  sosstream = $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"];
192181
192337
  webcodecs = $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"];
192182
192338
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
192183
192339
  videostream = $packages["github.com/supraio/client-daemon/pkg/videostream"];
192184
- log = $packages["log"];
192185
192340
  Decoder = $pkg.Decoder = $newType(8, $kindInterface, "decoder.Decoder", true, "github.com/supraio/client-daemon/pkg/decoder", true, null);
192186
192341
  sliceType = $sliceType($emptyInterface);
192187
192342
  sliceType$1 = $sliceType($Uint8);
192188
192343
  NewDecoder = function(header) {
192189
- var {$24r, _arg, _r, _r$1, _r$2, _returncast, _returncast$1, _returncast$2, _returncast$3, header, $s, $r, $c} = $restore(this, {header});
192190
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192191
- _r = videostream.Get().IsAvailable(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192192
- _arg = new $Bool(_r);
192193
- $r = log.Println(new sliceType([new $String("ASDF[GO] NewDecoder videostream available:"), _arg])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192194
- $r = log.Println(new sliceType([new $String("ASDF[GO] NewDecoder nacldecoder available:"), new $Bool(nacldecoder.IsAvailable())])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192195
- $r = log.Println(new sliceType([new $String("ASDF[GO] NewDecoder webcodecs available:"), new $Bool(webcodecs.IsAvailable())])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192196
- $r = log.Println(new sliceType([new $String("ASDF[GO] NewDecoder h264decoder available:"), new $Bool(h264decoder.IsAvailable())])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192197
- _r$1 = videostream.Get().IsAvailable(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192198
- /* */ if (_r$1) { $s = 6; continue; }
192199
- /* */ if (nacldecoder.IsAvailable()) { $s = 7; continue; }
192200
- /* */ if (webcodecs.IsAvailable()) { $s = 8; continue; }
192201
- /* */ if (h264decoder.IsAvailable()) { $s = 9; continue; }
192202
- /* */ $s = 10; continue;
192203
- /* if (_r$1) { */ case 6:
192204
- $r = log.Println(new sliceType([new $String("ASDF[GO] NewDecoder: using videostream")])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192344
+ var {$24r, _r, _r$1, _returncast, _returncast$1, _returncast$2, _returncast$3, _returncast$4, header, $s, $r, $c} = $restore(this, {header});
192345
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192346
+ _r = videostream.Get().IsAvailable(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192347
+ /* */ if (_r) { $s = 1; continue; }
192348
+ /* */ if (nacldecoder.IsAvailable()) { $s = 2; continue; }
192349
+ /* */ if (samsungwasmdecoder.IsAvailable()) { $s = 3; continue; }
192350
+ /* */ if (webcodecs.IsAvailable()) { $s = 4; continue; }
192351
+ /* */ if (h264decoder.IsAvailable()) { $s = 5; continue; }
192352
+ /* */ $s = 6; continue;
192353
+ /* if (_r) { */ case 1:
192205
192354
  _returncast = sosstream.NewDecoder(header);
192206
192355
  $s = -1; return [_returncast[0], _returncast[1]];
192207
- /* } else if (nacldecoder.IsAvailable()) { */ case 7:
192208
- $r = log.Println(new sliceType([new $String("ASDF[GO] NewDecoder: using nacldecoder")])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192356
+ /* } else if (nacldecoder.IsAvailable()) { */ case 2:
192209
192357
  _returncast$1 = nacldecoder.NewDecoder(header);
192210
192358
  $s = -1; return [_returncast$1[0], _returncast$1[1]];
192211
- /* } else if (webcodecs.IsAvailable()) { */ case 8:
192212
- $r = log.Println(new sliceType([new $String("ASDF[GO] NewDecoder: using webcodecs")])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192213
- _returncast$2 = webcodecs.NewDecoder(header);
192359
+ /* } else if (samsungwasmdecoder.IsAvailable()) { */ case 3:
192360
+ _returncast$2 = samsungwasmdecoder.NewDecoder(header);
192214
192361
  $s = -1; return [_returncast$2[0], _returncast$2[1]];
192215
- /* } else if (h264decoder.IsAvailable()) { */ case 9:
192216
- $r = log.Println(new sliceType([new $String("ASDF[GO] NewDecoder: using h264decoder")])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192217
- _returncast$3 = h264decoder.NewDecoder(header);
192362
+ /* } else if (webcodecs.IsAvailable()) { */ case 4:
192363
+ _returncast$3 = webcodecs.NewDecoder(header);
192218
192364
  $s = -1; return [_returncast$3[0], _returncast$3[1]];
192219
- /* } else { */ case 10:
192220
- $r = log.Println(new sliceType([new $String("ASDF[GO] NewDecoder: error Not available any decoder adapter in JS")])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192221
- _r$2 = errs.Errorf("Not available any decoder adapter in JS", sliceType.nil); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192222
- $24r = [$ifaceNil, _r$2];
192223
- $s = 19; case 19: return $24r;
192224
- /* } */ case 11:
192365
+ /* } else if (h264decoder.IsAvailable()) { */ case 5:
192366
+ _returncast$4 = h264decoder.NewDecoder(header);
192367
+ $s = -1; return [_returncast$4[0], _returncast$4[1]];
192368
+ /* } else { */ case 6:
192369
+ _r$1 = errs.Errorf("Not available any decoder adapter in JS", sliceType.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192370
+ $24r = [$ifaceNil, _r$1];
192371
+ $s = 10; case 10: return $24r;
192372
+ /* } */ case 7:
192225
192373
  $s = -1; return [$ifaceNil, $ifaceNil];
192226
- /* */ } return; } var $f = {$blk: NewDecoder, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _returncast, _returncast$1, _returncast$2, _returncast$3, header, $s};return $f;
192374
+ /* */ } return; } var $f = {$blk: NewDecoder, $c: true, $r, $24r, _r, _r$1, _returncast, _returncast$1, _returncast$2, _returncast$3, _returncast$4, header, $s};return $f;
192227
192375
  };
192228
192376
  $pkg.NewDecoder = NewDecoder;
192229
192377
  Decoder.init([{prop: "NextOutput", name: "NextOutput", pkg: "", typ: $funcType([general.OutputBuffer], [$error], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([general.OutputBuffer], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$error], false)}]);
@@ -192233,11 +192381,11 @@ $packages["github.com/supraio/client-daemon/pkg/decoder"] = (function() {
192233
192381
  $r = general.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192234
192382
  $r = h264decoder.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192235
192383
  $r = nacldecoder.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192236
- $r = sosstream.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192237
- $r = webcodecs.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192238
- $r = errs.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192239
- $r = videostream.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192240
- $r = log.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192384
+ $r = samsungwasmdecoder.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192385
+ $r = sosstream.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192386
+ $r = webcodecs.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192387
+ $r = errs.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192388
+ $r = videostream.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192241
192389
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
192242
192390
  };
192243
192391
  $pkg.$init = $init;
@@ -192418,11 +192566,12 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192418
192566
  this.groups = groups_;
192419
192567
  });
192420
192568
  Frame = $pkg.Frame = $newType(8, $kindInterface, "stats.Frame", true, "github.com/supraio/client-daemon/pkg/stats", true, null);
192421
- Stats = $pkg.Stats = $newType(0, $kindStruct, "stats.Stats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(stopped_, lastFrameAt_, stopwatch_, metrics_, latency_, serverTimestampAhead_, serverTimestampAheadBuffer_, currentFramesCount_, lastFrameRate_, totalFramesCount_, lastFramesLatencyAverage_, lastFramesLatencyVariance_, longTermFramesLatencyAverage_, longTermFramesLatencyVariance_, lastFramesCollectionAverage_, lastFramesCollectionVariance_, longTermFramesCollectionAverage_, longTermFramesCollectionVariance_, currentThrottledCollectionFramesCount_, lastThrottledCollectionFrameRate_, lastFramesDecodeWriteAverage_, lastFramesDecodeOutputAverage_, lastFramesDecodeWriteVariance_, lastFramesDecodeOutputVariance_, longTermFramesDecodeWriteAverage_, longTermFramesDecodeOutputAverage_, longTermFramesDecodeWriteVariance_, longTermFramesDecodeOutputVariance_, currentThrottledDecodeFramesCount_, lastThrottledDecodeFrameRate_, lastFramesRenderAverage_, lastFramesRenderVariance_, longTermFramesRenderAverage_, longTermFramesRenderVariance_, currentThrottledRenderFramesCount_, lastThrottledRenderFrameRate_, screenResolutionWidth_, screenResolutionHeight_, lastInteractionAt_) {
192569
+ Stats = $pkg.Stats = $newType(0, $kindStruct, "stats.Stats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(stopped_, lastFrameAt_, lastScreenPingAt_, stopwatch_, metrics_, latency_, serverTimestampAhead_, serverTimestampAheadBuffer_, currentFramesCount_, lastFrameRate_, totalFramesCount_, lastFramesLatencyAverage_, lastFramesLatencyVariance_, longTermFramesLatencyAverage_, longTermFramesLatencyVariance_, lastFramesCollectionAverage_, lastFramesCollectionVariance_, longTermFramesCollectionAverage_, longTermFramesCollectionVariance_, currentThrottledCollectionFramesCount_, lastThrottledCollectionFrameRate_, lastFramesDecodeWriteAverage_, lastFramesDecodeOutputAverage_, lastFramesDecodeWriteVariance_, lastFramesDecodeOutputVariance_, longTermFramesDecodeWriteAverage_, longTermFramesDecodeOutputAverage_, longTermFramesDecodeWriteVariance_, longTermFramesDecodeOutputVariance_, currentThrottledDecodeFramesCount_, lastThrottledDecodeFrameRate_, lastFramesRenderAverage_, lastFramesRenderVariance_, longTermFramesRenderAverage_, longTermFramesRenderVariance_, currentThrottledRenderFramesCount_, lastThrottledRenderFrameRate_, screenResolutionWidth_, screenResolutionHeight_, lastInteractionAt_) {
192422
192570
  this.$val = this;
192423
192571
  if (arguments.length === 0) {
192424
192572
  this.stopped = false;
192425
192573
  this.lastFrameAt = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
192574
+ this.lastScreenPingAt = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
192426
192575
  this.stopwatch = ptrType$1.nil;
192427
192576
  this.metrics = ptrType$2.nil;
192428
192577
  this.latency = new time.Duration(0, 0);
@@ -192464,6 +192613,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192464
192613
  }
192465
192614
  this.stopped = stopped_;
192466
192615
  this.lastFrameAt = lastFrameAt_;
192616
+ this.lastScreenPingAt = lastScreenPingAt_;
192467
192617
  this.stopwatch = stopwatch_;
192468
192618
  this.metrics = metrics_;
192469
192619
  this.latency = latency_;
@@ -192632,14 +192782,15 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192632
192782
  };
192633
192783
  Stopwatch.prototype.Stop = function(group) { return this.$val.Stop(group); };
192634
192784
  NewStats = function() {
192635
- var {_r, _r$1, s, $s, $r, $c} = $restore(this, {});
192785
+ var {_r, _r$1, _r$2, s, $s, $r, $c} = $restore(this, {});
192636
192786
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192637
192787
  _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192638
192788
  _r$1 = time.Now(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192639
- s = new Stats.ptr(false, $clone(_r, time.Time), NewStopwatch(), NewMetrics(), new time.Duration(0, 0), new time.Duration(0, 0), sliceType$1.nil, 0, 0, 0, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, 0, 0, $clone(_r$1, time.Time));
192789
+ _r$2 = time.Now(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192790
+ s = new Stats.ptr(false, $clone(_r, time.Time), $clone(_r$1, time.Time), NewStopwatch(), NewMetrics(), new time.Duration(0, 0), new time.Duration(0, 0), sliceType$1.nil, 0, 0, 0, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, 0, 0, $clone(_r$2, time.Time));
192640
192791
  $go($methodVal(s, "startCalculations"), []);
192641
192792
  $s = -1; return s;
192642
- /* */ } return; } var $f = {$blk: NewStats, $c: true, $r, _r, _r$1, s, $s};return $f;
192793
+ /* */ } return; } var $f = {$blk: NewStats, $c: true, $r, _r, _r$1, _r$2, s, $s};return $f;
192643
192794
  };
192644
192795
  $pkg.NewStats = NewStats;
192645
192796
  Stats.ptr.prototype.GetClientStats = function() {
@@ -192697,6 +192848,16 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192697
192848
  /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrame, $c: true, $r, _r, _r$1, _r$2, _r$3, frame, frameLatency, s, $s};return $f;
192698
192849
  };
192699
192850
  Stats.prototype.NotifyFrame = function(frame) { return this.$val.NotifyFrame(frame); };
192851
+ Stats.ptr.prototype.NotifyScreenPing = function() {
192852
+ var {_r, s, $s, $r, $c} = $restore(this, {});
192853
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192854
+ s = this;
192855
+ _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192856
+ time.Time.copy(s.lastScreenPingAt, _r);
192857
+ $s = -1; return;
192858
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyScreenPing, $c: true, $r, _r, s, $s};return $f;
192859
+ };
192860
+ Stats.prototype.NotifyScreenPing = function() { return this.$val.NotifyScreenPing(); };
192700
192861
  Stats.ptr.prototype.NotifyFrameCollectionStarted = function() {
192701
192862
  var {s, $s, $r, $c} = $restore(this, {});
192702
192863
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -192707,17 +192868,15 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192707
192868
  };
192708
192869
  Stats.prototype.NotifyFrameCollectionStarted = function() { return this.$val.NotifyFrameCollectionStarted(); };
192709
192870
  Stats.ptr.prototype.NotifyFrameCollectionEnded = function() {
192710
- var {_arg, _arg$1, _r, _r$1, s, $s, $r, $c} = $restore(this, {});
192871
+ var {_r, dur, s, $s, $r, $c} = $restore(this, {});
192711
192872
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192712
192873
  s = this;
192713
192874
  _r = s.stopwatch.Stop("frame_collection"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192714
- _arg = _r;
192715
- $r = s.metrics.AddSample("frame_collection", new sliceType$1([_arg])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192716
- _r$1 = s.stopwatch.Stop("frame_collection"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192717
- _arg$1 = _r$1;
192718
- $r = s.metrics.AddSample("frame_collection_long_term", new sliceType$1([_arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192875
+ dur = _r;
192876
+ $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; }
192877
+ $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; }
192719
192878
  $s = -1; return;
192720
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrameCollectionEnded, $c: true, $r, _arg, _arg$1, _r, _r$1, s, $s};return $f;
192879
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrameCollectionEnded, $c: true, $r, _r, dur, s, $s};return $f;
192721
192880
  };
192722
192881
  Stats.prototype.NotifyFrameCollectionEnded = function() { return this.$val.NotifyFrameCollectionEnded(); };
192723
192882
  Stats.ptr.prototype.NotifyThrottledCollectionFrame = function() {
@@ -192807,6 +192966,23 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192807
192966
  return s.lastFrameAt;
192808
192967
  };
192809
192968
  Stats.prototype.GetLastFrameAt = function() { return this.$val.GetLastFrameAt(); };
192969
+ Stats.ptr.prototype.GetLastScreenPingAt = function() {
192970
+ var s;
192971
+ s = this;
192972
+ return s.lastScreenPingAt;
192973
+ };
192974
+ Stats.prototype.GetLastScreenPingAt = function() { return this.$val.GetLastScreenPingAt(); };
192975
+ Stats.ptr.prototype.GetLastScreenImpulseAt = function() {
192976
+ var lastFrameAt, lastScreenPingAt, s;
192977
+ s = this;
192978
+ lastScreenPingAt = $clone(s.GetLastScreenPingAt(), time.Time);
192979
+ lastFrameAt = $clone(s.GetLastFrameAt(), time.Time);
192980
+ if ($clone(lastScreenPingAt, time.Time).After($clone(lastFrameAt, time.Time))) {
192981
+ return lastScreenPingAt;
192982
+ }
192983
+ return lastFrameAt;
192984
+ };
192985
+ Stats.prototype.GetLastScreenImpulseAt = function() { return this.$val.GetLastScreenImpulseAt(); };
192810
192986
  Stats.ptr.prototype.GetFrameRate = function() {
192811
192987
  var s;
192812
192988
  s = this;
@@ -192878,13 +193054,23 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192878
193054
  s.longTermFramesRenderAverage = _r$18;
192879
193055
  _r$19 = s.metrics.GetVariance("frame_render_long_term"); /* */ $s = 32; case 32: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
192880
193056
  s.longTermFramesRenderVariance = _r$19;
192881
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193057
+ $r = s.print(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193058
+ $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192882
193059
  $s = 1; continue;
192883
193060
  case 2:
192884
193061
  $s = -1; return;
192885
193062
  /* */ } return; } var $f = {$blk: Stats.ptr.prototype.startCalculations, $c: true, $r, _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, s, $s};return $f;
192886
193063
  };
192887
193064
  Stats.prototype.startCalculations = function() { return this.$val.startCalculations(); };
193065
+ Stats.ptr.prototype.print = function() {
193066
+ var {s, $s, $r, $c} = $restore(this, {});
193067
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193068
+ s = this;
193069
+ $r = log.Printf("fr:%d, THR: col:%d, dec:%d, ren:%d | del:\xE2\x8C\x80%dms, srv:\xE2\x8C\x80%dms | ST: lat:\xE2\x8C\x80%dms/\xC2\xB1%dms, col:\xE2\x8C\x80%dms/\xC2\xB1%dms, dec-wrt:\xE2\x8C\x80%dms/\xC2\xB1%dms dec-out:\xE2\x8C\x80%dms/\xC2\xB1%dms, ren:\xE2\x8C\x80%dms/\xC2\xB1%dms | LT:lat:\xE2\x8C\x80%dms/\xC2\xB1%dms, col:\xE2\x8C\x80%dms/\xC2\xB1%dms, dec-wrt:\xE2\x8C\x80%dms/\xC2\xB1%dms dec-out:\xE2\x8C\x80%dms/\xC2\xB1%dms, ren:\xE2\x8C\x80%dms/\xC2\xB1%dms\n", new sliceType([new $Int(s.lastFrameRate), new $Int(s.lastThrottledCollectionFrameRate), new $Int(s.lastThrottledDecodeFrameRate), new $Int(s.lastThrottledRenderFrameRate), s.latency.Milliseconds(), s.serverTimestampAhead.Milliseconds(), s.lastFramesLatencyAverage.Milliseconds(), s.lastFramesLatencyVariance.Milliseconds(), s.lastFramesCollectionAverage.Milliseconds(), s.lastFramesCollectionVariance.Milliseconds(), s.lastFramesDecodeWriteAverage.Milliseconds(), s.lastFramesDecodeWriteVariance.Milliseconds(), s.lastFramesDecodeOutputAverage.Milliseconds(), s.lastFramesDecodeOutputVariance.Milliseconds(), s.lastFramesRenderAverage.Milliseconds(), s.lastFramesRenderVariance.Milliseconds(), s.longTermFramesLatencyAverage.Milliseconds(), s.longTermFramesLatencyVariance.Milliseconds(), s.longTermFramesCollectionAverage.Milliseconds(), s.longTermFramesCollectionVariance.Milliseconds(), s.longTermFramesDecodeWriteAverage.Milliseconds(), s.longTermFramesDecodeWriteVariance.Milliseconds(), s.longTermFramesDecodeOutputAverage.Milliseconds(), s.longTermFramesDecodeOutputVariance.Milliseconds(), s.longTermFramesRenderAverage.Milliseconds(), s.longTermFramesRenderVariance.Milliseconds()])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193070
+ $s = -1; return;
193071
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.print, $c: true, $r, s, $s};return $f;
193072
+ };
193073
+ Stats.prototype.print = function() { return this.$val.print(); };
192888
193074
  Stats.ptr.prototype.GetServerTime = function() {
192889
193075
  var {$24r, _r, _r$1, s, $s, $r, $c} = $restore(this, {});
192890
193076
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -193066,11 +193252,11 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
193066
193252
  return (new time.Duration(0, math.Sqrt(($flatten64($div64(sum, (new time.Duration(0, values.$length)), false))))));
193067
193253
  };
193068
193254
  ptrType$1.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([$String], [time.Duration], false)}];
193069
- 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: "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: "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)}];
193255
+ 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)}];
193070
193256
  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)}];
193071
193257
  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: ""}]);
193072
193258
  Frame.init([{prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}]);
193073
- Stats.init("github.com/supraio/client-daemon/pkg/stats", [{prop: "stopped", name: "stopped", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "lastFrameAt", name: "lastFrameAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "stopwatch", name: "stopwatch", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "metrics", name: "metrics", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "latency", name: "latency", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "serverTimestampAhead", name: "serverTimestampAhead", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "serverTimestampAheadBuffer", name: "serverTimestampAheadBuffer", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "currentFramesCount", name: "currentFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFrameRate", name: "lastFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "totalFramesCount", name: "totalFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFramesLatencyAverage", name: "lastFramesLatencyAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesLatencyVariance", name: "lastFramesLatencyVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesLatencyAverage", name: "longTermFramesLatencyAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesLatencyVariance", name: "longTermFramesLatencyVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesCollectionAverage", name: "lastFramesCollectionAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesCollectionVariance", name: "lastFramesCollectionVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesCollectionAverage", name: "longTermFramesCollectionAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesCollectionVariance", name: "longTermFramesCollectionVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "currentThrottledCollectionFramesCount", name: "currentThrottledCollectionFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastThrottledCollectionFrameRate", name: "lastThrottledCollectionFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFramesDecodeWriteAverage", name: "lastFramesDecodeWriteAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesDecodeOutputAverage", name: "lastFramesDecodeOutputAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesDecodeWriteVariance", name: "lastFramesDecodeWriteVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesDecodeOutputVariance", name: "lastFramesDecodeOutputVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeWriteAverage", name: "longTermFramesDecodeWriteAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeOutputAverage", name: "longTermFramesDecodeOutputAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeWriteVariance", name: "longTermFramesDecodeWriteVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeOutputVariance", name: "longTermFramesDecodeOutputVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "currentThrottledDecodeFramesCount", name: "currentThrottledDecodeFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastThrottledDecodeFrameRate", name: "lastThrottledDecodeFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFramesRenderAverage", name: "lastFramesRenderAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesRenderVariance", name: "lastFramesRenderVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesRenderAverage", name: "longTermFramesRenderAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesRenderVariance", name: "longTermFramesRenderVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "currentThrottledRenderFramesCount", name: "currentThrottledRenderFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastThrottledRenderFrameRate", name: "lastThrottledRenderFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "screenResolutionWidth", name: "screenResolutionWidth", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "screenResolutionHeight", name: "screenResolutionHeight", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "lastInteractionAt", name: "lastInteractionAt", embedded: false, exported: false, typ: time.Time, tag: ""}]);
193259
+ Stats.init("github.com/supraio/client-daemon/pkg/stats", [{prop: "stopped", name: "stopped", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "lastFrameAt", name: "lastFrameAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "lastScreenPingAt", name: "lastScreenPingAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "stopwatch", name: "stopwatch", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "metrics", name: "metrics", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "latency", name: "latency", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "serverTimestampAhead", name: "serverTimestampAhead", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "serverTimestampAheadBuffer", name: "serverTimestampAheadBuffer", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "currentFramesCount", name: "currentFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFrameRate", name: "lastFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "totalFramesCount", name: "totalFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFramesLatencyAverage", name: "lastFramesLatencyAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesLatencyVariance", name: "lastFramesLatencyVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesLatencyAverage", name: "longTermFramesLatencyAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesLatencyVariance", name: "longTermFramesLatencyVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesCollectionAverage", name: "lastFramesCollectionAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesCollectionVariance", name: "lastFramesCollectionVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesCollectionAverage", name: "longTermFramesCollectionAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesCollectionVariance", name: "longTermFramesCollectionVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "currentThrottledCollectionFramesCount", name: "currentThrottledCollectionFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastThrottledCollectionFrameRate", name: "lastThrottledCollectionFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFramesDecodeWriteAverage", name: "lastFramesDecodeWriteAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesDecodeOutputAverage", name: "lastFramesDecodeOutputAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesDecodeWriteVariance", name: "lastFramesDecodeWriteVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesDecodeOutputVariance", name: "lastFramesDecodeOutputVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeWriteAverage", name: "longTermFramesDecodeWriteAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeOutputAverage", name: "longTermFramesDecodeOutputAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeWriteVariance", name: "longTermFramesDecodeWriteVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeOutputVariance", name: "longTermFramesDecodeOutputVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "currentThrottledDecodeFramesCount", name: "currentThrottledDecodeFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastThrottledDecodeFrameRate", name: "lastThrottledDecodeFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFramesRenderAverage", name: "lastFramesRenderAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesRenderVariance", name: "lastFramesRenderVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesRenderAverage", name: "longTermFramesRenderAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesRenderVariance", name: "longTermFramesRenderVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "currentThrottledRenderFramesCount", name: "currentThrottledRenderFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastThrottledRenderFrameRate", name: "lastThrottledRenderFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "screenResolutionWidth", name: "screenResolutionWidth", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "screenResolutionHeight", name: "screenResolutionHeight", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "lastInteractionAt", name: "lastInteractionAt", embedded: false, exported: false, typ: time.Time, tag: ""}]);
193074
193260
  Metrics.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$1, tag: ""}]);
193075
193261
  ClientStats.init("", [{prop: "LatencyNano", name: "LatencyNano", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "ServerTimestampAhead", name: "ServerTimestampAhead", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFrameRate", name: "LastFrameRate", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "TotalFramesCount", name: "TotalFramesCount", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "LastFramesLatencyAverage", name: "LastFramesLatencyAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesLatencyVariance", name: "LastFramesLatencyVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesLatencyAverage", name: "LongTermFramesLatencyAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesLatencyVariance", name: "LongTermFramesLatencyVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesCollectionAverage", name: "LastFramesCollectionAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesCollectionVariance", name: "LastFramesCollectionVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesCollectionAverage", name: "LongTermFramesCollectionAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesCollectionVariance", name: "LongTermFramesCollectionVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastThrottledCollectionFrameRate", name: "LastThrottledCollectionFrameRate", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "LastFramesDecodeWriteAverage", name: "LastFramesDecodeWriteAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesDecodeOutputAverage", name: "LastFramesDecodeOutputAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesDecodeWriteVariance", name: "LastFramesDecodeWriteVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesDecodeOutputVariance", name: "LastFramesDecodeOutputVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesDecodeWriteAverage", name: "LongTermFramesDecodeWriteAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesDecodeOutputAverage", name: "LongTermFramesDecodeOutputAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesDecodeWriteVariance", name: "LongTermFramesDecodeWriteVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesDecodeOutputVariance", name: "LongTermFramesDecodeOutputVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastThrottledDecodeFrameRate", name: "LastThrottledDecodeFrameRate", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "LastFramesRenderAverage", name: "LastFramesRenderAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesRenderVariance", name: "LastFramesRenderVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesRenderAverage", name: "LongTermFramesRenderAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesRenderVariance", name: "LongTermFramesRenderVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastThrottledRenderFrameRate", name: "LastThrottledRenderFrameRate", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "ScreenResolutionWidth", name: "ScreenResolutionWidth", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "ScreenResolutionHeight", name: "ScreenResolutionHeight", embedded: false, exported: true, typ: $Uint32, tag: ""}]);
193076
193262
  $init = function() {
@@ -193478,13 +193664,13 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
193478
193664
  };
193479
193665
  $pkg.NewCollectionLoop = NewCollectionLoop;
193480
193666
  CollectionLoop.ptr.prototype.NextFrame = function() {
193481
- var {_r, cl, frame$1, $s, $r, $c} = $restore(this, {});
193667
+ var {_r, cl, collectedFrame, $s, $r, $c} = $restore(this, {});
193482
193668
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193483
193669
  cl = this;
193484
193670
  _r = $recv(cl.framesChan); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193485
- frame$1 = _r[0];
193486
- $s = -1; return [frame$1, $ifaceNil];
193487
- /* */ } return; } var $f = {$blk: CollectionLoop.ptr.prototype.NextFrame, $c: true, $r, _r, cl, frame$1, $s};return $f;
193671
+ collectedFrame = _r[0];
193672
+ $s = -1; return [collectedFrame, $ifaceNil];
193673
+ /* */ } return; } var $f = {$blk: CollectionLoop.ptr.prototype.NextFrame, $c: true, $r, _r, cl, collectedFrame, $s};return $f;
193488
193674
  };
193489
193675
  CollectionLoop.prototype.NextFrame = function() { return this.$val.NextFrame(); };
193490
193676
  CollectionLoop.ptr.prototype.Start = function() {
@@ -193495,13 +193681,13 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
193495
193681
  }
193496
193682
  cl.started = true;
193497
193683
  $go((function $b() {
193498
- var {_r, _tuple, err, frame$1, $s, $r, $c} = $restore(this, {});
193684
+ var {_1, _r, _tuple, collectedFrame, err, $s, $r, $c} = $restore(this, {});
193499
193685
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193500
193686
  /* while (true) { */ case 1:
193501
193687
  /* if (!(cl.started)) { break; } */ if(!(cl.started)) { $s = 2; continue; }
193502
193688
  _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; }
193503
193689
  _tuple = _r;
193504
- frame$1 = _tuple[0];
193690
+ collectedFrame = _tuple[0];
193505
193691
  err = _tuple[1];
193506
193692
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
193507
193693
  /* */ $s = 5; continue;
@@ -193517,7 +193703,17 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
193517
193703
  /* */ if (cl.framesChan.$buffer.length < 50) { $s = 10; continue; }
193518
193704
  /* */ $s = 11; continue;
193519
193705
  /* if (cl.framesChan.$buffer.length < 50) { */ case 10:
193520
- $r = $send(cl.framesChan, frame$1); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193706
+ _1 = collectedFrame.FrameType();
193707
+ /* */ if (_1 === (1)) { $s = 14; continue; }
193708
+ /* */ if (_1 === (255)) { $s = 15; continue; }
193709
+ /* */ $s = 16; continue;
193710
+ /* if (_1 === (1)) { */ case 14:
193711
+ $r = $send(cl.framesChan, collectedFrame); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193712
+ $s = 16; continue;
193713
+ /* } else if (_1 === (255)) { */ case 15:
193714
+ $r = cl.stats.NotifyScreenPing(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193715
+ /* } */ case 16:
193716
+ case 13:
193521
193717
  $s = 12; continue;
193522
193718
  /* } else { */ case 11:
193523
193719
  cl.stats.NotifyThrottledCollectionFrame();
@@ -193525,7 +193721,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
193525
193721
  $s = 1; continue;
193526
193722
  case 2:
193527
193723
  $s = -1; return;
193528
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _tuple, err, frame$1, $s};return $f;
193724
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _1, _r, _tuple, collectedFrame, err, $s};return $f;
193529
193725
  }), []);
193530
193726
  };
193531
193727
  CollectionLoop.prototype.Start = function() { return this.$val.Start(); };
@@ -193562,15 +193758,14 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
193562
193758
  return $pkg;
193563
193759
  })();
193564
193760
  $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (function() {
193565
- var $pkg = {}, $init, errs, dom, screen, f64, image, color, draw, log, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, newWindow, newScreenImpl, Main, main, newBuffer;
193761
+ var $pkg = {}, $init, errs, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, ptrType$2, funcType, arrayType, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, newWindow, newScreenImpl, Main, main, newBuffer;
193566
193762
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
193567
- dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
193763
+ dom = $packages["github.com/supraio/client-daemon/pkg/shiny/driver/util/dom"];
193568
193764
  screen = $packages["golang.org/x/exp/shiny/screen"];
193569
193765
  f64 = $packages["golang.org/x/image/math/f64"];
193570
193766
  image = $packages["image"];
193571
193767
  color = $packages["image/color"];
193572
193768
  draw = $packages["image/draw"];
193573
- log = $packages["log"];
193574
193769
  sync = $packages["sync"];
193575
193770
  js = $packages["syscall/js"];
193576
193771
  windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "overlaydriver.windowImpl", true, "github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver", false, function(screen_, mutex_, renderingInProgress_, domEvents_, released_) {
@@ -193704,15 +193899,11 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193704
193899
  };
193705
193900
  windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
193706
193901
  windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
193707
- var {dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
193708
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193902
+ var dp, sr, src, w;
193709
193903
  w = this;
193710
- $r = log.Println(new sliceType([new $String("ASDF[GO] Overlaydriver Window.UploadYCbCr does nothing")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193711
193904
  if (w.released) {
193712
- $s = -1; return;
193905
+ return;
193713
193906
  }
193714
- $s = -1; return;
193715
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, dp, sr, src, w, $s};return $f;
193716
193907
  };
193717
193908
  windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
193718
193909
  windowImpl.ptr.prototype.Fill = function(dr, src, op) {
@@ -193874,9 +194065,8 @@ $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"] = (
193874
194065
  $r = image.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193875
194066
  $r = color.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193876
194067
  $r = draw.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193877
- $r = log.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193878
- $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193879
- $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194068
+ $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194069
+ $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193880
194070
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
193881
194071
  };
193882
194072
  $pkg.$init = $init;
@@ -194060,7 +194250,7 @@ $packages["golang.org/x/mobile/event/lifecycle"] = (function() {
194060
194250
  return $pkg;
194061
194251
  })();
194062
194252
  $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194063
- var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, nacldecoder, nacldriver, webcodecs, errs, helper, input, message, netclient, netpacket, netstream, netframe, player, canvasdriver, overlaydriver, webgldriver, stats, videostream, window, screen, focus, key, lifecycle, mouse, size, image, io, ioutil, log, os, path, strings, sync, js, time, ScreenWindow, ProcessInfo, ProcessInfoManager, ptrType, ptrType$1, funcType, sliceType, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, sliceType$1, sliceType$2, structType, sliceType$3, funcType$1, ptrType$10, ptrType$11, chanType, chanType$1, chanType$2, chanType$3, chanType$4, NewScreenWindow, MainDriver, NewProcessInfoManager;
194253
+ var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, nacldecoder, nacldriver, samsungwasmdecoder, webcodecs, errs, helper, input, message, netclient, netpacket, netstream, netframe, player, overlaydriver, stats, videostream, window, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, touch, image, io, ioutil, log, os, path, strings, sync, js, time, ScreenWindow, ProcessInfo, ProcessInfoManager, sliceType, ptrType, ptrType$1, funcType, sliceType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, sliceType$2, structType, sliceType$3, sliceType$4, funcType$1, ptrType$11, ptrType$12, chanType, chanType$1, chanType$2, chanType$3, chanType$4, chanType$5, RegisterVideoStream, UnregisterVideoStream, NewScreenWindow, MainDriver, NewProcessInfoManager;
194064
194254
  binary = $packages["encoding/binary"];
194065
194255
  json = $packages["encoding/json"];
194066
194256
  query = $packages["github.com/google/go-querystring/query"];
@@ -194068,6 +194258,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194068
194258
  clipboard = $packages["github.com/supraio/client-daemon/pkg/clipboard"];
194069
194259
  nacldecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"];
194070
194260
  nacldriver = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"];
194261
+ samsungwasmdecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/samsungwasmdecoder"];
194071
194262
  webcodecs = $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"];
194072
194263
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
194073
194264
  helper = $packages["github.com/supraio/client-daemon/pkg/helper"];
@@ -194078,18 +194269,19 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194078
194269
  netstream = $packages["github.com/supraio/client-daemon/pkg/netstream"];
194079
194270
  netframe = $packages["github.com/supraio/client-daemon/pkg/render/netframe"];
194080
194271
  player = $packages["github.com/supraio/client-daemon/pkg/render/player"];
194081
- canvasdriver = $packages["github.com/supraio/client-daemon/pkg/shiny/driver/canvasdriver"];
194082
194272
  overlaydriver = $packages["github.com/supraio/client-daemon/pkg/shiny/driver/overlaydriver"];
194083
- webgldriver = $packages["github.com/supraio/client-daemon/pkg/shiny/driver/webgldriver"];
194084
194273
  stats = $packages["github.com/supraio/client-daemon/pkg/stats"];
194085
194274
  videostream = $packages["github.com/supraio/client-daemon/pkg/videostream"];
194086
194275
  window = $packages["github.com/supraio/client-daemon/pkg/window"];
194276
+ canvasdriver = $packages["golang.org/x/exp/shiny/driver/canvasdriver"];
194277
+ webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
194087
194278
  screen = $packages["golang.org/x/exp/shiny/screen"];
194088
194279
  focus = $packages["golang.org/x/mobile/event/focus"];
194089
194280
  key = $packages["golang.org/x/mobile/event/key"];
194090
194281
  lifecycle = $packages["golang.org/x/mobile/event/lifecycle"];
194091
194282
  mouse = $packages["golang.org/x/mobile/event/mouse"];
194092
194283
  size = $packages["golang.org/x/mobile/event/size"];
194284
+ touch = $packages["golang.org/x/mobile/event/touch"];
194093
194285
  image = $packages["image"];
194094
194286
  io = $packages["io"];
194095
194287
  ioutil = $packages["io/ioutil"];
@@ -194100,7 +194292,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194100
194292
  sync = $packages["sync"];
194101
194293
  js = $packages["syscall/js"];
194102
194294
  time = $packages["time"];
194103
- 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_, screenSize_, timeoutDuration_, closed_, stats_, onClose_, window_, screen_, screenConn_, metadataServer_, collectionLoop_, decoderLoop_, renderingLoop_, sizeHandler_, keyHandler_, mouseHandler_, pinger_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, winCloseChannel_) {
194295
+ 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_, screenSize_, timeoutDuration_, closed_, stats_, onClose_, window_, screen_, screenConn_, metadataServer_, collectionLoop_, decoderLoop_, renderingLoop_, sizeHandler_, touchHandler_, keyHandler_, mouseHandler_, pinger_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, touchEventChan_, winCloseChannel_) {
194104
194296
  this.$val = this;
194105
194297
  if (arguments.length === 0) {
194106
194298
  this.processInfoManager = ptrType.nil;
@@ -194116,7 +194308,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194116
194308
  this.timeoutDuration = new time.Duration(0, 0);
194117
194309
  this.closed = false;
194118
194310
  this.stats = ptrType$1.nil;
194119
- this.onClose = sliceType.nil;
194311
+ this.onClose = sliceType$1.nil;
194120
194312
  this.window = $ifaceNil;
194121
194313
  this.screen = $ifaceNil;
194122
194314
  this.screenConn = $ifaceNil;
@@ -194125,13 +194317,15 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194125
194317
  this.decoderLoop = ptrType$4.nil;
194126
194318
  this.renderingLoop = ptrType$5.nil;
194127
194319
  this.sizeHandler = ptrType$6.nil;
194128
- this.keyHandler = ptrType$7.nil;
194129
- this.mouseHandler = ptrType$8.nil;
194130
- this.pinger = ptrType$9.nil;
194320
+ this.touchHandler = ptrType$7.nil;
194321
+ this.keyHandler = ptrType$8.nil;
194322
+ this.mouseHandler = ptrType$9.nil;
194323
+ this.pinger = ptrType$10.nil;
194131
194324
  this.keyEventChan = $chanNil;
194132
194325
  this.mouseEventChan = $chanNil;
194133
194326
  this.sizeEventChan = $chanNil;
194134
194327
  this.focusEventChan = $chanNil;
194328
+ this.touchEventChan = $chanNil;
194135
194329
  this.winCloseChannel = $chanNil;
194136
194330
  return;
194137
194331
  }
@@ -194157,6 +194351,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194157
194351
  this.decoderLoop = decoderLoop_;
194158
194352
  this.renderingLoop = renderingLoop_;
194159
194353
  this.sizeHandler = sizeHandler_;
194354
+ this.touchHandler = touchHandler_;
194160
194355
  this.keyHandler = keyHandler_;
194161
194356
  this.mouseHandler = mouseHandler_;
194162
194357
  this.pinger = pinger_;
@@ -194164,6 +194359,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194164
194359
  this.mouseEventChan = mouseEventChan_;
194165
194360
  this.sizeEventChan = sizeEventChan_;
194166
194361
  this.focusEventChan = focusEventChan_;
194362
+ this.touchEventChan = touchEventChan_;
194167
194363
  this.winCloseChannel = winCloseChannel_;
194168
194364
  });
194169
194365
  ProcessInfo = $pkg.ProcessInfo = $newType(0, $kindStruct, "render.ProcessInfo", true, "github.com/supraio/client-daemon/pkg/render", true, function(ScreenID_, Pid_) {
@@ -194186,35 +194382,96 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194186
194382
  this.username = username_;
194187
194383
  this.processDir = processDir_;
194188
194384
  });
194385
+ sliceType = $sliceType($Uint8);
194189
194386
  ptrType = $ptrType(ProcessInfoManager);
194190
194387
  ptrType$1 = $ptrType(stats.Stats);
194191
194388
  funcType = $funcType([], [], false);
194192
- sliceType = $sliceType(funcType);
194389
+ sliceType$1 = $sliceType(funcType);
194193
194390
  ptrType$2 = $ptrType(netclient.MetadataServer);
194194
194391
  ptrType$3 = $ptrType(player.CollectionLoop);
194195
194392
  ptrType$4 = $ptrType(player.DecoderLoop);
194196
194393
  ptrType$5 = $ptrType(player.RenderingLoop);
194197
194394
  ptrType$6 = $ptrType(window.SizeHandler);
194198
- ptrType$7 = $ptrType(input.KeyHandler);
194199
- ptrType$8 = $ptrType(input.MouseHandler);
194200
- ptrType$9 = $ptrType(netclient.Pinger);
194201
- sliceType$1 = $sliceType($emptyInterface);
194202
- sliceType$2 = $sliceType($Uint8);
194395
+ ptrType$7 = $ptrType(input.TouchHandler);
194396
+ ptrType$8 = $ptrType(input.KeyHandler);
194397
+ ptrType$9 = $ptrType(input.MouseHandler);
194398
+ ptrType$10 = $ptrType(netclient.Pinger);
194399
+ sliceType$2 = $sliceType($emptyInterface);
194203
194400
  structType = $structType("", []);
194204
- sliceType$3 = $sliceType($String);
194401
+ sliceType$3 = $sliceType($error);
194402
+ sliceType$4 = $sliceType($String);
194205
194403
  funcType$1 = $funcType([], [$error], false);
194206
- ptrType$10 = $ptrType(netclient.MetadataResponsiveSender);
194207
- ptrType$11 = $ptrType(ScreenWindow);
194404
+ ptrType$11 = $ptrType(netclient.MetadataResponsiveSender);
194405
+ ptrType$12 = $ptrType(ScreenWindow);
194208
194406
  chanType = $chanType(key.Event, false, false);
194209
194407
  chanType$1 = $chanType(mouse.Event, false, false);
194210
194408
  chanType$2 = $chanType(size.Event, false, false);
194211
194409
  chanType$3 = $chanType(focus.Event, false, false);
194212
- chanType$4 = $chanType($emptyInterface, false, false);
194410
+ chanType$4 = $chanType(touch.Event, false, false);
194411
+ chanType$5 = $chanType($emptyInterface, false, false);
194412
+ RegisterVideoStream = function(sender) {
194413
+ var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, data, err, sender, streamHostname, videoStreamer, $s, $r, $c} = $restore(this, {sender});
194414
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194415
+ videoStreamer = videostream.Get();
194416
+ _r = videoStreamer.IsAvailable(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194417
+ /* */ if (_r) { $s = 1; continue; }
194418
+ /* */ $s = 2; continue;
194419
+ /* if (_r) { */ case 1:
194420
+ data = $makeSlice(sliceType, 3);
194421
+ _r$1 = videoStreamer.GetProtocol(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194422
+ (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0] = ((_r$1 << 24 >>> 24)));
194423
+ _arg = $subslice(data, 1);
194424
+ _r$2 = videoStreamer.GetPort(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
194425
+ _arg$1 = (_r$2);
194426
+ $r = $clone(binary.BigEndian, binary.bigEndian).PutUint16(_arg, _arg$1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194427
+ _r$3 = videoStreamer.GetHostname(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
194428
+ streamHostname = _r$3;
194429
+ if (!(streamHostname === "")) {
194430
+ data = $appendSlice(data, (new sliceType($stringToBytes(streamHostname))));
194431
+ }
194432
+ _r$4 = sender.Send(5, data); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
194433
+ err = _r$4;
194434
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
194435
+ $s = -1; return err;
194436
+ }
194437
+ _r$5 = videoStreamer.Play(); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
194438
+ err = _r$5;
194439
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
194440
+ $s = -1; return err;
194441
+ }
194442
+ /* } */ case 2:
194443
+ $s = -1; return $ifaceNil;
194444
+ /* */ } return; } var $f = {$blk: RegisterVideoStream, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, data, err, sender, streamHostname, videoStreamer, $s};return $f;
194445
+ };
194446
+ $pkg.RegisterVideoStream = RegisterVideoStream;
194447
+ UnregisterVideoStream = function(sender) {
194448
+ var {_r, _r$1, _r$2, err, sender, videoStreamer, $s, $r, $c} = $restore(this, {sender});
194449
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194450
+ videoStreamer = videostream.Get();
194451
+ _r = videoStreamer.IsAvailable(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194452
+ /* */ if (_r) { $s = 1; continue; }
194453
+ /* */ $s = 2; continue;
194454
+ /* if (_r) { */ case 1:
194455
+ _r$1 = videoStreamer.Stop(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194456
+ err = _r$1;
194457
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
194458
+ $s = -1; return err;
194459
+ }
194460
+ _r$2 = sender.Send(6, new sliceType([])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
194461
+ err = _r$2;
194462
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
194463
+ $s = -1; return err;
194464
+ }
194465
+ /* } */ case 2:
194466
+ $s = -1; return $ifaceNil;
194467
+ /* */ } return; } var $f = {$blk: UnregisterVideoStream, $c: true, $r, _r, _r$1, _r$2, err, sender, videoStreamer, $s};return $f;
194468
+ };
194469
+ $pkg.UnregisterVideoStream = UnregisterVideoStream;
194213
194470
  NewScreenWindow = function(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, screenSize, timeoutDuration) {
194214
194471
  var {$24r, _r, clientID, clientSecret, metadataDriver, metadataHost, processInfoManager, screenDriver, screenHost, screenID, screenSize, secure, timeoutDuration, $s, $r, $c} = $restore(this, {processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, screenSize, timeoutDuration});
194215
194472
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194216
194473
  _r = stats.NewStats(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194217
- $24r = new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, $clone(screenSize, image.Point), timeoutDuration, true, _r, sliceType.nil, $ifaceNil, $ifaceNil, $ifaceNil, ptrType$2.nil, ptrType$3.nil, ptrType$4.nil, ptrType$5.nil, ptrType$6.nil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, new $Chan(key.Event, 50), new $Chan(mouse.Event, 50), new $Chan(size.Event, 50), new $Chan(focus.Event, 50), new $Chan($emptyInterface, 0));
194474
+ $24r = new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, $clone(screenSize, image.Point), timeoutDuration, true, _r, sliceType$1.nil, $ifaceNil, $ifaceNil, $ifaceNil, ptrType$2.nil, ptrType$3.nil, ptrType$4.nil, ptrType$5.nil, ptrType$6.nil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, ptrType$10.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));
194218
194475
  $s = 2; case 2: return $24r;
194219
194476
  /* */ } return; } var $f = {$blk: NewScreenWindow, $c: true, $r, $24r, _r, clientID, clientSecret, metadataDriver, metadataHost, processInfoManager, screenDriver, screenHost, screenID, screenSize, secure, timeoutDuration, $s};return $f;
194220
194477
  };
@@ -194226,7 +194483,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194226
194483
  /* */ if (!w.closed) { $s = 1; continue; }
194227
194484
  /* */ $s = 2; continue;
194228
194485
  /* if (!w.closed) { */ case 1:
194229
- _r = errs.Errorf("Screen window is already started", sliceType$1.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194486
+ _r = errs.Errorf("Screen window is already started", sliceType$2.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194230
194487
  $24r = _r;
194231
194488
  $s = 4; case 4: return $24r;
194232
194489
  /* } */ case 2:
@@ -194257,6 +194514,9 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194257
194514
  if (!($interfaceIsEqual(err, $ifaceNil))) {
194258
194515
  $s = -1; return err;
194259
194516
  }
194517
+ $go($methodVal(w, "startTimestampSyncing"), []);
194518
+ $go($methodVal(w, "startStatsSyncing"), []);
194519
+ $go($methodVal(w, "startScreenHealthChecking"), []);
194260
194520
  $s = -1; return $ifaceNil;
194261
194521
  /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.Start, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, err, w, $s};return $f;
194262
194522
  };
@@ -194269,28 +194529,12 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194269
194529
  $s = -1; return;
194270
194530
  }
194271
194531
  w.closed = true;
194272
- if (!(w.collectionLoop === ptrType$3.nil)) {
194273
- w.collectionLoop.Stop();
194274
- w.collectionLoop = ptrType$3.nil;
194275
- }
194276
- if (!(w.decoderLoop === ptrType$4.nil)) {
194277
- w.decoderLoop.Stop();
194278
- w.decoderLoop = ptrType$4.nil;
194279
- }
194280
- if (!(w.renderingLoop === ptrType$5.nil)) {
194281
- w.renderingLoop.Stop();
194282
- w.renderingLoop = ptrType$5.nil;
194283
- }
194284
- if (!(w.pinger === ptrType$9.nil)) {
194285
- w.pinger.Close();
194286
- w.pinger = ptrType$9.nil;
194287
- }
194288
- _r = w.createScreenSender().Send(3, new sliceType$2([])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194532
+ _r = w.closeScreen(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194289
194533
  err = _r;
194290
194534
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
194291
194535
  /* */ $s = 3; continue;
194292
194536
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
194293
- $r = errs.Print("Cannot close screen stream", err); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194537
+ $r = errs.Print("Cannot close screen", err); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194294
194538
  /* } */ case 3:
194295
194539
  /* */ if (!(w.metadataServer === ptrType$2.nil)) { $s = 5; continue; }
194296
194540
  /* */ $s = 6; continue;
@@ -194411,7 +194655,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194411
194655
  _r = $recv(windowChannel[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194412
194656
  err = _r[0];
194413
194657
  $go((function(w, windowChannel) { return function $b() {
194414
- var {_r$1, _ref, e, e$1, e$2, e$3, e$4, $s, $r, $c} = $restore(this, {});
194658
+ var {_r$1, _ref, e, e$1, e$2, e$3, e$4, e$5, $s, $r, $c} = $restore(this, {});
194415
194659
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194416
194660
  /* while (true) { */ case 1:
194417
194661
  _r$1 = w[0].window.NextEvent(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
@@ -194421,40 +194665,46 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194421
194665
  /* */ if ($assertType(_ref, mouse.Event, true)[1]) { $s = 6; continue; }
194422
194666
  /* */ if ($assertType(_ref, size.Event, true)[1]) { $s = 7; continue; }
194423
194667
  /* */ if ($assertType(_ref, focus.Event, true)[1]) { $s = 8; continue; }
194424
- /* */ $s = 9; continue;
194668
+ /* */ if ($assertType(_ref, touch.Event, true)[1]) { $s = 9; continue; }
194669
+ /* */ $s = 10; continue;
194425
194670
  /* if ($assertType(_ref, lifecycle.Event, true)[1]) { */ case 4:
194426
194671
  e = $clone(_ref.$val, lifecycle.Event);
194427
- /* */ if (e.To === 0) { $s = 10; continue; }
194428
- /* */ $s = 11; continue;
194429
- /* if (e.To === 0) { */ case 10:
194430
- $r = w[0].Close(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194672
+ /* */ if (e.To === 0) { $s = 11; continue; }
194673
+ /* */ $s = 12; continue;
194674
+ /* if (e.To === 0) { */ case 11:
194675
+ $r = w[0].Close(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194431
194676
  $s = -1; return;
194432
- /* } */ case 11:
194433
- $s = 9; continue;
194677
+ /* } */ case 12:
194678
+ $s = 10; continue;
194434
194679
  /* } else if ($assertType(_ref, key.Event, true)[1]) { */ case 5:
194435
194680
  e$1 = $clone(_ref.$val, key.Event);
194436
- $r = $send(w[0].keyEventChan, $clone($clone(e$1, key.Event), key.Event)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194437
- $r = w[0].stats.NotifyInteraction(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194438
- $s = 9; continue;
194681
+ $r = $send(w[0].keyEventChan, $clone($clone(e$1, key.Event), key.Event)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194682
+ $r = w[0].stats.NotifyInteraction(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194683
+ $s = 10; continue;
194439
194684
  /* } else if ($assertType(_ref, mouse.Event, true)[1]) { */ case 6:
194440
194685
  e$2 = $clone(_ref.$val, mouse.Event);
194441
- $r = $send(w[0].mouseEventChan, $clone($clone(e$2, mouse.Event), mouse.Event)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194442
- $r = w[0].stats.NotifyInteraction(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194443
- $s = 9; continue;
194686
+ $r = $send(w[0].mouseEventChan, $clone($clone(e$2, mouse.Event), mouse.Event)); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194687
+ $r = w[0].stats.NotifyInteraction(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194688
+ $s = 10; continue;
194444
194689
  /* } else if ($assertType(_ref, size.Event, true)[1]) { */ case 7:
194445
194690
  e$3 = $clone(_ref.$val, size.Event);
194446
- $r = $send(w[0].sizeEventChan, $clone($clone(e$3, size.Event), size.Event)); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194447
- $r = w[0].stats.NotifyInteraction(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194448
- $s = 9; continue;
194691
+ $r = $send(w[0].sizeEventChan, $clone($clone(e$3, size.Event), size.Event)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194692
+ $r = w[0].stats.NotifyInteraction(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194693
+ $s = 10; continue;
194449
194694
  /* } else if ($assertType(_ref, focus.Event, true)[1]) { */ case 8:
194450
194695
  e$4 = $clone(_ref.$val, focus.Event);
194451
- $r = $send(w[0].focusEventChan, $clone($clone(e$4, focus.Event), focus.Event)); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194452
- $r = w[0].stats.NotifyInteraction(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194453
- /* } */ case 9:
194696
+ $r = $send(w[0].focusEventChan, $clone($clone(e$4, focus.Event), focus.Event)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194697
+ $r = w[0].stats.NotifyInteraction(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194698
+ $s = 10; continue;
194699
+ /* } else if ($assertType(_ref, touch.Event, true)[1]) { */ case 9:
194700
+ e$5 = $clone(_ref.$val, touch.Event);
194701
+ $r = $send(w[0].touchEventChan, $clone($clone(e$5, touch.Event), touch.Event)); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194702
+ $r = w[0].stats.NotifyInteraction(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194703
+ /* } */ case 10:
194454
194704
  $s = 1; continue;
194455
194705
  case 2:
194456
194706
  $s = -1; return;
194457
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, _ref, e, e$1, e$2, e$3, e$4, $s};return $f;
194707
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, _ref, e, e$1, e$2, e$3, e$4, e$5, $s};return $f;
194458
194708
  }; })(w, windowChannel), []);
194459
194709
  $s = -1; return err;
194460
194710
  /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.startWindow, $c: true, $r, _r, err, w, windowChannel, $s};return $f;
@@ -194601,18 +194851,20 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194601
194851
  w[0].mouseHandler.Start();
194602
194852
  w[0].sizeHandler = window.NewSizeHandler(w[0].sizeEventChan, metadataSender);
194603
194853
  w[0].sizeHandler.Start();
194604
- $go($methodVal(w[0], "startTimestampSyncing"), []);
194605
- $go($methodVal(w[0], "startStatsSyncing"), []);
194854
+ w[0].touchHandler = input.NewTouchHandler(w[0].touchEventChan, metadataSender);
194855
+ w[0].touchHandler.Start();
194606
194856
  w[0].metadataServer.OnClose((function(w) { return function $b() {
194607
194857
  var {_r$7, err$1, $s, $r, $c} = $restore(this, {});
194608
194858
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194609
194859
  w[0].metadataServer = ptrType$2.nil;
194610
194860
  w[0].keyHandler.Close();
194611
- w[0].keyHandler = ptrType$7.nil;
194861
+ w[0].keyHandler = ptrType$8.nil;
194612
194862
  w[0].mouseHandler.Close();
194613
- w[0].mouseHandler = ptrType$8.nil;
194863
+ w[0].mouseHandler = ptrType$9.nil;
194614
194864
  w[0].sizeHandler.Close();
194615
194865
  w[0].sizeHandler = ptrType$6.nil;
194866
+ w[0].touchHandler.Close();
194867
+ w[0].touchHandler = ptrType$7.nil;
194616
194868
  _r$7 = w[0].retriableOpen(-1, $methodVal(w[0], "openMetadata")); /* */ $s = 1; case 1: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
194617
194869
  err$1 = _r$7;
194618
194870
  /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; }
@@ -194659,7 +194911,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194659
194911
  /* } */ case 4:
194660
194912
  _r = time.Now(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194661
194913
  latencyStart = $clone(_r, time.Time);
194662
- _r$1 = w.createMetadataResponsiveSender().SendServerWaitResponse(46, new sliceType$2([])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194914
+ _r$1 = w.createMetadataResponsiveSender().SendServerWaitResponse(46, new sliceType([])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194663
194915
  _tuple = _r$1;
194664
194916
  serverTimestampData = _tuple[0];
194665
194917
  err = _tuple[1];
@@ -194744,128 +194996,147 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194744
194996
  return $mul64((new time.Duration(clampedTimeoutMs.$high, clampedTimeoutMs.$low)), new time.Duration(0, 1000000));
194745
194997
  };
194746
194998
  ScreenWindow.prototype.getFrameHealthCheckTimeout = function() { return this.$val.getFrameHealthCheckTimeout(); };
194999
+ ScreenWindow.ptr.prototype.startScreenHealthChecking = function() {
195000
+ var {_r, _r$1, _r$2, _r$3, err, lastImpulseAt, w, $s, $r, $c} = $restore(this, {});
195001
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195002
+ w = this;
195003
+ /* while (true) { */ case 1:
195004
+ /* if (!(!w.closed)) { break; } */ if(!(!w.closed)) { $s = 2; continue; }
195005
+ /* */ if ($interfaceIsEqual(w.screenConn, $ifaceNil)) { $s = 3; continue; }
195006
+ /* */ $s = 4; continue;
195007
+ /* if ($interfaceIsEqual(w.screenConn, $ifaceNil)) { */ case 3:
195008
+ $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195009
+ /* continue; */ $s = 1; continue;
195010
+ /* } */ case 4:
195011
+ lastImpulseAt = $clone(w.stats.GetLastScreenImpulseAt(), time.Time);
195012
+ _r = time.Now(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195013
+ _r$1 = $clone($clone(lastImpulseAt, time.Time).Add(w.getFrameHealthCheckTimeout()), time.Time).Before($clone(_r, time.Time)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195014
+ /* */ if (_r$1) { $s = 6; continue; }
195015
+ /* */ $s = 7; continue;
195016
+ /* if (_r$1) { */ case 6:
195017
+ _r$2 = w.closeScreen(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195018
+ err = _r$2;
195019
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
195020
+ /* */ $s = 12; continue;
195021
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
195022
+ $r = errs.Print("Cannot close screen", err); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195023
+ /* } */ case 12:
195024
+ _r$3 = w.retriableOpen(-1, $methodVal(w, "openScreen")); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
195025
+ err = _r$3;
195026
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
195027
+ /* */ $s = 16; continue;
195028
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
195029
+ $r = errs.Print("Reconnecting screen", err); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195030
+ /* } */ case 16:
195031
+ /* } */ case 7:
195032
+ $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195033
+ $s = 1; continue;
195034
+ case 2:
195035
+ $s = -1; return;
195036
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.startScreenHealthChecking, $c: true, $r, _r, _r$1, _r$2, _r$3, err, lastImpulseAt, w, $s};return $f;
195037
+ };
195038
+ ScreenWindow.prototype.startScreenHealthChecking = function() { return this.$val.startScreenHealthChecking(); };
194747
195039
  ScreenWindow.ptr.prototype.openScreen = function() {
194748
- var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, conn, connect, data, err, frameCollector, maxPacketSize, msgData, screenSender, streamHostname, videoStreamer, w, $s, $r, $c} = $restore(this, {});
195040
+ var {_r, _r$1, _r$2, _r$3, _tuple, _tuple$1, conn, connect, err, frameCollector, maxPacketSize, msgData, screenSender, w, $s, $r, $c} = $restore(this, {});
194749
195041
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194750
- err = [err];
194751
- screenSender = [screenSender];
194752
- w = [w];
194753
- w[0] = this;
194754
- err[0] = $ifaceNil;
194755
- _r = netpacket.Create(w[0].screenDriver); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195042
+ w = this;
195043
+ err = $ifaceNil;
195044
+ _r = netpacket.Create(w.screenDriver); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194756
195045
  _tuple = _r;
194757
195046
  connect = _tuple[0];
194758
- err[0] = _tuple[1];
194759
- if (!($interfaceIsEqual(err[0], $ifaceNil))) {
194760
- $s = -1; return err[0];
195047
+ err = _tuple[1];
195048
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
195049
+ $s = -1; return err;
194761
195050
  }
194762
- _r$1 = connect(w[0].screenHost, new time.Duration(0, 1000000000), w[0].secure); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195051
+ _r$1 = connect(w.screenHost, new time.Duration(0, 1000000000), w.secure); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194763
195052
  _tuple$1 = _r$1;
194764
195053
  conn = _tuple$1[0];
194765
- err[0] = _tuple$1[1];
194766
- if (!($interfaceIsEqual(err[0], $ifaceNil))) {
194767
- $s = -1; return err[0];
195054
+ err = _tuple$1[1];
195055
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
195056
+ $s = -1; return err;
194768
195057
  }
194769
- w[0].screenConn = conn;
194770
- maxPacketSize = netpacket.GetMaxPacketSize(w[0].screenDriver);
195058
+ w.screenConn = conn;
195059
+ maxPacketSize = netpacket.GetMaxPacketSize(w.screenDriver);
194771
195060
  frameCollector = netframe.NewFrameCollector(conn, maxPacketSize);
194772
- w[0].collectionLoop = player.NewCollectionLoop(frameCollector, w[0].stats);
194773
- w[0].collectionLoop.Start();
194774
- w[0].decoderLoop = player.NewDecoderLoop(w[0].collectionLoop, $methodVal(w[0], "createScreenBuffer"), w[0].stats);
194775
- w[0].decoderLoop.Start();
194776
- w[0].renderingLoop = player.NewRenderingLoop(w[0].decoderLoop, w[0].window, w[0].stats);
194777
- w[0].renderingLoop.Start();
194778
- screenSender[0] = w[0].createScreenSender();
194779
- msgData = (new sliceType$2($stringToBytes(w[0].clientID + w[0].clientSecret + w[0].screenID)));
194780
- _r$2 = screenSender[0].Send(1, msgData); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
194781
- err[0] = _r$2;
194782
- if (!($interfaceIsEqual(err[0], $ifaceNil))) {
194783
- $s = -1; return err[0];
195061
+ w.collectionLoop = player.NewCollectionLoop(frameCollector, w.stats);
195062
+ w.collectionLoop.Start();
195063
+ w.decoderLoop = player.NewDecoderLoop(w.collectionLoop, $methodVal(w, "createScreenBuffer"), w.stats);
195064
+ w.decoderLoop.Start();
195065
+ w.renderingLoop = player.NewRenderingLoop(w.decoderLoop, w.window, w.stats);
195066
+ w.renderingLoop.Start();
195067
+ screenSender = w.createScreenSender();
195068
+ msgData = (new sliceType($stringToBytes(w.clientID + w.clientSecret + w.screenID)));
195069
+ _r$2 = screenSender.Send(1, msgData); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195070
+ err = _r$2;
195071
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
195072
+ $s = -1; return err;
195073
+ }
195074
+ w.pinger = netclient.NewPinger(screenSender);
195075
+ w.pinger.Start();
195076
+ _r$3 = RegisterVideoStream(screenSender); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
195077
+ err = _r$3;
195078
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
195079
+ $s = -1; return err;
194784
195080
  }
194785
- w[0].pinger = netclient.NewPinger(screenSender[0]);
194786
- w[0].pinger.Start();
194787
- videoStreamer = videostream.Get();
194788
- _r$3 = videoStreamer.IsAvailable(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
194789
- /* */ if (_r$3) { $s = 4; continue; }
194790
- /* */ $s = 5; continue;
194791
- /* if (_r$3) { */ case 4:
194792
- data = $makeSlice(sliceType$2, 3);
194793
- _r$4 = videoStreamer.GetProtocol(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
194794
- (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0] = ((_r$4 << 24 >>> 24)));
194795
- _arg = $subslice(data, 1);
194796
- _r$5 = videoStreamer.GetPort(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
194797
- _arg$1 = (_r$5);
194798
- $r = $clone(binary.BigEndian, binary.bigEndian).PutUint16(_arg, _arg$1); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194799
- _r$6 = videoStreamer.GetHostname(); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
194800
- streamHostname = _r$6;
194801
- if (!(streamHostname === "")) {
194802
- data = $appendSlice(data, (new sliceType$2($stringToBytes(streamHostname))));
194803
- }
194804
- _r$7 = screenSender[0].Send(5, data); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
194805
- err[0] = _r$7;
194806
- if (!($interfaceIsEqual(err[0], $ifaceNil))) {
194807
- $s = -1; return err[0];
194808
- }
194809
- /* } */ case 5:
194810
- $go((function(err, screenSender, w) { return function $b() {
194811
- var {_r$10, _r$11, _r$12, _r$8, _r$9, err$1, $s, $r, $c} = $restore(this, {});
194812
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194813
- /* while (true) { */ case 1:
194814
- /* if (!(!w[0].closed)) { break; } */ if(!(!w[0].closed)) { $s = 2; continue; }
194815
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194816
- _r$8 = time.Now(); /* */ $s = 6; case 6: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
194817
- _r$9 = $clone($clone(w[0].stats.GetLastFrameAt(), time.Time).Add(w[0].getFrameHealthCheckTimeout()), time.Time).Before($clone(_r$8, time.Time)); /* */ $s = 7; case 7: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
194818
- /* */ if (_r$9) { $s = 4; continue; }
194819
- /* */ $s = 5; continue;
194820
- /* if (_r$9) { */ case 4:
194821
- if (!(w[0].pinger === ptrType$9.nil)) {
194822
- w[0].pinger.Close();
194823
- w[0].pinger = ptrType$9.nil;
194824
- }
194825
- if (!(w[0].collectionLoop === ptrType$3.nil)) {
194826
- w[0].collectionLoop.Stop();
194827
- w[0].collectionLoop = ptrType$3.nil;
194828
- }
194829
- if (!(w[0].decoderLoop === ptrType$4.nil)) {
194830
- w[0].decoderLoop.Stop();
194831
- w[0].decoderLoop = ptrType$4.nil;
194832
- }
194833
- if (!(w[0].renderingLoop === ptrType$5.nil)) {
194834
- w[0].renderingLoop.Stop();
194835
- w[0].renderingLoop = ptrType$5.nil;
194836
- }
194837
- _r$10 = screenSender[0].Send(3, new sliceType$2([])); /* */ $s = 8; case 8: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
194838
- err[0] = _r$10;
194839
- /* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 9; continue; }
194840
- /* */ $s = 10; continue;
194841
- /* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 9:
194842
- $r = errs.Print("Could not send disconnect msg to screen", err[0]); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194843
- /* } */ case 10:
194844
- _r$11 = w[0].screenConn.Close(); /* */ $s = 12; case 12: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
194845
- err[0] = _r$11;
194846
- /* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 13; continue; }
194847
- /* */ $s = 14; continue;
194848
- /* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 13:
194849
- $r = errs.Print("Could not disconnect screen", err[0]); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194850
- /* } */ case 14:
194851
- _r$12 = w[0].retriableOpen(-1, $methodVal(w[0], "openScreen")); /* */ $s = 16; case 16: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
194852
- err$1 = _r$12;
194853
- /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 17; continue; }
194854
- /* */ $s = 18; continue;
194855
- /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 17:
194856
- $r = errs.Print("Reconnecting screen", err$1); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194857
- /* } */ case 18:
194858
- /* break; */ $s = 2; continue;
194859
- /* } */ case 5:
194860
- $s = 1; continue;
194861
- case 2:
194862
- $s = -1; return;
194863
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$10, _r$11, _r$12, _r$8, _r$9, err$1, $s};return $f;
194864
- }; })(err, screenSender, w), []);
194865
195081
  $s = -1; return $ifaceNil;
194866
- /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.openScreen, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, conn, connect, data, err, frameCollector, maxPacketSize, msgData, screenSender, streamHostname, videoStreamer, w, $s};return $f;
195082
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.openScreen, $c: true, $r, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, conn, connect, err, frameCollector, maxPacketSize, msgData, screenSender, w, $s};return $f;
194867
195083
  };
194868
195084
  ScreenWindow.prototype.openScreen = function() { return this.$val.openScreen(); };
195085
+ ScreenWindow.ptr.prototype.closeScreen = function() {
195086
+ var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, err, errList, screenSender, w, $s, $r, $c} = $restore(this, {});
195087
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195088
+ w = this;
195089
+ if (!(w.collectionLoop === ptrType$3.nil)) {
195090
+ w.collectionLoop.Stop();
195091
+ w.collectionLoop = ptrType$3.nil;
195092
+ }
195093
+ if (!(w.decoderLoop === ptrType$4.nil)) {
195094
+ w.decoderLoop.Stop();
195095
+ w.decoderLoop = ptrType$4.nil;
195096
+ }
195097
+ if (!(w.renderingLoop === ptrType$5.nil)) {
195098
+ w.renderingLoop.Stop();
195099
+ w.renderingLoop = ptrType$5.nil;
195100
+ }
195101
+ if (!(w.pinger === ptrType$10.nil)) {
195102
+ w.pinger.Close();
195103
+ w.pinger = ptrType$10.nil;
195104
+ }
195105
+ errList = new sliceType$3([]);
195106
+ screenSender = w.createScreenSender();
195107
+ _r = UnregisterVideoStream(screenSender); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195108
+ err = _r;
195109
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
195110
+ /* */ $s = 3; continue;
195111
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
195112
+ _r$1 = errs.Errorf("Could not unregister video stream: %s", new sliceType$2([err])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195113
+ errList = $append(errList, _r$1);
195114
+ /* } */ case 3:
195115
+ _r$2 = screenSender.Send(3, new sliceType([])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195116
+ err = _r$2;
195117
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
195118
+ /* */ $s = 7; continue;
195119
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
195120
+ _r$3 = errs.Errorf("Could not send disconnect msg to screen: %s", new sliceType$2([err])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
195121
+ errList = $append(errList, _r$3);
195122
+ /* } */ case 7:
195123
+ _r$4 = w.screenConn.Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
195124
+ err = _r$4;
195125
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
195126
+ /* */ $s = 11; continue;
195127
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
195128
+ _r$5 = errs.Errorf("Could not close screen connection: %s", new sliceType$2([err])); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
195129
+ errList = $append(errList, _r$5);
195130
+ /* } */ case 11:
195131
+ if (errList.$length === 0) {
195132
+ $s = -1; return $ifaceNil;
195133
+ }
195134
+ _r$6 = errs.CombineErrors(errList); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
195135
+ $24r = _r$6;
195136
+ $s = 14; case 14: return $24r;
195137
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.closeScreen, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, err, errList, screenSender, w, $s};return $f;
195138
+ };
195139
+ ScreenWindow.prototype.closeScreen = function() { return this.$val.closeScreen(); };
194869
195140
  ScreenWindow.ptr.prototype.createScreenBuffer = function() {
194870
195141
  var {_r, _tuple, _tuple$1, err, localScreenSize, screenBuffer, w, $s, $r, $c} = $restore(this, {});
194871
195142
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -194888,36 +195159,31 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194888
195159
  };
194889
195160
  ScreenWindow.prototype.createScreenBuffer = function() { return this.$val.createScreenBuffer(); };
194890
195161
  MainDriver = function(f) {
194891
- var {_arg, _r, _r$1, f, $s, $r, $c} = $restore(this, {f});
194892
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194893
- _r = videostream.Get().IsAvailable(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194894
- _arg = new $Bool(_r);
194895
- $r = log.Println(new sliceType$1([new $String("ASDF[GO] MainDriver: videostream available:"), _arg])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194896
- $r = log.Println(new sliceType$1([new $String("ASDF[GO] MainDriver: nacldecoder available:"), new $Bool(nacldecoder.IsAvailable())])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194897
- $r = log.Println(new sliceType$1([new $String("ASDF[GO] MainDriver: webcodecs available:"), new $Bool(webcodecs.IsAvailable())])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194898
- _r$1 = videostream.Get().IsAvailable(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
194899
- /* */ if (_r$1) { $s = 5; continue; }
194900
- /* */ if (nacldecoder.IsAvailable()) { $s = 6; continue; }
194901
- /* */ if (webcodecs.IsAvailable()) { $s = 7; continue; }
194902
- /* */ $s = 8; continue;
194903
- /* if (_r$1) { */ case 5:
194904
- $r = log.Println(new sliceType$1([new $String("ASDF[GO] MainDriver: videostream available, using overlaydriver")])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194905
- $r = overlaydriver.Main(f); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194906
- $s = 9; continue;
194907
- /* } else if (nacldecoder.IsAvailable()) { */ case 6:
194908
- $r = log.Println(new sliceType$1([new $String("ASDF[GO] MainDriver: nacldecoder available, using nacldriver")])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194909
- $r = nacldriver.Main(f); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194910
- $s = 9; continue;
194911
- /* } else if (webcodecs.IsAvailable()) { */ case 7:
194912
- $r = log.Println(new sliceType$1([new $String("ASDF[GO] MainDriver: webcodecs available, using canvasdriver")])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194913
- $r = canvasdriver.Main(f); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194914
- $s = 9; continue;
194915
- /* } else { */ case 8:
194916
- $r = log.Println(new sliceType$1([new $String("ASDF[GO] MainDriver: fallback to webgldriver")])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194917
- $r = webgldriver.Main(f); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
194918
- /* } */ case 9:
195162
+ var {_r, f, $s, $r, $c} = $restore(this, {f});
195163
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195164
+ _r = videostream.Get().IsAvailable(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195165
+ /* */ if (_r) { $s = 1; continue; }
195166
+ /* */ if (nacldecoder.IsAvailable()) { $s = 2; continue; }
195167
+ /* */ if (samsungwasmdecoder.IsAvailable()) { $s = 3; continue; }
195168
+ /* */ if (webcodecs.IsAvailable()) { $s = 4; continue; }
195169
+ /* */ $s = 5; continue;
195170
+ /* if (_r) { */ case 1:
195171
+ $r = overlaydriver.Main(f); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195172
+ $s = 6; continue;
195173
+ /* } else if (nacldecoder.IsAvailable()) { */ case 2:
195174
+ $r = nacldriver.Main(f); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195175
+ $s = 6; continue;
195176
+ /* } else if (samsungwasmdecoder.IsAvailable()) { */ case 3:
195177
+ $r = overlaydriver.Main(f); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195178
+ $s = 6; continue;
195179
+ /* } else if (webcodecs.IsAvailable()) { */ case 4:
195180
+ $r = canvasdriver.Main(f); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195181
+ $s = 6; continue;
195182
+ /* } else { */ case 5:
195183
+ $r = webgldriver.Main(f); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195184
+ /* } */ case 6:
194919
195185
  $s = -1; return;
194920
- /* */ } return; } var $f = {$blk: MainDriver, $c: true, $r, _arg, _r, _r$1, f, $s};return $f;
195186
+ /* */ } return; } var $f = {$blk: MainDriver, $c: true, $r, _r, f, $s};return $f;
194921
195187
  };
194922
195188
  $pkg.MainDriver = MainDriver;
194923
195189
  NewProcessInfoManager = function(username, processDir) {
@@ -194991,7 +195257,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
194991
195257
  /* */ if ((x = _r$4, (x.$high > 0 || (x.$high === 0 && x.$low > 30000)))) { $s = 5; continue; }
194992
195258
  /* */ $s = 6; continue;
194993
195259
  /* if ((x = _r$4, (x.$high > 0 || (x.$high === 0 && x.$low > 30000)))) { */ case 5:
194994
- _r$5 = errs.Errorf("Waiting for process %s start timed out", new sliceType$1([new $String(screenID)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
195260
+ _r$5 = errs.Errorf("Waiting for process %s start timed out", new sliceType$2([new $String(screenID)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
194995
195261
  $24r = _r$5;
194996
195262
  $s = 11; case 11: return $24r;
194997
195263
  /* } */ case 6:
@@ -195041,14 +195307,14 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
195041
195307
  ProcessInfoManager.ptr.prototype.ListScreenIDs = function() {
195042
195308
  var {_i, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, err, fileInfo, fileInfos, m, screenIDs, userProcessDirPath, $s, $r, $c} = $restore(this, {});
195043
195309
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195044
- screenIDs = sliceType$3.nil;
195310
+ screenIDs = sliceType$4.nil;
195045
195311
  err = $ifaceNil;
195046
195312
  m = this;
195047
195313
  userProcessDirPath = m.getUserProcessDirPath();
195048
195314
  _r = os.MkdirAll(userProcessDirPath, 448); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195049
195315
  err = _r;
195050
195316
  if (!($interfaceIsEqual(err, $ifaceNil))) {
195051
- _tmp = sliceType$3.nil;
195317
+ _tmp = sliceType$4.nil;
195052
195318
  _tmp$1 = err;
195053
195319
  screenIDs = _tmp;
195054
195320
  err = _tmp$1;
@@ -195059,7 +195325,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
195059
195325
  fileInfos = _tuple[0];
195060
195326
  err = _tuple[1];
195061
195327
  if (!($interfaceIsEqual(err, $ifaceNil))) {
195062
- _tmp$2 = sliceType$3.nil;
195328
+ _tmp$2 = sliceType$4.nil;
195063
195329
  _tmp$3 = err;
195064
195330
  screenIDs = _tmp$2;
195065
195331
  err = _tmp$3;
@@ -195086,12 +195352,12 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
195086
195352
  ProcessInfoManager.ptr.prototype.getUserProcessDirPath = function() {
195087
195353
  var m;
195088
195354
  m = this;
195089
- return path.Join(new sliceType$3([m.processDir, "S-" + m.username]));
195355
+ return path.Join(new sliceType$4([m.processDir, "S-" + m.username]));
195090
195356
  };
195091
195357
  ProcessInfoManager.prototype.getUserProcessDirPath = function() { return this.$val.getUserProcessDirPath(); };
195092
- ptrType$11.methods = [{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: "createMetadataResponsiveSender", name: "createMetadataResponsiveSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [ptrType$10], 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: "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: "openScreen", name: "openScreen", 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)}];
195093
- 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$3, $error], false)}, {prop: "getUserProcessDirPath", name: "getUserProcessDirPath", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$String], false)}];
195094
- 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: "screenSize", name: "screenSize", embedded: false, exported: false, typ: image.Point, 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$1, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType, 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$2, tag: ""}, {prop: "collectionLoop", name: "collectionLoop", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "decoderLoop", name: "decoderLoop", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "renderingLoop", name: "renderingLoop", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "sizeHandler", name: "sizeHandler", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "keyHandler", name: "keyHandler", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "mouseHandler", name: "mouseHandler", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "pinger", name: "pinger", embedded: false, exported: false, typ: ptrType$9, 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: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$4, tag: ""}]);
195358
+ ptrType$12.methods = [{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: "createMetadataResponsiveSender", name: "createMetadataResponsiveSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [ptrType$11], 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: "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)}];
195359
+ 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)}];
195360
+ 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: "screenSize", name: "screenSize", embedded: false, exported: false, typ: image.Point, 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$1, 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$2, tag: ""}, {prop: "collectionLoop", name: "collectionLoop", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "decoderLoop", name: "decoderLoop", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "renderingLoop", name: "renderingLoop", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "sizeHandler", name: "sizeHandler", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "touchHandler", name: "touchHandler", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "keyHandler", name: "keyHandler", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "mouseHandler", name: "mouseHandler", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "pinger", name: "pinger", embedded: false, exported: false, typ: ptrType$10, 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: ""}]);
195095
195361
  ProcessInfo.init("", [{prop: "ScreenID", name: "ScreenID", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Int, tag: ""}]);
195096
195362
  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: ""}]);
195097
195363
  $init = function() {
@@ -195104,38 +195370,40 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
195104
195370
  $r = clipboard.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195105
195371
  $r = nacldecoder.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195106
195372
  $r = nacldriver.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195107
- $r = webcodecs.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195108
- $r = errs.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195109
- $r = helper.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195110
- $r = input.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195111
- $r = message.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195112
- $r = netclient.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195113
- $r = netpacket.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195114
- $r = netstream.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195115
- $r = netframe.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195116
- $r = player.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195117
- $r = canvasdriver.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195373
+ $r = samsungwasmdecoder.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195374
+ $r = webcodecs.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195375
+ $r = errs.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195376
+ $r = helper.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195377
+ $r = input.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195378
+ $r = message.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195379
+ $r = netclient.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195380
+ $r = netpacket.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195381
+ $r = netstream.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195382
+ $r = netframe.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195383
+ $r = player.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195118
195384
  $r = overlaydriver.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195119
- $r = webgldriver.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195120
- $r = stats.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195121
- $r = videostream.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195122
- $r = window.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195123
- $r = screen.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195124
- $r = focus.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195125
- $r = key.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195126
- $r = lifecycle.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195127
- $r = mouse.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195128
- $r = size.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195129
- $r = image.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195130
- $r = io.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195131
- $r = ioutil.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195132
- $r = log.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195133
- $r = os.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195134
- $r = path.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195135
- $r = strings.$init(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195136
- $r = sync.$init(); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195137
- $r = js.$init(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195138
- $r = time.$init(); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195385
+ $r = stats.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195386
+ $r = videostream.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195387
+ $r = window.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195388
+ $r = canvasdriver.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195389
+ $r = webgldriver.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195390
+ $r = screen.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195391
+ $r = focus.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195392
+ $r = key.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195393
+ $r = lifecycle.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195394
+ $r = mouse.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195395
+ $r = size.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195396
+ $r = touch.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195397
+ $r = image.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195398
+ $r = io.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195399
+ $r = ioutil.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195400
+ $r = log.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195401
+ $r = os.$init(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195402
+ $r = path.$init(); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195403
+ $r = strings.$init(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195404
+ $r = sync.$init(); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195405
+ $r = js.$init(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195406
+ $r = time.$init(); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195139
195407
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
195140
195408
  };
195141
195409
  $pkg.$init = $init;
@@ -195205,17 +195473,15 @@ $packages["main"] = (function() {
195205
195473
  signalChannel[0] = new $Chan(os.Signal, 1);
195206
195474
  screenID = (x = os.Args, (1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1]));
195207
195475
  screenDriver = ((x$1 = os.Args, (2 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 2])));
195208
- $r = log.Println(new sliceType$1([new $String("ASDF[GO] screenDriver: "), new netpacket.Driver(screenDriver)])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195209
195476
  screenHost = (x$2 = os.Args, (3 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 3]));
195210
195477
  metadataDriver = ((x$3 = os.Args, (4 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 4])));
195211
- $r = log.Println(new sliceType$1([new $String("ASDF[GO] metadataDriver: "), new netstream.Driver(metadataDriver)])); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195212
195478
  metadataHost = (x$4 = os.Args, (5 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 5]));
195213
195479
  clientID = (x$5 = os.Args, (6 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 6]));
195214
195480
  clientSecret = (x$6 = os.Args, (7 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 7]));
195215
195481
  secure = (x$7 = os.Args, (8 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 8])) === "1";
195216
195482
  log.SetPrefix(screenID + " ");
195217
195483
  processInfoManager = render.NewProcessInfoManager(cfg.Username, cfg.ScreenProcessDir);
195218
- _r$5 = render.NewScreenWindow(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, $clone(new image.Point.ptr(1920, 1080), image.Point), $mul64(cfg.TimeoutSeconds, new time.Duration(0, 1000000000))); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
195484
+ _r$5 = render.NewScreenWindow(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, $clone(new image.Point.ptr(1920, 1080), image.Point), $mul64(cfg.TimeoutSeconds, new time.Duration(0, 1000000000))); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
195219
195485
  screenWindow[0] = _r$5;
195220
195486
  screenWindow[0].OnClose((function(logFile, screenStartChan, screenWindow, signalChannel) { return function $b() {
195221
195487
  var {$s, $r, $c} = $restore(this, {});
@@ -195234,18 +195500,18 @@ $packages["main"] = (function() {
195234
195500
  $s = -1; return;
195235
195501
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$6, $s};return $f;
195236
195502
  }; })(logFile, screenStartChan, screenWindow, signalChannel), []);
195237
- _r$6 = $recv(screenStartChan[0]); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
195503
+ _r$6 = $recv(screenStartChan[0]); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
195238
195504
  err = _r$6[0];
195239
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 21; continue; }
195240
- /* */ $s = 22; continue;
195241
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 21:
195242
- $r = errs.Print("Error starting screen window", err); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195243
- $s = 24; case 24: return;
195244
- /* } */ case 22:
195505
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 19; continue; }
195506
+ /* */ $s = 20; continue;
195507
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 19:
195508
+ $r = errs.Print("Error starting screen window", err); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195509
+ $s = 22; case 22: return;
195510
+ /* } */ case 20:
195245
195511
  $deferred.push([$methodVal(screenWindow[0], "Close"), []]);
195246
- $r = log.Println(new sliceType$1([new $String("Supra screen started")])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195247
- $r = helper.WaitOnStopSignal(signalChannel[0]); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195248
- $r = log.Println(new sliceType$1([new $String("Supra screen is stopping")])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195512
+ $r = log.Println(new sliceType$1([new $String("Supra screen started")])); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195513
+ $r = helper.WaitOnStopSignal(signalChannel[0]); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195514
+ $r = log.Println(new sliceType$1([new $String("Supra screen is stopping")])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195249
195515
  $s = -1; return;
195250
195516
  /* */ } 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, _tuple, _tuple$1, cfg, clientID, clientSecret, err, err$1, logFile, metadataDriver, metadataHost, processInfoManager, screenDriver, screenHost, screenID, screenStartChan, screenWindow, secure, signalChannel, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $deferred};return $f; } }
195251
195517
  };