@supraio/client-daemon-js 0.0.0-mznaclrefactor.303 → 0.0.0-mznaclrefactor.304

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.
@@ -180018,7 +180018,7 @@ $packages["github.com/supraio/client-daemon/pkg/clientscreen"] = (function() {
180018
180018
  resChan = [resChan];
180019
180019
  resizeCallback = [resizeCallback];
180020
180020
  updateRes = [updateRes];
180021
- resChan[0] = new $Chan(ptrType, 0);
180021
+ resChan[0] = new $Chan(ptrType, 10);
180022
180022
  lastSize[0] = new image.Point.ptr(0, 0);
180023
180023
  updateRes[0] = (function(lastSize, resChan, resizeCallback, updateRes) { return function $b() {
180024
180024
  var {_tuple, err, newSize, $s, $r, $c} = $restore(this, {});
@@ -180035,7 +180035,7 @@ $packages["github.com/supraio/client-daemon/pkg/clientscreen"] = (function() {
180035
180035
  $s = -1; return;
180036
180036
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _tuple, err, newSize, $s};return $f;
180037
180037
  }; })(lastSize, resChan, resizeCallback, updateRes);
180038
- $go(updateRes[0], []);
180038
+ $r = updateRes[0](); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
180039
180039
  resizeCallback[0] = $clone(js.FuncOf((function(lastSize, resChan, resizeCallback, updateRes) { return function $b(this$1, args) {
180040
180040
  var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
180041
180041
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -180043,7 +180043,7 @@ $packages["github.com/supraio/client-daemon/pkg/clientscreen"] = (function() {
180043
180043
  $s = -1; return $ifaceNil;
180044
180044
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
180045
180045
  }; })(lastSize, resChan, resizeCallback, updateRes)), js.Func);
180046
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new resizeCallback[0].constructor.elem(resizeCallback[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180046
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new resizeCallback[0].constructor.elem(resizeCallback[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
180047
180047
  _r;
180048
180048
  $s = -1; return [resChan[0], (function(lastSize, resChan, resizeCallback, updateRes) { return function $b() {
180049
180049
  var {_r$1, $s, $r, $c} = $restore(this, {});
@@ -183803,6 +183803,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
183803
183803
  /* */ if (jsdecoder.ShouldResetOnNextDecode()) { $s = 1; continue; }
183804
183804
  /* */ $s = 2; continue;
183805
183805
  /* if (jsdecoder.ShouldResetOnNextDecode()) { */ case 1:
183806
+ m.initialized = false;
183806
183807
  _r = m.reset(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183807
183808
  err = _r;
183808
183809
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
@@ -183818,7 +183819,6 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
183818
183819
  /* } */ case 9:
183819
183820
  jsdecoder.RemoveJsNaClDecoder();
183820
183821
  /* } */ case 5:
183821
- m.initialized = false;
183822
183822
  jsdecoder.MarkResetDone();
183823
183823
  /* } */ case 2:
183824
183824
  jsNaClDecoder = jsdecoder.GetJsNaClDecoder();
@@ -183877,39 +183877,46 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
183877
183877
  };
183878
183878
  NaClDecoder.prototype.Write = function(nal) { return this.$val.Write(nal); };
183879
183879
  NaClDecoder.ptr.prototype.NextOutput = function(outputBuffer) {
183880
- var {$24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, jsNaClDecoder, m, outputBuffer, picture, picturePromise, $s, $r, $c} = $restore(this, {outputBuffer});
183880
+ var {$24r, $24r$1, $24r$2, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, err, jsNaClDecoder, m, outputBuffer, picture, picturePromise, $s, $r, $c} = $restore(this, {outputBuffer});
183881
183881
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
183882
183882
  m = this;
183883
- jsNaClDecoder = jsdecoder.GetJsNaClDecoder();
183884
- /* */ if (jsNaClDecoder === ptrType.nil) { $s = 1; continue; }
183883
+ /* */ if (!m.initialized) { $s = 1; continue; }
183885
183884
  /* */ $s = 2; continue;
183886
- /* if (jsNaClDecoder === ptrType.nil) { */ case 1:
183885
+ /* if (!m.initialized) { */ case 1:
183887
183886
  _r = errs.Errorf("NaCl Decoder is not initialized", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
183888
183887
  $24r = _r;
183889
183888
  $s = 4; case 4: return $24r;
183890
183889
  /* } */ case 2:
183891
- $r = m.mutexGetPicture.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183892
- _r$1 = $clone(jsNaClDecoder, js.Value).Call("getPicture", sliceType.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
183893
- picturePromise = $clone(_r$1, js.Value);
183894
- _r$2 = jshelper.Await($clone(picturePromise, js.Value)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
183895
- _tuple = _r$2;
183890
+ jsNaClDecoder = jsdecoder.GetJsNaClDecoder();
183891
+ /* */ if (jsNaClDecoder === ptrType.nil) { $s = 5; continue; }
183892
+ /* */ $s = 6; continue;
183893
+ /* if (jsNaClDecoder === ptrType.nil) { */ case 5:
183894
+ _r$1 = errs.Errorf("NaCl Decoder is not available", sliceType.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
183895
+ $24r$1 = _r$1;
183896
+ $s = 8; case 8: return $24r$1;
183897
+ /* } */ case 6:
183898
+ $r = m.mutexGetPicture.Lock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183899
+ _r$2 = $clone(jsNaClDecoder, js.Value).Call("getPicture", sliceType.nil); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
183900
+ picturePromise = $clone(_r$2, js.Value);
183901
+ _r$3 = jshelper.Await($clone(picturePromise, js.Value)); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
183902
+ _tuple = _r$3;
183896
183903
  picture = _tuple[0];
183897
183904
  err = _tuple[1];
183898
- $r = m.mutexGetPicture.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183899
- /* */ if (!(err === ptrType.nil)) { $s = 9; continue; }
183900
- /* */ $s = 10; continue;
183901
- /* if (!(err === ptrType.nil)) { */ case 9:
183905
+ $r = m.mutexGetPicture.Unlock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
183906
+ /* */ if (!(err === ptrType.nil)) { $s = 13; continue; }
183907
+ /* */ $s = 14; continue;
183908
+ /* if (!(err === ptrType.nil)) { */ case 13:
183902
183909
  jsdecoder.ResetBeforeNextDecode();
183903
- _r$3 = jshelper.GetError(err); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
183904
- _r$4 = _r$3.Error(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
183905
- _arg = new $String(_r$4);
183906
- _r$5 = errs.Errorf("Failed to get picture: %s", new sliceType([_arg])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
183907
- $24r$1 = _r$5;
183908
- $s = 14; case 14: return $24r$1;
183909
- /* } */ case 10:
183910
+ _r$4 = jshelper.GetError(err); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
183911
+ _r$5 = _r$4.Error(); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
183912
+ _arg = new $String(_r$5);
183913
+ _r$6 = errs.Errorf("Failed to get picture: %s", new sliceType([_arg])); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
183914
+ $24r$2 = _r$6;
183915
+ $s = 18; case 18: return $24r$2;
183916
+ /* } */ case 14:
183910
183917
  $assertType(outputBuffer, ptrType$1).Picture = picture;
183911
183918
  $s = -1; return $ifaceNil;
183912
- /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.NextOutput, $c: true, $r, $24r, $24r$1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, jsNaClDecoder, m, outputBuffer, picture, picturePromise, $s};return $f;
183919
+ /* */ } return; } var $f = {$blk: NaClDecoder.ptr.prototype.NextOutput, $c: true, $r, $24r, $24r$1, $24r$2, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, err, jsNaClDecoder, m, outputBuffer, picture, picturePromise, $s};return $f;
183913
183920
  };
183914
183921
  NaClDecoder.prototype.NextOutput = function(outputBuffer) { return this.$val.NextOutput(outputBuffer); };
183915
183922
  NaClDecoder.ptr.prototype.Release = function(outputBuffer) {
@@ -189963,7 +189970,7 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
189963
189970
  var {_r, _tuple, dataBuf, err, f, readLength, $s, $r, $c} = $restore(this, {});
189964
189971
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189965
189972
  f = this;
189966
- dataBuf = $makeSlice(sliceType, 1024);
189973
+ dataBuf = $makeSlice(sliceType, 2048);
189967
189974
  _r = f.readerWriter.Read(dataBuf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189968
189975
  _tuple = _r;
189969
189976
  readLength = _tuple[0];
@@ -191089,7 +191096,7 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (functio
191089
191096
  NewDecoder = function(header) {
191090
191097
  var decoder, header;
191091
191098
  decoder = $clone($clone(js.Global(), js.Value).Get("h264Decoder"), js.Value);
191092
- return [new H264Decoder.ptr($clone(decoder, js.Value), new $Chan($emptyInterface, 0)), $ifaceNil];
191099
+ return [new H264Decoder.ptr($clone(decoder, js.Value), new $Chan($emptyInterface, 1)), $ifaceNil];
191093
191100
  };
191094
191101
  $pkg.NewDecoder = NewDecoder;
191095
191102
  H264Decoder.ptr.prototype.Write = function(nal) {
@@ -191226,70 +191233,6 @@ $packages["github.com/supraio/client-daemon/pkg/decoder"] = (function() {
191226
191233
  $pkg.$init = $init;
191227
191234
  return $pkg;
191228
191235
  })();
191229
- $packages["github.com/supraio/client-daemon/pkg/gocollections/queue/linkedlistqueue"] = (function() {
191230
- var $pkg = {}, $init, Queue, sliceType, ptrType, ptrType$1, New;
191231
- Queue = $pkg.Queue = $newType(0, $kindStruct, "linkedlistqueue.Queue", true, "github.com/supraio/client-daemon/pkg/gocollections/queue/linkedlistqueue", true, function(elements_) {
191232
- this.$val = this;
191233
- if (arguments.length === 0) {
191234
- this.elements = sliceType.nil;
191235
- return;
191236
- }
191237
- this.elements = elements_;
191238
- });
191239
- sliceType = $sliceType($emptyInterface);
191240
- ptrType = $ptrType($emptyInterface);
191241
- ptrType$1 = $ptrType(Queue);
191242
- New = function(elements) {
191243
- var elements;
191244
- return new Queue.ptr(elements);
191245
- };
191246
- $pkg.New = New;
191247
- Queue.ptr.prototype.Size = function() {
191248
- var q;
191249
- q = this;
191250
- return q.elements.$length;
191251
- };
191252
- Queue.prototype.Size = function() { return this.$val.Size(); };
191253
- Queue.ptr.prototype.Empty = function() {
191254
- var q;
191255
- q = this;
191256
- return q.Size() === 0;
191257
- };
191258
- Queue.prototype.Empty = function() { return this.$val.Empty(); };
191259
- Queue.ptr.prototype.Enqueue = function(element) {
191260
- var element, q;
191261
- q = this;
191262
- q.elements = $append(q.elements, element);
191263
- };
191264
- Queue.prototype.Enqueue = function(element) { return this.$val.Enqueue(element); };
191265
- Queue.ptr.prototype.Dequeue = function() {
191266
- var q;
191267
- q = this;
191268
- if (q.Empty()) {
191269
- $panic(new $String("Queue.Dequeue failed because queue is empty"));
191270
- }
191271
- q.elements = $subslice(q.elements, 1);
191272
- };
191273
- Queue.prototype.Dequeue = function() { return this.$val.Dequeue(); };
191274
- Queue.ptr.prototype.Peek = function() {
191275
- var q, x;
191276
- q = this;
191277
- if (q.Empty()) {
191278
- $panic(new $String("Queue.Peek failed because queue is empty"));
191279
- }
191280
- return (x = q.elements, $indexPtr(x.$array, x.$offset + 0, ptrType));
191281
- };
191282
- Queue.prototype.Peek = function() { return this.$val.Peek(); };
191283
- ptrType$1.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Empty", name: "Empty", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Enqueue", name: "Enqueue", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Dequeue", name: "Dequeue", pkg: "", typ: $funcType([], [], false)}, {prop: "Peek", name: "Peek", pkg: "", typ: $funcType([], [ptrType], false)}];
191284
- Queue.init("github.com/supraio/client-daemon/pkg/gocollections/queue/linkedlistqueue", [{prop: "elements", name: "elements", embedded: false, exported: false, typ: sliceType, tag: ""}]);
191285
- $init = function() {
191286
- $pkg.$init = function() {};
191287
- /* */ 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:
191288
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
191289
- };
191290
- $pkg.$init = $init;
191291
- return $pkg;
191292
- })();
191293
191236
  $packages["github.com/supraio/client-daemon/pkg/render/screenbuffer"] = (function() {
191294
191237
  var $pkg = {}, $init, errs, screen, sync, BufferPool, sliceType, ptrType, chanType, funcType, mapType, NewBufferPool;
191295
191238
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
@@ -191448,7 +191391,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/screenbuffer"] = (functio
191448
191391
  return $pkg;
191449
191392
  })();
191450
191393
  $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191451
- var $pkg = {}, $init, image, log, math, sync, time, Stopwatch, Frame, Stats, Metrics, ClientStats, ptrType, sliceType, ptrType$1, ptrType$2, sliceType$1, sliceType$2, mapType, ptrType$3, ptrType$4, ptrType$5, mapType$1, NewStopwatch, NewStats, NewMetrics, average, variance;
191394
+ var $pkg = {}, $init, image, log, math, sync, time, Stopwatch, Frame, Stats, Metrics, ClientStats, ptrType, sliceType, ptrType$1, ptrType$2, sliceType$1, mapType, ptrType$3, ptrType$4, ptrType$5, mapType$1, NewStopwatch, NewStats, NewMetrics, average, variance;
191452
191395
  image = $packages["image"];
191453
191396
  log = $packages["log"];
191454
191397
  math = $packages["math"];
@@ -191465,15 +191408,15 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191465
191408
  this.groups = groups_;
191466
191409
  });
191467
191410
  Frame = $pkg.Frame = $newType(8, $kindInterface, "stats.Frame", true, "github.com/supraio/client-daemon/pkg/stats", true, null);
191468
- Stats = $pkg.Stats = $newType(0, $kindStruct, "stats.Stats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(stopped_, lastFrameAt_, stopwatch_, metrics_, latencyNano_, serverTimestampAhead_, serverTimestampAheadBuffer_, currentFramesCount_, lastFrameRate_, totalFramesCount_, lastFramesLatencyAverage_, lastFramesLatencyVariance_, longTermFramesLatencyAverage_, longTermFramesLatencyVariance_, lastFramesCollectionAverage_, lastFramesCollectionVariance_, longTermFramesCollectionAverage_, longTermFramesCollectionVariance_, lastFramesDecodeWriteAverage_, lastFramesDecodeOutputAverage_, lastFramesDecodeWriteVariance_, lastFramesDecodeOutputVariance_, longTermFramesDecodeWriteAverage_, longTermFramesDecodeOutputAverage_, longTermFramesDecodeWriteVariance_, longTermFramesDecodeOutputVariance_, lastFramesRenderAverage_, lastFramesRenderVariance_, longTermFramesRenderAverage_, longTermFramesRenderVariance_, currentThrottledRenderFramesCount_, lastThrottledRenderFrameRate_, screenResolutionWidth_, screenResolutionHeight_, lastInteractionAt_) {
191411
+ 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_) {
191469
191412
  this.$val = this;
191470
191413
  if (arguments.length === 0) {
191471
191414
  this.stopped = false;
191472
191415
  this.lastFrameAt = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
191473
191416
  this.stopwatch = ptrType$1.nil;
191474
191417
  this.metrics = ptrType$2.nil;
191475
- this.latencyNano = new $Int64(0, 0);
191476
- this.serverTimestampAhead = new $Int64(0, 0);
191418
+ this.latency = new time.Duration(0, 0);
191419
+ this.serverTimestampAhead = new time.Duration(0, 0);
191477
191420
  this.serverTimestampAheadBuffer = sliceType$1.nil;
191478
191421
  this.currentFramesCount = 0;
191479
191422
  this.lastFrameRate = 0;
@@ -191486,6 +191429,8 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191486
191429
  this.lastFramesCollectionVariance = new time.Duration(0, 0);
191487
191430
  this.longTermFramesCollectionAverage = new time.Duration(0, 0);
191488
191431
  this.longTermFramesCollectionVariance = new time.Duration(0, 0);
191432
+ this.currentThrottledCollectionFramesCount = 0;
191433
+ this.lastThrottledCollectionFrameRate = 0;
191489
191434
  this.lastFramesDecodeWriteAverage = new time.Duration(0, 0);
191490
191435
  this.lastFramesDecodeOutputAverage = new time.Duration(0, 0);
191491
191436
  this.lastFramesDecodeWriteVariance = new time.Duration(0, 0);
@@ -191494,6 +191439,8 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191494
191439
  this.longTermFramesDecodeOutputAverage = new time.Duration(0, 0);
191495
191440
  this.longTermFramesDecodeWriteVariance = new time.Duration(0, 0);
191496
191441
  this.longTermFramesDecodeOutputVariance = new time.Duration(0, 0);
191442
+ this.currentThrottledDecodeFramesCount = 0;
191443
+ this.lastThrottledDecodeFrameRate = 0;
191497
191444
  this.lastFramesRenderAverage = new time.Duration(0, 0);
191498
191445
  this.lastFramesRenderVariance = new time.Duration(0, 0);
191499
191446
  this.longTermFramesRenderAverage = new time.Duration(0, 0);
@@ -191509,7 +191456,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191509
191456
  this.lastFrameAt = lastFrameAt_;
191510
191457
  this.stopwatch = stopwatch_;
191511
191458
  this.metrics = metrics_;
191512
- this.latencyNano = latencyNano_;
191459
+ this.latency = latency_;
191513
191460
  this.serverTimestampAhead = serverTimestampAhead_;
191514
191461
  this.serverTimestampAheadBuffer = serverTimestampAheadBuffer_;
191515
191462
  this.currentFramesCount = currentFramesCount_;
@@ -191523,6 +191470,8 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191523
191470
  this.lastFramesCollectionVariance = lastFramesCollectionVariance_;
191524
191471
  this.longTermFramesCollectionAverage = longTermFramesCollectionAverage_;
191525
191472
  this.longTermFramesCollectionVariance = longTermFramesCollectionVariance_;
191473
+ this.currentThrottledCollectionFramesCount = currentThrottledCollectionFramesCount_;
191474
+ this.lastThrottledCollectionFrameRate = lastThrottledCollectionFrameRate_;
191526
191475
  this.lastFramesDecodeWriteAverage = lastFramesDecodeWriteAverage_;
191527
191476
  this.lastFramesDecodeOutputAverage = lastFramesDecodeOutputAverage_;
191528
191477
  this.lastFramesDecodeWriteVariance = lastFramesDecodeWriteVariance_;
@@ -191531,6 +191480,8 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191531
191480
  this.longTermFramesDecodeOutputAverage = longTermFramesDecodeOutputAverage_;
191532
191481
  this.longTermFramesDecodeWriteVariance = longTermFramesDecodeWriteVariance_;
191533
191482
  this.longTermFramesDecodeOutputVariance = longTermFramesDecodeOutputVariance_;
191483
+ this.currentThrottledDecodeFramesCount = currentThrottledDecodeFramesCount_;
191484
+ this.lastThrottledDecodeFrameRate = lastThrottledDecodeFrameRate_;
191534
191485
  this.lastFramesRenderAverage = lastFramesRenderAverage_;
191535
191486
  this.lastFramesRenderVariance = lastFramesRenderVariance_;
191536
191487
  this.longTermFramesRenderAverage = longTermFramesRenderAverage_;
@@ -191551,39 +191502,67 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191551
191502
  this.mutex = mutex_;
191552
191503
  this.groups = groups_;
191553
191504
  });
191554
- ClientStats = $pkg.ClientStats = $newType(0, $kindStruct, "stats.ClientStats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(LatencyNano_, ServerTimestampAhead_, CurrentFramesCount_, LastFrameRate_, TotalFramesCount_, LastFramesLatencyAverage_, LastFramesCollectionAverage_, LastFramesDecodeAverage_, LastFramesDecodeVariance_, LastFramesRenderAverage_, LastThrottledRenderFrameRate_, LongTermFramesDecodeAverage_, LongTermFramesDecodeVariance_, ScreenResolutionWidth_, ScreenResolutionHeight_) {
191505
+ ClientStats = $pkg.ClientStats = $newType(0, $kindStruct, "stats.ClientStats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(LatencyNano_, ServerTimestampAhead_, LastFrameRate_, TotalFramesCount_, LastFramesLatencyAverage_, LastFramesLatencyVariance_, LongTermFramesLatencyAverage_, LongTermFramesLatencyVariance_, LastFramesCollectionAverage_, LastFramesCollectionVariance_, LongTermFramesCollectionAverage_, LongTermFramesCollectionVariance_, LastThrottledCollectionFrameRate_, LastFramesDecodeWriteAverage_, LastFramesDecodeOutputAverage_, LastFramesDecodeWriteVariance_, LastFramesDecodeOutputVariance_, LongTermFramesDecodeWriteAverage_, LongTermFramesDecodeOutputAverage_, LongTermFramesDecodeWriteVariance_, LongTermFramesDecodeOutputVariance_, LastThrottledDecodeFrameRate_, LastFramesRenderAverage_, LastFramesRenderVariance_, LongTermFramesRenderAverage_, LongTermFramesRenderVariance_, LastThrottledRenderFrameRate_, ScreenResolutionWidth_, ScreenResolutionHeight_) {
191555
191506
  this.$val = this;
191556
191507
  if (arguments.length === 0) {
191557
191508
  this.LatencyNano = new $Int64(0, 0);
191558
191509
  this.ServerTimestampAhead = new $Int64(0, 0);
191559
- this.CurrentFramesCount = 0;
191560
191510
  this.LastFrameRate = 0;
191561
191511
  this.TotalFramesCount = 0;
191562
191512
  this.LastFramesLatencyAverage = new $Int64(0, 0);
191513
+ this.LastFramesLatencyVariance = new $Int64(0, 0);
191514
+ this.LongTermFramesLatencyAverage = new $Int64(0, 0);
191515
+ this.LongTermFramesLatencyVariance = new $Int64(0, 0);
191563
191516
  this.LastFramesCollectionAverage = new $Int64(0, 0);
191564
- this.LastFramesDecodeAverage = new $Int64(0, 0);
191565
- this.LastFramesDecodeVariance = new $Int64(0, 0);
191517
+ this.LastFramesCollectionVariance = new $Int64(0, 0);
191518
+ this.LongTermFramesCollectionAverage = new $Int64(0, 0);
191519
+ this.LongTermFramesCollectionVariance = new $Int64(0, 0);
191520
+ this.LastThrottledCollectionFrameRate = 0;
191521
+ this.LastFramesDecodeWriteAverage = new $Int64(0, 0);
191522
+ this.LastFramesDecodeOutputAverage = new $Int64(0, 0);
191523
+ this.LastFramesDecodeWriteVariance = new $Int64(0, 0);
191524
+ this.LastFramesDecodeOutputVariance = new $Int64(0, 0);
191525
+ this.LongTermFramesDecodeWriteAverage = new $Int64(0, 0);
191526
+ this.LongTermFramesDecodeOutputAverage = new $Int64(0, 0);
191527
+ this.LongTermFramesDecodeWriteVariance = new $Int64(0, 0);
191528
+ this.LongTermFramesDecodeOutputVariance = new $Int64(0, 0);
191529
+ this.LastThrottledDecodeFrameRate = 0;
191566
191530
  this.LastFramesRenderAverage = new $Int64(0, 0);
191531
+ this.LastFramesRenderVariance = new $Int64(0, 0);
191532
+ this.LongTermFramesRenderAverage = new $Int64(0, 0);
191533
+ this.LongTermFramesRenderVariance = new $Int64(0, 0);
191567
191534
  this.LastThrottledRenderFrameRate = 0;
191568
- this.LongTermFramesDecodeAverage = new $Int64(0, 0);
191569
- this.LongTermFramesDecodeVariance = new $Int64(0, 0);
191570
191535
  this.ScreenResolutionWidth = 0;
191571
191536
  this.ScreenResolutionHeight = 0;
191572
191537
  return;
191573
191538
  }
191574
191539
  this.LatencyNano = LatencyNano_;
191575
191540
  this.ServerTimestampAhead = ServerTimestampAhead_;
191576
- this.CurrentFramesCount = CurrentFramesCount_;
191577
191541
  this.LastFrameRate = LastFrameRate_;
191578
191542
  this.TotalFramesCount = TotalFramesCount_;
191579
191543
  this.LastFramesLatencyAverage = LastFramesLatencyAverage_;
191544
+ this.LastFramesLatencyVariance = LastFramesLatencyVariance_;
191545
+ this.LongTermFramesLatencyAverage = LongTermFramesLatencyAverage_;
191546
+ this.LongTermFramesLatencyVariance = LongTermFramesLatencyVariance_;
191580
191547
  this.LastFramesCollectionAverage = LastFramesCollectionAverage_;
191581
- this.LastFramesDecodeAverage = LastFramesDecodeAverage_;
191582
- this.LastFramesDecodeVariance = LastFramesDecodeVariance_;
191548
+ this.LastFramesCollectionVariance = LastFramesCollectionVariance_;
191549
+ this.LongTermFramesCollectionAverage = LongTermFramesCollectionAverage_;
191550
+ this.LongTermFramesCollectionVariance = LongTermFramesCollectionVariance_;
191551
+ this.LastThrottledCollectionFrameRate = LastThrottledCollectionFrameRate_;
191552
+ this.LastFramesDecodeWriteAverage = LastFramesDecodeWriteAverage_;
191553
+ this.LastFramesDecodeOutputAverage = LastFramesDecodeOutputAverage_;
191554
+ this.LastFramesDecodeWriteVariance = LastFramesDecodeWriteVariance_;
191555
+ this.LastFramesDecodeOutputVariance = LastFramesDecodeOutputVariance_;
191556
+ this.LongTermFramesDecodeWriteAverage = LongTermFramesDecodeWriteAverage_;
191557
+ this.LongTermFramesDecodeOutputAverage = LongTermFramesDecodeOutputAverage_;
191558
+ this.LongTermFramesDecodeWriteVariance = LongTermFramesDecodeWriteVariance_;
191559
+ this.LongTermFramesDecodeOutputVariance = LongTermFramesDecodeOutputVariance_;
191560
+ this.LastThrottledDecodeFrameRate = LastThrottledDecodeFrameRate_;
191583
191561
  this.LastFramesRenderAverage = LastFramesRenderAverage_;
191562
+ this.LastFramesRenderVariance = LastFramesRenderVariance_;
191563
+ this.LongTermFramesRenderAverage = LongTermFramesRenderAverage_;
191564
+ this.LongTermFramesRenderVariance = LongTermFramesRenderVariance_;
191584
191565
  this.LastThrottledRenderFrameRate = LastThrottledRenderFrameRate_;
191585
- this.LongTermFramesDecodeAverage = LongTermFramesDecodeAverage_;
191586
- this.LongTermFramesDecodeVariance = LongTermFramesDecodeVariance_;
191587
191566
  this.ScreenResolutionWidth = ScreenResolutionWidth_;
191588
191567
  this.ScreenResolutionHeight = ScreenResolutionHeight_;
191589
191568
  });
@@ -191591,13 +191570,12 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191591
191570
  sliceType = $sliceType($emptyInterface);
191592
191571
  ptrType$1 = $ptrType(Stopwatch);
191593
191572
  ptrType$2 = $ptrType(Metrics);
191594
- sliceType$1 = $sliceType($Int64);
191595
- sliceType$2 = $sliceType(time.Duration);
191573
+ sliceType$1 = $sliceType(time.Duration);
191596
191574
  mapType = $mapType($String, time.Time);
191597
191575
  ptrType$3 = $ptrType(ClientStats);
191598
191576
  ptrType$4 = $ptrType(image.Point);
191599
191577
  ptrType$5 = $ptrType(Stats);
191600
- mapType$1 = $mapType($String, sliceType$2);
191578
+ mapType$1 = $mapType($String, sliceType$1);
191601
191579
  NewStopwatch = function() {
191602
191580
  return new Stopwatch.ptr($clone(new sync.Mutex.ptr(0, 0), sync.Mutex), new $global.Map());
191603
191581
  };
@@ -191648,44 +191626,43 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191648
191626
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191649
191627
  _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191650
191628
  _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; }
191651
- s = new Stats.ptr(false, $clone(_r, time.Time), NewStopwatch(), NewMetrics(), new $Int64(0, 0), new $Int64(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), 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), 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));
191652
- $r = s.stopwatch.Start("frame_latency"); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191629
+ 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));
191653
191630
  $go($methodVal(s, "startCalculations"), []);
191654
191631
  $s = -1; return s;
191655
191632
  /* */ } return; } var $f = {$blk: NewStats, $c: true, $r, _r, _r$1, s, $s};return $f;
191656
191633
  };
191657
191634
  $pkg.NewStats = NewStats;
191658
191635
  Stats.ptr.prototype.GetClientStats = function() {
191659
- var s, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7;
191636
+ var s;
191660
191637
  s = this;
191661
- return new ClientStats.ptr(s.latencyNano, s.serverTimestampAhead, s.currentFramesCount, s.lastFrameRate, s.totalFramesCount, s.lastFramesLatencyAverage.Nanoseconds(), s.lastFramesCollectionAverage.Nanoseconds(), (x = s.lastFramesDecodeWriteAverage.Nanoseconds(), x$1 = s.lastFramesDecodeOutputAverage.Nanoseconds(), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)), (x$2 = s.lastFramesDecodeWriteVariance.Nanoseconds(), x$3 = s.lastFramesDecodeOutputVariance.Nanoseconds(), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)), s.lastFramesRenderAverage.Nanoseconds(), s.lastThrottledRenderFrameRate, (x$4 = s.longTermFramesDecodeWriteAverage.Nanoseconds(), x$5 = s.longTermFramesDecodeOutputAverage.Nanoseconds(), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low)), (x$6 = s.longTermFramesDecodeWriteVariance.Nanoseconds(), x$7 = s.longTermFramesDecodeOutputVariance.Nanoseconds(), new $Int64(x$6.$high + x$7.$high, x$6.$low + x$7.$low)), s.screenResolutionWidth, s.screenResolutionHeight);
191638
+ return new ClientStats.ptr(s.latency.Nanoseconds(), s.serverTimestampAhead.Nanoseconds(), s.lastFrameRate, s.totalFramesCount, s.lastFramesLatencyAverage.Nanoseconds(), s.lastFramesLatencyVariance.Nanoseconds(), s.longTermFramesLatencyAverage.Nanoseconds(), s.longTermFramesLatencyVariance.Nanoseconds(), s.lastFramesCollectionAverage.Nanoseconds(), s.lastFramesCollectionVariance.Nanoseconds(), s.longTermFramesCollectionAverage.Nanoseconds(), s.longTermFramesCollectionVariance.Nanoseconds(), s.lastThrottledCollectionFrameRate, s.lastFramesDecodeWriteAverage.Nanoseconds(), s.lastFramesDecodeOutputAverage.Nanoseconds(), s.lastFramesDecodeWriteVariance.Nanoseconds(), s.lastFramesDecodeOutputVariance.Nanoseconds(), s.longTermFramesDecodeWriteAverage.Nanoseconds(), s.longTermFramesDecodeOutputAverage.Nanoseconds(), s.longTermFramesDecodeWriteVariance.Nanoseconds(), s.longTermFramesDecodeOutputVariance.Nanoseconds(), s.lastThrottledDecodeFrameRate, s.lastFramesRenderAverage.Nanoseconds(), s.lastFramesRenderVariance.Nanoseconds(), s.longTermFramesRenderAverage.Nanoseconds(), s.longTermFramesRenderVariance.Nanoseconds(), s.lastThrottledRenderFrameRate, s.screenResolutionWidth, s.screenResolutionHeight);
191662
191639
  };
191663
191640
  Stats.prototype.GetClientStats = function() { return this.$val.GetClientStats(); };
191664
- Stats.ptr.prototype.SetLatency = function(latencyNano) {
191665
- var latencyNano, s;
191641
+ Stats.ptr.prototype.SetLatency = function(latency) {
191642
+ var latency, s;
191666
191643
  s = this;
191667
- s.latencyNano = latencyNano;
191644
+ s.latency = latency;
191668
191645
  };
191669
- Stats.prototype.SetLatency = function(latencyNano) { return this.$val.SetLatency(latencyNano); };
191670
- Stats.ptr.prototype.UpdateServerTimestampAhead = function(aheadNano) {
191671
- var _i, _ref, ahead, aheadNano, s, totalAhead, x;
191646
+ Stats.prototype.SetLatency = function(latency) { return this.$val.SetLatency(latency); };
191647
+ Stats.ptr.prototype.UpdateServerTimestampAhead = function(serverAhead) {
191648
+ var _i, _ref, ahead, s, serverAhead, totalAheadNano, x, x$1;
191672
191649
  s = this;
191673
- s.serverTimestampAheadBuffer = $append(s.serverTimestampAheadBuffer, aheadNano);
191650
+ s.serverTimestampAheadBuffer = $append(s.serverTimestampAheadBuffer, serverAhead);
191674
191651
  if (s.serverTimestampAheadBuffer.$length > 20) {
191675
191652
  s.serverTimestampAheadBuffer = $subslice(s.serverTimestampAheadBuffer, 1);
191676
191653
  }
191677
- totalAhead = new $Int64(0, 0);
191654
+ totalAheadNano = new $Int64(0, 0);
191678
191655
  _ref = s.serverTimestampAheadBuffer;
191679
191656
  _i = 0;
191680
191657
  while (true) {
191681
191658
  if (!(_i < _ref.$length)) { break; }
191682
191659
  ahead = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
191683
- totalAhead = (x = ahead, new $Int64(totalAhead.$high + x.$high, totalAhead.$low + x.$low));
191660
+ totalAheadNano = (x = ahead.Nanoseconds(), new $Int64(totalAheadNano.$high + x.$high, totalAheadNano.$low + x.$low));
191684
191661
  _i++;
191685
191662
  }
191686
- s.serverTimestampAhead = $div64(totalAhead, (new $Int64(0, s.serverTimestampAheadBuffer.$length)), false);
191663
+ s.serverTimestampAhead = ((x$1 = $div64(totalAheadNano, (new $Int64(0, s.serverTimestampAheadBuffer.$length)), false), new time.Duration(x$1.$high, x$1.$low)));
191687
191664
  };
191688
- Stats.prototype.UpdateServerTimestampAhead = function(aheadNano) { return this.$val.UpdateServerTimestampAhead(aheadNano); };
191665
+ Stats.prototype.UpdateServerTimestampAhead = function(serverAhead) { return this.$val.UpdateServerTimestampAhead(serverAhead); };
191689
191666
  Stats.ptr.prototype.SetScreenResolution = function(res) {
191690
191667
  var res, s;
191691
191668
  s = this;
@@ -191694,19 +191671,20 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191694
191671
  };
191695
191672
  Stats.prototype.SetScreenResolution = function(res) { return this.$val.SetScreenResolution(res); };
191696
191673
  Stats.ptr.prototype.NotifyFrame = function(frame) {
191697
- var {_r, _r$1, frame, frameLatency, s, $s, $r, $c} = $restore(this, {frame});
191674
+ var {_r, _r$1, _r$2, _r$3, frame, frameLatency, s, $s, $r, $c} = $restore(this, {frame});
191698
191675
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191699
191676
  s = this;
191700
191677
  _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191701
191678
  time.Time.copy(s.lastFrameAt, _r);
191702
191679
  s.currentFramesCount = s.currentFramesCount + (1) >> 0;
191703
- _r$1 = s.stopwatch.Stop("frame_latency"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191704
- frameLatency = _r$1;
191705
- $r = s.metrics.AddSample("frame_latency", new sliceType$2([frameLatency])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191706
- $r = s.metrics.AddSample("frame_latency_long_term", new sliceType$2([frameLatency])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191707
- $r = s.stopwatch.Start("frame_latency"); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191680
+ _r$1 = s.GetServerTime(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191681
+ _r$2 = frame.GetTimestamp(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
191682
+ _r$3 = $clone(_r$1, time.Time).Sub($clone(_r$2, time.Time)); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
191683
+ frameLatency = _r$3;
191684
+ $r = s.metrics.AddSample("frame_latency", new sliceType$1([frameLatency])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191685
+ $r = s.metrics.AddSample("frame_latency_long_term", new sliceType$1([frameLatency])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191708
191686
  $s = -1; return;
191709
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrame, $c: true, $r, _r, _r$1, frame, frameLatency, s, $s};return $f;
191687
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrame, $c: true, $r, _r, _r$1, _r$2, _r$3, frame, frameLatency, s, $s};return $f;
191710
191688
  };
191711
191689
  Stats.prototype.NotifyFrame = function(frame) { return this.$val.NotifyFrame(frame); };
191712
191690
  Stats.ptr.prototype.NotifyFrameCollectionStarted = function() {
@@ -191724,14 +191702,20 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191724
191702
  s = this;
191725
191703
  _r = s.stopwatch.Stop("frame_collection"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191726
191704
  _arg = _r;
191727
- $r = s.metrics.AddSample("frame_collection", new sliceType$2([_arg])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191705
+ $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; }
191728
191706
  _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; }
191729
191707
  _arg$1 = _r$1;
191730
- $r = s.metrics.AddSample("frame_collection_long_term", new sliceType$2([_arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191708
+ $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; }
191731
191709
  $s = -1; return;
191732
191710
  /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrameCollectionEnded, $c: true, $r, _arg, _arg$1, _r, _r$1, s, $s};return $f;
191733
191711
  };
191734
191712
  Stats.prototype.NotifyFrameCollectionEnded = function() { return this.$val.NotifyFrameCollectionEnded(); };
191713
+ Stats.ptr.prototype.NotifyThrottledCollectionFrame = function() {
191714
+ var s;
191715
+ s = this;
191716
+ s.currentThrottledCollectionFramesCount = s.currentThrottledCollectionFramesCount + (1) >> 0;
191717
+ };
191718
+ Stats.prototype.NotifyThrottledCollectionFrame = function() { return this.$val.NotifyThrottledCollectionFrame(); };
191735
191719
  Stats.ptr.prototype.NotifyFrameDecodeWriteStarted = function() {
191736
191720
  var {s, $s, $r, $c} = $restore(this, {});
191737
191721
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -191747,8 +191731,8 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191747
191731
  s = this;
191748
191732
  _r = s.stopwatch.Stop("frame_decode_write"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191749
191733
  dur = _r;
191750
- $r = s.metrics.AddSample("frame_decode_write", new sliceType$2([dur])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191751
- $r = s.metrics.AddSample("frame_decode_write_long_term", new sliceType$2([dur])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191734
+ $r = s.metrics.AddSample("frame_decode_write", new sliceType$1([dur])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191735
+ $r = s.metrics.AddSample("frame_decode_write_long_term", new sliceType$1([dur])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191752
191736
  $s = -1; return;
191753
191737
  /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrameDecodeWriteEnded, $c: true, $r, _r, dur, s, $s};return $f;
191754
191738
  };
@@ -191768,12 +191752,18 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191768
191752
  s = this;
191769
191753
  _r = s.stopwatch.Stop("frame_decode_output"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191770
191754
  dur = _r;
191771
- $r = s.metrics.AddSample("frame_decode_output", new sliceType$2([dur])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191772
- $r = s.metrics.AddSample("frame_decode_output_long_term", new sliceType$2([dur])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191755
+ $r = s.metrics.AddSample("frame_decode_output", new sliceType$1([dur])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191756
+ $r = s.metrics.AddSample("frame_decode_output_long_term", new sliceType$1([dur])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191773
191757
  $s = -1; return;
191774
191758
  /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrameDecodeOutputEnded, $c: true, $r, _r, dur, s, $s};return $f;
191775
191759
  };
191776
191760
  Stats.prototype.NotifyFrameDecodeOutputEnded = function() { return this.$val.NotifyFrameDecodeOutputEnded(); };
191761
+ Stats.ptr.prototype.NotifyThrottledDecodeFrame = function() {
191762
+ var s;
191763
+ s = this;
191764
+ s.currentThrottledDecodeFramesCount = s.currentThrottledDecodeFramesCount + (1) >> 0;
191765
+ };
191766
+ Stats.prototype.NotifyThrottledDecodeFrame = function() { return this.$val.NotifyThrottledDecodeFrame(); };
191777
191767
  Stats.ptr.prototype.NotifyFrameRenderStarted = function() {
191778
191768
  var {s, $s, $r, $c} = $restore(this, {});
191779
191769
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -191789,8 +191779,8 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191789
191779
  s = this;
191790
191780
  _r = s.stopwatch.Stop("frame_render"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191791
191781
  dur = _r;
191792
- $r = s.metrics.AddSample("frame_render", new sliceType$2([dur])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191793
- $r = s.metrics.AddSample("frame_render_long_term", new sliceType$2([dur])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191782
+ $r = s.metrics.AddSample("frame_render", new sliceType$1([dur])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191783
+ $r = s.metrics.AddSample("frame_render_long_term", new sliceType$1([dur])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191794
191784
  $s = -1; return;
191795
191785
  /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrameRenderEnded, $c: true, $r, _r, dur, s, $s};return $f;
191796
191786
  };
@@ -191822,6 +191812,10 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191822
191812
  s.lastFrameRate = s.currentFramesCount;
191823
191813
  s.currentFramesCount = 0;
191824
191814
  s.totalFramesCount = s.totalFramesCount + (s.lastFrameRate) >> 0;
191815
+ s.lastThrottledCollectionFrameRate = s.currentThrottledCollectionFramesCount;
191816
+ s.currentThrottledCollectionFramesCount = 0;
191817
+ s.lastThrottledDecodeFrameRate = s.currentThrottledDecodeFramesCount;
191818
+ s.currentThrottledDecodeFramesCount = 0;
191825
191819
  s.lastThrottledRenderFrameRate = s.currentThrottledRenderFramesCount;
191826
191820
  s.currentThrottledRenderFramesCount = 0;
191827
191821
  _r = s.metrics.GetAverage("frame_latency"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
@@ -191886,20 +191880,20 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191886
191880
  var {s, $s, $r, $c} = $restore(this, {});
191887
191881
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191888
191882
  s = this;
191889
- $r = log.Printf("fr:%d, thr:%d | del:\xE2\x8C\x80%dms, lat:\xE2\x8C\x80%dms, srv:\xE2\x8C\x80%dms | ST: 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: 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.lastThrottledRenderFrameRate), $div64(s.lastFramesLatencyAverage, new time.Duration(0, 1000000), false), $div64(s.latencyNano, new $Int64(0, 1000000), false), $div64(s.serverTimestampAhead, new $Int64(0, 1000000), false), 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.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; }
191883
+ $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; }
191890
191884
  $s = -1; return;
191891
191885
  /* */ } return; } var $f = {$blk: Stats.ptr.prototype.print, $c: true, $r, s, $s};return $f;
191892
191886
  };
191893
191887
  Stats.prototype.print = function() { return this.$val.print(); };
191894
191888
  Stats.ptr.prototype.GetServerTime = function() {
191895
- var {$24r, _r, _r$1, s, x, $s, $r, $c} = $restore(this, {});
191889
+ var {$24r, _r, _r$1, s, $s, $r, $c} = $restore(this, {});
191896
191890
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191897
191891
  s = this;
191898
191892
  _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191899
- _r$1 = $clone(_r, time.Time).Add(((x = s.serverTimestampAhead, new time.Duration(x.$high, x.$low)))); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191893
+ _r$1 = $clone(_r, time.Time).Add(s.serverTimestampAhead); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
191900
191894
  $24r = _r$1;
191901
191895
  $s = 3; case 3: return $24r;
191902
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.GetServerTime, $c: true, $r, $24r, _r, _r$1, s, x, $s};return $f;
191896
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.GetServerTime, $c: true, $r, $24r, _r, _r$1, s, $s};return $f;
191903
191897
  };
191904
191898
  Stats.prototype.GetServerTime = function() { return this.$val.GetServerTime(); };
191905
191899
  Stats.ptr.prototype.NotifyInteraction = function() {
@@ -191933,12 +191927,12 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191933
191927
  m = this;
191934
191928
  $r = m.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191935
191929
  $deferred.push([$methodVal(m.mutex, "Unlock"), []]);
191936
- _tuple = (_entry = $mapIndex(m.groups,$String.keyFor(groupName)), _entry !== undefined ? [_entry.v, true] : [sliceType$2.nil, false]);
191930
+ _tuple = (_entry = $mapIndex(m.groups,$String.keyFor(groupName)), _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
191937
191931
  ok = _tuple[1];
191938
191932
  if (!ok) {
191939
- _key = groupName; (m.groups || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: new sliceType$2([]) });
191933
+ _key = groupName; (m.groups || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: new sliceType$1([]) });
191940
191934
  }
191941
- durations = (_entry$1 = $mapIndex(m.groups,$String.keyFor(groupName)), _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil);
191935
+ durations = (_entry$1 = $mapIndex(m.groups,$String.keyFor(groupName)), _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
191942
191936
  durations = $appendSlice(durations, values);
191943
191937
  _key$1 = groupName; (m.groups || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$1), { k: _key$1, v: durations });
191944
191938
  $s = -1; return;
@@ -191951,7 +191945,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191951
191945
  m = this;
191952
191946
  $r = m.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191953
191947
  $deferred.push([$methodVal(m.mutex, "Unlock"), []]);
191954
- _tuple = (_entry = $mapIndex(m.groups,$String.keyFor(groupName)), _entry !== undefined ? [_entry.v, true] : [sliceType$2.nil, false]);
191948
+ _tuple = (_entry = $mapIndex(m.groups,$String.keyFor(groupName)), _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
191955
191949
  ok = _tuple[1];
191956
191950
  /* */ if (!ok) { $s = 2; continue; }
191957
191951
  /* */ $s = 3; continue;
@@ -191959,7 +191953,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191959
191953
  $24r = 0;
191960
191954
  $s = 4; case 4: return $24r;
191961
191955
  /* } */ case 3:
191962
- durations = (_entry$1 = $mapIndex(m.groups,$String.keyFor(groupName)), _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil);
191956
+ durations = (_entry$1 = $mapIndex(m.groups,$String.keyFor(groupName)), _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
191963
191957
  $24r$1 = durations.$length;
191964
191958
  $s = 5; case 5: return $24r$1;
191965
191959
  /* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Metrics.ptr.prototype.GetCount, $c: true, $r, $24r, $24r$1, _entry, _entry$1, _tuple, durations, groupName, m, ok, $s, $deferred};return $f; } }
@@ -191971,7 +191965,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191971
191965
  m = this;
191972
191966
  $r = m.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191973
191967
  $deferred.push([$methodVal(m.mutex, "Unlock"), []]);
191974
- _tuple = (_entry = $mapIndex(m.groups,$String.keyFor(groupName)), _entry !== undefined ? [_entry.v, true] : [sliceType$2.nil, false]);
191968
+ _tuple = (_entry = $mapIndex(m.groups,$String.keyFor(groupName)), _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
191975
191969
  ok = _tuple[1];
191976
191970
  /* */ if (!ok) { $s = 2; continue; }
191977
191971
  /* */ $s = 3; continue;
@@ -191979,7 +191973,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191979
191973
  $24r = new time.Duration(0, 0);
191980
191974
  $s = 4; case 4: return $24r;
191981
191975
  /* } */ case 3:
191982
- durations = (_entry$1 = $mapIndex(m.groups,$String.keyFor(groupName)), _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil);
191976
+ durations = (_entry$1 = $mapIndex(m.groups,$String.keyFor(groupName)), _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
191983
191977
  $24r$1 = average(durations);
191984
191978
  $s = 5; case 5: return $24r$1;
191985
191979
  /* */ } return; } } catch(err) { $err = err; $s = -1; return new time.Duration(0, 0); } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Metrics.ptr.prototype.GetAverage, $c: true, $r, $24r, $24r$1, _entry, _entry$1, _tuple, durations, groupName, m, ok, $s, $deferred};return $f; } }
@@ -191991,7 +191985,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191991
191985
  m = this;
191992
191986
  $r = m.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191993
191987
  $deferred.push([$methodVal(m.mutex, "Unlock"), []]);
191994
- _tuple = (_entry = $mapIndex(m.groups,$String.keyFor(groupName)), _entry !== undefined ? [_entry.v, true] : [sliceType$2.nil, false]);
191988
+ _tuple = (_entry = $mapIndex(m.groups,$String.keyFor(groupName)), _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
191995
191989
  ok = _tuple[1];
191996
191990
  /* */ if (!ok) { $s = 2; continue; }
191997
191991
  /* */ $s = 3; continue;
@@ -191999,7 +191993,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191999
191993
  $24r = new time.Duration(0, 0);
192000
191994
  $s = 4; case 4: return $24r;
192001
191995
  /* } */ case 3:
192002
- durations = (_entry$1 = $mapIndex(m.groups,$String.keyFor(groupName)), _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil);
191996
+ durations = (_entry$1 = $mapIndex(m.groups,$String.keyFor(groupName)), _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
192003
191997
  $24r$1 = variance(durations);
192004
191998
  $s = 5; case 5: return $24r$1;
192005
191999
  /* */ } return; } } catch(err) { $err = err; $s = -1; return new time.Duration(0, 0); } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Metrics.ptr.prototype.GetVariance, $c: true, $r, $24r, $24r$1, _entry, _entry$1, _tuple, durations, groupName, m, ok, $s, $deferred};return $f; } }
@@ -192011,14 +192005,14 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192011
192005
  m = this;
192012
192006
  $r = m.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192013
192007
  $deferred.push([$methodVal(m.mutex, "Unlock"), []]);
192014
- _tuple = (_entry = $mapIndex(m.groups,$String.keyFor(groupName)), _entry !== undefined ? [_entry.v, true] : [sliceType$2.nil, false]);
192008
+ _tuple = (_entry = $mapIndex(m.groups,$String.keyFor(groupName)), _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
192015
192009
  ok = _tuple[1];
192016
192010
  /* */ if (!ok) { $s = 2; continue; }
192017
192011
  /* */ $s = 3; continue;
192018
192012
  /* if (!ok) { */ case 2:
192019
192013
  $s = 4; case 4: return;
192020
192014
  /* } */ case 3:
192021
- durations = (_entry$1 = $mapIndex(m.groups,$String.keyFor(groupName)), _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil);
192015
+ durations = (_entry$1 = $mapIndex(m.groups,$String.keyFor(groupName)), _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
192022
192016
  /* */ if (durations.$length <= finalCount) { $s = 5; continue; }
192023
192017
  /* */ $s = 6; continue;
192024
192018
  /* if (durations.$length <= finalCount) { */ case 5:
@@ -192072,13 +192066,13 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192072
192066
  return (new time.Duration(0, math.Sqrt(($flatten64($div64(sum, (new time.Duration(0, values.$length)), false))))));
192073
192067
  };
192074
192068
  ptrType$1.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([$String], [time.Duration], false)}];
192075
- ptrType$5.methods = [{prop: "GetClientStats", name: "GetClientStats", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "SetLatency", name: "SetLatency", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "UpdateServerTimestampAhead", name: "UpdateServerTimestampAhead", pkg: "", typ: $funcType([$Int64], [], 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: "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: "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)}];
192076
- ptrType$2.methods = [{prop: "AddSample", name: "AddSample", pkg: "", typ: $funcType([$String, sliceType$2], [], 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)}];
192069
+ 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)}];
192070
+ 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)}];
192077
192071
  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: ""}]);
192078
192072
  Frame.init([{prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}]);
192079
- 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: "latencyNano", name: "latencyNano", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "serverTimestampAhead", name: "serverTimestampAhead", embedded: false, exported: false, typ: $Int64, 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: "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: "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: ""}]);
192073
+ 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: ""}]);
192080
192074
  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: ""}]);
192081
- 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: "CurrentFramesCount", name: "CurrentFramesCount", embedded: false, exported: true, typ: $Int, 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: "LastFramesCollectionAverage", name: "LastFramesCollectionAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesDecodeAverage", name: "LastFramesDecodeAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesDecodeVariance", name: "LastFramesDecodeVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesRenderAverage", name: "LastFramesRenderAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastThrottledRenderFrameRate", name: "LastThrottledRenderFrameRate", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "LongTermFramesDecodeAverage", name: "LongTermFramesDecodeAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LongTermFramesDecodeVariance", name: "LongTermFramesDecodeVariance", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "ScreenResolutionWidth", name: "ScreenResolutionWidth", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "ScreenResolutionHeight", name: "ScreenResolutionHeight", embedded: false, exported: true, typ: $Uint32, tag: ""}]);
192075
+ 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: ""}]);
192082
192076
  $init = function() {
192083
192077
  $pkg.$init = function() {};
192084
192078
  /* */ 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:
@@ -192093,17 +192087,15 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
192093
192087
  return $pkg;
192094
192088
  })();
192095
192089
  $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192096
- var $pkg = {}, $init, decoder, errs, linkedlistqueue, frame, netframe, screenbuffer, stats, screen, image, log, time, RenderingLoop, DecodeResultProvider, DecodeResult, DecoderLoop, FrameProvider, CollectionLoop, ptrType, sliceType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, funcType, ptrType$6, chanType, ptrType$7, NewRenderingLoop, NewDecoderLoop, NewCollectionLoop;
192090
+ var $pkg = {}, $init, decoder, errs, frame, netframe, screenbuffer, stats, screen, image, time, RenderingLoop, DecodeResultProvider, DecodeResult, DecoderLoop, FrameProvider, CollectionLoop, ptrType, sliceType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, funcType, ptrType$6, chanType, chanType$1, ptrType$7, NewRenderingLoop, NewDecoderLoop, NewCollectionLoop;
192097
192091
  decoder = $packages["github.com/supraio/client-daemon/pkg/decoder"];
192098
192092
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
192099
- linkedlistqueue = $packages["github.com/supraio/client-daemon/pkg/gocollections/queue/linkedlistqueue"];
192100
192093
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
192101
192094
  netframe = $packages["github.com/supraio/client-daemon/pkg/render/netframe"];
192102
192095
  screenbuffer = $packages["github.com/supraio/client-daemon/pkg/render/screenbuffer"];
192103
192096
  stats = $packages["github.com/supraio/client-daemon/pkg/stats"];
192104
192097
  screen = $packages["golang.org/x/exp/shiny/screen"];
192105
192098
  image = $packages["image"];
192106
- log = $packages["log"];
192107
192099
  time = $packages["time"];
192108
192100
  RenderingLoop = $pkg.RenderingLoop = $newType(0, $kindStruct, "player.RenderingLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(decodeResultProvider_, window_, stats_, started_, renderingInProgress_) {
192109
192101
  this.$val = this;
@@ -192125,7 +192117,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192125
192117
  DecodeResult = $pkg.DecodeResult = $newType(0, $kindStruct, "player.DecodeResult", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(Frame_, Buffer_, Release_) {
192126
192118
  this.$val = this;
192127
192119
  if (arguments.length === 0) {
192128
- this.Frame = ptrType$2.nil;
192120
+ this.Frame = ptrType$3.nil;
192129
192121
  this.Buffer = $ifaceNil;
192130
192122
  this.Release = $throwNilPointerError;
192131
192123
  return;
@@ -192134,16 +192126,14 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192134
192126
  this.Buffer = Buffer_;
192135
192127
  this.Release = Release_;
192136
192128
  });
192137
- DecoderLoop = $pkg.DecoderLoop = $newType(0, $kindStruct, "player.DecoderLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameProvider_, bufferPool_, stats_, decoderInitialized_, decodeResultQueue_, framesQueue_, queuedChan_, started_, decoder_) {
192129
+ DecoderLoop = $pkg.DecoderLoop = $newType(0, $kindStruct, "player.DecoderLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameProvider_, bufferPool_, stats_, decodeResultChan_, framesChan_, started_, decoder_) {
192138
192130
  this.$val = this;
192139
192131
  if (arguments.length === 0) {
192140
192132
  this.frameProvider = $ifaceNil;
192141
192133
  this.bufferPool = ptrType$1.nil;
192142
192134
  this.stats = ptrType.nil;
192143
- this.decoderInitialized = $chanNil;
192144
- this.decodeResultQueue = new linkedlistqueue.Queue.ptr(sliceType.nil);
192145
- this.framesQueue = new linkedlistqueue.Queue.ptr(sliceType.nil);
192146
- this.queuedChan = $chanNil;
192135
+ this.decodeResultChan = $chanNil;
192136
+ this.framesChan = $chanNil;
192147
192137
  this.started = false;
192148
192138
  this.decoder = $ifaceNil;
192149
192139
  return;
@@ -192151,40 +192141,37 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192151
192141
  this.frameProvider = frameProvider_;
192152
192142
  this.bufferPool = bufferPool_;
192153
192143
  this.stats = stats_;
192154
- this.decoderInitialized = decoderInitialized_;
192155
- this.decodeResultQueue = decodeResultQueue_;
192156
- this.framesQueue = framesQueue_;
192157
- this.queuedChan = queuedChan_;
192144
+ this.decodeResultChan = decodeResultChan_;
192145
+ this.framesChan = framesChan_;
192158
192146
  this.started = started_;
192159
192147
  this.decoder = decoder_;
192160
192148
  });
192161
192149
  FrameProvider = $pkg.FrameProvider = $newType(8, $kindInterface, "player.FrameProvider", true, "github.com/supraio/client-daemon/pkg/render/player", true, null);
192162
- CollectionLoop = $pkg.CollectionLoop = $newType(0, $kindStruct, "player.CollectionLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameCollector_, stats_, framesQueue_, queuedChan_, started_) {
192150
+ CollectionLoop = $pkg.CollectionLoop = $newType(0, $kindStruct, "player.CollectionLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameCollector_, stats_, framesChan_, started_) {
192163
192151
  this.$val = this;
192164
192152
  if (arguments.length === 0) {
192165
- this.frameCollector = ptrType$3.nil;
192153
+ this.frameCollector = ptrType$4.nil;
192166
192154
  this.stats = ptrType.nil;
192167
- this.framesQueue = new linkedlistqueue.Queue.ptr(sliceType.nil);
192168
- this.queuedChan = $chanNil;
192155
+ this.framesChan = $chanNil;
192169
192156
  this.started = false;
192170
192157
  return;
192171
192158
  }
192172
192159
  this.frameCollector = frameCollector_;
192173
192160
  this.stats = stats_;
192174
- this.framesQueue = framesQueue_;
192175
- this.queuedChan = queuedChan_;
192161
+ this.framesChan = framesChan_;
192176
192162
  this.started = started_;
192177
192163
  });
192178
192164
  ptrType = $ptrType(stats.Stats);
192179
192165
  sliceType = $sliceType($emptyInterface);
192180
192166
  ptrType$1 = $ptrType(screenbuffer.BufferPool);
192181
- ptrType$2 = $ptrType(frame.Frame);
192182
- ptrType$3 = $ptrType(netframe.FrameCollector);
192183
- ptrType$4 = $ptrType(RenderingLoop);
192184
- ptrType$5 = $ptrType(DecodeResult);
192167
+ ptrType$2 = $ptrType(DecodeResult);
192168
+ ptrType$3 = $ptrType(frame.Frame);
192169
+ ptrType$4 = $ptrType(netframe.FrameCollector);
192170
+ ptrType$5 = $ptrType(RenderingLoop);
192185
192171
  funcType = $funcType([], [], false);
192186
192172
  ptrType$6 = $ptrType(DecoderLoop);
192187
- chanType = $chanType($emptyInterface, false, false);
192173
+ chanType = $chanType(ptrType$2, false, false);
192174
+ chanType$1 = $chanType(ptrType$3, false, false);
192188
192175
  ptrType$7 = $ptrType(CollectionLoop);
192189
192176
  NewRenderingLoop = function(decodeResultProvider, window, stats$1) {
192190
192177
  var decodeResultProvider, stats$1, window;
@@ -192247,7 +192234,6 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192247
192234
  screenBuffer = decodeResult.Buffer;
192248
192235
  $r = dl.waitForRenderTime(frame$1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192249
192236
  $deferred.push([decodeResult.Release, []]);
192250
- $deferred.push([$methodVal(dl.stats, "NotifyFrame"), [frame$1]]);
192251
192237
  /* */ if (dl.renderingInProgress) { $s = 7; continue; }
192252
192238
  /* */ $s = 8; continue;
192253
192239
  /* if (dl.renderingInProgress) { */ case 7:
@@ -192265,9 +192251,10 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192265
192251
  _r$3 = dl.window.Publish(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192266
192252
  _r$3;
192267
192253
  $r = dl.stats.NotifyFrameRenderEnded(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192254
+ $r = dl.stats.NotifyFrame(frame$1); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192268
192255
  dl.renderingInProgress = false;
192269
192256
  $24r$2 = $ifaceNil;
192270
- $s = 15; case 15: return $24r$2;
192257
+ $s = 16; case 16: return $24r$2;
192271
192258
  /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: RenderingLoop.ptr.prototype.renderBuffer, $c: true, $r, $24r, $24r$1, $24r$2, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s, $deferred};return $f; } }
192272
192259
  };
192273
192260
  RenderingLoop.prototype.renderBuffer = function() { return this.$val.renderBuffer(); };
@@ -192291,22 +192278,16 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192291
192278
  RenderingLoop.prototype.waitForRenderTime = function(frame$1) { return this.$val.waitForRenderTime(frame$1); };
192292
192279
  NewDecoderLoop = function(frameProvider, createBuffer, stats$1) {
192293
192280
  var createBuffer, frameProvider, stats$1;
192294
- return new DecoderLoop.ptr(frameProvider, screenbuffer.NewBufferPool(createBuffer, 20), stats$1, new $Chan($emptyInterface, 1), $clone(linkedlistqueue.New(sliceType.nil), linkedlistqueue.Queue), new linkedlistqueue.Queue.ptr(sliceType.nil), new $Chan($emptyInterface, 1), false, $ifaceNil);
192281
+ return new DecoderLoop.ptr(frameProvider, screenbuffer.NewBufferPool(createBuffer, 20), stats$1, new $Chan(ptrType$2, 50), new $Chan(ptrType$3, 50), false, $ifaceNil);
192295
192282
  };
192296
192283
  $pkg.NewDecoderLoop = NewDecoderLoop;
192297
192284
  DecoderLoop.ptr.prototype.NextDecodedResult = function() {
192298
192285
  var {_r, dl, result, $s, $r, $c} = $restore(this, {});
192299
192286
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192300
192287
  dl = this;
192301
- /* while (true) { */ case 1:
192302
- /* if (!(dl.decodeResultQueue.Empty())) { break; } */ if(!(dl.decodeResultQueue.Empty())) { $s = 2; continue; }
192303
- _r = $recv(dl.queuedChan); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192304
- _r[0];
192305
- $s = 1; continue;
192306
- case 2:
192307
- result = ((dl.decodeResultQueue.Peek()));
192308
- dl.decodeResultQueue.Dequeue();
192309
- $s = -1; return [result.$get(), $ifaceNil];
192288
+ _r = $recv(dl.decodeResultChan); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192289
+ result = _r[0];
192290
+ $s = -1; return [result, $ifaceNil];
192310
192291
  /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.NextDecodedResult, $c: true, $r, _r, dl, result, $s};return $f;
192311
192292
  };
192312
192293
  DecoderLoop.prototype.NextDecodedResult = function() { return this.$val.NextDecodedResult(); };
@@ -192340,29 +192321,26 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192340
192321
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, err, $s};return $f;
192341
192322
  }), []);
192342
192323
  $go((function $b() {
192343
- var {_r, _r$1, decoder$1, err, $s, $r, $c} = $restore(this, {});
192324
+ var {_r, err, $s, $r, $c} = $restore(this, {});
192344
192325
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192345
- _r = $recv(dl.decoderInitialized); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192346
- _r[0];
192347
- /* while (true) { */ case 2:
192348
- /* if (!(dl.started)) { break; } */ if(!(dl.started)) { $s = 3; continue; }
192349
- decoder$1 = dl.decoder;
192350
- _r$1 = dl.outputBuffer(decoder$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192351
- err = _r$1;
192352
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
192353
- /* */ $s = 6; continue;
192354
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
192355
- $r = time.Sleep(new time.Duration(0, 100000000)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192356
- /* */ if (dl.started) { $s = 8; continue; }
192357
- /* */ $s = 9; continue;
192358
- /* if (dl.started) { */ case 8:
192359
- $r = errs.Print("Frame output failed, dropping", err); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192360
- /* } */ case 9:
192361
- /* } */ case 6:
192362
- $s = 2; continue;
192363
- case 3:
192326
+ /* while (true) { */ case 1:
192327
+ /* if (!(dl.started)) { break; } */ if(!(dl.started)) { $s = 2; continue; }
192328
+ _r = dl.outputBuffer(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192329
+ err = _r;
192330
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
192331
+ /* */ $s = 5; continue;
192332
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
192333
+ $r = time.Sleep(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192334
+ /* */ if (dl.started) { $s = 7; continue; }
192335
+ /* */ $s = 8; continue;
192336
+ /* if (dl.started) { */ case 7:
192337
+ $r = errs.Print("Frame output failed, dropping", err); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192338
+ /* } */ case 8:
192339
+ /* } */ case 5:
192340
+ $s = 1; continue;
192341
+ case 2:
192364
192342
  $s = -1; return;
192365
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _r$1, decoder$1, err, $s};return $f;
192343
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, err, $s};return $f;
192366
192344
  }), []);
192367
192345
  };
192368
192346
  DecoderLoop.prototype.Start = function() { return this.$val.Start(); };
@@ -192409,56 +192387,48 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192409
192387
  $24r$2 = _r$5;
192410
192388
  $s = 17; case 17: return $24r$2;
192411
192389
  /* } */ case 15:
192412
- dl.framesQueue.Enqueue(frame$1);
192390
+ $r = $send(dl.framesChan, frame$1); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192413
192391
  $s = -1; return $ifaceNil;
192414
192392
  /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.writeFrame, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, decoder$1, dl, err, frame$1, $s};return $f;
192415
192393
  };
192416
192394
  DecoderLoop.prototype.writeFrame = function() { return this.$val.writeFrame(); };
192417
- DecoderLoop.ptr.prototype.outputBuffer = function(decoder$1) {
192418
- var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, decodeResult, decoder$1, dl, err, frame$1, screenBuffer, $s, $r, $c} = $restore(this, {decoder$1});
192395
+ DecoderLoop.ptr.prototype.outputBuffer = function() {
192396
+ var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s, $r, $c} = $restore(this, {});
192419
192397
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192420
- decoder$1 = [decoder$1];
192421
192398
  dl = [dl];
192422
192399
  screenBuffer = [screenBuffer];
192423
192400
  dl[0] = this;
192424
- _r = dl[0].bufferPool.Acquire(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192425
- _tuple = _r;
192401
+ _r = $recv(dl[0].framesChan); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192402
+ frame$1 = _r[0];
192403
+ _r$1 = dl[0].bufferPool.Acquire(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192404
+ _tuple = _r$1;
192426
192405
  screenBuffer[0] = _tuple[0];
192427
192406
  err = _tuple[1];
192428
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
192429
- /* */ $s = 3; continue;
192430
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
192431
- _r$1 = errs.Errorf("Buffer cannot be acquired: %s", 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; }
192432
- $24r = _r$1;
192433
- $s = 5; case 5: return $24r;
192434
- /* } */ case 3:
192435
- $r = dl[0].stats.NotifyFrameDecodeOutputStarted(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192436
- _r$2 = decoder$1[0].NextOutput(screenBuffer[0]); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192437
- err = _r$2;
192438
- $r = dl[0].stats.NotifyFrameDecodeOutputEnded(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192439
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; }
192440
- /* */ $s = 10; continue;
192441
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9:
192442
- _r$3 = errs.Errorf("Buffer cannot be output: %s", new sliceType([err])); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192443
- $24r$1 = _r$3;
192444
- $s = 12; case 12: return $24r$1;
192445
- /* } */ case 10:
192446
- /* */ if (dl[0].framesQueue.Empty()) { $s = 13; continue; }
192447
- /* */ $s = 14; continue;
192448
- /* if (dl[0].framesQueue.Empty()) { */ case 13:
192449
- _r$4 = errs.Errorf("No frame to pair with decoded result", sliceType.nil); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
192450
- $24r$2 = _r$4;
192451
- $s = 16; case 16: return $24r$2;
192452
- /* } */ case 14:
192453
- frame$1 = ((dl[0].framesQueue.Peek()));
192454
- dl[0].framesQueue.Dequeue();
192455
- /* */ if (dl[0].decodeResultQueue.Size() < 50) { $s = 17; continue; }
192456
- /* */ $s = 18; continue;
192457
- /* if (dl[0].decodeResultQueue.Size() < 50) { */ case 17:
192458
- decodeResult = new DecodeResult.ptr(frame$1.$get(), screenBuffer[0], (function(decoder$1, dl, screenBuffer) { return function $b() {
192407
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
192408
+ /* */ $s = 4; continue;
192409
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
192410
+ _r$2 = errs.Errorf("Buffer cannot be acquired: %s", new sliceType([err])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192411
+ $24r = _r$2;
192412
+ $s = 6; case 6: return $24r;
192413
+ /* } */ case 4:
192414
+ $r = dl[0].stats.NotifyFrameDecodeOutputStarted(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192415
+ _r$3 = dl[0].decoder.NextOutput(screenBuffer[0]); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192416
+ err = _r$3;
192417
+ $r = dl[0].stats.NotifyFrameDecodeOutputEnded(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192418
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
192419
+ /* */ $s = 11; continue;
192420
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
192421
+ _r$4 = errs.Errorf("Buffer cannot get next output: %s", new sliceType([err])); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
192422
+ $24r$1 = _r$4;
192423
+ $s = 13; case 13: return $24r$1;
192424
+ /* } */ case 11:
192425
+ /* */ if (dl[0].decodeResultChan.$buffer.length < 50) { $s = 14; continue; }
192426
+ /* */ $s = 15; continue;
192427
+ /* if (dl[0].decodeResultChan.$buffer.length < 50) { */ case 14:
192428
+ decodeResult = new DecodeResult.ptr(frame$1, screenBuffer[0], (function(dl, screenBuffer) { return function $b() {
192459
192429
  var {_r$5, err$1, $s, $r, $c} = $restore(this, {});
192460
192430
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192461
- $r = decoder$1[0].Release(screenBuffer[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192431
+ $r = dl[0].decoder.Release(screenBuffer[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192462
192432
  _r$5 = dl[0].bufferPool.Release(screenBuffer[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
192463
192433
  err$1 = _r$5;
192464
192434
  /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
@@ -192468,21 +192438,16 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192468
192438
  /* } */ case 4:
192469
192439
  $s = -1; return;
192470
192440
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$5, err$1, $s};return $f;
192471
- }; })(decoder$1, dl, screenBuffer));
192472
- dl[0].decodeResultQueue.Enqueue(decodeResult);
192473
- /* */ if (dl[0].queuedChan.$buffer.length === 0) { $s = 20; continue; }
192474
- /* */ $s = 21; continue;
192475
- /* if (dl[0].queuedChan.$buffer.length === 0) { */ case 20:
192476
- $r = $send(dl[0].queuedChan, $ifaceNil); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192477
- /* } */ case 21:
192478
- $s = 19; continue;
192479
- /* } else { */ case 18:
192480
- $r = log.Println(new sliceType([new $String("Decoded result queue is full, dropping result")])); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192481
- /* } */ case 19:
192441
+ }; })(dl, screenBuffer));
192442
+ $r = $send(dl[0].decodeResultChan, decodeResult); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192443
+ $s = 16; continue;
192444
+ /* } else { */ case 15:
192445
+ dl[0].stats.NotifyThrottledDecodeFrame();
192446
+ /* } */ case 16:
192482
192447
  $s = -1; return $ifaceNil;
192483
- /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.outputBuffer, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, decodeResult, decoder$1, dl, err, frame$1, screenBuffer, $s};return $f;
192448
+ /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.outputBuffer, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s};return $f;
192484
192449
  };
192485
- DecoderLoop.prototype.outputBuffer = function(decoder$1) { return this.$val.outputBuffer(decoder$1); };
192450
+ DecoderLoop.prototype.outputBuffer = function() { return this.$val.outputBuffer(); };
192486
192451
  DecoderLoop.ptr.prototype.ensureDecoder = function(frame$1) {
192487
192452
  var {$24r, _r, _r$1, _tuple, dl, err, frame$1, $s, $r, $c} = $restore(this, {frame$1});
192488
192453
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -192502,11 +192467,6 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192502
192467
  $24r = [$ifaceNil, _r$1];
192503
192468
  $s = 7; case 7: return $24r;
192504
192469
  /* } */ case 5:
192505
- /* */ if (dl.decoderInitialized.$buffer.length === 0) { $s = 8; continue; }
192506
- /* */ $s = 9; continue;
192507
- /* if (dl.decoderInitialized.$buffer.length === 0) { */ case 8:
192508
- $r = $send(dl.decoderInitialized, $ifaceNil); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192509
- /* } */ case 9:
192510
192470
  /* } */ case 2:
192511
192471
  $s = -1; return [dl.decoder, $ifaceNil];
192512
192472
  /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.ensureDecoder, $c: true, $r, $24r, _r, _r$1, _tuple, dl, err, frame$1, $s};return $f;
@@ -192514,22 +192474,16 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192514
192474
  DecoderLoop.prototype.ensureDecoder = function(frame$1) { return this.$val.ensureDecoder(frame$1); };
192515
192475
  NewCollectionLoop = function(frameCollector, stats$1) {
192516
192476
  var frameCollector, stats$1;
192517
- return new CollectionLoop.ptr(frameCollector, stats$1, $clone(linkedlistqueue.New(sliceType.nil), linkedlistqueue.Queue), new $Chan($emptyInterface, 1), false);
192477
+ return new CollectionLoop.ptr(frameCollector, stats$1, new $Chan(ptrType$3, 50), false);
192518
192478
  };
192519
192479
  $pkg.NewCollectionLoop = NewCollectionLoop;
192520
192480
  CollectionLoop.ptr.prototype.NextFrame = function() {
192521
192481
  var {_r, cl, frame$1, $s, $r, $c} = $restore(this, {});
192522
192482
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192523
192483
  cl = this;
192524
- /* while (true) { */ case 1:
192525
- /* if (!(cl.framesQueue.Empty())) { break; } */ if(!(cl.framesQueue.Empty())) { $s = 2; continue; }
192526
- _r = $recv(cl.queuedChan); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192527
- _r[0];
192528
- $s = 1; continue;
192529
- case 2:
192530
- frame$1 = ((cl.framesQueue.Peek()));
192531
- cl.framesQueue.Dequeue();
192532
- $s = -1; return [frame$1.$get(), $ifaceNil];
192484
+ _r = $recv(cl.framesChan); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192485
+ frame$1 = _r[0];
192486
+ $s = -1; return [frame$1, $ifaceNil];
192533
192487
  /* */ } return; } var $f = {$blk: CollectionLoop.ptr.prototype.NextFrame, $c: true, $r, _r, cl, frame$1, $s};return $f;
192534
192488
  };
192535
192489
  CollectionLoop.prototype.NextFrame = function() { return this.$val.NextFrame(); };
@@ -192560,18 +192514,13 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192560
192514
  /* } */ case 8:
192561
192515
  /* continue; */ $s = 1; continue;
192562
192516
  /* } */ case 5:
192563
- /* */ if (cl.framesQueue.Size() < 50) { $s = 10; continue; }
192517
+ /* */ if (cl.framesChan.$buffer.length < 50) { $s = 10; continue; }
192564
192518
  /* */ $s = 11; continue;
192565
- /* if (cl.framesQueue.Size() < 50) { */ case 10:
192566
- cl.framesQueue.Enqueue(frame$1);
192567
- /* */ if (cl.queuedChan.$buffer.length === 0) { $s = 13; continue; }
192568
- /* */ $s = 14; continue;
192569
- /* if (cl.queuedChan.$buffer.length === 0) { */ case 13:
192570
- $r = $send(cl.queuedChan, $ifaceNil); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192571
- /* } */ case 14:
192519
+ /* if (cl.framesChan.$buffer.length < 50) { */ case 10:
192520
+ $r = $send(cl.framesChan, frame$1); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192572
192521
  $s = 12; continue;
192573
192522
  /* } else { */ case 11:
192574
- $r = log.Println(new sliceType([new $String("Frames queue is full, dropping frame")])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192523
+ cl.stats.NotifyThrottledCollectionFrame();
192575
192524
  /* } */ case 12:
192576
192525
  $s = 1; continue;
192577
192526
  case 2:
@@ -192586,29 +192535,27 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
192586
192535
  cl.started = false;
192587
192536
  };
192588
192537
  CollectionLoop.prototype.Stop = function() { return this.$val.Stop(); };
192589
- ptrType$4.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "renderBuffer", name: "renderBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "waitForRenderTime", name: "waitForRenderTime", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([ptrType$2], [], false)}];
192590
- ptrType$6.methods = [{prop: "NextDecodedResult", name: "NextDecodedResult", pkg: "", typ: $funcType([], [ptrType$5, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "outputBuffer", name: "outputBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([decoder.Decoder], [$error], false)}, {prop: "ensureDecoder", name: "ensureDecoder", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([ptrType$2], [decoder.Decoder, $error], false)}];
192591
- ptrType$7.methods = [{prop: "NextFrame", name: "NextFrame", pkg: "", typ: $funcType([], [ptrType$2, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}];
192538
+ ptrType$5.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "renderBuffer", name: "renderBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "waitForRenderTime", name: "waitForRenderTime", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([ptrType$3], [], false)}];
192539
+ ptrType$6.methods = [{prop: "NextDecodedResult", name: "NextDecodedResult", pkg: "", typ: $funcType([], [ptrType$2, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "outputBuffer", name: "outputBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "ensureDecoder", name: "ensureDecoder", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([ptrType$3], [decoder.Decoder, $error], false)}];
192540
+ ptrType$7.methods = [{prop: "NextFrame", name: "NextFrame", pkg: "", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}];
192592
192541
  RenderingLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "decodeResultProvider", name: "decodeResultProvider", embedded: false, exported: false, typ: DecodeResultProvider, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderingInProgress", name: "renderingInProgress", embedded: false, exported: false, typ: $Bool, tag: ""}]);
192593
- DecodeResultProvider.init([{prop: "NextDecodedResult", name: "NextDecodedResult", pkg: "", typ: $funcType([], [ptrType$5, $error], false)}]);
192594
- DecodeResult.init("", [{prop: "Frame", name: "Frame", embedded: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Buffer", name: "Buffer", embedded: false, exported: true, typ: screen.Buffer, tag: ""}, {prop: "Release", name: "Release", embedded: false, exported: true, typ: funcType, tag: ""}]);
192595
- DecoderLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameProvider", name: "frameProvider", embedded: false, exported: false, typ: FrameProvider, tag: ""}, {prop: "bufferPool", name: "bufferPool", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "decoderInitialized", name: "decoderInitialized", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "decodeResultQueue", name: "decodeResultQueue", embedded: false, exported: false, typ: linkedlistqueue.Queue, tag: ""}, {prop: "framesQueue", name: "framesQueue", embedded: false, exported: false, typ: linkedlistqueue.Queue, tag: ""}, {prop: "queuedChan", name: "queuedChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "decoder", name: "decoder", embedded: false, exported: false, typ: decoder.Decoder, tag: ""}]);
192596
- FrameProvider.init([{prop: "NextFrame", name: "NextFrame", pkg: "", typ: $funcType([], [ptrType$2, $error], false)}]);
192597
- CollectionLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameCollector", name: "frameCollector", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "framesQueue", name: "framesQueue", embedded: false, exported: false, typ: linkedlistqueue.Queue, tag: ""}, {prop: "queuedChan", name: "queuedChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}]);
192542
+ DecodeResultProvider.init([{prop: "NextDecodedResult", name: "NextDecodedResult", pkg: "", typ: $funcType([], [ptrType$2, $error], false)}]);
192543
+ DecodeResult.init("", [{prop: "Frame", name: "Frame", embedded: false, exported: true, typ: ptrType$3, tag: ""}, {prop: "Buffer", name: "Buffer", embedded: false, exported: true, typ: screen.Buffer, tag: ""}, {prop: "Release", name: "Release", embedded: false, exported: true, typ: funcType, tag: ""}]);
192544
+ DecoderLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameProvider", name: "frameProvider", embedded: false, exported: false, typ: FrameProvider, tag: ""}, {prop: "bufferPool", name: "bufferPool", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "decodeResultChan", name: "decodeResultChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "framesChan", name: "framesChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "decoder", name: "decoder", embedded: false, exported: false, typ: decoder.Decoder, tag: ""}]);
192545
+ FrameProvider.init([{prop: "NextFrame", name: "NextFrame", pkg: "", typ: $funcType([], [ptrType$3, $error], false)}]);
192546
+ CollectionLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameCollector", name: "frameCollector", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "framesChan", name: "framesChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}]);
192598
192547
  $init = function() {
192599
192548
  $pkg.$init = function() {};
192600
192549
  /* */ 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:
192601
192550
  $r = decoder.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192602
192551
  $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192603
- $r = linkedlistqueue.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192604
- $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192605
- $r = netframe.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192606
- $r = screenbuffer.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192607
- $r = stats.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192608
- $r = screen.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192609
- $r = image.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192610
- $r = log.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192611
- $r = time.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192552
+ $r = frame.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192553
+ $r = netframe.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192554
+ $r = screenbuffer.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192555
+ $r = stats.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192556
+ $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192557
+ $r = image.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192558
+ $r = time.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192612
192559
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
192613
192560
  };
192614
192561
  $pkg.$init = $init;
@@ -192944,7 +192891,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
192944
192891
  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});
192945
192892
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192946
192893
  _r = stats.NewStats(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
192947
- $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, 0), new $Chan(mouse.Event, 0), new $Chan(size.Event, 0), new $Chan(focus.Event, 0), new $Chan($emptyInterface, 0));
192894
+ $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));
192948
192895
  $s = 2; case 2: return $24r;
192949
192896
  /* */ } return; } var $f = {$blk: NewScreenWindow, $c: true, $r, $24r, _r, clientID, clientSecret, metadataDriver, metadataHost, processInfoManager, screenDriver, screenHost, screenID, screenSize, secure, timeoutDuration, $s};return $f;
192950
192897
  };
@@ -193086,6 +193033,30 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193086
193033
  w = [w];
193087
193034
  windowChannel = [windowChannel];
193088
193035
  w[0] = this;
193036
+ $go((function(w, windowChannel) { return function $b() {
193037
+ var {_1, _2, _r, _r$1, _tuple, _tuple$1, close, point, resChan, $s, $r, $c} = $restore(this, {});
193038
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193039
+ _r = clientscreen.ScreenResolutionChan(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193040
+ _tuple = _r;
193041
+ resChan = _tuple[0];
193042
+ close = _tuple[1];
193043
+ _2 = resChan;
193044
+ /* while (true) { */ case 2:
193045
+ _r$1 = $recv(_2); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193046
+ _tuple$1 = _r$1;
193047
+ point = _tuple$1[0];
193048
+ _1 = _tuple$1[1];
193049
+ if (!_1) {
193050
+ /* break; */ $s = 3; continue;
193051
+ }
193052
+ $r = $send(w[0].sizeEventChan, $clone($clone(new size.Event.ptr(point.X, point.Y, 0, 0, 0, 0), size.Event), size.Event)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193053
+ w[0].stats.SetScreenResolution(point);
193054
+ $s = 2; continue;
193055
+ case 3:
193056
+ $r = close(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193057
+ $s = -1; return;
193058
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _1, _2, _r, _r$1, _tuple, _tuple$1, close, point, resChan, $s};return $f;
193059
+ }; })(w, windowChannel), []);
193089
193060
  windowChannel[0] = new $Chan($error, 1);
193090
193061
  $go((function(w, windowChannel) { return function $b() {
193091
193062
  var {$s, $r, $c} = $restore(this, {});
@@ -193162,30 +193133,6 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193162
193133
  $s = -1; return;
193163
193134
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, _ref, e, e$1, e$2, e$3, e$4, $s};return $f;
193164
193135
  }; })(w, windowChannel), []);
193165
- $go((function(w, windowChannel) { return function $b() {
193166
- var {_1, _2, _r$1, _r$2, _tuple, _tuple$1, close, point, resChan, $s, $r, $c} = $restore(this, {});
193167
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193168
- _r$1 = clientscreen.ScreenResolutionChan(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193169
- _tuple = _r$1;
193170
- resChan = _tuple[0];
193171
- close = _tuple[1];
193172
- _2 = resChan;
193173
- /* while (true) { */ case 2:
193174
- _r$2 = $recv(_2); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193175
- _tuple$1 = _r$2;
193176
- point = _tuple$1[0];
193177
- _1 = _tuple$1[1];
193178
- if (!_1) {
193179
- /* break; */ $s = 3; continue;
193180
- }
193181
- $r = $send(w[0].sizeEventChan, $clone($clone(new size.Event.ptr(point.X, point.Y, 0, 0, 0, 0), size.Event), size.Event)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193182
- w[0].stats.SetScreenResolution(point);
193183
- $s = 2; continue;
193184
- case 3:
193185
- $r = close(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193186
- $s = -1; return;
193187
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _1, _2, _r$1, _r$2, _tuple, _tuple$1, close, point, resChan, $s};return $f;
193188
- }; })(w, windowChannel), []);
193189
193136
  $s = -1; return err;
193190
193137
  /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.startWindow, $c: true, $r, _r, err, w, windowChannel, $s};return $f;
193191
193138
  };
@@ -193302,7 +193249,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193302
193249
  /* */ if (!($interfaceIsEqual(netStreamErr, $ifaceNil))) { $s = 7; continue; }
193303
193250
  /* */ $s = 8; continue;
193304
193251
  /* if (!($interfaceIsEqual(netStreamErr, $ifaceNil))) { */ case 7:
193305
- $r = errs.Print("Cannot close metadata connection", netStreamErr); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193252
+ $r = errs.Print("Cannot close metadata connection after init", netStreamErr); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193306
193253
  /* } */ case 8:
193307
193254
  $s = -1; return err;
193308
193255
  /* } */ case 5:
@@ -193316,7 +193263,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193316
193263
  /* */ if (!($interfaceIsEqual(metadataServerErr, $ifaceNil))) { $s = 14; continue; }
193317
193264
  /* */ $s = 15; continue;
193318
193265
  /* if (!($interfaceIsEqual(metadataServerErr, $ifaceNil))) { */ case 14:
193319
- $r = errs.Print("Cannot close metadata connection", metadataServerErr); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193266
+ $r = errs.Print("Cannot send stats connection", metadataServerErr); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193320
193267
  /* } */ case 15:
193321
193268
  $s = -1; return err;
193322
193269
  /* } */ case 12:
@@ -193376,70 +193323,68 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
193376
193323
  };
193377
193324
  ScreenWindow.prototype.createScreenSender = function() { return this.$val.createScreenSender(); };
193378
193325
  ScreenWindow.ptr.prototype.startTimestampSyncing = function() {
193379
- var {_r, _r$1, _r$2, _tuple, err, latencyEnd, latencyNano, latencyStart, serverTimestamp, serverTimestampAhead, serverTimestampData, w, x, x$1, x$2, $s, $r, $c} = $restore(this, {});
193326
+ var {_r, _r$1, _r$2, _tuple, err, latencyEnd, latencyStart, serverLatency, serverTimestamp, serverTimestampAhead, serverTimestampData, w, x, $s, $r, $c} = $restore(this, {});
193380
193327
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193381
193328
  w = this;
193382
- $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193383
- /* while (true) { */ case 2:
193384
- /* if (!(!w.closed)) { break; } */ if(!(!w.closed)) { $s = 3; continue; }
193385
- /* */ if (w.metadataServer === ptrType$2.nil) { $s = 4; continue; }
193386
- /* */ $s = 5; continue;
193387
- /* if (w.metadataServer === ptrType$2.nil) { */ case 4:
193388
- $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193389
- /* continue; */ $s = 2; continue;
193390
- /* } */ case 5:
193391
- _r = time.Now(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193329
+ /* while (true) { */ case 1:
193330
+ /* if (!(!w.closed)) { break; } */ if(!(!w.closed)) { $s = 2; continue; }
193331
+ /* */ if (w.metadataServer === ptrType$2.nil) { $s = 3; continue; }
193332
+ /* */ $s = 4; continue;
193333
+ /* if (w.metadataServer === ptrType$2.nil) { */ case 3:
193334
+ $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; }
193335
+ /* continue; */ $s = 1; continue;
193336
+ /* } */ case 4:
193337
+ _r = time.Now(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193392
193338
  latencyStart = $clone(_r, time.Time);
193393
- _r$1 = w.createMetadataResponsiveSender().SendServerWaitResponse(46, new sliceType$2([])); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
193339
+ _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; }
193394
193340
  _tuple = _r$1;
193395
193341
  serverTimestampData = _tuple[0];
193396
193342
  err = _tuple[1];
193397
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; }
193398
- /* */ $s = 10; continue;
193399
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9:
193400
- $r = errs.Print("Timestamp sync", err); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193401
- $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193402
- /* continue; */ $s = 2; continue;
193403
- /* } */ case 10:
193404
- serverTimestamp = $clone(binary.BigEndian, binary.bigEndian).Uint64(serverTimestampData);
193405
- _r$2 = time.Now(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193343
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
193344
+ /* */ $s = 9; continue;
193345
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
193346
+ $r = errs.Print("Timestamp sync", err); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193347
+ $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193348
+ /* continue; */ $s = 1; continue;
193349
+ /* } */ case 9:
193350
+ serverTimestamp = $clone(time.Unix(new $Int64(0, 0), ((x = $clone(binary.BigEndian, binary.bigEndian).Uint64(serverTimestampData), new $Int64(x.$high, x.$low)))), time.Time);
193351
+ _r$2 = time.Now(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
193406
193352
  latencyEnd = $clone(_r$2, time.Time);
193407
- latencyNano = $div64($clone(latencyEnd, time.Time).Sub($clone(latencyStart, time.Time)).Nanoseconds(), new $Int64(0, 2), false);
193408
- serverTimestampAhead = (x = (x$1 = (new $Int64(serverTimestamp.$high, serverTimestamp.$low)), new $Int64(x$1.$high + latencyNano.$high, x$1.$low + latencyNano.$low)), x$2 = $clone(latencyEnd, time.Time).UnixNano(), new $Int64(x.$high - x$2.$high, x.$low - x$2.$low));
193409
- w.stats.SetLatency(latencyNano);
193353
+ serverLatency = $div64($clone(latencyEnd, time.Time).Sub($clone(latencyStart, time.Time)), new time.Duration(0, 2), false);
193354
+ serverTimestampAhead = $clone($clone(serverTimestamp, time.Time).Add(serverLatency), time.Time).Sub($clone(latencyEnd, time.Time));
193355
+ w.stats.SetLatency(serverLatency);
193410
193356
  w.stats.UpdateServerTimestampAhead(serverTimestampAhead);
193411
- $r = time.Sleep(new time.Duration(6, 4230196224)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193412
- $s = 2; continue;
193413
- case 3:
193357
+ $r = time.Sleep(new time.Duration(6, 4230196224)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193358
+ $s = 1; continue;
193359
+ case 2:
193414
193360
  $s = -1; return;
193415
- /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.startTimestampSyncing, $c: true, $r, _r, _r$1, _r$2, _tuple, err, latencyEnd, latencyNano, latencyStart, serverTimestamp, serverTimestampAhead, serverTimestampData, w, x, x$1, x$2, $s};return $f;
193361
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.startTimestampSyncing, $c: true, $r, _r, _r$1, _r$2, _tuple, err, latencyEnd, latencyStart, serverLatency, serverTimestamp, serverTimestampAhead, serverTimestampData, w, x, $s};return $f;
193416
193362
  };
193417
193363
  ScreenWindow.prototype.startTimestampSyncing = function() { return this.$val.startTimestampSyncing(); };
193418
193364
  ScreenWindow.ptr.prototype.startStatsSyncing = function() {
193419
193365
  var {_r, err, w, $s, $r, $c} = $restore(this, {});
193420
193366
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
193421
193367
  w = this;
193422
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193423
- /* while (true) { */ case 2:
193424
- /* if (!(!w.closed)) { break; } */ if(!(!w.closed)) { $s = 3; continue; }
193425
- /* */ if (w.metadataServer === ptrType$2.nil) { $s = 4; continue; }
193426
- /* */ $s = 5; continue;
193427
- /* if (w.metadataServer === ptrType$2.nil) { */ case 4:
193428
- $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193429
- /* continue; */ $s = 2; continue;
193430
- /* } */ case 5:
193431
- _r = w.sendStats(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193368
+ /* while (true) { */ case 1:
193369
+ /* if (!(!w.closed)) { break; } */ if(!(!w.closed)) { $s = 2; continue; }
193370
+ /* */ if (w.metadataServer === ptrType$2.nil) { $s = 3; continue; }
193371
+ /* */ $s = 4; continue;
193372
+ /* if (w.metadataServer === ptrType$2.nil) { */ case 3:
193373
+ $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; }
193374
+ /* continue; */ $s = 1; continue;
193375
+ /* } */ case 4:
193376
+ _r = w.sendStats(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
193432
193377
  err = _r;
193433
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
193434
- /* */ $s = 9; continue;
193435
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
193436
- $r = errs.Print("Stats sync", err); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193437
- $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193438
- /* continue; */ $s = 2; continue;
193439
- /* } */ case 9:
193440
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193441
- $s = 2; continue;
193442
- case 3:
193378
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
193379
+ /* */ $s = 8; continue;
193380
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
193381
+ $r = errs.Print("Stats sync", err); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193382
+ $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193383
+ /* continue; */ $s = 1; continue;
193384
+ /* } */ case 8:
193385
+ $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
193386
+ $s = 1; continue;
193387
+ case 2:
193443
193388
  $s = -1; return;
193444
193389
  /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.startStatsSyncing, $c: true, $r, _r, err, w, $s};return $f;
193445
193390
  };