@supraio/client-daemon-js 1.1.0-master.559 → 1.1.0-master.569

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.
@@ -191984,25 +191984,21 @@ $packages["github.com/supraio/client-daemon/pkg/input"] = (function() {
191984
191984
  };
191985
191985
  MouseHandler.prototype.flushMoveEvents = function() { return this.$val.flushMoveEvents(); };
191986
191986
  MouseHandler.ptr.prototype.encodeMouseEvent = function(ev) {
191987
- var {_r, ev, h, mouseButtonData, mouseDirectionData, mouseModifierData, mouseXData, mouseYData, multiplier, x, y, $s, $r, $c} = $restore(this, {ev});
191987
+ var {_r, ev, eventData, h, multiplier, x, y, $s, $r, $c} = $restore(this, {ev});
191988
191988
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191989
191989
  h = this;
191990
- mouseButtonData = $makeSlice(sliceType$1, 4);
191991
- $clone(binary.BigEndian, binary.bigEndian).PutUint32(mouseButtonData, ((ev.Button >>> 0)));
191992
- mouseDirectionData = $makeSlice(sliceType$1, 2);
191993
- $clone(binary.BigEndian, binary.bigEndian).PutUint16(mouseDirectionData, ((ev.Direction << 16 >>> 16)));
191994
- mouseModifierData = $makeSlice(sliceType$1, 4);
191995
- $clone(binary.BigEndian, binary.bigEndian).PutUint32(mouseModifierData, ((ev.Modifiers >>> 0)));
191996
191990
  _r = h.getEventPointMultiplier(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191997
191991
  multiplier = $clone(_r, geom.Point);
191998
191992
  x = $fround((ev.X) * (multiplier.X));
191999
191993
  y = $fround((ev.Y) * (multiplier.Y));
192000
- mouseXData = $makeSlice(sliceType$1, 4);
192001
- $clone(binary.BigEndian, binary.bigEndian).PutUint32(mouseXData, coordinateToUint32(x));
192002
- mouseYData = $makeSlice(sliceType$1, 4);
192003
- $clone(binary.BigEndian, binary.bigEndian).PutUint32(mouseYData, coordinateToUint32(y));
192004
- $s = -1; return $appendSlice(mouseButtonData, $appendSlice(mouseDirectionData, $appendSlice(mouseModifierData, $appendSlice(mouseXData, mouseYData))));
192005
- /* */ } return; } var $f = {$blk: MouseHandler.ptr.prototype.encodeMouseEvent, $c: true, $r, _r, ev, h, mouseButtonData, mouseDirectionData, mouseModifierData, mouseXData, mouseYData, multiplier, x, y, $s};return $f;
191994
+ eventData = $makeSlice(sliceType$1, 0, 18);
191995
+ eventData = $clone(binary.BigEndian, binary.bigEndian).AppendUint32(eventData, ((ev.Button >>> 0)));
191996
+ eventData = $clone(binary.BigEndian, binary.bigEndian).AppendUint16(eventData, ((ev.Direction << 16 >>> 16)));
191997
+ eventData = $clone(binary.BigEndian, binary.bigEndian).AppendUint32(eventData, ((ev.Modifiers >>> 0)));
191998
+ eventData = $clone(binary.BigEndian, binary.bigEndian).AppendUint32(eventData, coordinateToUint32(x));
191999
+ eventData = $clone(binary.BigEndian, binary.bigEndian).AppendUint32(eventData, coordinateToUint32(y));
192000
+ $s = -1; return eventData;
192001
+ /* */ } return; } var $f = {$blk: MouseHandler.ptr.prototype.encodeMouseEvent, $c: true, $r, _r, ev, eventData, h, multiplier, x, y, $s};return $f;
192006
192002
  };
192007
192003
  MouseHandler.prototype.encodeMouseEvent = function(ev) { return this.$val.encodeMouseEvent(ev); };
192008
192004
  coordinateToUint32 = function(value) {
@@ -195078,7 +195074,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/screenbuffer"] = (functio
195078
195074
  return $pkg;
195079
195075
  })();
195080
195076
  $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195081
- var $pkg = {}, $init, image, log, math, sync, time, Stopwatch, Frame, Stats, Metrics, EncodingPreferences, InputMetrics, ClientStats, ptrType, sliceType, ptrType$1, ptrType$2, sliceType$1, structType, mapType, ptrType$3, ptrType$4, ptrType$5, chanType, mapType$1, NewStopwatch, NewStats, NewMetrics, average, variance;
195077
+ var $pkg = {}, $init, image, log, math, sync, time, Stopwatch, Frame, Stats, Metrics, EncodingPreferences, InputMetrics, ClientStats, ptrType, sliceType, ptrType$1, ptrType$2, sliceType$1, structType, ptrType$3, mapType, ptrType$4, ptrType$5, chanType, mapType$1, NewStopwatch, NewStats, NewMetrics, average, variance;
195082
195078
  image = $packages["image"];
195083
195079
  log = $packages["log"];
195084
195080
  math = $packages["math"];
@@ -195095,16 +195091,17 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195095
195091
  this.groups = groups_;
195096
195092
  });
195097
195093
  Frame = $pkg.Frame = $newType(8, $kindInterface, "stats.Frame", true, "github.com/supraio/client-daemon/pkg/stats", true, null);
195098
- Stats = $pkg.Stats = $newType(0, $kindStruct, "stats.Stats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(stopped_, lastFrameAt_, lastScreenPingAt_, stopwatch_, metrics_, done_, calcStopped_, latency_, serverTimestampAhead_, serverTimestampAheadBuffer_, currentFramesCount_, lastFrameRate_, lastActiveFrameRate_, 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_, encodingPreferences_) {
195094
+ Stats = $pkg.Stats = $newType(0, $kindStruct, "stats.Stats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(mu_, lastFrameAt_, lastScreenPingAt_, stopwatch_, metrics_, done_, calcStopped_, stopOnce_, latency_, serverTimestampAhead_, serverTimestampAheadBuffer_, currentFramesCount_, lastFrameRate_, lastActiveFrameRate_, 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_, encodingPreferences_) {
195099
195095
  this.$val = this;
195100
195096
  if (arguments.length === 0) {
195101
- this.stopped = false;
195097
+ this.mu = new sync.Mutex.ptr(0, 0);
195102
195098
  this.lastFrameAt = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
195103
195099
  this.lastScreenPingAt = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
195104
195100
  this.stopwatch = ptrType$1.nil;
195105
195101
  this.metrics = ptrType$2.nil;
195106
195102
  this.done = $chanNil;
195107
195103
  this.calcStopped = $chanNil;
195104
+ this.stopOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0));
195108
195105
  this.latency = new time.Duration(0, 0);
195109
195106
  this.serverTimestampAhead = new time.Duration(0, 0);
195110
195107
  this.serverTimestampAheadBuffer = sliceType$1.nil;
@@ -195144,13 +195141,14 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195144
195141
  this.encodingPreferences = new EncodingPreferences.ptr(0, 0, "", "", "");
195145
195142
  return;
195146
195143
  }
195147
- this.stopped = stopped_;
195144
+ this.mu = mu_;
195148
195145
  this.lastFrameAt = lastFrameAt_;
195149
195146
  this.lastScreenPingAt = lastScreenPingAt_;
195150
195147
  this.stopwatch = stopwatch_;
195151
195148
  this.metrics = metrics_;
195152
195149
  this.done = done_;
195153
195150
  this.calcStopped = calcStopped_;
195151
+ this.stopOnce = stopOnce_;
195154
195152
  this.latency = latency_;
195155
195153
  this.serverTimestampAhead = serverTimestampAhead_;
195156
195154
  this.serverTimestampAheadBuffer = serverTimestampAheadBuffer_;
@@ -195321,8 +195319,8 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195321
195319
  ptrType$2 = $ptrType(Metrics);
195322
195320
  sliceType$1 = $sliceType(time.Duration);
195323
195321
  structType = $structType("", []);
195324
- mapType = $mapType($String, time.Time);
195325
195322
  ptrType$3 = $ptrType(ClientStats);
195323
+ mapType = $mapType($String, time.Time);
195326
195324
  ptrType$4 = $ptrType(image.Point);
195327
195325
  ptrType$5 = $ptrType(Stats);
195328
195326
  chanType = $chanType(structType, false, false);
@@ -195373,48 +195371,58 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195373
195371
  };
195374
195372
  Stopwatch.prototype.Stop = function(group) { return this.$val.Stop(group); };
195375
195373
  NewStats = function() {
195376
- var {_r, _r$1, _r$2, s, $s, $r, $c} = $restore(this, {});
195374
+ var {_r, now, s, $s, $r, $c} = $restore(this, {});
195377
195375
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195378
195376
  _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195379
- _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; }
195380
- _r$2 = time.Now(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195381
- s = new Stats.ptr(false, $clone(_r, time.Time), $clone(_r$1, time.Time), NewStopwatch(), NewMetrics(), new $Chan(structType, 0), new $Chan(structType, 0), new time.Duration(0, 0), new time.Duration(0, 0), sliceType$1.nil, 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), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, 0, 0, $clone(_r$2, time.Time), new EncodingPreferences.ptr(0, 0, "", "", ""));
195377
+ now = $clone(_r, time.Time);
195378
+ s = new Stats.ptr(new sync.Mutex.ptr(0, 0), $clone(now, time.Time), $clone(now, time.Time), NewStopwatch(), NewMetrics(), new $Chan(structType, 0), new $Chan(structType, 0), new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), new time.Duration(0, 0), new time.Duration(0, 0), sliceType$1.nil, 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), 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(now, time.Time), new EncodingPreferences.ptr(0, 0, "", "", ""));
195382
195379
  $go($methodVal(s, "startCalculations"), []);
195383
195380
  $s = -1; return s;
195384
- /* */ } return; } var $f = {$blk: NewStats, $c: true, $r, _r, _r$1, _r$2, s, $s};return $f;
195381
+ /* */ } return; } var $f = {$blk: NewStats, $c: true, $r, _r, now, s, $s};return $f;
195385
195382
  };
195386
195383
  $pkg.NewStats = NewStats;
195387
195384
  Stats.ptr.prototype.Stop = function() {
195388
- var {_r, _selection, s, $s, $r, $c} = $restore(this, {});
195385
+ var {_r, s, $s, $r, $c} = $restore(this, {});
195389
195386
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195390
- s = this;
195391
- s.stopped = true;
195392
- _selection = $select([[s.done], []]);
195393
- if (_selection[0] === 0) {
195394
- } else if (_selection[0] === 1) {
195395
- $close(s.done);
195396
- }
195397
- _r = $recv(s.calcStopped); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195387
+ s = [s];
195388
+ s[0] = this;
195389
+ $r = s[0].stopOnce.Do((function(s) { return function() {
195390
+ $close(s[0].done);
195391
+ }; })(s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195392
+ _r = $recv(s[0].calcStopped); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195398
195393
  _r[0];
195399
195394
  $s = -1; return;
195400
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.Stop, $c: true, $r, _r, _selection, s, $s};return $f;
195395
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.Stop, $c: true, $r, _r, s, $s};return $f;
195401
195396
  };
195402
195397
  Stats.prototype.Stop = function() { return this.$val.Stop(); };
195403
195398
  Stats.ptr.prototype.GetClientStats = function() {
195404
- var s;
195399
+ var {$24r, s, $s, $deferred, $r, $c} = $restore(this, {});
195400
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195405
195401
  s = this;
195406
- 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, $clone(s.encodingPreferences, EncodingPreferences), new InputMetrics.ptr(0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), 0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), 0, new $Int64(0, 0)));
195402
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195403
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195404
+ $24r = 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, $clone(s.encodingPreferences, EncodingPreferences), new InputMetrics.ptr(0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), 0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), 0, new $Int64(0, 0)));
195405
+ $s = 2; case 2: return $24r;
195406
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$3.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.GetClientStats, $c: true, $r, $24r, s, $s, $deferred};return $f; } }
195407
195407
  };
195408
195408
  Stats.prototype.GetClientStats = function() { return this.$val.GetClientStats(); };
195409
195409
  Stats.ptr.prototype.SetLatency = function(latency) {
195410
- var latency, s;
195410
+ var {latency, s, $s, $deferred, $r, $c} = $restore(this, {latency});
195411
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195411
195412
  s = this;
195413
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195414
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195412
195415
  s.latency = latency;
195416
+ $s = -1; return;
195417
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.SetLatency, $c: true, $r, latency, s, $s, $deferred};return $f; } }
195413
195418
  };
195414
195419
  Stats.prototype.SetLatency = function(latency) { return this.$val.SetLatency(latency); };
195415
195420
  Stats.ptr.prototype.UpdateServerTimestampAhead = function(serverAhead) {
195416
- var _i, _ref, ahead, s, serverAhead, totalAheadNano, x, x$1;
195421
+ var {_i, _ref, ahead, s, serverAhead, totalAheadNano, x, x$1, $s, $deferred, $r, $c} = $restore(this, {serverAhead});
195422
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195417
195423
  s = this;
195424
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195425
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195418
195426
  s.serverTimestampAheadBuffer = $append(s.serverTimestampAheadBuffer, serverAhead);
195419
195427
  if (s.serverTimestampAheadBuffer.$length > 20) {
195420
195428
  s.serverTimestampAheadBuffer = $subslice(s.serverTimestampAheadBuffer, 1);
@@ -195429,40 +195437,52 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195429
195437
  _i++;
195430
195438
  }
195431
195439
  s.serverTimestampAhead = ((x$1 = $div64(totalAheadNano, (new $Int64(0, s.serverTimestampAheadBuffer.$length)), false), new time.Duration(x$1.$high, x$1.$low)));
195440
+ $s = -1; return;
195441
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.UpdateServerTimestampAhead, $c: true, $r, _i, _ref, ahead, s, serverAhead, totalAheadNano, x, x$1, $s, $deferred};return $f; } }
195432
195442
  };
195433
195443
  Stats.prototype.UpdateServerTimestampAhead = function(serverAhead) { return this.$val.UpdateServerTimestampAhead(serverAhead); };
195434
195444
  Stats.ptr.prototype.SetScreenResolution = function(res) {
195435
- var res, s;
195445
+ var {res, s, $s, $deferred, $r, $c} = $restore(this, {res});
195446
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195436
195447
  s = this;
195448
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195449
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195437
195450
  s.screenResolutionWidth = ((res.X >>> 0));
195438
195451
  s.screenResolutionHeight = ((res.Y >>> 0));
195452
+ $s = -1; return;
195453
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.SetScreenResolution, $c: true, $r, res, s, $s, $deferred};return $f; } }
195439
195454
  };
195440
195455
  Stats.prototype.SetScreenResolution = function(res) { return this.$val.SetScreenResolution(res); };
195441
195456
  Stats.ptr.prototype.NotifyFrame = function(frame) {
195442
- var {_r, _r$1, _r$2, _r$3, frame, frameLatency, s, $s, $r, $c} = $restore(this, {frame});
195457
+ var {_r, _r$1, _r$2, frame, frameLatency, now, s, serverTime, $s, $r, $c} = $restore(this, {frame});
195443
195458
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195444
195459
  s = this;
195445
195460
  _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195446
- time.Time.copy(s.lastFrameAt, _r);
195461
+ now = $clone(_r, time.Time);
195462
+ $r = s.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195463
+ time.Time.copy(s.lastFrameAt, now);
195447
195464
  s.currentFramesCount = s.currentFramesCount + (1) >> 0;
195448
- _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; }
195449
- _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; }
195450
- _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; }
195451
- frameLatency = _r$3;
195452
- $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; }
195453
- $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; }
195465
+ serverTime = $clone($clone(now, time.Time).Add(s.serverTimestampAhead), time.Time);
195466
+ $r = s.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195467
+ _r$1 = frame.GetTimestamp(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195468
+ _r$2 = $clone(serverTime, time.Time).Sub($clone(_r$1, time.Time)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195469
+ frameLatency = _r$2;
195470
+ $r = s.metrics.AddSample("frame_latency", new sliceType$1([frameLatency])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195471
+ $r = s.metrics.AddSample("frame_latency_long_term", new sliceType$1([frameLatency])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195454
195472
  $s = -1; return;
195455
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrame, $c: true, $r, _r, _r$1, _r$2, _r$3, frame, frameLatency, s, $s};return $f;
195473
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyFrame, $c: true, $r, _r, _r$1, _r$2, frame, frameLatency, now, s, serverTime, $s};return $f;
195456
195474
  };
195457
195475
  Stats.prototype.NotifyFrame = function(frame) { return this.$val.NotifyFrame(frame); };
195458
195476
  Stats.ptr.prototype.NotifyScreenPing = function() {
195459
- var {_r, s, $s, $r, $c} = $restore(this, {});
195460
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195477
+ var {_r, s, $s, $deferred, $r, $c} = $restore(this, {});
195478
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195461
195479
  s = this;
195462
- _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195480
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195481
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195482
+ _r = time.Now(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195463
195483
  time.Time.copy(s.lastScreenPingAt, _r);
195464
195484
  $s = -1; return;
195465
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyScreenPing, $c: true, $r, _r, s, $s};return $f;
195485
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.NotifyScreenPing, $c: true, $r, _r, s, $s, $deferred};return $f; } }
195466
195486
  };
195467
195487
  Stats.prototype.NotifyScreenPing = function() { return this.$val.NotifyScreenPing(); };
195468
195488
  Stats.ptr.prototype.NotifyFrameCollectionStarted = function() {
@@ -195496,9 +195516,14 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195496
195516
  };
195497
195517
  Stats.prototype.NotifyFrameCollectionDuration = function(dur) { return this.$val.NotifyFrameCollectionDuration(dur); };
195498
195518
  Stats.ptr.prototype.NotifyThrottledCollectionFrame = function() {
195499
- var s;
195519
+ var {s, $s, $deferred, $r, $c} = $restore(this, {});
195520
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195500
195521
  s = this;
195522
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195523
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195501
195524
  s.currentThrottledCollectionFramesCount = s.currentThrottledCollectionFramesCount + (1) >> 0;
195525
+ $s = -1; return;
195526
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.NotifyThrottledCollectionFrame, $c: true, $r, s, $s, $deferred};return $f; } }
195502
195527
  };
195503
195528
  Stats.prototype.NotifyThrottledCollectionFrame = function() { return this.$val.NotifyThrottledCollectionFrame(); };
195504
195529
  Stats.ptr.prototype.NotifyFrameDecodeWriteStarted = function() {
@@ -195544,9 +195569,14 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195544
195569
  };
195545
195570
  Stats.prototype.NotifyFrameDecodeOutputEnded = function() { return this.$val.NotifyFrameDecodeOutputEnded(); };
195546
195571
  Stats.ptr.prototype.NotifyThrottledDecodeFrame = function() {
195547
- var s;
195572
+ var {s, $s, $deferred, $r, $c} = $restore(this, {});
195573
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195548
195574
  s = this;
195575
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195576
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195549
195577
  s.currentThrottledDecodeFramesCount = s.currentThrottledDecodeFramesCount + (1) >> 0;
195578
+ $s = -1; return;
195579
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.NotifyThrottledDecodeFrame, $c: true, $r, s, $s, $deferred};return $f; } }
195550
195580
  };
195551
195581
  Stats.prototype.NotifyThrottledDecodeFrame = function() { return this.$val.NotifyThrottledDecodeFrame(); };
195552
195582
  Stats.ptr.prototype.NotifyFrameRenderStarted = function() {
@@ -195571,44 +195601,75 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195571
195601
  };
195572
195602
  Stats.prototype.NotifyFrameRenderEnded = function() { return this.$val.NotifyFrameRenderEnded(); };
195573
195603
  Stats.ptr.prototype.NotifyThrottledRenderFrame = function() {
195574
- var s;
195604
+ var {s, $s, $deferred, $r, $c} = $restore(this, {});
195605
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195575
195606
  s = this;
195607
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195608
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195576
195609
  s.currentThrottledRenderFramesCount = s.currentThrottledRenderFramesCount + (1) >> 0;
195610
+ $s = -1; return;
195611
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.NotifyThrottledRenderFrame, $c: true, $r, s, $s, $deferred};return $f; } }
195577
195612
  };
195578
195613
  Stats.prototype.NotifyThrottledRenderFrame = function() { return this.$val.NotifyThrottledRenderFrame(); };
195579
195614
  Stats.ptr.prototype.GetLastFrameAt = function() {
195580
- var s;
195615
+ var {$24r, s, $s, $deferred, $r, $c} = $restore(this, {});
195616
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195581
195617
  s = this;
195582
- return s.lastFrameAt;
195618
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195619
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195620
+ $24r = s.lastFrameAt;
195621
+ $s = 2; case 2: return $24r;
195622
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil); } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.GetLastFrameAt, $c: true, $r, $24r, s, $s, $deferred};return $f; } }
195583
195623
  };
195584
195624
  Stats.prototype.GetLastFrameAt = function() { return this.$val.GetLastFrameAt(); };
195585
195625
  Stats.ptr.prototype.GetLastScreenPingAt = function() {
195586
- var s;
195626
+ var {$24r, s, $s, $deferred, $r, $c} = $restore(this, {});
195627
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195587
195628
  s = this;
195588
- return s.lastScreenPingAt;
195629
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195630
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195631
+ $24r = s.lastScreenPingAt;
195632
+ $s = 2; case 2: return $24r;
195633
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil); } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.GetLastScreenPingAt, $c: true, $r, $24r, s, $s, $deferred};return $f; } }
195589
195634
  };
195590
195635
  Stats.prototype.GetLastScreenPingAt = function() { return this.$val.GetLastScreenPingAt(); };
195591
195636
  Stats.ptr.prototype.GetLastScreenImpulseAt = function() {
195592
- var lastFrameAt, lastScreenPingAt, s;
195637
+ var {$24r, $24r$1, s, $s, $deferred, $r, $c} = $restore(this, {});
195638
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195593
195639
  s = this;
195594
- lastScreenPingAt = $clone(s.GetLastScreenPingAt(), time.Time);
195595
- lastFrameAt = $clone(s.GetLastFrameAt(), time.Time);
195596
- if ($clone(lastScreenPingAt, time.Time).After($clone(lastFrameAt, time.Time))) {
195597
- return lastScreenPingAt;
195598
- }
195599
- return lastFrameAt;
195640
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195641
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195642
+ /* */ if ($clone(s.lastScreenPingAt, time.Time).After($clone(s.lastFrameAt, time.Time))) { $s = 2; continue; }
195643
+ /* */ $s = 3; continue;
195644
+ /* if ($clone(s.lastScreenPingAt, time.Time).After($clone(s.lastFrameAt, time.Time))) { */ case 2:
195645
+ $24r = s.lastScreenPingAt;
195646
+ $s = 4; case 4: return $24r;
195647
+ /* } */ case 3:
195648
+ $24r$1 = s.lastFrameAt;
195649
+ $s = 5; case 5: return $24r$1;
195650
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil); } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.GetLastScreenImpulseAt, $c: true, $r, $24r, $24r$1, s, $s, $deferred};return $f; } }
195600
195651
  };
195601
195652
  Stats.prototype.GetLastScreenImpulseAt = function() { return this.$val.GetLastScreenImpulseAt(); };
195602
195653
  Stats.ptr.prototype.GetFrameRate = function() {
195603
- var s;
195654
+ var {$24r, s, $s, $deferred, $r, $c} = $restore(this, {});
195655
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195604
195656
  s = this;
195605
- return s.lastFrameRate;
195657
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195658
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195659
+ $24r = s.lastFrameRate;
195660
+ $s = 2; case 2: return $24r;
195661
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.GetFrameRate, $c: true, $r, $24r, s, $s, $deferred};return $f; } }
195606
195662
  };
195607
195663
  Stats.prototype.GetFrameRate = function() { return this.$val.GetFrameRate(); };
195608
195664
  Stats.ptr.prototype.GetLastActiveFrameRate = function() {
195609
- var s;
195665
+ var {$24r, s, $s, $deferred, $r, $c} = $restore(this, {});
195666
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195610
195667
  s = this;
195611
- return s.lastActiveFrameRate;
195668
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195669
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195670
+ $24r = s.lastActiveFrameRate;
195671
+ $s = 2; case 2: return $24r;
195672
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.GetLastActiveFrameRate, $c: true, $r, $24r, s, $s, $deferred};return $f; } }
195612
195673
  };
195613
195674
  Stats.prototype.GetLastActiveFrameRate = function() { return this.$val.GetLastActiveFrameRate(); };
195614
195675
  Stats.ptr.prototype.rotateFrameRate = function() {
@@ -195623,134 +195684,162 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195623
195684
  };
195624
195685
  Stats.prototype.rotateFrameRate = function() { return this.$val.rotateFrameRate(); };
195625
195686
  Stats.ptr.prototype.startCalculations = function() {
195626
- var {_arg, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, s, $s, $deferred, $r, $c} = $restore(this, {});
195687
+ var {_arg, _r, _r$1, _selection, _selection$1, s, $s, $deferred, $r, $c} = $restore(this, {});
195627
195688
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195628
195689
  s = this;
195629
195690
  $deferred.push([function(_arg) { $close(_arg); }, [s.calcStopped]]);
195630
195691
  /* while (true) { */ case 1:
195631
- /* if (!(!s.stopped)) { break; } */ if(!(!s.stopped)) { $s = 2; continue; }
195632
- s.rotateFrameRate();
195633
- s.lastThrottledCollectionFrameRate = s.currentThrottledCollectionFramesCount;
195634
- s.currentThrottledCollectionFramesCount = 0;
195635
- s.lastThrottledDecodeFrameRate = s.currentThrottledDecodeFramesCount;
195636
- s.currentThrottledDecodeFramesCount = 0;
195637
- s.lastThrottledRenderFrameRate = s.currentThrottledRenderFramesCount;
195638
- s.currentThrottledRenderFramesCount = 0;
195639
- _r = s.metrics.GetAverage("frame_latency"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195640
- s.lastFramesLatencyAverage = (_r);
195641
- _r$1 = s.metrics.GetVariance("frame_latency"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195642
- s.lastFramesLatencyVariance = (_r$1);
195643
- $r = s.metrics.Reset("frame_latency"); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195644
- _r$2 = s.metrics.GetAverage("frame_collection"); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195645
- s.lastFramesCollectionAverage = _r$2;
195646
- _r$3 = s.metrics.GetVariance("frame_collection"); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
195647
- s.lastFramesCollectionVariance = _r$3;
195648
- $r = s.metrics.Reset("frame_collection"); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195649
- _r$4 = s.metrics.GetAverage("frame_decode_write"); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
195650
- s.lastFramesDecodeWriteAverage = _r$4;
195651
- _r$5 = s.metrics.GetVariance("frame_decode_write"); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
195652
- s.lastFramesDecodeWriteVariance = _r$5;
195653
- $r = s.metrics.Reset("frame_decode_write"); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195654
- _r$6 = s.metrics.GetAverage("frame_decode_output"); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
195655
- s.lastFramesDecodeOutputAverage = _r$6;
195656
- _r$7 = s.metrics.GetVariance("frame_decode_output"); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
195657
- s.lastFramesDecodeOutputVariance = _r$7;
195658
- $r = s.metrics.Reset("frame_decode_output"); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195659
- _r$8 = s.metrics.GetAverage("frame_render"); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
195660
- s.lastFramesRenderAverage = _r$8;
195661
- _r$9 = s.metrics.GetVariance("frame_render"); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
195662
- s.lastFramesRenderVariance = _r$9;
195663
- $r = s.metrics.Reset("frame_render"); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195664
- $r = s.metrics.RemoveOldest("frame_latency_long_term", 500); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195665
- _r$10 = s.metrics.GetAverage("frame_latency_long_term"); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
195666
- s.longTermFramesLatencyAverage = _r$10;
195667
- _r$11 = s.metrics.GetVariance("frame_latency_long_term"); /* */ $s = 20; case 20: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
195668
- s.longTermFramesLatencyVariance = _r$11;
195669
- $r = s.metrics.RemoveOldest("frame_collection_long_term", 500); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195670
- _r$12 = s.metrics.GetAverage("frame_collection_long_term"); /* */ $s = 22; case 22: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
195671
- s.longTermFramesCollectionAverage = _r$12;
195672
- _r$13 = s.metrics.GetVariance("frame_collection_long_term"); /* */ $s = 23; case 23: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
195673
- s.longTermFramesCollectionVariance = _r$13;
195674
- $r = s.metrics.RemoveOldest("frame_decode_write_long_term", 500); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195675
- _r$14 = s.metrics.GetAverage("frame_decode_write_long_term"); /* */ $s = 25; case 25: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
195676
- s.longTermFramesDecodeWriteAverage = _r$14;
195677
- _r$15 = s.metrics.GetVariance("frame_decode_write_long_term"); /* */ $s = 26; case 26: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
195678
- s.longTermFramesDecodeWriteVariance = _r$15;
195679
- $r = s.metrics.RemoveOldest("frame_decode_output_long_term", 500); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195680
- _r$16 = s.metrics.GetAverage("frame_decode_output_long_term"); /* */ $s = 28; case 28: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
195681
- s.longTermFramesDecodeOutputAverage = _r$16;
195682
- _r$17 = s.metrics.GetVariance("frame_decode_output_long_term"); /* */ $s = 29; case 29: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
195683
- s.longTermFramesDecodeOutputVariance = _r$17;
195684
- $r = s.metrics.RemoveOldest("frame_render_long_term", 500); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195685
- _r$18 = s.metrics.GetAverage("frame_render_long_term"); /* */ $s = 31; case 31: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
195686
- s.longTermFramesRenderAverage = _r$18;
195687
- _r$19 = s.metrics.GetVariance("frame_render_long_term"); /* */ $s = 32; case 32: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
195688
- s.longTermFramesRenderVariance = _r$19;
195689
- $r = s.print(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195690
- _r$20 = time.After(new time.Duration(0, 1000000000)); /* */ $s = 34; case 34: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
195691
- _r$21 = $select([[_r$20], [s.done]]); /* */ $s = 35; case 35: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
195692
- _selection = _r$21;
195693
- /* */ if (_selection[0] === 0) { $s = 36; continue; }
195694
- /* */ if (_selection[0] === 1) { $s = 37; continue; }
195695
- /* */ $s = 38; continue;
195696
- /* if (_selection[0] === 0) { */ case 36:
195697
- $s = 38; continue;
195698
- /* } else if (_selection[0] === 1) { */ case 37:
195699
- $s = 39; case 39: return;
195700
- /* } */ case 38:
195692
+ _selection = $select([[s.done], []]);
195693
+ /* */ if (_selection[0] === 0) { $s = 3; continue; }
195694
+ /* */ if (_selection[0] === 1) { $s = 4; continue; }
195695
+ /* */ $s = 5; continue;
195696
+ /* if (_selection[0] === 0) { */ case 3:
195697
+ $s = 6; case 6: return;
195698
+ /* } else if (_selection[0] === 1) { */ case 4:
195699
+ /* } */ case 5:
195700
+ $r = s.calculate(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195701
+ _r = time.After(new time.Duration(0, 1000000000)); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195702
+ _r$1 = $select([[_r], [s.done]]); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195703
+ _selection$1 = _r$1;
195704
+ /* */ if (_selection$1[0] === 0) { $s = 10; continue; }
195705
+ /* */ if (_selection$1[0] === 1) { $s = 11; continue; }
195706
+ /* */ $s = 12; continue;
195707
+ /* if (_selection$1[0] === 0) { */ case 10:
195708
+ $s = 12; continue;
195709
+ /* } else if (_selection$1[0] === 1) { */ case 11:
195710
+ $s = 13; case 13: return;
195711
+ /* } */ case 12:
195701
195712
  $s = 1; continue;
195702
195713
  case 2:
195703
195714
  $s = -1; return;
195704
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.startCalculations, $c: true, $r, _arg, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, s, $s, $deferred};return $f; } }
195715
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.startCalculations, $c: true, $r, _arg, _r, _r$1, _selection, _selection$1, s, $s, $deferred};return $f; } }
195705
195716
  };
195706
195717
  Stats.prototype.startCalculations = function() { return this.$val.startCalculations(); };
195707
- Stats.ptr.prototype.print = function() {
195708
- var {s, $s, $r, $c} = $restore(this, {});
195718
+ Stats.ptr.prototype.calculate = function() {
195719
+ var {_r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, args, s, $s, $r, $c} = $restore(this, {});
195709
195720
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195710
195721
  s = this;
195711
- $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; }
195712
- $s = -1; return;
195713
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.print, $c: true, $r, s, $s};return $f;
195722
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195723
+ s.rotateFrameRate();
195724
+ s.lastThrottledCollectionFrameRate = s.currentThrottledCollectionFramesCount;
195725
+ s.currentThrottledCollectionFramesCount = 0;
195726
+ s.lastThrottledDecodeFrameRate = s.currentThrottledDecodeFramesCount;
195727
+ s.currentThrottledDecodeFramesCount = 0;
195728
+ s.lastThrottledRenderFrameRate = s.currentThrottledRenderFramesCount;
195729
+ s.currentThrottledRenderFramesCount = 0;
195730
+ _r = s.metrics.GetAverage("frame_latency"); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195731
+ s.lastFramesLatencyAverage = (_r);
195732
+ _r$1 = s.metrics.GetVariance("frame_latency"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195733
+ s.lastFramesLatencyVariance = (_r$1);
195734
+ $r = s.metrics.Reset("frame_latency"); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195735
+ _r$2 = s.metrics.GetAverage("frame_collection"); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195736
+ s.lastFramesCollectionAverage = _r$2;
195737
+ _r$3 = s.metrics.GetVariance("frame_collection"); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
195738
+ s.lastFramesCollectionVariance = _r$3;
195739
+ $r = s.metrics.Reset("frame_collection"); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195740
+ _r$4 = s.metrics.GetAverage("frame_decode_write"); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
195741
+ s.lastFramesDecodeWriteAverage = _r$4;
195742
+ _r$5 = s.metrics.GetVariance("frame_decode_write"); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
195743
+ s.lastFramesDecodeWriteVariance = _r$5;
195744
+ $r = s.metrics.Reset("frame_decode_write"); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195745
+ _r$6 = s.metrics.GetAverage("frame_decode_output"); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
195746
+ s.lastFramesDecodeOutputAverage = _r$6;
195747
+ _r$7 = s.metrics.GetVariance("frame_decode_output"); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
195748
+ s.lastFramesDecodeOutputVariance = _r$7;
195749
+ $r = s.metrics.Reset("frame_decode_output"); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195750
+ _r$8 = s.metrics.GetAverage("frame_render"); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
195751
+ s.lastFramesRenderAverage = _r$8;
195752
+ _r$9 = s.metrics.GetVariance("frame_render"); /* */ $s = 15; case 15: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
195753
+ s.lastFramesRenderVariance = _r$9;
195754
+ $r = s.metrics.Reset("frame_render"); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195755
+ $r = s.metrics.RemoveOldest("frame_latency_long_term", 500); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195756
+ _r$10 = s.metrics.GetAverage("frame_latency_long_term"); /* */ $s = 18; case 18: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
195757
+ s.longTermFramesLatencyAverage = _r$10;
195758
+ _r$11 = s.metrics.GetVariance("frame_latency_long_term"); /* */ $s = 19; case 19: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
195759
+ s.longTermFramesLatencyVariance = _r$11;
195760
+ $r = s.metrics.RemoveOldest("frame_collection_long_term", 500); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195761
+ _r$12 = s.metrics.GetAverage("frame_collection_long_term"); /* */ $s = 21; case 21: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
195762
+ s.longTermFramesCollectionAverage = _r$12;
195763
+ _r$13 = s.metrics.GetVariance("frame_collection_long_term"); /* */ $s = 22; case 22: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
195764
+ s.longTermFramesCollectionVariance = _r$13;
195765
+ $r = s.metrics.RemoveOldest("frame_decode_write_long_term", 500); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195766
+ _r$14 = s.metrics.GetAverage("frame_decode_write_long_term"); /* */ $s = 24; case 24: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
195767
+ s.longTermFramesDecodeWriteAverage = _r$14;
195768
+ _r$15 = s.metrics.GetVariance("frame_decode_write_long_term"); /* */ $s = 25; case 25: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
195769
+ s.longTermFramesDecodeWriteVariance = _r$15;
195770
+ $r = s.metrics.RemoveOldest("frame_decode_output_long_term", 500); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195771
+ _r$16 = s.metrics.GetAverage("frame_decode_output_long_term"); /* */ $s = 27; case 27: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
195772
+ s.longTermFramesDecodeOutputAverage = _r$16;
195773
+ _r$17 = s.metrics.GetVariance("frame_decode_output_long_term"); /* */ $s = 28; case 28: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
195774
+ s.longTermFramesDecodeOutputVariance = _r$17;
195775
+ $r = s.metrics.RemoveOldest("frame_render_long_term", 500); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195776
+ _r$18 = s.metrics.GetAverage("frame_render_long_term"); /* */ $s = 30; case 30: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
195777
+ s.longTermFramesRenderAverage = _r$18;
195778
+ _r$19 = s.metrics.GetVariance("frame_render_long_term"); /* */ $s = 31; case 31: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
195779
+ s.longTermFramesRenderVariance = _r$19;
195780
+ args = s.printArgs();
195781
+ $r = s.mu.Unlock(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195782
+ $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", args); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195783
+ $s = -1; return;
195784
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.calculate, $c: true, $r, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, args, s, $s};return $f;
195785
+ };
195786
+ Stats.prototype.calculate = function() { return this.$val.calculate(); };
195787
+ Stats.ptr.prototype.printArgs = function() {
195788
+ var s;
195789
+ s = this;
195790
+ return 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()]);
195714
195791
  };
195715
- Stats.prototype.print = function() { return this.$val.print(); };
195792
+ Stats.prototype.printArgs = function() { return this.$val.printArgs(); };
195716
195793
  Stats.ptr.prototype.GetServerTime = function() {
195717
- var {$24r, _r, _r$1, s, $s, $r, $c} = $restore(this, {});
195718
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195794
+ var {$24r, _r, _r$1, s, $s, $deferred, $r, $c} = $restore(this, {});
195795
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195719
195796
  s = this;
195720
- _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195721
- _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; }
195797
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195798
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195799
+ _r = time.Now(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195800
+ _r$1 = $clone(_r, time.Time).Add(s.serverTimestampAhead); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195722
195801
  $24r = _r$1;
195723
- $s = 3; case 3: return $24r;
195724
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.GetServerTime, $c: true, $r, $24r, _r, _r$1, s, $s};return $f;
195802
+ $s = 4; case 4: return $24r;
195803
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil); } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.GetServerTime, $c: true, $r, $24r, _r, _r$1, s, $s, $deferred};return $f; } }
195725
195804
  };
195726
195805
  Stats.prototype.GetServerTime = function() { return this.$val.GetServerTime(); };
195727
195806
  Stats.ptr.prototype.NotifyInteraction = function() {
195728
- var {_r, s, $s, $r, $c} = $restore(this, {});
195729
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195807
+ var {_r, s, $s, $deferred, $r, $c} = $restore(this, {});
195808
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195730
195809
  s = this;
195731
- _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195810
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195811
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195812
+ _r = time.Now(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195732
195813
  time.Time.copy(s.lastInteractionAt, _r);
195733
195814
  $s = -1; return;
195734
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.NotifyInteraction, $c: true, $r, _r, s, $s};return $f;
195815
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.NotifyInteraction, $c: true, $r, _r, s, $s, $deferred};return $f; } }
195735
195816
  };
195736
195817
  Stats.prototype.NotifyInteraction = function() { return this.$val.NotifyInteraction(); };
195737
195818
  Stats.ptr.prototype.GetInteractionWaitMultiplier = function() {
195738
- var {_r, s, untouchedDur, $s, $r, $c} = $restore(this, {});
195819
+ var {_r, lastInteractionAt, s, untouchedDur, $s, $r, $c} = $restore(this, {});
195739
195820
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195740
195821
  s = this;
195741
- _r = time.Since($clone(s.lastInteractionAt, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195822
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195823
+ lastInteractionAt = $clone(s.lastInteractionAt, time.Time);
195824
+ $r = s.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195825
+ _r = time.Since($clone(lastInteractionAt, time.Time)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195742
195826
  untouchedDur = _r;
195743
195827
  if (untouchedDur.Seconds() < 5) {
195744
195828
  $s = -1; return 0;
195745
195829
  }
195746
195830
  $s = -1; return 1 - (1 / (1 + (untouchedDur.Seconds())));
195747
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.GetInteractionWaitMultiplier, $c: true, $r, _r, s, untouchedDur, $s};return $f;
195831
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.GetInteractionWaitMultiplier, $c: true, $r, _r, lastInteractionAt, s, untouchedDur, $s};return $f;
195748
195832
  };
195749
195833
  Stats.prototype.GetInteractionWaitMultiplier = function() { return this.$val.GetInteractionWaitMultiplier(); };
195750
195834
  Stats.ptr.prototype.SetEncodingPreferences = function(prefs) {
195751
- var prefs, s;
195835
+ var {prefs, s, $s, $deferred, $r, $c} = $restore(this, {prefs});
195836
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195752
195837
  s = this;
195838
+ $r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195839
+ $deferred.push([$methodVal(s.mu, "Unlock"), []]);
195753
195840
  EncodingPreferences.copy(s.encodingPreferences, prefs);
195841
+ $s = -1; return;
195842
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Stats.ptr.prototype.SetEncodingPreferences, $c: true, $r, prefs, s, $s, $deferred};return $f; } }
195754
195843
  };
195755
195844
  Stats.prototype.SetEncodingPreferences = function(prefs) { return this.$val.SetEncodingPreferences(prefs); };
195756
195845
  NewMetrics = function() {
@@ -195903,11 +195992,11 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195903
195992
  return (new time.Duration(0, math.Sqrt(sum / (values.$length))));
195904
195993
  };
195905
195994
  ptrType$1.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([$String], [time.Duration], false)}];
195906
- ptrType$5.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "GetClientStats", name: "GetClientStats", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "SetLatency", name: "SetLatency", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "UpdateServerTimestampAhead", name: "UpdateServerTimestampAhead", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "SetScreenResolution", name: "SetScreenResolution", pkg: "", typ: $funcType([ptrType$4], [], false)}, {prop: "NotifyFrame", name: "NotifyFrame", pkg: "", typ: $funcType([Frame], [], false)}, {prop: "NotifyScreenPing", name: "NotifyScreenPing", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionStarted", name: "NotifyFrameCollectionStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionEnded", name: "NotifyFrameCollectionEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionDuration", name: "NotifyFrameCollectionDuration", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "NotifyThrottledCollectionFrame", name: "NotifyThrottledCollectionFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteStarted", name: "NotifyFrameDecodeWriteStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteEnded", name: "NotifyFrameDecodeWriteEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputStarted", name: "NotifyFrameDecodeOutputStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputEnded", name: "NotifyFrameDecodeOutputEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledDecodeFrame", name: "NotifyThrottledDecodeFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderStarted", name: "NotifyFrameRenderStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderEnded", name: "NotifyFrameRenderEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledRenderFrame", name: "NotifyThrottledRenderFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "GetLastFrameAt", name: "GetLastFrameAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenPingAt", name: "GetLastScreenPingAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenImpulseAt", name: "GetLastScreenImpulseAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetFrameRate", name: "GetFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "GetLastActiveFrameRate", name: "GetLastActiveFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "rotateFrameRate", name: "rotateFrameRate", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "startCalculations", name: "startCalculations", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "print", name: "print", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "GetServerTime", name: "GetServerTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "NotifyInteraction", name: "NotifyInteraction", pkg: "", typ: $funcType([], [], false)}, {prop: "GetInteractionWaitMultiplier", name: "GetInteractionWaitMultiplier", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "SetEncodingPreferences", name: "SetEncodingPreferences", pkg: "", typ: $funcType([EncodingPreferences], [], false)}];
195995
+ ptrType$5.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "GetClientStats", name: "GetClientStats", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "SetLatency", name: "SetLatency", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "UpdateServerTimestampAhead", name: "UpdateServerTimestampAhead", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "SetScreenResolution", name: "SetScreenResolution", pkg: "", typ: $funcType([ptrType$4], [], false)}, {prop: "NotifyFrame", name: "NotifyFrame", pkg: "", typ: $funcType([Frame], [], false)}, {prop: "NotifyScreenPing", name: "NotifyScreenPing", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionStarted", name: "NotifyFrameCollectionStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionEnded", name: "NotifyFrameCollectionEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionDuration", name: "NotifyFrameCollectionDuration", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "NotifyThrottledCollectionFrame", name: "NotifyThrottledCollectionFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteStarted", name: "NotifyFrameDecodeWriteStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteEnded", name: "NotifyFrameDecodeWriteEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputStarted", name: "NotifyFrameDecodeOutputStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputEnded", name: "NotifyFrameDecodeOutputEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledDecodeFrame", name: "NotifyThrottledDecodeFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderStarted", name: "NotifyFrameRenderStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderEnded", name: "NotifyFrameRenderEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledRenderFrame", name: "NotifyThrottledRenderFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "GetLastFrameAt", name: "GetLastFrameAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenPingAt", name: "GetLastScreenPingAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenImpulseAt", name: "GetLastScreenImpulseAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetFrameRate", name: "GetFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "GetLastActiveFrameRate", name: "GetLastActiveFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "rotateFrameRate", name: "rotateFrameRate", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "startCalculations", name: "startCalculations", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "calculate", name: "calculate", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "printArgs", name: "printArgs", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [sliceType], false)}, {prop: "GetServerTime", name: "GetServerTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "NotifyInteraction", name: "NotifyInteraction", pkg: "", typ: $funcType([], [], false)}, {prop: "GetInteractionWaitMultiplier", name: "GetInteractionWaitMultiplier", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "SetEncodingPreferences", name: "SetEncodingPreferences", pkg: "", typ: $funcType([EncodingPreferences], [], false)}];
195907
195996
  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)}];
195908
195997
  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: ""}]);
195909
195998
  Frame.init([{prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}]);
195910
- Stats.init("github.com/supraio/client-daemon/pkg/stats", [{prop: "stopped", name: "stopped", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "lastFrameAt", name: "lastFrameAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "lastScreenPingAt", name: "lastScreenPingAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "stopwatch", name: "stopwatch", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "metrics", name: "metrics", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "calcStopped", name: "calcStopped", embedded: false, exported: false, typ: chanType, 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: "lastActiveFrameRate", name: "lastActiveFrameRate", 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: ""}, {prop: "encodingPreferences", name: "encodingPreferences", embedded: false, exported: false, typ: EncodingPreferences, tag: ""}]);
195999
+ Stats.init("github.com/supraio/client-daemon/pkg/stats", [{prop: "mu", name: "mu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "lastFrameAt", name: "lastFrameAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "lastScreenPingAt", name: "lastScreenPingAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "stopwatch", name: "stopwatch", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "metrics", name: "metrics", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "calcStopped", name: "calcStopped", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopOnce", name: "stopOnce", embedded: false, exported: false, typ: sync.Once, 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: "lastActiveFrameRate", name: "lastActiveFrameRate", 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: ""}, {prop: "encodingPreferences", name: "encodingPreferences", embedded: false, exported: false, typ: EncodingPreferences, tag: ""}]);
195911
196000
  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: ""}]);
195912
196001
  EncodingPreferences.init("", [{prop: "PreferredQualityIndex", name: "PreferredQualityIndex", embedded: false, exported: true, typ: $Int, tag: "json:\"preferredQualityIndex\""}, {prop: "PreferredBitrateKbps", name: "PreferredBitrateKbps", embedded: false, exported: true, typ: $Int, tag: "json:\"preferredBitrateKbps\""}, {prop: "PreferredPreset", name: "PreferredPreset", embedded: false, exported: true, typ: $String, tag: "json:\"preferredPreset\""}, {prop: "PreferredTune", name: "PreferredTune", embedded: false, exported: true, typ: $String, tag: "json:\"preferredTune\""}, {prop: "PreferredProfile", name: "PreferredProfile", embedded: false, exported: true, typ: $String, tag: "json:\"preferredProfile\""}]);
195913
196002
  InputMetrics.init("", [{prop: "MouseEventsReceived", name: "MouseEventsReceived", embedded: false, exported: true, typ: $Int, tag: "json:\"mouseEventsReceived\""}, {prop: "MouseEventsSent", name: "MouseEventsSent", embedded: false, exported: true, typ: $Int, tag: "json:\"mouseEventsSent\""}, {prop: "MouseBytesSent", name: "MouseBytesSent", embedded: false, exported: true, typ: $Int, tag: "json:\"mouseBytesSent\""}, {prop: "MouseSendAverageNano", name: "MouseSendAverageNano", embedded: false, exported: true, typ: $Int64, tag: "json:\"mouseSendAverageNano\""}, {prop: "MouseSendMaxNano", name: "MouseSendMaxNano", embedded: false, exported: true, typ: $Int64, tag: "json:\"mouseSendMaxNano\""}, {prop: "MouseWaitMaxNano", name: "MouseWaitMaxNano", embedded: false, exported: true, typ: $Int64, tag: "json:\"mouseWaitMaxNano\""}, {prop: "TouchEventsReceived", name: "TouchEventsReceived", embedded: false, exported: true, typ: $Int, tag: "json:\"touchEventsReceived\""}, {prop: "TouchEventsSent", name: "TouchEventsSent", embedded: false, exported: true, typ: $Int, tag: "json:\"touchEventsSent\""}, {prop: "TouchBytesSent", name: "TouchBytesSent", embedded: false, exported: true, typ: $Int, tag: "json:\"touchBytesSent\""}, {prop: "TouchSendAverageNano", name: "TouchSendAverageNano", embedded: false, exported: true, typ: $Int64, tag: "json:\"touchSendAverageNano\""}, {prop: "TouchSendMaxNano", name: "TouchSendMaxNano", embedded: false, exported: true, typ: $Int64, tag: "json:\"touchSendMaxNano\""}, {prop: "TouchMaxConcurrentSeq", name: "TouchMaxConcurrentSeq", embedded: false, exported: true, typ: $Int, tag: "json:\"touchMaxConcurrentSeq\""}, {prop: "TouchWaitMaxNano", name: "TouchWaitMaxNano", embedded: false, exported: true, typ: $Int64, tag: "json:\"touchWaitMaxNano\""}]);
@@ -196114,24 +196203,24 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196114
196203
  /* */ if (dl.renderingInProgress) { $s = 7; continue; }
196115
196204
  /* */ $s = 8; continue;
196116
196205
  /* if (dl.renderingInProgress) { */ case 7:
196117
- dl.stats.NotifyThrottledRenderFrame();
196206
+ $r = dl.stats.NotifyThrottledRenderFrame(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196118
196207
  $24r$1 = $ifaceNil;
196119
- $s = 9; case 9: return $24r$1;
196208
+ $s = 10; case 10: return $24r$1;
196120
196209
  /* } */ case 8:
196121
196210
  dl.renderingInProgress = true;
196122
- $r = dl.stats.NotifyFrameRenderStarted(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196211
+ $r = dl.stats.NotifyFrameRenderStarted(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196123
196212
  _arg = $clone(new image.Point.ptr(0, 0), image.Point);
196124
196213
  _arg$1 = screenBuffer;
196125
- _r$2 = screenBuffer.YCbCr(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
196214
+ _r$2 = screenBuffer.YCbCr(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
196126
196215
  _arg$2 = $clone(_r$2.Rect, image.Rectangle);
196127
- $r = dl.window.UploadYCbCr(_arg, _arg$1, _arg$2); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196128
- _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; }
196216
+ $r = dl.window.UploadYCbCr(_arg, _arg$1, _arg$2); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196217
+ _r$3 = dl.window.Publish(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
196129
196218
  _r$3;
196130
- $r = dl.stats.NotifyFrameRenderEnded(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196131
- $r = dl.stats.NotifyFrame(frame$1); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196219
+ $r = dl.stats.NotifyFrameRenderEnded(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196220
+ $r = dl.stats.NotifyFrame(frame$1); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196132
196221
  dl.renderingInProgress = false;
196133
196222
  $24r$2 = $ifaceNil;
196134
- $s = 16; case 16: return $24r$2;
196223
+ $s = 17; case 17: return $24r$2;
196135
196224
  /* */ } 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; } }
196136
196225
  };
196137
196226
  RenderingLoop.prototype.renderBuffer = function() { return this.$val.renderBuffer(); };
@@ -196422,7 +196511,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196422
196511
  /* } */ case 25:
196423
196512
  $s = 21; continue;
196424
196513
  /* } else { */ case 20:
196425
- dl[0].stats.NotifyThrottledDecodeFrame();
196514
+ $r = dl[0].stats.NotifyThrottledDecodeFrame(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196426
196515
  /* } */ case 21:
196427
196516
  $s = -1; return $ifaceNil;
196428
196517
  /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.outputBuffer, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _selection$1, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s};return $f;
@@ -196542,7 +196631,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
196542
196631
  case 18:
196543
196632
  $s = 17; continue;
196544
196633
  /* } else { */ case 16:
196545
- cl.stats.NotifyThrottledCollectionFrame();
196634
+ $r = cl.stats.NotifyThrottledCollectionFrame(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196546
196635
  /* } */ case 17:
196547
196636
  $s = 1; continue;
196548
196637
  case 2:
@@ -197521,9 +197610,12 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
197521
197610
  };
197522
197611
  ScreenWindow.prototype.Geometry = function() { return this.$val.Geometry(); };
197523
197612
  ScreenWindow.ptr.prototype.SetEncodingPreferences = function(prefs) {
197524
- var prefs, w;
197613
+ var {prefs, w, $s, $r, $c} = $restore(this, {prefs});
197614
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197525
197615
  w = this;
197526
- w.stats.SetEncodingPreferences($clone(prefs, stats.EncodingPreferences));
197616
+ $r = w.stats.SetEncodingPreferences($clone(prefs, stats.EncodingPreferences)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197617
+ $s = -1; return;
197618
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.SetEncodingPreferences, $c: true, $r, prefs, w, $s};return $f;
197527
197619
  };
197528
197620
  ScreenWindow.prototype.SetEncodingPreferences = function(prefs) { return this.$val.SetEncodingPreferences(prefs); };
197529
197621
  NewScreenWindow = function(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, encodingPreferences, geometry) {
@@ -197531,7 +197623,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
197531
197623
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197532
197624
  _r = stats.NewStats(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197533
197625
  s = _r;
197534
- s.SetEncodingPreferences($clone(encodingPreferences, stats.EncodingPreferences));
197626
+ $r = s.SetEncodingPreferences($clone(encodingPreferences, stats.EncodingPreferences)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197535
197627
  $s = -1; return new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, true, $chanNil, new sync.Mutex.ptr(0, 0), new sync.Mutex.ptr(0, 0), s, sliceType$1.nil, $ifaceNil, $ifaceNil, $ifaceNil, ptrType$3.nil, ptrType$4.nil, ptrType$5.nil, ptrType$6.nil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, ptrType$10.nil, ptrType$11.nil, input.NewEventMetrics(), ptrType$13.nil, new $Chan(key.Event, 50), new $Chan(mouse.Event, 50), new $Chan(size.Event, 50), new $Chan(focus.Event, 50), new $Chan(touch.Event, 50), new $Chan($emptyInterface, 0), $chanNil, $chanNil, new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), new image.Point.ptr(0, 0), geometry);
197536
197628
  /* */ } return; } var $f = {$blk: NewScreenWindow, $c: true, $r, _r, clientID, clientSecret, encodingPreferences, forceScreenSize, geometry, metadataDriver, metadataHost, processInfoManager, s, screenDriver, screenHost, screenID, secure, timeoutDuration, $s};return $f;
197537
197629
  };
@@ -197770,14 +197862,17 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
197770
197862
  if (!_1) {
197771
197863
  /* break; */ $s = 3; continue;
197772
197864
  }
197773
- if (!(w[0].forceScreenSize === ptrType$1.nil)) {
197774
- w[0].stats.SetScreenResolution(w[0].forceScreenSize);
197775
- } else {
197776
- w[0].stats.SetScreenResolution(point);
197777
- }
197865
+ /* */ if (!(w[0].forceScreenSize === ptrType$1.nil)) { $s = 5; continue; }
197866
+ /* */ $s = 6; continue;
197867
+ /* if (!(w[0].forceScreenSize === ptrType$1.nil)) { */ case 5:
197868
+ $r = w[0].stats.SetScreenResolution(w[0].forceScreenSize); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197869
+ $s = 7; continue;
197870
+ /* } else { */ case 6:
197871
+ $r = w[0].stats.SetScreenResolution(point); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197872
+ /* } */ case 7:
197778
197873
  $s = 2; continue;
197779
197874
  case 3:
197780
- $r = closeResChan(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197875
+ $r = closeResChan(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197781
197876
  $s = -1; return;
197782
197877
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _1, _2, _r, _r$1, _tuple, _tuple$1, closeResChan, point, resChan, $s};return $f;
197783
197878
  }; })(eventLoopDone, eventLoopStop, w, window$1, windowChannel), []);
@@ -198259,9 +198354,9 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198259
198354
  latencyEnd = $clone(_r$3, time.Time);
198260
198355
  serverLatency = $div64($clone(latencyEnd, time.Time).Sub($clone(latencyStart, time.Time)), new time.Duration(0, 2), false);
198261
198356
  serverTimestampAhead = $clone($clone(serverTimestamp, time.Time).Add(serverLatency), time.Time).Sub($clone(latencyEnd, time.Time));
198262
- w.stats.SetLatency(serverLatency);
198263
- w.stats.UpdateServerTimestampAhead(serverTimestampAhead);
198264
- $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; }
198357
+ $r = w.stats.SetLatency(serverLatency); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198358
+ $r = w.stats.UpdateServerTimestampAhead(serverTimestampAhead); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198359
+ $r = time.Sleep(new time.Duration(6, 4230196224)); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198265
198360
  $s = 1; continue;
198266
198361
  case 2:
198267
198362
  $s = -1; return;
@@ -198298,31 +198393,37 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198298
198393
  };
198299
198394
  ScreenWindow.prototype.startStatsSyncing = function() { return this.$val.startStatsSyncing(); };
198300
198395
  ScreenWindow.ptr.prototype.sendStats = function() {
198301
- var {_r, _r$1, _r$2, _tuple, _tuple$1, clientStats, data, err, inputSnapshot, w, $s, $r, $c} = $restore(this, {});
198396
+ var {_r, _r$1, _r$2, _r$3, _tuple, _tuple$1, clientStats, data, err, inputSnapshot, w, $s, $r, $c} = $restore(this, {});
198302
198397
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
198303
198398
  w = this;
198304
- clientStats = w.stats.GetClientStats();
198305
- _r = w.eventMetrics.Snapshot(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
198306
- inputSnapshot = $clone(_r, input.InputSnapshot);
198399
+ _r = w.stats.GetClientStats(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
198400
+ clientStats = _r;
198401
+ _r$1 = w.eventMetrics.Snapshot(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
198402
+ inputSnapshot = $clone(_r$1, input.InputSnapshot);
198307
198403
  stats.InputMetrics.copy(clientStats.InputMetrics, new stats.InputMetrics.ptr(inputSnapshot.MouseReceived, inputSnapshot.MouseSent, inputSnapshot.MouseBytes, inputSnapshot.MouseSendAvgNano, inputSnapshot.MouseSendMaxNano, inputSnapshot.MouseWaitMaxNano, inputSnapshot.TouchReceived, inputSnapshot.TouchSent, inputSnapshot.TouchBytes, inputSnapshot.TouchSendAvgNano, inputSnapshot.TouchSendMaxNano, inputSnapshot.TouchSeqMax, inputSnapshot.TouchWaitMaxNano));
198308
- _r$1 = json.Marshal(clientStats); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
198309
- _tuple = _r$1;
198404
+ _r$2 = json.Marshal(clientStats); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
198405
+ _tuple = _r$2;
198310
198406
  data = _tuple[0];
198311
198407
  err = _tuple[1];
198312
198408
  if (!($interfaceIsEqual(err, $ifaceNil))) {
198313
198409
  $s = -1; return err;
198314
198410
  }
198315
- _r$2 = w.responsiveSender.SendServerWaitResponse(48, data); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
198316
- _tuple$1 = _r$2;
198411
+ _r$3 = w.responsiveSender.SendServerWaitResponse(48, data); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
198412
+ _tuple$1 = _r$3;
198317
198413
  err = _tuple$1[1];
198318
198414
  $s = -1; return err;
198319
- /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.sendStats, $c: true, $r, _r, _r$1, _r$2, _tuple, _tuple$1, clientStats, data, err, inputSnapshot, w, $s};return $f;
198415
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.sendStats, $c: true, $r, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, clientStats, data, err, inputSnapshot, w, $s};return $f;
198320
198416
  };
198321
198417
  ScreenWindow.prototype.sendStats = function() { return this.$val.sendStats(); };
198322
198418
  ScreenWindow.ptr.prototype.getFrameHealthCheckTimeout = function() {
198323
- var w;
198419
+ var {$24r, _r, _r$1, w, $s, $r, $c} = $restore(this, {});
198420
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
198324
198421
  w = this;
198325
- return frameHealthCheckTimeout(w.stats.GetLastActiveFrameRate());
198422
+ _r = w.stats.GetLastActiveFrameRate(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
198423
+ _r$1 = frameHealthCheckTimeout(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
198424
+ $24r = _r$1;
198425
+ $s = 3; case 3: return $24r;
198426
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.getFrameHealthCheckTimeout, $c: true, $r, $24r, _r, _r$1, w, $s};return $f;
198326
198427
  };
198327
198428
  ScreenWindow.prototype.getFrameHealthCheckTimeout = function() { return this.$val.getFrameHealthCheckTimeout(); };
198328
198429
  frameHealthCheckTimeout = function(framerate) {
@@ -198345,7 +198446,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198345
198446
  return value;
198346
198447
  };
198347
198448
  ScreenWindow.ptr.prototype.startScreenHealthChecking = function() {
198348
- var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, err, lastImpulseAt, w, $s, $r, $c} = $restore(this, {});
198449
+ var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, err, lastImpulseAt, w, $s, $r, $c} = $restore(this, {});
198349
198450
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
198350
198451
  w = this;
198351
198452
  /* while (true) { */ case 1:
@@ -198357,38 +198458,41 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198357
198458
  $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; }
198358
198459
  /* continue; */ $s = 1; continue;
198359
198460
  /* } */ case 5:
198360
- lastImpulseAt = $clone(w.stats.GetLastScreenImpulseAt(), time.Time);
198361
- _r$1 = time.Now(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
198362
- _r$2 = $clone($clone(lastImpulseAt, time.Time).Add(w.getFrameHealthCheckTimeout()), time.Time).Before($clone(_r$1, time.Time)); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
198363
- /* */ if (_r$2) { $s = 7; continue; }
198364
- /* */ $s = 8; continue;
198365
- /* if (_r$2) { */ case 7:
198366
- _r$3 = w.closeScreen(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
198367
- err = _r$3;
198368
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 12; continue; }
198369
- /* */ $s = 13; continue;
198370
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 12:
198371
- $r = errs.Print("Cannot close screen", err); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198372
- /* } */ case 13:
198373
- _r$4 = w.isClosed(); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
198374
- /* */ if (_r$4) { $s = 15; continue; }
198461
+ _r$1 = w.stats.GetLastScreenImpulseAt(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
198462
+ lastImpulseAt = $clone(_r$1, time.Time);
198463
+ _r$2 = w.getFrameHealthCheckTimeout(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
198464
+ _r$3 = $clone(lastImpulseAt, time.Time).Add(_r$2); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
198465
+ _r$4 = time.Now(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
198466
+ _r$5 = $clone(_r$3, time.Time).Before($clone(_r$4, time.Time)); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
198467
+ /* */ if (_r$5) { $s = 8; continue; }
198468
+ /* */ $s = 9; continue;
198469
+ /* if (_r$5) { */ case 8:
198470
+ _r$6 = w.closeScreen(); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
198471
+ err = _r$6;
198472
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
198375
198473
  /* */ $s = 16; continue;
198376
- /* if (_r$4) { */ case 15:
198377
- $s = -1; return;
198474
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
198475
+ $r = errs.Print("Cannot close screen", err); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198378
198476
  /* } */ case 16:
198379
- _r$5 = w.retriableOpen(-1, $methodVal(w, "openScreen")); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
198380
- err = _r$5;
198381
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 19; continue; }
198382
- /* */ $s = 20; continue;
198383
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 19:
198384
- $r = errs.Print("Reconnecting screen", err); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198385
- /* } */ case 20:
198386
- /* } */ case 8:
198387
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198477
+ _r$7 = w.isClosed(); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
198478
+ /* */ if (_r$7) { $s = 18; continue; }
198479
+ /* */ $s = 19; continue;
198480
+ /* if (_r$7) { */ case 18:
198481
+ $s = -1; return;
198482
+ /* } */ case 19:
198483
+ _r$8 = w.retriableOpen(-1, $methodVal(w, "openScreen")); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
198484
+ err = _r$8;
198485
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 22; continue; }
198486
+ /* */ $s = 23; continue;
198487
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 22:
198488
+ $r = errs.Print("Reconnecting screen", err); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198489
+ /* } */ case 23:
198490
+ /* } */ case 9:
198491
+ $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198388
198492
  $s = 1; continue;
198389
198493
  case 2:
198390
198494
  $s = -1; return;
198391
- /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.startScreenHealthChecking, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, err, lastImpulseAt, w, $s};return $f;
198495
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.startScreenHealthChecking, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, err, lastImpulseAt, w, $s};return $f;
198392
198496
  };
198393
198497
  ScreenWindow.prototype.startScreenHealthChecking = function() { return this.$val.startScreenHealthChecking(); };
198394
198498
  ScreenWindow.ptr.prototype.openScreen = function() {
@@ -198929,26 +199033,27 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
198929
199033
  $s = -1; return $ifaceNil;
198930
199034
  /* } */ case 6:
198931
199035
  $r = log.Printf("__supra.setEncodingPreferences: updating preferences: %+v\n", new sliceType$2([new prefs[0].constructor.elem(prefs[0])])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198932
- w[0].SetEncodingPreferences($clone(prefs[0], stats.EncodingPreferences));
199036
+ $r = w[0].SetEncodingPreferences($clone(prefs[0], stats.EncodingPreferences)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198933
199037
  $s = -1; return $ifaceNil;
198934
199038
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, err, jsonStr, prefs, this$1, $s};return $f;
198935
199039
  }; })(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w)), js.Func);
198936
199040
  getCurrentStats[0] = $clone(js.FuncOf((function(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w) { return function $b(this$1, args) {
198937
- var {_r, _tuple, args, clientStats, data, err, this$1, $s, $r, $c} = $restore(this, {this$1, args});
199041
+ var {_r, _r$1, _tuple, args, clientStats, data, err, this$1, $s, $r, $c} = $restore(this, {this$1, args});
198938
199042
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
198939
- clientStats = w[0].stats.GetClientStats();
198940
- _r = json.Marshal(clientStats); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
198941
- _tuple = _r;
199043
+ _r = w[0].stats.GetClientStats(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
199044
+ clientStats = _r;
199045
+ _r$1 = json.Marshal(clientStats); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
199046
+ _tuple = _r$1;
198942
199047
  data = _tuple[0];
198943
199048
  err = _tuple[1];
198944
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
198945
- /* */ $s = 3; continue;
198946
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
198947
- $r = log.Printf("__supra.getCurrentStats: marshal error: %v\n", new sliceType$2([err])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
199049
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
199050
+ /* */ $s = 4; continue;
199051
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
199052
+ $r = log.Printf("__supra.getCurrentStats: marshal error: %v\n", new sliceType$2([err])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
198948
199053
  $s = -1; return $ifaceNil;
198949
- /* } */ case 3:
199054
+ /* } */ case 4:
198950
199055
  $s = -1; return new $String(($bytesToString(data)));
198951
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _tuple, args, clientStats, data, err, this$1, $s};return $f;
199056
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, _r$1, _tuple, args, clientStats, data, err, this$1, $s};return $f;
198952
199057
  }; })(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w)), js.Func);
198953
199058
  stopScreen[0] = $clone(js.FuncOf((function(deactivateFacades, getCurrentStats, setEncodingPreferences, stopScreen, supraValue, w) { return function $b(this$1, args) {
198954
199059
  var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});