@supraio/client-daemon-js 1.0.0-mzscreengeometry.449 → 1.0.0-mzscreengeometry.450

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.
@@ -184609,11 +184609,11 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"]
184609
184609
  $r = w.mutex.Lock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184610
184610
  _r = $clone(jsNaClDecoder, js.Value).Call("render", new sliceType([(x = picture, new x.constructor.elem(x))])); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
184611
184611
  renderPromise = $clone(_r, js.Value);
184612
- _r$1 = jshelper.Await($clone(renderPromise, js.Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
184612
+ $r = w.mutex.Unlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184613
+ _r$1 = jshelper.Await($clone(renderPromise, js.Value)); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
184613
184614
  _tuple = _r$1;
184614
184615
  renderResult = _tuple[0];
184615
184616
  err = _tuple[1];
184616
- $r = w.mutex.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
184617
184617
  /* */ if (!(err === ptrType$3.nil)) { $s = 11; continue; }
184618
184618
  /* */ $s = 12; continue;
184619
184619
  /* if (!(err === ptrType$3.nil)) { */ case 11:
@@ -190566,7 +190566,7 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190566
190566
  $panic(_r$8);
190567
190567
  /* } */ case 24:
190568
190568
  domEvents = dom.NewDomEvents();
190569
- w = new windowImpl.ptr(screen$1, ptrType$2.nil, $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func));
190569
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func));
190570
190570
  $r = domEvents.BindEvents(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190571
190571
  $s = -1; return w;
190572
190572
  /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, adaptCanvas, canvasEl, ctx2d, domEvents, hasGeometry, opts, resizeCallback, screen$1, style, w, $s};return $f;
@@ -192087,7 +192087,7 @@ $packages["github.com/supraio/client-daemon/pkg/input"] = (function() {
192087
192087
  return $pkg;
192088
192088
  })();
192089
192089
  $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
192090
- var $pkg = {}, $init, bufio, base64, fmt, errs, helper, message, netstream, io, log, sync, time, Pinger, messageCallback, MetadataServer, response, MetadataResponsiveSender, MetadataMessageSender, MetadataClient, Writer, MessageSender, Framer, sliceType, sliceType$1, ptrType, funcType, sliceType$2, sliceType$3, ptrType$1, funcType$1, sliceType$4, ptrType$2, ptrType$3, funcType$2, funcType$3, ptrType$4, chanType, mapType, ptrType$5, ptrType$6, ptrType$7, _r, NewPinger, NewMetadataServer, NewMetadataResponsiveSender, NewMetadataMessageSender, NewScreenMetadataClient, NewMessageSender, NewFramer, splitFrames;
192090
+ var $pkg = {}, $init, bufio, base64, fmt, errs, helper, message, netstream, io, log, sync, time, Pinger, messageCallback, MetadataServer, response, MetadataResponsiveSender, MetadataMessageSender, MetadataClient, Writer, MessageSender, Framer, sliceType, structType, sliceType$1, ptrType, funcType, sliceType$2, sliceType$3, ptrType$1, funcType$1, sliceType$4, ptrType$2, ptrType$3, chanType, funcType$2, funcType$3, ptrType$4, chanType$1, mapType, ptrType$5, ptrType$6, ptrType$7, _r, NewPinger, NewMetadataServer, NewMetadataResponsiveSender, NewMetadataMessageSender, NewScreenMetadataClient, NewMessageSender, NewFramer, splitFrames;
192091
192091
  bufio = $packages["bufio"];
192092
192092
  base64 = $packages["encoding/base64"];
192093
192093
  fmt = $packages["fmt"];
@@ -192099,15 +192099,19 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
192099
192099
  log = $packages["log"];
192100
192100
  sync = $packages["sync"];
192101
192101
  time = $packages["time"];
192102
- Pinger = $pkg.Pinger = $newType(0, $kindStruct, "netclient.Pinger", true, "github.com/supraio/client-daemon/pkg/netclient", true, function(messageSender_, closed_) {
192102
+ Pinger = $pkg.Pinger = $newType(0, $kindStruct, "netclient.Pinger", true, "github.com/supraio/client-daemon/pkg/netclient", true, function(messageSender_, closed_, done_, stopped_) {
192103
192103
  this.$val = this;
192104
192104
  if (arguments.length === 0) {
192105
192105
  this.messageSender = $ifaceNil;
192106
192106
  this.closed = false;
192107
+ this.done = $chanNil;
192108
+ this.stopped = $chanNil;
192107
192109
  return;
192108
192110
  }
192109
192111
  this.messageSender = messageSender_;
192110
192112
  this.closed = closed_;
192113
+ this.done = done_;
192114
+ this.stopped = stopped_;
192111
192115
  });
192112
192116
  messageCallback = $pkg.messageCallback = $newType(0, $kindStruct, "netclient.messageCallback", true, "github.com/supraio/client-daemon/pkg/netclient", false, function(id_, callback_) {
192113
192117
  this.$val = this;
@@ -192211,6 +192215,7 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
192211
192215
  this.sendMu = sendMu_;
192212
192216
  });
192213
192217
  sliceType = $sliceType($emptyInterface);
192218
+ structType = $structType("", []);
192214
192219
  sliceType$1 = $sliceType($Uint8);
192215
192220
  ptrType = $ptrType(Framer);
192216
192221
  funcType = $funcType([$String], [], false);
@@ -192221,17 +192226,18 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
192221
192226
  sliceType$4 = $sliceType(funcType$1);
192222
192227
  ptrType$2 = $ptrType(bufio.Scanner);
192223
192228
  ptrType$3 = $ptrType(Pinger);
192229
+ chanType = $chanType(structType, false, false);
192224
192230
  funcType$2 = $funcType([message.MsgType, sliceType$1], [], false);
192225
192231
  funcType$3 = $funcType([], [$error], false);
192226
192232
  ptrType$4 = $ptrType(MetadataResponsiveSender);
192227
- chanType = $chanType(response, false, false);
192228
- mapType = $mapType($String, chanType);
192233
+ chanType$1 = $chanType(response, false, false);
192234
+ mapType = $mapType($String, chanType$1);
192229
192235
  ptrType$5 = $ptrType(MetadataMessageSender);
192230
192236
  ptrType$6 = $ptrType(MetadataClient);
192231
192237
  ptrType$7 = $ptrType(MessageSender);
192232
192238
  NewPinger = function(messageSender) {
192233
192239
  var messageSender;
192234
- return new Pinger.ptr(messageSender, true);
192240
+ return new Pinger.ptr(messageSender, true, new $Chan(structType, 0), new $Chan(structType, 0));
192235
192241
  };
192236
192242
  $pkg.NewPinger = NewPinger;
192237
192243
  Pinger.ptr.prototype.Start = function() {
@@ -192242,15 +192248,26 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
192242
192248
  };
192243
192249
  Pinger.prototype.Start = function() { return this.$val.Start(); };
192244
192250
  Pinger.ptr.prototype.Close = function() {
192245
- var h;
192251
+ var {_r$1, _selection, h, $s, $r, $c} = $restore(this, {});
192252
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192246
192253
  h = this;
192247
192254
  h.closed = true;
192255
+ _selection = $select([[h.done], []]);
192256
+ if (_selection[0] === 0) {
192257
+ } else if (_selection[0] === 1) {
192258
+ $close(h.done);
192259
+ }
192260
+ _r$1 = $recv(h.stopped); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
192261
+ _r$1[0];
192262
+ $s = -1; return;
192263
+ /* */ } return; } var $f = {$blk: Pinger.ptr.prototype.Close, $c: true, $r, _r$1, _selection, h, $s};return $f;
192248
192264
  };
192249
192265
  Pinger.prototype.Close = function() { return this.$val.Close(); };
192250
192266
  Pinger.ptr.prototype.startPinging = function() {
192251
- var {_r$1, err, h, $s, $r, $c} = $restore(this, {});
192252
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192267
+ var {_arg, _r$1, _r$2, _r$3, _selection, err, h, $s, $deferred, $r, $c} = $restore(this, {});
192268
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
192253
192269
  h = this;
192270
+ $deferred.push([function(_arg) { $close(_arg); }, [h.stopped]]);
192254
192271
  /* while (true) { */ case 1:
192255
192272
  /* if (!(!h.closed)) { break; } */ if(!(!h.closed)) { $s = 2; continue; }
192256
192273
  _r$1 = h.messageSender.Send(2, new sliceType$1([])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
@@ -192260,11 +192277,21 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
192260
192277
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
192261
192278
  $r = errs.Print("Ping error", err); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192262
192279
  /* } */ case 5:
192263
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192280
+ _r$2 = time.After(new time.Duration(0, 1000000000)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
192281
+ _r$3 = $select([[_r$2], [h.done]]); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
192282
+ _selection = _r$3;
192283
+ /* */ if (_selection[0] === 0) { $s = 9; continue; }
192284
+ /* */ if (_selection[0] === 1) { $s = 10; continue; }
192285
+ /* */ $s = 11; continue;
192286
+ /* if (_selection[0] === 0) { */ case 9:
192287
+ $s = 11; continue;
192288
+ /* } else if (_selection[0] === 1) { */ case 10:
192289
+ $s = 12; case 12: return;
192290
+ /* } */ case 11:
192264
192291
  $s = 1; continue;
192265
192292
  case 2:
192266
192293
  $s = -1; return;
192267
- /* */ } return; } var $f = {$blk: Pinger.ptr.prototype.startPinging, $c: true, $r, _r$1, err, h, $s};return $f;
192294
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Pinger.ptr.prototype.startPinging, $c: true, $r, _arg, _r$1, _r$2, _r$3, _selection, err, h, $s, $deferred};return $f; } }
192268
192295
  };
192269
192296
  Pinger.prototype.startPinging = function() { return this.$val.startPinging(); };
192270
192297
  NewMetadataServer = function(framer, closeClient) {
@@ -192277,9 +192304,12 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
192277
192304
  s = this;
192278
192305
  pinger = NewPinger(NewMetadataMessageSender(s));
192279
192306
  pinger.Start();
192280
- s.OnClose((function(reason) {
192281
- var reason;
192282
- pinger.Close();
192307
+ s.OnClose((function $b(reason) {
192308
+ var {reason, $s, $r, $c} = $restore(this, {reason});
192309
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
192310
+ $r = pinger.Close(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192311
+ $s = -1; return;
192312
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, reason, $s};return $f;
192283
192313
  }));
192284
192314
  $go($methodVal(s, "handleData"), []);
192285
192315
  };
@@ -192763,7 +192793,7 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
192763
192793
  ptrType$6.methods = [{prop: "Connect", name: "Connect", pkg: "", typ: $funcType([], [ptrType$1, $error], false)}];
192764
192794
  ptrType$7.methods = [{prop: "Send", name: "Send", pkg: "", typ: $funcType([message.MsgType, sliceType$1], [$error], false)}];
192765
192795
  ptrType.methods = [{prop: "Send", name: "Send", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Receive", name: "Receive", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}];
192766
- Pinger.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "messageSender", name: "messageSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}]);
192796
+ Pinger.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "messageSender", name: "messageSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopped", name: "stopped", embedded: false, exported: false, typ: chanType, tag: ""}]);
192767
192797
  messageCallback.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "id", name: "id", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "callback", name: "callback", embedded: false, exported: false, typ: funcType$2, tag: ""}]);
192768
192798
  MetadataServer.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "framer", name: "framer", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "closeClient", name: "closeClient", embedded: false, exported: false, typ: funcType$3, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "onMessage", name: "onMessage", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "nextMessageID", name: "nextMessageID", embedded: false, exported: false, typ: $Int, tag: ""}]);
192769
192799
  response.init("github.com/supraio/client-daemon/pkg/netclient", [{prop: "err", name: "err", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "data", name: "data", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
@@ -193095,7 +193125,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
193095
193125
  $panic(err);
193096
193126
  }
193097
193127
  domEvents = dom.NewDomEvents();
193098
- w = new windowImpl.ptr(screen$1, ptrType$2.nil, $clone(canvasEl, js.Value), gl, ptrType$4.nil, ptrType$5.nil, ptrType$4.nil, ptrType$5.nil, ptrType$5.nil, ptrType$5.nil, ptrType$6.nil, false, domEvents, 0, 0);
193128
+ w = new windowImpl.ptr(screen$1, new sync.Mutex.ptr(0, 0), $clone(canvasEl, js.Value), gl, ptrType$4.nil, ptrType$5.nil, ptrType$4.nil, ptrType$5.nil, ptrType$5.nil, ptrType$5.nil, ptrType$6.nil, false, domEvents, 0, 0);
193099
193129
  /* */ if (!((opts.Width === 0))) { $s = 14; continue; }
193100
193130
  /* */ $s = 15; continue;
193101
193131
  /* if (!((opts.Width === 0))) { */ case 14:
@@ -194499,7 +194529,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/screenbuffer"] = (functio
194499
194529
  return $pkg;
194500
194530
  })();
194501
194531
  $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
194502
- var $pkg = {}, $init, image, log, math, sync, time, Stopwatch, Frame, Stats, Metrics, EncodingPreferences, InputMetrics, ClientStats, ptrType, sliceType, ptrType$1, ptrType$2, sliceType$1, mapType, ptrType$3, ptrType$4, ptrType$5, mapType$1, NewStopwatch, NewStats, NewMetrics, average, variance;
194532
+ 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;
194503
194533
  image = $packages["image"];
194504
194534
  log = $packages["log"];
194505
194535
  math = $packages["math"];
@@ -194516,7 +194546,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
194516
194546
  this.groups = groups_;
194517
194547
  });
194518
194548
  Frame = $pkg.Frame = $newType(8, $kindInterface, "stats.Frame", true, "github.com/supraio/client-daemon/pkg/stats", true, null);
194519
- Stats = $pkg.Stats = $newType(0, $kindStruct, "stats.Stats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(stopped_, lastFrameAt_, lastScreenPingAt_, stopwatch_, metrics_, latency_, serverTimestampAhead_, serverTimestampAheadBuffer_, currentFramesCount_, lastFrameRate_, totalFramesCount_, lastFramesLatencyAverage_, lastFramesLatencyVariance_, longTermFramesLatencyAverage_, longTermFramesLatencyVariance_, lastFramesCollectionAverage_, lastFramesCollectionVariance_, longTermFramesCollectionAverage_, longTermFramesCollectionVariance_, currentThrottledCollectionFramesCount_, lastThrottledCollectionFrameRate_, lastFramesDecodeWriteAverage_, lastFramesDecodeOutputAverage_, lastFramesDecodeWriteVariance_, lastFramesDecodeOutputVariance_, longTermFramesDecodeWriteAverage_, longTermFramesDecodeOutputAverage_, longTermFramesDecodeWriteVariance_, longTermFramesDecodeOutputVariance_, currentThrottledDecodeFramesCount_, lastThrottledDecodeFrameRate_, lastFramesRenderAverage_, lastFramesRenderVariance_, longTermFramesRenderAverage_, longTermFramesRenderVariance_, currentThrottledRenderFramesCount_, lastThrottledRenderFrameRate_, screenResolutionWidth_, screenResolutionHeight_, lastInteractionAt_, encodingPreferences_) {
194549
+ 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_, 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_) {
194520
194550
  this.$val = this;
194521
194551
  if (arguments.length === 0) {
194522
194552
  this.stopped = false;
@@ -194524,6 +194554,8 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
194524
194554
  this.lastScreenPingAt = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
194525
194555
  this.stopwatch = ptrType$1.nil;
194526
194556
  this.metrics = ptrType$2.nil;
194557
+ this.done = $chanNil;
194558
+ this.calcStopped = $chanNil;
194527
194559
  this.latency = new time.Duration(0, 0);
194528
194560
  this.serverTimestampAhead = new time.Duration(0, 0);
194529
194561
  this.serverTimestampAheadBuffer = sliceType$1.nil;
@@ -194567,6 +194599,8 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
194567
194599
  this.lastScreenPingAt = lastScreenPingAt_;
194568
194600
  this.stopwatch = stopwatch_;
194569
194601
  this.metrics = metrics_;
194602
+ this.done = done_;
194603
+ this.calcStopped = calcStopped_;
194570
194604
  this.latency = latency_;
194571
194605
  this.serverTimestampAhead = serverTimestampAhead_;
194572
194606
  this.serverTimestampAheadBuffer = serverTimestampAheadBuffer_;
@@ -194735,10 +194769,12 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
194735
194769
  ptrType$1 = $ptrType(Stopwatch);
194736
194770
  ptrType$2 = $ptrType(Metrics);
194737
194771
  sliceType$1 = $sliceType(time.Duration);
194772
+ structType = $structType("", []);
194738
194773
  mapType = $mapType($String, time.Time);
194739
194774
  ptrType$3 = $ptrType(ClientStats);
194740
194775
  ptrType$4 = $ptrType(image.Point);
194741
194776
  ptrType$5 = $ptrType(Stats);
194777
+ chanType = $chanType(structType, false, false);
194742
194778
  mapType$1 = $mapType($String, sliceType$1);
194743
194779
  NewStopwatch = function() {
194744
194780
  return new Stopwatch.ptr($clone(new sync.Mutex.ptr(0, 0), sync.Mutex), new $global.Map());
@@ -194791,12 +194827,28 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
194791
194827
  _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194792
194828
  _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; }
194793
194829
  _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; }
194794
- s = new Stats.ptr(false, $clone(_r, time.Time), $clone(_r$1, time.Time), NewStopwatch(), NewMetrics(), new time.Duration(0, 0), new time.Duration(0, 0), sliceType$1.nil, 0, 0, 0, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, 0, 0, 0, $clone(_r$2, time.Time), new EncodingPreferences.ptr(0, 0, "", "", ""));
194830
+ 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, 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, "", "", ""));
194795
194831
  $go($methodVal(s, "startCalculations"), []);
194796
194832
  $s = -1; return s;
194797
194833
  /* */ } return; } var $f = {$blk: NewStats, $c: true, $r, _r, _r$1, _r$2, s, $s};return $f;
194798
194834
  };
194799
194835
  $pkg.NewStats = NewStats;
194836
+ Stats.ptr.prototype.Stop = function() {
194837
+ var {_r, _selection, s, $s, $r, $c} = $restore(this, {});
194838
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
194839
+ s = this;
194840
+ s.stopped = true;
194841
+ _selection = $select([[s.done], []]);
194842
+ if (_selection[0] === 0) {
194843
+ } else if (_selection[0] === 1) {
194844
+ $close(s.done);
194845
+ }
194846
+ _r = $recv(s.calcStopped); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
194847
+ _r[0];
194848
+ $s = -1; return;
194849
+ /* */ } return; } var $f = {$blk: Stats.ptr.prototype.Stop, $c: true, $r, _r, _selection, s, $s};return $f;
194850
+ };
194851
+ Stats.prototype.Stop = function() { return this.$val.Stop(); };
194800
194852
  Stats.ptr.prototype.GetClientStats = function() {
194801
194853
  var s;
194802
194854
  s = this;
@@ -195003,9 +195055,10 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195003
195055
  };
195004
195056
  Stats.prototype.GetFrameRate = function() { return this.$val.GetFrameRate(); };
195005
195057
  Stats.ptr.prototype.startCalculations = function() {
195006
- 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, s, $s, $r, $c} = $restore(this, {});
195007
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195058
+ 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, {});
195059
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195008
195060
  s = this;
195061
+ $deferred.push([function(_arg) { $close(_arg); }, [s.calcStopped]]);
195009
195062
  /* while (true) { */ case 1:
195010
195063
  /* if (!(!s.stopped)) { break; } */ if(!(!s.stopped)) { $s = 2; continue; }
195011
195064
  s.lastFrameRate = s.currentFramesCount;
@@ -195068,11 +195121,21 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195068
195121
  _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; }
195069
195122
  s.longTermFramesRenderVariance = _r$19;
195070
195123
  $r = s.print(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195071
- $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195124
+ _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; }
195125
+ _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; }
195126
+ _selection = _r$21;
195127
+ /* */ if (_selection[0] === 0) { $s = 36; continue; }
195128
+ /* */ if (_selection[0] === 1) { $s = 37; continue; }
195129
+ /* */ $s = 38; continue;
195130
+ /* if (_selection[0] === 0) { */ case 36:
195131
+ $s = 38; continue;
195132
+ /* } else if (_selection[0] === 1) { */ case 37:
195133
+ $s = 39; case 39: return;
195134
+ /* } */ case 38:
195072
195135
  $s = 1; continue;
195073
195136
  case 2:
195074
195137
  $s = -1; return;
195075
- /* */ } return; } var $f = {$blk: Stats.ptr.prototype.startCalculations, $c: true, $r, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, s, $s};return $f;
195138
+ /* */ } 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; } }
195076
195139
  };
195077
195140
  Stats.prototype.startCalculations = function() { return this.$val.startCalculations(); };
195078
195141
  Stats.ptr.prototype.print = function() {
@@ -195273,11 +195336,11 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195273
195336
  return (new time.Duration(0, math.Sqrt(($flatten64($div64(sum, (new time.Duration(0, values.$length)), false))))));
195274
195337
  };
195275
195338
  ptrType$1.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([$String], [time.Duration], false)}];
195276
- ptrType$5.methods = [{prop: "GetClientStats", name: "GetClientStats", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "SetLatency", name: "SetLatency", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "UpdateServerTimestampAhead", name: "UpdateServerTimestampAhead", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "SetScreenResolution", name: "SetScreenResolution", pkg: "", typ: $funcType([ptrType$4], [], false)}, {prop: "NotifyFrame", name: "NotifyFrame", pkg: "", typ: $funcType([Frame], [], false)}, {prop: "NotifyScreenPing", name: "NotifyScreenPing", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionStarted", name: "NotifyFrameCollectionStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionEnded", name: "NotifyFrameCollectionEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameCollectionDuration", name: "NotifyFrameCollectionDuration", pkg: "", typ: $funcType([time.Duration], [], false)}, {prop: "NotifyThrottledCollectionFrame", name: "NotifyThrottledCollectionFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteStarted", name: "NotifyFrameDecodeWriteStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeWriteEnded", name: "NotifyFrameDecodeWriteEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputStarted", name: "NotifyFrameDecodeOutputStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeOutputEnded", name: "NotifyFrameDecodeOutputEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledDecodeFrame", name: "NotifyThrottledDecodeFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderStarted", name: "NotifyFrameRenderStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderEnded", name: "NotifyFrameRenderEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyThrottledRenderFrame", name: "NotifyThrottledRenderFrame", pkg: "", typ: $funcType([], [], false)}, {prop: "GetLastFrameAt", name: "GetLastFrameAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenPingAt", name: "GetLastScreenPingAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetLastScreenImpulseAt", name: "GetLastScreenImpulseAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetFrameRate", name: "GetFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "startCalculations", name: "startCalculations", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "print", name: "print", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "GetServerTime", name: "GetServerTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "NotifyInteraction", name: "NotifyInteraction", pkg: "", typ: $funcType([], [], false)}, {prop: "GetInteractionWaitMultiplier", name: "GetInteractionWaitMultiplier", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "SetEncodingPreferences", name: "SetEncodingPreferences", pkg: "", typ: $funcType([EncodingPreferences], [], false)}];
195339
+ 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: "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)}];
195277
195340
  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)}];
195278
195341
  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: ""}]);
195279
195342
  Frame.init([{prop: "GetTimestamp", name: "GetTimestamp", pkg: "", typ: $funcType([], [time.Time], false)}]);
195280
- Stats.init("github.com/supraio/client-daemon/pkg/stats", [{prop: "stopped", name: "stopped", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "lastFrameAt", name: "lastFrameAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "lastScreenPingAt", name: "lastScreenPingAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "stopwatch", name: "stopwatch", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "metrics", name: "metrics", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "latency", name: "latency", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "serverTimestampAhead", name: "serverTimestampAhead", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "serverTimestampAheadBuffer", name: "serverTimestampAheadBuffer", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "currentFramesCount", name: "currentFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFrameRate", name: "lastFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "totalFramesCount", name: "totalFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFramesLatencyAverage", name: "lastFramesLatencyAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesLatencyVariance", name: "lastFramesLatencyVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesLatencyAverage", name: "longTermFramesLatencyAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesLatencyVariance", name: "longTermFramesLatencyVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesCollectionAverage", name: "lastFramesCollectionAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesCollectionVariance", name: "lastFramesCollectionVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesCollectionAverage", name: "longTermFramesCollectionAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesCollectionVariance", name: "longTermFramesCollectionVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "currentThrottledCollectionFramesCount", name: "currentThrottledCollectionFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastThrottledCollectionFrameRate", name: "lastThrottledCollectionFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFramesDecodeWriteAverage", name: "lastFramesDecodeWriteAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesDecodeOutputAverage", name: "lastFramesDecodeOutputAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesDecodeWriteVariance", name: "lastFramesDecodeWriteVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesDecodeOutputVariance", name: "lastFramesDecodeOutputVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeWriteAverage", name: "longTermFramesDecodeWriteAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeOutputAverage", name: "longTermFramesDecodeOutputAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeWriteVariance", name: "longTermFramesDecodeWriteVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesDecodeOutputVariance", name: "longTermFramesDecodeOutputVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "currentThrottledDecodeFramesCount", name: "currentThrottledDecodeFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastThrottledDecodeFrameRate", name: "lastThrottledDecodeFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFramesRenderAverage", name: "lastFramesRenderAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "lastFramesRenderVariance", name: "lastFramesRenderVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesRenderAverage", name: "longTermFramesRenderAverage", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "longTermFramesRenderVariance", name: "longTermFramesRenderVariance", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "currentThrottledRenderFramesCount", name: "currentThrottledRenderFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastThrottledRenderFrameRate", name: "lastThrottledRenderFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "screenResolutionWidth", name: "screenResolutionWidth", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "screenResolutionHeight", name: "screenResolutionHeight", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "lastInteractionAt", name: "lastInteractionAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "encodingPreferences", name: "encodingPreferences", embedded: false, exported: false, typ: EncodingPreferences, tag: ""}]);
195343
+ 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: "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: ""}]);
195281
195344
  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: ""}]);
195282
195345
  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\""}]);
195283
195346
  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\""}]);
@@ -195296,7 +195359,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
195296
195359
  return $pkg;
195297
195360
  })();
195298
195361
  $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195299
- var $pkg = {}, $init, decoder, errs, frame, netframe, screenbuffer, stats, screen, image, time, RenderingLoop, DecodeResultProvider, DecodeResult, DecoderLoop, FrameProvider, CollectionLoop, ptrType, sliceType, ptrType$1, ptrType$2, ptrType$3, funcType, ptrType$4, chanType, chanType$1, ptrType$5, NewRenderingLoop, NewDecoderLoop, NewCollectionLoop;
195362
+ var $pkg = {}, $init, decoder, errs, frame, netframe, screenbuffer, stats, screen, image, sync, time, RenderingLoop, DecodeResultProvider, DecodeResult, DecoderLoop, FrameProvider, CollectionLoop, ptrType, structType, sliceType, ptrType$1, ptrType$2, ptrType$3, chanType, funcType, ptrType$4, chanType$1, chanType$2, ptrType$5, NewRenderingLoop, NewDecoderLoop, NewCollectionLoop;
195300
195363
  decoder = $packages["github.com/supraio/client-daemon/pkg/decoder"];
195301
195364
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
195302
195365
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
@@ -195305,8 +195368,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195305
195368
  stats = $packages["github.com/supraio/client-daemon/pkg/stats"];
195306
195369
  screen = $packages["golang.org/x/exp/shiny/screen"];
195307
195370
  image = $packages["image"];
195371
+ sync = $packages["sync"];
195308
195372
  time = $packages["time"];
195309
- RenderingLoop = $pkg.RenderingLoop = $newType(0, $kindStruct, "player.RenderingLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(decodeResultProvider_, window_, stats_, started_, renderingInProgress_) {
195373
+ RenderingLoop = $pkg.RenderingLoop = $newType(0, $kindStruct, "player.RenderingLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(decodeResultProvider_, window_, stats_, started_, renderingInProgress_, done_, stopped_) {
195310
195374
  this.$val = this;
195311
195375
  if (arguments.length === 0) {
195312
195376
  this.decodeResultProvider = $ifaceNil;
@@ -195314,6 +195378,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195314
195378
  this.stats = ptrType.nil;
195315
195379
  this.started = false;
195316
195380
  this.renderingInProgress = false;
195381
+ this.done = $chanNil;
195382
+ this.stopped = $chanNil;
195317
195383
  return;
195318
195384
  }
195319
195385
  this.decodeResultProvider = decodeResultProvider_;
@@ -195321,6 +195387,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195321
195387
  this.stats = stats_;
195322
195388
  this.started = started_;
195323
195389
  this.renderingInProgress = renderingInProgress_;
195390
+ this.done = done_;
195391
+ this.stopped = stopped_;
195324
195392
  });
195325
195393
  DecodeResultProvider = $pkg.DecodeResultProvider = $newType(8, $kindInterface, "player.DecodeResultProvider", true, "github.com/supraio/client-daemon/pkg/render/player", true, null);
195326
195394
  DecodeResult = $pkg.DecodeResult = $newType(0, $kindStruct, "player.DecodeResult", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(Frame_, Buffer_, Release_) {
@@ -195335,7 +195403,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195335
195403
  this.Buffer = Buffer_;
195336
195404
  this.Release = Release_;
195337
195405
  });
195338
- DecoderLoop = $pkg.DecoderLoop = $newType(0, $kindStruct, "player.DecoderLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameProvider_, bufferPool_, stats_, decodeResultChan_, framesChan_, started_, decoder_) {
195406
+ DecoderLoop = $pkg.DecoderLoop = $newType(0, $kindStruct, "player.DecoderLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameProvider_, bufferPool_, stats_, decodeResultChan_, framesChan_, done_, stopped_, started_, decoder_) {
195339
195407
  this.$val = this;
195340
195408
  if (arguments.length === 0) {
195341
195409
  this.frameProvider = $ifaceNil;
@@ -195343,6 +195411,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195343
195411
  this.stats = ptrType.nil;
195344
195412
  this.decodeResultChan = $chanNil;
195345
195413
  this.framesChan = $chanNil;
195414
+ this.done = $chanNil;
195415
+ this.stopped = $chanNil;
195346
195416
  this.started = false;
195347
195417
  this.decoder = $ifaceNil;
195348
195418
  return;
@@ -195352,37 +195422,45 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195352
195422
  this.stats = stats_;
195353
195423
  this.decodeResultChan = decodeResultChan_;
195354
195424
  this.framesChan = framesChan_;
195425
+ this.done = done_;
195426
+ this.stopped = stopped_;
195355
195427
  this.started = started_;
195356
195428
  this.decoder = decoder_;
195357
195429
  });
195358
195430
  FrameProvider = $pkg.FrameProvider = $newType(8, $kindInterface, "player.FrameProvider", true, "github.com/supraio/client-daemon/pkg/render/player", true, null);
195359
- CollectionLoop = $pkg.CollectionLoop = $newType(0, $kindStruct, "player.CollectionLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameCollector_, stats_, framesChan_, started_) {
195431
+ CollectionLoop = $pkg.CollectionLoop = $newType(0, $kindStruct, "player.CollectionLoop", true, "github.com/supraio/client-daemon/pkg/render/player", true, function(frameCollector_, stats_, framesChan_, done_, stopped_, started_) {
195360
195432
  this.$val = this;
195361
195433
  if (arguments.length === 0) {
195362
195434
  this.frameCollector = $ifaceNil;
195363
195435
  this.stats = ptrType.nil;
195364
195436
  this.framesChan = $chanNil;
195437
+ this.done = $chanNil;
195438
+ this.stopped = $chanNil;
195365
195439
  this.started = false;
195366
195440
  return;
195367
195441
  }
195368
195442
  this.frameCollector = frameCollector_;
195369
195443
  this.stats = stats_;
195370
195444
  this.framesChan = framesChan_;
195445
+ this.done = done_;
195446
+ this.stopped = stopped_;
195371
195447
  this.started = started_;
195372
195448
  });
195373
195449
  ptrType = $ptrType(stats.Stats);
195450
+ structType = $structType("", []);
195374
195451
  sliceType = $sliceType($emptyInterface);
195375
195452
  ptrType$1 = $ptrType(screenbuffer.BufferPool);
195376
195453
  ptrType$2 = $ptrType(DecodeResult);
195377
195454
  ptrType$3 = $ptrType(RenderingLoop);
195455
+ chanType = $chanType(structType, false, false);
195378
195456
  funcType = $funcType([], [], false);
195379
195457
  ptrType$4 = $ptrType(DecoderLoop);
195380
- chanType = $chanType(ptrType$2, false, false);
195381
- chanType$1 = $chanType(frame.FrameInterface, false, false);
195458
+ chanType$1 = $chanType(ptrType$2, false, false);
195459
+ chanType$2 = $chanType(frame.FrameInterface, false, false);
195382
195460
  ptrType$5 = $ptrType(CollectionLoop);
195383
195461
  NewRenderingLoop = function(decodeResultProvider, window, stats$1) {
195384
195462
  var decodeResultProvider, stats$1, window;
195385
- return new RenderingLoop.ptr(decodeResultProvider, window, stats$1, false, false);
195463
+ return new RenderingLoop.ptr(decodeResultProvider, window, stats$1, false, false, new $Chan(structType, 0), new $Chan(structType, 0));
195386
195464
  };
195387
195465
  $pkg.NewRenderingLoop = NewRenderingLoop;
195388
195466
  RenderingLoop.ptr.prototype.Start = function() {
@@ -195393,8 +195471,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195393
195471
  }
195394
195472
  dl.started = true;
195395
195473
  $go((function $b() {
195396
- var {_r, err, $s, $r, $c} = $restore(this, {});
195397
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195474
+ var {_arg, _r, _r$1, _r$2, _selection, err, $s, $deferred, $r, $c} = $restore(this, {});
195475
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195476
+ $deferred.push([function(_arg) { $close(_arg); }, [dl.stopped]]);
195398
195477
  /* while (true) { */ case 1:
195399
195478
  /* if (!(dl.started)) { break; } */ if(!(dl.started)) { $s = 2; continue; }
195400
195479
  _r = dl.renderBuffer(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
@@ -195402,26 +195481,50 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195402
195481
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
195403
195482
  /* */ $s = 5; continue;
195404
195483
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
195405
- $r = time.Sleep(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195406
- /* */ if (dl.started) { $s = 7; continue; }
195407
- /* */ $s = 8; continue;
195408
- /* if (dl.started) { */ case 7:
195409
- $r = errs.Print("Frame render failed, dropping", err); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195410
- /* } */ case 8:
195484
+ _r$1 = time.After(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195485
+ _r$2 = $select([[dl.done], [_r$1]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195486
+ _selection = _r$2;
195487
+ /* */ if (_selection[0] === 0) { $s = 8; continue; }
195488
+ /* */ if (_selection[0] === 1) { $s = 9; continue; }
195489
+ /* */ $s = 10; continue;
195490
+ /* if (_selection[0] === 0) { */ case 8:
195491
+ $s = 11; case 11: return;
195492
+ /* } else if (_selection[0] === 1) { */ case 9:
195493
+ /* } */ case 10:
195494
+ /* */ if (dl.started) { $s = 12; continue; }
195495
+ /* */ $s = 13; continue;
195496
+ /* if (dl.started) { */ case 12:
195497
+ $r = errs.Print("Frame render failed, dropping", err); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195498
+ /* } */ case 13:
195411
195499
  /* } */ case 5:
195412
195500
  $s = 1; continue;
195413
195501
  case 2:
195414
195502
  $s = -1; return;
195415
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, err, $s};return $f;
195503
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: $b, $c: true, $r, _arg, _r, _r$1, _r$2, _selection, err, $s, $deferred};return $f; } }
195416
195504
  }), []);
195417
195505
  };
195418
195506
  RenderingLoop.prototype.Start = function() { return this.$val.Start(); };
195419
195507
  RenderingLoop.ptr.prototype.Stop = function() {
195420
- var dl;
195508
+ var _selection, dl;
195421
195509
  dl = this;
195422
195510
  dl.started = false;
195511
+ _selection = $select([[dl.done], []]);
195512
+ if (_selection[0] === 0) {
195513
+ } else if (_selection[0] === 1) {
195514
+ $close(dl.done);
195515
+ }
195423
195516
  };
195424
195517
  RenderingLoop.prototype.Stop = function() { return this.$val.Stop(); };
195518
+ RenderingLoop.ptr.prototype.Wait = function() {
195519
+ var {_r, dl, $s, $r, $c} = $restore(this, {});
195520
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195521
+ dl = this;
195522
+ _r = $recv(dl.stopped); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195523
+ _r[0];
195524
+ $s = -1; return;
195525
+ /* */ } return; } var $f = {$blk: RenderingLoop.ptr.prototype.Wait, $c: true, $r, _r, dl, $s};return $f;
195526
+ };
195527
+ RenderingLoop.prototype.Wait = function() { return this.$val.Wait(); };
195425
195528
  RenderingLoop.ptr.prototype.renderBuffer = function() {
195426
195529
  var {$24r, $24r$1, $24r$2, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s, $deferred, $r, $c} = $restore(this, {});
195427
195530
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
@@ -195466,7 +195569,7 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195466
195569
  };
195467
195570
  RenderingLoop.prototype.renderBuffer = function() { return this.$val.renderBuffer(); };
195468
195571
  RenderingLoop.ptr.prototype.waitForRenderTime = function(frame$1) {
195469
- var {_r, _r$1, _r$2, _r$3, dl, frame$1, renderTime, serverTime, waitDuration, $s, $r, $c} = $restore(this, {frame$1});
195572
+ var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _selection, dl, frame$1, renderTime, serverTime, waitDuration, $s, $r, $c} = $restore(this, {frame$1});
195470
195573
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195471
195574
  dl = this;
195472
195575
  _r = frame$1.GetTimestamp(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
@@ -195479,25 +195582,45 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195479
195582
  /* */ if ((waitDuration.$high > 0 || (waitDuration.$high === 0 && waitDuration.$low > 0))) { $s = 5; continue; }
195480
195583
  /* */ $s = 6; continue;
195481
195584
  /* if ((waitDuration.$high > 0 || (waitDuration.$high === 0 && waitDuration.$low > 0))) { */ case 5:
195482
- $r = time.Sleep(waitDuration); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195585
+ _r$4 = time.After(waitDuration); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
195586
+ _r$5 = $select([[_r$4], [dl.done]]); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
195587
+ _selection = _r$5;
195588
+ /* */ if (_selection[0] === 0) { $s = 9; continue; }
195589
+ /* */ if (_selection[0] === 1) { $s = 10; continue; }
195590
+ /* */ $s = 11; continue;
195591
+ /* if (_selection[0] === 0) { */ case 9:
195592
+ $s = 11; continue;
195593
+ /* } else if (_selection[0] === 1) { */ case 10:
195594
+ /* } */ case 11:
195483
195595
  /* } */ case 6:
195484
195596
  $s = -1; return;
195485
- /* */ } return; } var $f = {$blk: RenderingLoop.ptr.prototype.waitForRenderTime, $c: true, $r, _r, _r$1, _r$2, _r$3, dl, frame$1, renderTime, serverTime, waitDuration, $s};return $f;
195597
+ /* */ } return; } var $f = {$blk: RenderingLoop.ptr.prototype.waitForRenderTime, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _selection, dl, frame$1, renderTime, serverTime, waitDuration, $s};return $f;
195486
195598
  };
195487
195599
  RenderingLoop.prototype.waitForRenderTime = function(frame$1) { return this.$val.waitForRenderTime(frame$1); };
195488
195600
  NewDecoderLoop = function(frameProvider, createBuffer, stats$1) {
195489
195601
  var createBuffer, frameProvider, stats$1;
195490
- return new DecoderLoop.ptr(frameProvider, screenbuffer.NewBufferPool(createBuffer, 20), stats$1, new $Chan(ptrType$2, 50), new $Chan(frame.FrameInterface, 50), false, $ifaceNil);
195602
+ return new DecoderLoop.ptr(frameProvider, screenbuffer.NewBufferPool(createBuffer, 20), stats$1, new $Chan(ptrType$2, 50), new $Chan(frame.FrameInterface, 50), new $Chan(structType, 0), new $Chan(structType, 0), false, $ifaceNil);
195491
195603
  };
195492
195604
  $pkg.NewDecoderLoop = NewDecoderLoop;
195493
195605
  DecoderLoop.ptr.prototype.NextDecodedResult = function() {
195494
- var {_r, dl, result, $s, $r, $c} = $restore(this, {});
195606
+ var {$24r, _r, _r$1, _selection, dl, result, $s, $r, $c} = $restore(this, {});
195495
195607
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195496
195608
  dl = this;
195497
- _r = $recv(dl.decodeResultChan); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195498
- result = _r[0];
195499
- $s = -1; return [result, $ifaceNil];
195500
- /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.NextDecodedResult, $c: true, $r, _r, dl, result, $s};return $f;
195609
+ _r = $select([[dl.decodeResultChan], [dl.done]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195610
+ _selection = _r;
195611
+ /* */ if (_selection[0] === 0) { $s = 2; continue; }
195612
+ /* */ if (_selection[0] === 1) { $s = 3; continue; }
195613
+ /* */ $s = 4; continue;
195614
+ /* if (_selection[0] === 0) { */ case 2:
195615
+ result = _selection[1][0];
195616
+ $s = -1; return [result, $ifaceNil];
195617
+ /* } else if (_selection[0] === 1) { */ case 3:
195618
+ _r$1 = errs.Errorf("Decoder loop stopped", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195619
+ $24r = [ptrType$2.nil, _r$1];
195620
+ $s = 6; case 6: return $24r;
195621
+ /* } */ case 4:
195622
+ $s = -1; return [ptrType$2.nil, $ifaceNil];
195623
+ /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.NextDecodedResult, $c: true, $r, $24r, _r, _r$1, _selection, dl, result, $s};return $f;
195501
195624
  };
195502
195625
  DecoderLoop.prototype.NextDecodedResult = function() { return this.$val.NextDecodedResult(); };
195503
195626
  DecoderLoop.ptr.prototype.Start = function() {
@@ -195508,59 +195631,105 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195508
195631
  }
195509
195632
  dl.started = true;
195510
195633
  $go((function $b() {
195511
- var {_r, err, $s, $r, $c} = $restore(this, {});
195512
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195513
- /* while (true) { */ case 1:
195514
- /* if (!(dl.started)) { break; } */ if(!(dl.started)) { $s = 2; continue; }
195515
- _r = dl.writeFrame(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195516
- err = _r;
195517
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
195518
- /* */ $s = 5; continue;
195519
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
195520
- $r = time.Sleep(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195521
- /* */ if (dl.started) { $s = 7; continue; }
195522
- /* */ $s = 8; continue;
195523
- /* if (dl.started) { */ case 7:
195524
- $r = errs.Print("Frame write failed, dropping", err); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195525
- /* } */ case 8:
195526
- /* } */ case 5:
195527
- $s = 1; continue;
195528
- case 2:
195529
- $s = -1; return;
195530
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, err, $s};return $f;
195531
- }), []);
195532
- $go((function $b() {
195533
- var {_r, err, $s, $r, $c} = $restore(this, {});
195534
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195535
- /* while (true) { */ case 1:
195536
- /* if (!(dl.started)) { break; } */ if(!(dl.started)) { $s = 2; continue; }
195537
- _r = dl.outputBuffer(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195538
- err = _r;
195539
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
195540
- /* */ $s = 5; continue;
195541
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
195542
- $r = time.Sleep(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195543
- /* */ if (dl.started) { $s = 7; continue; }
195544
- /* */ $s = 8; continue;
195545
- /* if (dl.started) { */ case 7:
195546
- $r = errs.Print("Frame output failed, dropping", err); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195547
- /* } */ case 8:
195548
- /* } */ case 5:
195549
- $s = 1; continue;
195550
- case 2:
195634
+ var {_arg, wg, $s, $deferred, $r, $c} = $restore(this, {});
195635
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195636
+ wg = [wg];
195637
+ $deferred.push([function(_arg) { $close(_arg); }, [dl.stopped]]);
195638
+ wg[0] = new sync.WaitGroup.ptr(0, $chanNil, new $Uint64(0, 0), 0);
195639
+ wg[0].Add(2);
195640
+ $go((function(wg) { return function $b() {
195641
+ var {_r, _r$1, _r$2, _selection, err, $s, $deferred, $r, $c} = $restore(this, {});
195642
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195643
+ $deferred.push([$methodVal(wg[0], "Done"), []]);
195644
+ /* while (true) { */ case 1:
195645
+ /* if (!(dl.started)) { break; } */ if(!(dl.started)) { $s = 2; continue; }
195646
+ _r = dl.writeFrame(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195647
+ err = _r;
195648
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
195649
+ /* */ $s = 5; continue;
195650
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
195651
+ _r$1 = time.After(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195652
+ _r$2 = $select([[dl.done], [_r$1]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195653
+ _selection = _r$2;
195654
+ /* */ if (_selection[0] === 0) { $s = 8; continue; }
195655
+ /* */ if (_selection[0] === 1) { $s = 9; continue; }
195656
+ /* */ $s = 10; continue;
195657
+ /* if (_selection[0] === 0) { */ case 8:
195658
+ $s = 11; case 11: return;
195659
+ /* } else if (_selection[0] === 1) { */ case 9:
195660
+ /* } */ case 10:
195661
+ /* */ if (dl.started) { $s = 12; continue; }
195662
+ /* */ $s = 13; continue;
195663
+ /* if (dl.started) { */ case 12:
195664
+ $r = errs.Print("Frame write failed, dropping", err); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195665
+ /* } */ case 13:
195666
+ /* } */ case 5:
195667
+ $s = 1; continue;
195668
+ case 2:
195669
+ $s = -1; return;
195670
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: $b, $c: true, $r, _r, _r$1, _r$2, _selection, err, $s, $deferred};return $f; } }
195671
+ }; })(wg), []);
195672
+ $go((function(wg) { return function $b() {
195673
+ var {_r, _r$1, _r$2, _selection, err, $s, $deferred, $r, $c} = $restore(this, {});
195674
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195675
+ $deferred.push([$methodVal(wg[0], "Done"), []]);
195676
+ /* while (true) { */ case 1:
195677
+ /* if (!(dl.started)) { break; } */ if(!(dl.started)) { $s = 2; continue; }
195678
+ _r = dl.outputBuffer(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195679
+ err = _r;
195680
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
195681
+ /* */ $s = 5; continue;
195682
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
195683
+ _r$1 = time.After(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195684
+ _r$2 = $select([[dl.done], [_r$1]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195685
+ _selection = _r$2;
195686
+ /* */ if (_selection[0] === 0) { $s = 8; continue; }
195687
+ /* */ if (_selection[0] === 1) { $s = 9; continue; }
195688
+ /* */ $s = 10; continue;
195689
+ /* if (_selection[0] === 0) { */ case 8:
195690
+ $s = 11; case 11: return;
195691
+ /* } else if (_selection[0] === 1) { */ case 9:
195692
+ /* } */ case 10:
195693
+ /* */ if (dl.started) { $s = 12; continue; }
195694
+ /* */ $s = 13; continue;
195695
+ /* if (dl.started) { */ case 12:
195696
+ $r = errs.Print("Frame output failed, dropping", err); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195697
+ /* } */ case 13:
195698
+ /* } */ case 5:
195699
+ $s = 1; continue;
195700
+ case 2:
195701
+ $s = -1; return;
195702
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: $b, $c: true, $r, _r, _r$1, _r$2, _selection, err, $s, $deferred};return $f; } }
195703
+ }; })(wg), []);
195704
+ $r = wg[0].Wait(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195551
195705
  $s = -1; return;
195552
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, err, $s};return $f;
195706
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: $b, $c: true, $r, _arg, wg, $s, $deferred};return $f; } }
195553
195707
  }), []);
195554
195708
  };
195555
195709
  DecoderLoop.prototype.Start = function() { return this.$val.Start(); };
195556
195710
  DecoderLoop.ptr.prototype.Stop = function() {
195557
- var dl;
195711
+ var _selection, dl;
195558
195712
  dl = this;
195559
195713
  dl.started = false;
195714
+ _selection = $select([[dl.done], []]);
195715
+ if (_selection[0] === 0) {
195716
+ } else if (_selection[0] === 1) {
195717
+ $close(dl.done);
195718
+ }
195560
195719
  };
195561
195720
  DecoderLoop.prototype.Stop = function() { return this.$val.Stop(); };
195721
+ DecoderLoop.ptr.prototype.Wait = function() {
195722
+ var {_r, dl, $s, $r, $c} = $restore(this, {});
195723
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195724
+ dl = this;
195725
+ _r = $recv(dl.stopped); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195726
+ _r[0];
195727
+ $s = -1; return;
195728
+ /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.Wait, $c: true, $r, _r, dl, $s};return $f;
195729
+ };
195730
+ DecoderLoop.prototype.Wait = function() { return this.$val.Wait(); };
195562
195731
  DecoderLoop.ptr.prototype.writeFrame = function() {
195563
- var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, decoder$1, dl, err, frame$1, $s, $r, $c} = $restore(this, {});
195732
+ var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _tuple, _tuple$1, decoder$1, dl, err, frame$1, $s, $r, $c} = $restore(this, {});
195564
195733
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195565
195734
  dl = this;
195566
195735
  _r = dl.frameProvider.NextFrame(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
@@ -195596,65 +195765,100 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195596
195765
  $24r$2 = _r$5;
195597
195766
  $s = 17; case 17: return $24r$2;
195598
195767
  /* } */ case 15:
195599
- $r = $send(dl.framesChan, frame$1); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195768
+ _r$6 = $select([[dl.framesChan, frame$1], [dl.done]]); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
195769
+ _selection = _r$6;
195770
+ /* */ if (_selection[0] === 0) { $s = 19; continue; }
195771
+ /* */ if (_selection[0] === 1) { $s = 20; continue; }
195772
+ /* */ $s = 21; continue;
195773
+ /* if (_selection[0] === 0) { */ case 19:
195774
+ $s = 21; continue;
195775
+ /* } else if (_selection[0] === 1) { */ case 20:
195776
+ _r$7 = errs.Errorf("Decoder loop stopped", sliceType.nil); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
195777
+ $24r$3 = _r$7;
195778
+ $s = 23; case 23: return $24r$3;
195779
+ /* } */ case 21:
195600
195780
  $s = -1; return $ifaceNil;
195601
- /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.writeFrame, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, decoder$1, dl, err, frame$1, $s};return $f;
195781
+ /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.writeFrame, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _tuple, _tuple$1, decoder$1, dl, err, frame$1, $s};return $f;
195602
195782
  };
195603
195783
  DecoderLoop.prototype.writeFrame = function() { return this.$val.writeFrame(); };
195604
195784
  DecoderLoop.ptr.prototype.outputBuffer = function() {
195605
- var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s, $r, $c} = $restore(this, {});
195785
+ var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _selection$1, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s, $r, $c} = $restore(this, {});
195606
195786
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195607
195787
  dl = [dl];
195608
195788
  screenBuffer = [screenBuffer];
195609
195789
  dl[0] = this;
195610
- _r = $recv(dl[0].framesChan); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195611
- frame$1 = _r[0];
195612
- _r$1 = dl[0].bufferPool.Acquire(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195613
- _tuple = _r$1;
195614
- screenBuffer[0] = _tuple[0];
195615
- err = _tuple[1];
195616
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
195790
+ frame$1 = $ifaceNil;
195791
+ _r = $select([[dl[0].framesChan], [dl[0].done]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195792
+ _selection = _r;
195793
+ /* */ if (_selection[0] === 0) { $s = 2; continue; }
195794
+ /* */ if (_selection[0] === 1) { $s = 3; continue; }
195617
195795
  /* */ $s = 4; continue;
195618
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
195619
- _r$2 = errs.Errorf("Buffer cannot be acquired: %s", new sliceType([err])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195620
- $24r = _r$2;
195796
+ /* if (_selection[0] === 0) { */ case 2:
195797
+ frame$1 = _selection[1][0];
195798
+ $s = 4; continue;
195799
+ /* } else if (_selection[0] === 1) { */ case 3:
195800
+ _r$1 = errs.Errorf("Decoder loop stopped", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195801
+ $24r = _r$1;
195621
195802
  $s = 6; case 6: return $24r;
195622
195803
  /* } */ case 4:
195623
- $r = dl[0].stats.NotifyFrameDecodeOutputStarted(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195624
- _r$3 = dl[0].decoder.NextOutput(screenBuffer[0]); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
195625
- err = _r$3;
195626
- $r = dl[0].stats.NotifyFrameDecodeOutputEnded(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195627
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
195628
- /* */ $s = 11; continue;
195629
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
195630
- _r$4 = errs.Errorf("Buffer cannot get next output: %s", new sliceType([err])); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
195631
- $24r$1 = _r$4;
195632
- $s = 13; case 13: return $24r$1;
195633
- /* } */ case 11:
195634
- /* */ if (dl[0].decodeResultChan.$buffer.length < 50) { $s = 14; continue; }
195635
- /* */ $s = 15; continue;
195636
- /* if (dl[0].decodeResultChan.$buffer.length < 50) { */ case 14:
195804
+ _r$2 = dl[0].bufferPool.Acquire(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195805
+ _tuple = _r$2;
195806
+ screenBuffer[0] = _tuple[0];
195807
+ err = _tuple[1];
195808
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
195809
+ /* */ $s = 9; continue;
195810
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
195811
+ _r$3 = errs.Errorf("Buffer cannot be acquired: %s", new sliceType([err])); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
195812
+ $24r$1 = _r$3;
195813
+ $s = 11; case 11: return $24r$1;
195814
+ /* } */ case 9:
195815
+ $r = dl[0].stats.NotifyFrameDecodeOutputStarted(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195816
+ _r$4 = dl[0].decoder.NextOutput(screenBuffer[0]); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
195817
+ err = _r$4;
195818
+ $r = dl[0].stats.NotifyFrameDecodeOutputEnded(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195819
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
195820
+ /* */ $s = 16; continue;
195821
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
195822
+ _r$5 = errs.Errorf("Buffer cannot get next output: %s", new sliceType([err])); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
195823
+ $24r$2 = _r$5;
195824
+ $s = 18; case 18: return $24r$2;
195825
+ /* } */ case 16:
195826
+ /* */ if (dl[0].decodeResultChan.$buffer.length < 50) { $s = 19; continue; }
195827
+ /* */ $s = 20; continue;
195828
+ /* if (dl[0].decodeResultChan.$buffer.length < 50) { */ case 19:
195637
195829
  decodeResult = new DecodeResult.ptr(frame$1, screenBuffer[0], (function(dl, screenBuffer) { return function $b() {
195638
- var {_r$5, err$1, $s, $r, $c} = $restore(this, {});
195830
+ var {_r$6, err$1, $s, $r, $c} = $restore(this, {});
195639
195831
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195640
195832
  $r = dl[0].decoder.Release(screenBuffer[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195641
- _r$5 = dl[0].bufferPool.Release(screenBuffer[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
195642
- err$1 = _r$5;
195833
+ _r$6 = dl[0].bufferPool.Release(screenBuffer[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
195834
+ err$1 = _r$6;
195643
195835
  /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
195644
195836
  /* */ $s = 4; continue;
195645
195837
  /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3:
195646
195838
  $r = errs.Print("Buffer cannot be released", err$1); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195647
195839
  /* } */ case 4:
195648
195840
  $s = -1; return;
195649
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$5, err$1, $s};return $f;
195841
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$6, err$1, $s};return $f;
195650
195842
  }; })(dl, screenBuffer));
195651
- $r = $send(dl[0].decodeResultChan, decodeResult); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195652
- $s = 16; continue;
195653
- /* } else { */ case 15:
195843
+ _r$6 = $select([[dl[0].decodeResultChan, decodeResult], [dl[0].done]]); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
195844
+ _selection$1 = _r$6;
195845
+ /* */ if (_selection$1[0] === 0) { $s = 23; continue; }
195846
+ /* */ if (_selection$1[0] === 1) { $s = 24; continue; }
195847
+ /* */ $s = 25; continue;
195848
+ /* if (_selection$1[0] === 0) { */ case 23:
195849
+ $s = 25; continue;
195850
+ /* } else if (_selection$1[0] === 1) { */ case 24:
195851
+ $r = decodeResult.Release(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195852
+ _r$7 = errs.Errorf("Decoder loop stopped", sliceType.nil); /* */ $s = 27; case 27: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
195853
+ $24r$3 = _r$7;
195854
+ $s = 28; case 28: return $24r$3;
195855
+ /* } */ case 25:
195856
+ $s = 21; continue;
195857
+ /* } else { */ case 20:
195654
195858
  dl[0].stats.NotifyThrottledDecodeFrame();
195655
- /* } */ case 16:
195859
+ /* } */ case 21:
195656
195860
  $s = -1; return $ifaceNil;
195657
- /* */ } return; } var $f = {$blk: DecoderLoop.ptr.prototype.outputBuffer, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _tuple, decodeResult, dl, err, frame$1, screenBuffer, $s};return $f;
195861
+ /* */ } 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;
195658
195862
  };
195659
195863
  DecoderLoop.prototype.outputBuffer = function() { return this.$val.outputBuffer(); };
195660
195864
  DecoderLoop.ptr.prototype.ensureDecoder = function(frame$1) {
@@ -195684,17 +195888,28 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195684
195888
  DecoderLoop.prototype.ensureDecoder = function(frame$1) { return this.$val.ensureDecoder(frame$1); };
195685
195889
  NewCollectionLoop = function(frameCollector, stats$1) {
195686
195890
  var frameCollector, stats$1;
195687
- return new CollectionLoop.ptr(frameCollector, stats$1, new $Chan(frame.FrameInterface, 50), false);
195891
+ return new CollectionLoop.ptr(frameCollector, stats$1, new $Chan(frame.FrameInterface, 50), new $Chan(structType, 0), new $Chan(structType, 0), false);
195688
195892
  };
195689
195893
  $pkg.NewCollectionLoop = NewCollectionLoop;
195690
195894
  CollectionLoop.ptr.prototype.NextFrame = function() {
195691
- var {_r, cl, collectedFrame, $s, $r, $c} = $restore(this, {});
195895
+ var {$24r, _r, _r$1, _selection, cl, collectedFrame, $s, $r, $c} = $restore(this, {});
195692
195896
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195693
195897
  cl = this;
195694
- _r = $recv(cl.framesChan); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195695
- collectedFrame = _r[0];
195696
- $s = -1; return [collectedFrame, $ifaceNil];
195697
- /* */ } return; } var $f = {$blk: CollectionLoop.ptr.prototype.NextFrame, $c: true, $r, _r, cl, collectedFrame, $s};return $f;
195898
+ _r = $select([[cl.framesChan], [cl.done]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
195899
+ _selection = _r;
195900
+ /* */ if (_selection[0] === 0) { $s = 2; continue; }
195901
+ /* */ if (_selection[0] === 1) { $s = 3; continue; }
195902
+ /* */ $s = 4; continue;
195903
+ /* if (_selection[0] === 0) { */ case 2:
195904
+ collectedFrame = _selection[1][0];
195905
+ $s = -1; return [collectedFrame, $ifaceNil];
195906
+ /* } else if (_selection[0] === 1) { */ case 3:
195907
+ _r$1 = errs.Errorf("Collection loop stopped", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195908
+ $24r = [$ifaceNil, _r$1];
195909
+ $s = 6; case 6: return $24r;
195910
+ /* } */ case 4:
195911
+ $s = -1; return [$ifaceNil, $ifaceNil];
195912
+ /* */ } return; } var $f = {$blk: CollectionLoop.ptr.prototype.NextFrame, $c: true, $r, $24r, _r, _r$1, _selection, cl, collectedFrame, $s};return $f;
195698
195913
  };
195699
195914
  CollectionLoop.prototype.NextFrame = function() { return this.$val.NextFrame(); };
195700
195915
  CollectionLoop.ptr.prototype.Start = function() {
@@ -195705,8 +195920,9 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195705
195920
  }
195706
195921
  cl.started = true;
195707
195922
  $go((function $b() {
195708
- var {_1, _r, _r$1, _tuple, collectedFrame, err, $s, $r, $c} = $restore(this, {});
195709
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
195923
+ var {_1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _selection, _selection$1, _tuple, collectedFrame, err, $s, $deferred, $r, $c} = $restore(this, {});
195924
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
195925
+ $deferred.push([function(_arg) { $close(_arg); }, [cl.stopped]]);
195710
195926
  /* while (true) { */ case 1:
195711
195927
  /* if (!(cl.started)) { break; } */ if(!(cl.started)) { $s = 2; continue; }
195712
195928
  _r = cl.frameCollector.CollectFrame($methodVal(cl.stats, "NotifyFrameCollectionStarted"), $methodVal(cl.stats, "NotifyFrameCollectionEnded"), $methodVal(cl.stats, "NotifyFrameCollectionDuration")); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
@@ -195716,55 +195932,88 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195716
195932
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
195717
195933
  /* */ $s = 5; continue;
195718
195934
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
195719
- $r = time.Sleep(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195720
- /* */ if (cl.started) { $s = 7; continue; }
195721
- /* */ $s = 8; continue;
195722
- /* if (cl.started) { */ case 7:
195723
- $r = errs.Print("Frame collection error, dropping", err); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195724
- /* } */ case 8:
195935
+ _r$1 = time.After(new time.Duration(0, 100000000)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195936
+ _r$2 = $select([[cl.done], [_r$1]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
195937
+ _selection = _r$2;
195938
+ /* */ if (_selection[0] === 0) { $s = 8; continue; }
195939
+ /* */ if (_selection[0] === 1) { $s = 9; continue; }
195940
+ /* */ $s = 10; continue;
195941
+ /* if (_selection[0] === 0) { */ case 8:
195942
+ $s = 11; case 11: return;
195943
+ /* } else if (_selection[0] === 1) { */ case 9:
195944
+ /* } */ case 10:
195945
+ /* */ if (cl.started) { $s = 12; continue; }
195946
+ /* */ $s = 13; continue;
195947
+ /* if (cl.started) { */ case 12:
195948
+ $r = errs.Print("Frame collection error, dropping", err); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195949
+ /* } */ case 13:
195725
195950
  /* continue; */ $s = 1; continue;
195726
195951
  /* } */ case 5:
195727
- /* */ if (cl.framesChan.$buffer.length < 50) { $s = 10; continue; }
195728
- /* */ $s = 11; continue;
195729
- /* if (cl.framesChan.$buffer.length < 50) { */ case 10:
195730
- _r$1 = collectedFrame.FrameType(); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
195731
- _1 = _r$1;
195732
- /* */ if (_1 === (1)) { $s = 15; continue; }
195733
- /* */ if (_1 === (255)) { $s = 16; continue; }
195734
- /* */ $s = 17; continue;
195735
- /* if (_1 === (1)) { */ case 15:
195736
- $r = $send(cl.framesChan, collectedFrame); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195737
- $s = 17; continue;
195738
- /* } else if (_1 === (255)) { */ case 16:
195739
- $r = cl.stats.NotifyScreenPing(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195740
- /* } */ case 17:
195741
- case 13:
195742
- $s = 12; continue;
195743
- /* } else { */ case 11:
195952
+ /* */ if (cl.framesChan.$buffer.length < 50) { $s = 15; continue; }
195953
+ /* */ $s = 16; continue;
195954
+ /* if (cl.framesChan.$buffer.length < 50) { */ case 15:
195955
+ _r$3 = collectedFrame.FrameType(); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
195956
+ _1 = _r$3;
195957
+ /* */ if (_1 === (1)) { $s = 20; continue; }
195958
+ /* */ if (_1 === (255)) { $s = 21; continue; }
195959
+ /* */ $s = 22; continue;
195960
+ /* if (_1 === (1)) { */ case 20:
195961
+ _r$4 = $select([[cl.framesChan, collectedFrame], [cl.done]]); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
195962
+ _selection$1 = _r$4;
195963
+ /* */ if (_selection$1[0] === 0) { $s = 24; continue; }
195964
+ /* */ if (_selection$1[0] === 1) { $s = 25; continue; }
195965
+ /* */ $s = 26; continue;
195966
+ /* if (_selection$1[0] === 0) { */ case 24:
195967
+ $s = 26; continue;
195968
+ /* } else if (_selection$1[0] === 1) { */ case 25:
195969
+ $s = 27; case 27: return;
195970
+ /* } */ case 26:
195971
+ $s = 22; continue;
195972
+ /* } else if (_1 === (255)) { */ case 21:
195973
+ $r = cl.stats.NotifyScreenPing(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195974
+ /* } */ case 22:
195975
+ case 18:
195976
+ $s = 17; continue;
195977
+ /* } else { */ case 16:
195744
195978
  cl.stats.NotifyThrottledCollectionFrame();
195745
- /* } */ case 12:
195979
+ /* } */ case 17:
195746
195980
  $s = 1; continue;
195747
195981
  case 2:
195748
195982
  $s = -1; return;
195749
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _1, _r, _r$1, _tuple, collectedFrame, err, $s};return $f;
195983
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: $b, $c: true, $r, _1, _arg, _r, _r$1, _r$2, _r$3, _r$4, _selection, _selection$1, _tuple, collectedFrame, err, $s, $deferred};return $f; } }
195750
195984
  }), []);
195751
195985
  };
195752
195986
  CollectionLoop.prototype.Start = function() { return this.$val.Start(); };
195753
195987
  CollectionLoop.ptr.prototype.Stop = function() {
195754
- var cl;
195988
+ var _selection, cl;
195755
195989
  cl = this;
195756
195990
  cl.started = false;
195991
+ _selection = $select([[cl.done], []]);
195992
+ if (_selection[0] === 0) {
195993
+ } else if (_selection[0] === 1) {
195994
+ $close(cl.done);
195995
+ }
195757
195996
  };
195758
195997
  CollectionLoop.prototype.Stop = function() { return this.$val.Stop(); };
195759
- ptrType$3.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "renderBuffer", name: "renderBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "waitForRenderTime", name: "waitForRenderTime", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([frame.FrameInterface], [], false)}];
195760
- ptrType$4.methods = [{prop: "NextDecodedResult", name: "NextDecodedResult", pkg: "", typ: $funcType([], [ptrType$2, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "outputBuffer", name: "outputBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "ensureDecoder", name: "ensureDecoder", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([frame.FrameInterface], [decoder.Decoder, $error], false)}];
195761
- ptrType$5.methods = [{prop: "NextFrame", name: "NextFrame", pkg: "", typ: $funcType([], [frame.FrameInterface, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}];
195762
- RenderingLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "decodeResultProvider", name: "decodeResultProvider", embedded: false, exported: false, typ: DecodeResultProvider, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderingInProgress", name: "renderingInProgress", embedded: false, exported: false, typ: $Bool, tag: ""}]);
195998
+ CollectionLoop.ptr.prototype.Wait = function() {
195999
+ var {_r, cl, $s, $r, $c} = $restore(this, {});
196000
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
196001
+ cl = this;
196002
+ _r = $recv(cl.stopped); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
196003
+ _r[0];
196004
+ $s = -1; return;
196005
+ /* */ } return; } var $f = {$blk: CollectionLoop.ptr.prototype.Wait, $c: true, $r, _r, cl, $s};return $f;
196006
+ };
196007
+ CollectionLoop.prototype.Wait = function() { return this.$val.Wait(); };
196008
+ ptrType$3.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "renderBuffer", name: "renderBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "waitForRenderTime", name: "waitForRenderTime", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([frame.FrameInterface], [], false)}];
196009
+ ptrType$4.methods = [{prop: "NextDecodedResult", name: "NextDecodedResult", pkg: "", typ: $funcType([], [ptrType$2, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "outputBuffer", name: "outputBuffer", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([], [$error], false)}, {prop: "ensureDecoder", name: "ensureDecoder", pkg: "github.com/supraio/client-daemon/pkg/render/player", typ: $funcType([frame.FrameInterface], [decoder.Decoder, $error], false)}];
196010
+ ptrType$5.methods = [{prop: "NextFrame", name: "NextFrame", pkg: "", typ: $funcType([], [frame.FrameInterface, $error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [], false)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}];
196011
+ RenderingLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "decodeResultProvider", name: "decodeResultProvider", embedded: false, exported: false, typ: DecodeResultProvider, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "renderingInProgress", name: "renderingInProgress", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopped", name: "stopped", embedded: false, exported: false, typ: chanType, tag: ""}]);
195763
196012
  DecodeResultProvider.init([{prop: "NextDecodedResult", name: "NextDecodedResult", pkg: "", typ: $funcType([], [ptrType$2, $error], false)}]);
195764
196013
  DecodeResult.init("", [{prop: "Frame", name: "Frame", embedded: false, exported: true, typ: frame.FrameInterface, tag: ""}, {prop: "Buffer", name: "Buffer", embedded: false, exported: true, typ: screen.Buffer, tag: ""}, {prop: "Release", name: "Release", embedded: false, exported: true, typ: funcType, tag: ""}]);
195765
- DecoderLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameProvider", name: "frameProvider", embedded: false, exported: false, typ: FrameProvider, tag: ""}, {prop: "bufferPool", name: "bufferPool", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "decodeResultChan", name: "decodeResultChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "framesChan", name: "framesChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "decoder", name: "decoder", embedded: false, exported: false, typ: decoder.Decoder, tag: ""}]);
196014
+ DecoderLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameProvider", name: "frameProvider", embedded: false, exported: false, typ: FrameProvider, tag: ""}, {prop: "bufferPool", name: "bufferPool", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "decodeResultChan", name: "decodeResultChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "framesChan", name: "framesChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopped", name: "stopped", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "decoder", name: "decoder", embedded: false, exported: false, typ: decoder.Decoder, tag: ""}]);
195766
196015
  FrameProvider.init([{prop: "NextFrame", name: "NextFrame", pkg: "", typ: $funcType([], [frame.FrameInterface, $error], false)}]);
195767
- CollectionLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameCollector", name: "frameCollector", embedded: false, exported: false, typ: netframe.FrameCollectorInterface, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "framesChan", name: "framesChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}]);
196016
+ CollectionLoop.init("github.com/supraio/client-daemon/pkg/render/player", [{prop: "frameCollector", name: "frameCollector", embedded: false, exported: false, typ: netframe.FrameCollectorInterface, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "framesChan", name: "framesChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "stopped", name: "stopped", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "started", name: "started", embedded: false, exported: false, typ: $Bool, tag: ""}]);
195768
196017
  $init = function() {
195769
196018
  $pkg.$init = function() {};
195770
196019
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -195776,7 +196025,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
195776
196025
  $r = stats.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195777
196026
  $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195778
196027
  $r = image.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195779
- $r = time.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196028
+ $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196029
+ $r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
195780
196030
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
195781
196031
  };
195782
196032
  $pkg.$init = $init;
@@ -196369,7 +196619,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196369
196619
  sync = $packages["sync"];
196370
196620
  js = $packages["syscall/js"];
196371
196621
  time = $packages["time"];
196372
- ScreenWindow = $pkg.ScreenWindow = $newType(0, $kindStruct, "render.ScreenWindow", true, "github.com/supraio/client-daemon/pkg/render", true, function(processInfoManager_, screenDriver_, screenHost_, metadataDriver_, metadataHost_, clientID_, clientSecret_, screenID_, secure_, forceScreenSize_, timeoutDuration_, closed_, stats_, onClose_, window_, screen_, screenConn_, metadataServer_, responsiveSender_, collectionLoop_, decoderLoop_, renderingLoop_, sizeHandler_, touchHandler_, keyHandler_, mouseHandler_, eventMetrics_, pinger_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, touchEventChan_, winCloseChannel_, windowSize_, geometry_) {
196622
+ ScreenWindow = $pkg.ScreenWindow = $newType(0, $kindStruct, "render.ScreenWindow", true, "github.com/supraio/client-daemon/pkg/render", true, function(processInfoManager_, screenDriver_, screenHost_, metadataDriver_, metadataHost_, clientID_, clientSecret_, screenID_, secure_, forceScreenSize_, timeoutDuration_, closed_, closeMu_, stats_, onClose_, window_, screen_, screenConn_, metadataServer_, responsiveSender_, collectionLoop_, decoderLoop_, renderingLoop_, sizeHandler_, touchHandler_, keyHandler_, mouseHandler_, eventMetrics_, pinger_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, touchEventChan_, winCloseChannel_, windowSize_, geometry_) {
196373
196623
  this.$val = this;
196374
196624
  if (arguments.length === 0) {
196375
196625
  this.processInfoManager = ptrType.nil;
@@ -196384,6 +196634,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196384
196634
  this.forceScreenSize = ptrType$1.nil;
196385
196635
  this.timeoutDuration = new time.Duration(0, 0);
196386
196636
  this.closed = false;
196637
+ this.closeMu = new sync.Mutex.ptr(0, 0);
196387
196638
  this.stats = ptrType$2.nil;
196388
196639
  this.onClose = sliceType$1.nil;
196389
196640
  this.window = $ifaceNil;
@@ -196422,6 +196673,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196422
196673
  this.forceScreenSize = forceScreenSize_;
196423
196674
  this.timeoutDuration = timeoutDuration_;
196424
196675
  this.closed = closed_;
196676
+ this.closeMu = closeMu_;
196425
196677
  this.stats = stats_;
196426
196678
  this.onClose = onClose_;
196427
196679
  this.window = window_;
@@ -196588,7 +196840,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196588
196840
  _r = stats.NewStats(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
196589
196841
  s = _r;
196590
196842
  s.SetEncodingPreferences($clone(encodingPreferences, stats.EncodingPreferences));
196591
- $s = -1; return new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, true, s, sliceType$1.nil, $ifaceNil, $ifaceNil, $ifaceNil, ptrType$3.nil, ptrType$4.nil, ptrType$5.nil, ptrType$6.nil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, ptrType$10.nil, ptrType$11.nil, input.NewEventMetrics(), ptrType$13.nil, new $Chan(key.Event, 50), new $Chan(mouse.Event, 50), new $Chan(size.Event, 50), new $Chan(focus.Event, 50), new $Chan(touch.Event, 50), new $Chan($emptyInterface, 0), new image.Point.ptr(0, 0), geometry);
196843
+ $s = -1; return new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, forceScreenSize, timeoutDuration, true, 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), new image.Point.ptr(0, 0), geometry);
196592
196844
  /* */ } 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;
196593
196845
  };
196594
196846
  $pkg.NewScreenWindow = NewScreenWindow;
@@ -196644,48 +196896,42 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196644
196896
  };
196645
196897
  ScreenWindow.prototype.Start = function() { return this.$val.Start(); };
196646
196898
  ScreenWindow.ptr.prototype.Close = function() {
196647
- var {_i, _r, _r$1, _r$2, _r$3, _ref, callback, err, w, x, $s, $r, $c} = $restore(this, {});
196899
+ var {_i, _r, _r$1, _r$2, _ref, _selection, callback, err, w, x, $s, $r, $c} = $restore(this, {});
196648
196900
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
196649
196901
  w = this;
196650
- if (w.closed) {
196902
+ $r = w.closeMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196903
+ /* */ if (w.closed) { $s = 2; continue; }
196904
+ /* */ $s = 3; continue;
196905
+ /* if (w.closed) { */ case 2:
196906
+ $r = w.closeMu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196651
196907
  $s = -1; return;
196652
- }
196908
+ /* } */ case 3:
196653
196909
  w.closed = true;
196654
- $r = w.eventMetrics.Stop(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196655
- _r = w.closeScreen(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
196910
+ $r = w.closeMu.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196911
+ $r = w.eventMetrics.Stop(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196912
+ _r = w.closeScreen(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
196656
196913
  err = _r;
196657
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
196658
- /* */ $s = 4; continue;
196659
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
196660
- $r = errs.Print("Cannot close screen", err); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196661
- /* } */ case 4:
196662
- /* */ if (!(w.metadataServer === ptrType$3.nil)) { $s = 6; continue; }
196663
- /* */ $s = 7; continue;
196664
- /* if (!(w.metadataServer === ptrType$3.nil)) { */ case 6:
196914
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
196915
+ /* */ $s = 9; continue;
196916
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
196917
+ $r = errs.Print("Cannot close screen", err); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196918
+ /* } */ case 9:
196919
+ $r = w.stats.Stop(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196920
+ /* */ if (!(w.metadataServer === ptrType$3.nil)) { $s = 12; continue; }
196921
+ /* */ $s = 13; continue;
196922
+ /* if (!(w.metadataServer === ptrType$3.nil)) { */ case 12:
196665
196923
  if (!(w.responsiveSender === ptrType$4.nil)) {
196666
196924
  w.responsiveSender.Close();
196667
196925
  w.responsiveSender = ptrType$4.nil;
196668
196926
  }
196669
- _r$1 = w.metadataServer.Close("ScreenWindow closed"); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
196927
+ _r$1 = w.metadataServer.Close("ScreenWindow closed"); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
196670
196928
  err = _r$1;
196671
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; }
196672
- /* */ $s = 10; continue;
196673
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9:
196674
- $r = errs.Print("Cannot close metadata connection", err); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196675
- /* } */ case 10:
196676
- w.metadataServer = ptrType$3.nil;
196677
- /* } */ case 7:
196678
- /* */ if (!($interfaceIsEqual(w.screenConn, $ifaceNil))) { $s = 12; continue; }
196679
- /* */ $s = 13; continue;
196680
- /* if (!($interfaceIsEqual(w.screenConn, $ifaceNil))) { */ case 12:
196681
- _r$2 = w.screenConn.Close(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
196682
- err = _r$2;
196683
196929
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
196684
196930
  /* */ $s = 16; continue;
196685
196931
  /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
196686
- $r = errs.Print("Cannot close screen connection", err); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196932
+ $r = errs.Print("Cannot close metadata connection", err); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196687
196933
  /* } */ case 16:
196688
- w.screenConn = $ifaceNil;
196934
+ w.metadataServer = ptrType$3.nil;
196689
196935
  /* } */ case 13:
196690
196936
  /* */ if (!($interfaceIsEqual(w.window, $ifaceNil))) { $s = 18; continue; }
196691
196937
  /* */ $s = 19; continue;
@@ -196693,26 +196939,29 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
196693
196939
  $r = w.window.Release(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196694
196940
  w.window = $ifaceNil;
196695
196941
  /* } */ case 19:
196696
- $r = $send(w.winCloseChannel, (x = new structType.ptr(), new x.constructor.elem(x))); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196697
- _r$3 = w.processInfoManager.RemoveProcessInfo(w.screenID); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
196698
- err = _r$3;
196699
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 23; continue; }
196700
- /* */ $s = 24; continue;
196701
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 23:
196702
- $r = errs.Print("Cannot remove process info file", err); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196703
- /* } */ case 24:
196942
+ _selection = $select([[w.winCloseChannel, (x = new structType.ptr(), new x.constructor.elem(x))], []]);
196943
+ if (_selection[0] === 0) {
196944
+ } else if (_selection[0] === 1) {
196945
+ }
196946
+ _r$2 = w.processInfoManager.RemoveProcessInfo(w.screenID); /* */ $s = 21; case 21: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
196947
+ err = _r$2;
196948
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 22; continue; }
196949
+ /* */ $s = 23; continue;
196950
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 22:
196951
+ $r = errs.Print("Cannot remove process info file", err); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196952
+ /* } */ case 23:
196704
196953
  w.screen = $ifaceNil;
196705
196954
  _ref = w.onClose;
196706
196955
  _i = 0;
196707
- /* while (true) { */ case 26:
196708
- /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 27; continue; }
196956
+ /* while (true) { */ case 25:
196957
+ /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 26; continue; }
196709
196958
  callback = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
196710
- $r = callback(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196959
+ $r = callback(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
196711
196960
  _i++;
196712
- $s = 26; continue;
196713
- case 27:
196961
+ $s = 25; continue;
196962
+ case 26:
196714
196963
  $s = -1; return;
196715
- /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.Close, $c: true, $r, _i, _r, _r$1, _r$2, _r$3, _ref, callback, err, w, x, $s};return $f;
196964
+ /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.Close, $c: true, $r, _i, _r, _r$1, _r$2, _ref, _selection, callback, err, w, x, $s};return $f;
196716
196965
  };
196717
196966
  ScreenWindow.prototype.Close = function() { return this.$val.Close(); };
196718
196967
  ScreenWindow.ptr.prototype.OnClose = function(callback) {
@@ -197243,52 +197492,74 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
197243
197492
  w = this;
197244
197493
  if (!(w.collectionLoop === ptrType$5.nil)) {
197245
197494
  w.collectionLoop.Stop();
197246
- w.collectionLoop = ptrType$5.nil;
197247
197495
  }
197248
197496
  if (!(w.decoderLoop === ptrType$6.nil)) {
197249
197497
  w.decoderLoop.Stop();
197250
- w.decoderLoop = ptrType$6.nil;
197251
197498
  }
197252
197499
  if (!(w.renderingLoop === ptrType$7.nil)) {
197253
197500
  w.renderingLoop.Stop();
197254
- w.renderingLoop = ptrType$7.nil;
197255
197501
  }
197256
- if (!(w.pinger === ptrType$13.nil)) {
197257
- w.pinger.Close();
197502
+ /* */ if (!(w.pinger === ptrType$13.nil)) { $s = 1; continue; }
197503
+ /* */ $s = 2; continue;
197504
+ /* if (!(w.pinger === ptrType$13.nil)) { */ case 1:
197505
+ $r = w.pinger.Close(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197258
197506
  w.pinger = ptrType$13.nil;
197259
- }
197507
+ /* } */ case 2:
197260
197508
  errList = new sliceType$3([]);
197261
- screenSender = w.createScreenSender();
197262
- _r = UnregisterVideoStream(screenSender); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197263
- err = _r;
197264
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
197265
- /* */ $s = 3; continue;
197266
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
197267
- _r$1 = errs.Errorf("Could not unregister video stream: %s", new sliceType$2([err])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
197268
- errList = $append(errList, _r$1);
197269
- /* } */ case 3:
197270
- _r$2 = screenSender.Send(3, new sliceType([])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
197271
- err = _r$2;
197272
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
197273
- /* */ $s = 7; continue;
197274
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
197275
- _r$3 = errs.Errorf("Could not send disconnect msg to screen: %s", new sliceType$2([err])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
197276
- errList = $append(errList, _r$3);
197277
- /* } */ case 7:
197278
- _r$4 = w.screenConn.Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
197279
- err = _r$4;
197280
- /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
197281
- /* */ $s = 11; continue;
197282
- /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
197283
- _r$5 = errs.Errorf("Could not close screen connection: %s", new sliceType$2([err])); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
197284
- errList = $append(errList, _r$5);
197285
- /* } */ case 11:
197509
+ /* */ if (!($interfaceIsEqual(w.screenConn, $ifaceNil))) { $s = 4; continue; }
197510
+ /* */ $s = 5; continue;
197511
+ /* if (!($interfaceIsEqual(w.screenConn, $ifaceNil))) { */ case 4:
197512
+ screenSender = w.createScreenSender();
197513
+ _r = UnregisterVideoStream(screenSender); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
197514
+ err = _r;
197515
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
197516
+ /* */ $s = 8; continue;
197517
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
197518
+ _r$1 = errs.Errorf("Could not unregister video stream: %s", new sliceType$2([err])); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
197519
+ errList = $append(errList, _r$1);
197520
+ /* } */ case 8:
197521
+ _r$2 = screenSender.Send(3, new sliceType([])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
197522
+ err = _r$2;
197523
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
197524
+ /* */ $s = 12; continue;
197525
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
197526
+ _r$3 = errs.Errorf("Could not send disconnect msg to screen: %s", new sliceType$2([err])); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
197527
+ errList = $append(errList, _r$3);
197528
+ /* } */ case 12:
197529
+ _r$4 = w.screenConn.Close(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
197530
+ err = _r$4;
197531
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
197532
+ /* */ $s = 16; continue;
197533
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
197534
+ _r$5 = errs.Errorf("Could not close screen connection: %s", new sliceType$2([err])); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
197535
+ errList = $append(errList, _r$5);
197536
+ /* } */ case 16:
197537
+ w.screenConn = $ifaceNil;
197538
+ /* } */ case 5:
197539
+ /* */ if (!(w.collectionLoop === ptrType$5.nil)) { $s = 18; continue; }
197540
+ /* */ $s = 19; continue;
197541
+ /* if (!(w.collectionLoop === ptrType$5.nil)) { */ case 18:
197542
+ $r = w.collectionLoop.Wait(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197543
+ w.collectionLoop = ptrType$5.nil;
197544
+ /* } */ case 19:
197545
+ /* */ if (!(w.decoderLoop === ptrType$6.nil)) { $s = 21; continue; }
197546
+ /* */ $s = 22; continue;
197547
+ /* if (!(w.decoderLoop === ptrType$6.nil)) { */ case 21:
197548
+ $r = w.decoderLoop.Wait(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197549
+ w.decoderLoop = ptrType$6.nil;
197550
+ /* } */ case 22:
197551
+ /* */ if (!(w.renderingLoop === ptrType$7.nil)) { $s = 24; continue; }
197552
+ /* */ $s = 25; continue;
197553
+ /* if (!(w.renderingLoop === ptrType$7.nil)) { */ case 24:
197554
+ $r = w.renderingLoop.Wait(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197555
+ w.renderingLoop = ptrType$7.nil;
197556
+ /* } */ case 25:
197286
197557
  if (errList.$length === 0) {
197287
197558
  $s = -1; return $ifaceNil;
197288
197559
  }
197289
- _r$6 = errs.CombineErrors(errList); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
197560
+ _r$6 = errs.CombineErrors(errList); /* */ $s = 27; case 27: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
197290
197561
  $24r = _r$6;
197291
- $s = 14; case 14: return $24r;
197562
+ $s = 28; case 28: return $24r;
197292
197563
  /* */ } return; } var $f = {$blk: ScreenWindow.ptr.prototype.closeScreen, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, err, errList, screenSender, w, $s};return $f;
197293
197564
  };
197294
197565
  ScreenWindow.prototype.closeScreen = function() { return this.$val.closeScreen(); };
@@ -197517,7 +197788,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
197517
197788
  var {supraObj, w, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {w});
197518
197789
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197519
197790
  w = [w];
197520
- supraObj = $makeMap($String.keyFor, [{ k: "geometry", v: geometryValue(w[0].Geometry()) }, { k: "screenStopped", v: new $Bool(false) }, { k: "setEncodingPreferences", v: (x = js.FuncOf((function(w) { return function $b(this$1, args) {
197791
+ supraObj = $makeMap($String.keyFor, [{ k: "geometry", v: geometryValue(w[0].Geometry()) }, { k: "screenStopped", v: new $Bool(false) }, { k: "screenStopCompleted", v: new $Bool(false) }, { k: "setEncodingPreferences", v: (x = js.FuncOf((function(w) { return function $b(this$1, args) {
197521
197792
  var {_r, args, err, jsonStr, prefs, this$1, $s, $r, $c} = $restore(this, {this$1, args});
197522
197793
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197523
197794
  prefs = [prefs];
@@ -197562,7 +197833,15 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
197562
197833
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197563
197834
  $r = log.Println(new sliceType$2([new $String("__supra.stopScreen: stopping screen rendering")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197564
197835
  $clone($clone(js.Global(), js.Value).Get("__supra"), js.Value).Set("screenStopped", new $Bool(true));
197565
- $go($methodVal(w[0], "Close"), []);
197836
+ $go((function(w) { return function $b() {
197837
+ var {$s, $r, $c} = $restore(this, {});
197838
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
197839
+ $r = w[0].Close(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197840
+ $clone($clone(js.Global(), js.Value).Get("__supra"), js.Value).Set("screenStopCompleted", new $Bool(true));
197841
+ $r = log.Println(new sliceType$2([new $String("__supra.stopScreen: screen rendering stopped")])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
197842
+ $s = -1; return;
197843
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, $s};return $f;
197844
+ }; })(w), []);
197566
197845
  $s = -1; return $ifaceNil;
197567
197846
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
197568
197847
  }; })(w)), new x$2.constructor.elem(x$2)) }]);
@@ -197580,7 +197859,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
197580
197859
  };
197581
197860
  ptrType$15.methods = [{prop: "Geometry", name: "Geometry", pkg: "", typ: $funcType([], [ptrType$14], false)}, {prop: "SetEncodingPreferences", name: "SetEncodingPreferences", pkg: "", typ: $funcType([stats.EncodingPreferences], [], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "startWindow", name: "startWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startClipboard", name: "startClipboard", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "retriableOpen", name: "retriableOpen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$Int, funcType$1], [$error], false)}, {prop: "openMetadata", name: "openMetadata", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "createMetadataSender", name: "createMetadataSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [message.Sender], false)}, {prop: "createScreenSender", name: "createScreenSender", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [message.Sender], false)}, {prop: "getEventMultiplier", name: "getEventMultiplier", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [geom.Point], false)}, {prop: "startTimestampSyncing", name: "startTimestampSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "startStatsSyncing", name: "startStatsSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "sendStats", name: "sendStats", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "getFrameHealthCheckTimeout", name: "getFrameHealthCheckTimeout", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [time.Duration], false)}, {prop: "startScreenHealthChecking", name: "startScreenHealthChecking", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "openScreen", name: "openScreen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "closeScreen", name: "closeScreen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "createScreenBuffer", name: "createScreenBuffer", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [screen.Buffer, $error], false)}];
197582
197861
  ptrType.methods = [{prop: "CreateProcessInfo", name: "CreateProcessInfo", pkg: "", typ: $funcType([$String, $Int], [$error], false)}, {prop: "RemoveProcessInfo", name: "RemoveProcessInfo", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "WaitProcess", name: "WaitProcess", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "GetProcessInfo", name: "GetProcessInfo", pkg: "", typ: $funcType([$String], [ProcessInfo, $error], false)}, {prop: "ListScreenIDs", name: "ListScreenIDs", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}, {prop: "getUserProcessDirPath", name: "getUserProcessDirPath", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$String], false)}];
197583
- ScreenWindow.init("github.com/supraio/client-daemon/pkg/render", [{prop: "processInfoManager", name: "processInfoManager", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "screenDriver", name: "screenDriver", embedded: false, exported: false, typ: netpacket.Driver, tag: ""}, {prop: "screenHost", name: "screenHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "metadataDriver", name: "metadataDriver", embedded: false, exported: false, typ: netstream.Driver, tag: ""}, {prop: "metadataHost", name: "metadataHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientID", name: "clientID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientSecret", name: "clientSecret", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "screenID", name: "screenID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "secure", name: "secure", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "forceScreenSize", name: "forceScreenSize", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "timeoutDuration", name: "timeoutDuration", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "screen", name: "screen", embedded: false, exported: false, typ: screen.Screen, tag: ""}, {prop: "screenConn", name: "screenConn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "metadataServer", name: "metadataServer", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "responsiveSender", name: "responsiveSender", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "collectionLoop", name: "collectionLoop", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "decoderLoop", name: "decoderLoop", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "renderingLoop", name: "renderingLoop", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "sizeHandler", name: "sizeHandler", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "touchHandler", name: "touchHandler", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "keyHandler", name: "keyHandler", embedded: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "mouseHandler", name: "mouseHandler", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "eventMetrics", name: "eventMetrics", embedded: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "pinger", name: "pinger", embedded: false, exported: false, typ: ptrType$13, tag: ""}, {prop: "keyEventChan", name: "keyEventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "sizeEventChan", name: "sizeEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "touchEventChan", name: "touchEventChan", embedded: false, exported: false, typ: chanType$4, tag: ""}, {prop: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$5, tag: ""}, {prop: "windowSize", name: "windowSize", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "geometry", name: "geometry", embedded: false, exported: false, typ: ptrType$14, tag: ""}]);
197862
+ ScreenWindow.init("github.com/supraio/client-daemon/pkg/render", [{prop: "processInfoManager", name: "processInfoManager", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "screenDriver", name: "screenDriver", embedded: false, exported: false, typ: netpacket.Driver, tag: ""}, {prop: "screenHost", name: "screenHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "metadataDriver", name: "metadataDriver", embedded: false, exported: false, typ: netstream.Driver, tag: ""}, {prop: "metadataHost", name: "metadataHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientID", name: "clientID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientSecret", name: "clientSecret", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "screenID", name: "screenID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "secure", name: "secure", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "forceScreenSize", name: "forceScreenSize", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "timeoutDuration", name: "timeoutDuration", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "closeMu", name: "closeMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "screen", name: "screen", embedded: false, exported: false, typ: screen.Screen, tag: ""}, {prop: "screenConn", name: "screenConn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "metadataServer", name: "metadataServer", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "responsiveSender", name: "responsiveSender", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "collectionLoop", name: "collectionLoop", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "decoderLoop", name: "decoderLoop", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "renderingLoop", name: "renderingLoop", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "sizeHandler", name: "sizeHandler", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "touchHandler", name: "touchHandler", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "keyHandler", name: "keyHandler", embedded: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "mouseHandler", name: "mouseHandler", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "eventMetrics", name: "eventMetrics", embedded: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "pinger", name: "pinger", embedded: false, exported: false, typ: ptrType$13, tag: ""}, {prop: "keyEventChan", name: "keyEventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "sizeEventChan", name: "sizeEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "touchEventChan", name: "touchEventChan", embedded: false, exported: false, typ: chanType$4, tag: ""}, {prop: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$5, tag: ""}, {prop: "windowSize", name: "windowSize", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "geometry", name: "geometry", embedded: false, exported: false, typ: ptrType$14, tag: ""}]);
197584
197863
  Geometry.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: $Int, tag: "json:\"x\""}, {prop: "Y", name: "Y", embedded: false, exported: true, typ: $Int, tag: "json:\"y\""}, {prop: "Width", name: "Width", embedded: false, exported: true, typ: $Int, tag: "json:\"width\""}, {prop: "Height", name: "Height", embedded: false, exported: true, typ: $Int, tag: "json:\"height\""}]);
197585
197864
  ProcessInfo.init("", [{prop: "ScreenID", name: "ScreenID", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Int, tag: ""}]);
197586
197865
  ProcessInfoManager.init("github.com/supraio/client-daemon/pkg/render", [{prop: "username", name: "username", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "processDir", name: "processDir", embedded: false, exported: false, typ: $String, tag: ""}]);