mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
Resolve dependency loop.
This commit is contained in:
parent
74f48270ce
commit
08ac61e4ef
@ -157,10 +157,10 @@ Global
|
||||
{6B726FC4-A907-4813-BF38-3342E02AA8D2}.Release|x86.Build.0 = Release|x86
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x64.Build.0 = Debug|x64
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x86.Build.0 = Debug|x86
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|x64.ActiveCfg = Release|x64
|
||||
|
||||
@ -15,61 +15,53 @@ namespace Remotely.ScreenCast.Core.Services
|
||||
{
|
||||
public class ScreenCasterBase
|
||||
{
|
||||
public ScreenCasterBase(Viewer viewer)
|
||||
{
|
||||
Viewer = viewer;
|
||||
}
|
||||
|
||||
protected Viewer Viewer { get; }
|
||||
|
||||
public async Task BeginScreenCasting(string viewerID,
|
||||
string requesterName)
|
||||
{
|
||||
byte[] encodedImageBytes;
|
||||
var fpsQueue = new Queue<DateTimeOffset>();
|
||||
var conductor = ServiceContainer.Instance.GetRequiredService<Conductor>();
|
||||
var viewers = conductor.Viewers;
|
||||
var mode = conductor.Mode;
|
||||
var viewer = ServiceContainer.Instance.GetRequiredService<Viewer>();
|
||||
viewer.Name = requesterName;
|
||||
viewer.ViewerConnectionID = viewerID;
|
||||
var viewers = conductor.Viewers;
|
||||
|
||||
Logger.Write($"Starting screen cast. Requester: {requesterName}. Viewer ID: {viewerID}. App Mode: {mode}");
|
||||
|
||||
byte[] encodedImageBytes;
|
||||
var fpsQueue = new Queue<DateTimeOffset>();
|
||||
|
||||
Viewer.Name = requesterName;
|
||||
Viewer.ViewerConnectionID = viewerID;
|
||||
|
||||
viewers.AddOrUpdate(viewerID, Viewer, (id, v) => Viewer);
|
||||
viewers.AddOrUpdate(viewerID, viewer, (id, v) => viewer);
|
||||
|
||||
if (mode == Enums.AppMode.Normal)
|
||||
{
|
||||
conductor.InvokeViewerAdded(Viewer);
|
||||
conductor.InvokeViewerAdded(viewer);
|
||||
}
|
||||
|
||||
if (EnvironmentHelper.IsWindows)
|
||||
{
|
||||
await Viewer.InitializeWebRtc();
|
||||
await viewer.InitializeWebRtc();
|
||||
}
|
||||
|
||||
await Viewer.SendMachineName(Environment.MachineName, viewerID);
|
||||
await viewer.SendMachineName(Environment.MachineName, viewerID);
|
||||
|
||||
await Viewer.SendScreenData(
|
||||
Viewer.Capturer.SelectedScreen,
|
||||
Viewer.Capturer.GetDisplayNames().ToArray(),
|
||||
await viewer.SendScreenData(
|
||||
viewer.Capturer.SelectedScreen,
|
||||
viewer.Capturer.GetDisplayNames().ToArray(),
|
||||
viewerID);
|
||||
|
||||
await Viewer.SendScreenSize(Viewer.Capturer.CurrentScreenBounds.Width,
|
||||
Viewer.Capturer.CurrentScreenBounds.Height,
|
||||
await viewer.SendScreenSize(viewer.Capturer.CurrentScreenBounds.Width,
|
||||
viewer.Capturer.CurrentScreenBounds.Height,
|
||||
viewerID);
|
||||
|
||||
Viewer.Capturer.ScreenChanged += async (sender, bounds) =>
|
||||
viewer.Capturer.ScreenChanged += async (sender, bounds) =>
|
||||
{
|
||||
await Viewer.SendScreenSize(bounds.Width, bounds.Height, viewerID);
|
||||
await viewer.SendScreenSize(bounds.Width, bounds.Height, viewerID);
|
||||
};
|
||||
|
||||
while (!Viewer.DisconnectRequested && Viewer.IsConnected)
|
||||
while (!viewer.DisconnectRequested && viewer.IsConnected)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (Viewer.IsStalled())
|
||||
if (viewer.IsStalled())
|
||||
{
|
||||
// Viewer isn't responding. Abort sending.
|
||||
break;
|
||||
@ -85,30 +77,30 @@ namespace Remotely.ScreenCast.Core.Services
|
||||
Debug.WriteLine($"Capture FPS: {fpsQueue.Count}");
|
||||
}
|
||||
|
||||
await Viewer.ThrottleIfNeeded();
|
||||
await viewer.ThrottleIfNeeded();
|
||||
|
||||
Viewer.Capturer.GetNextFrame();
|
||||
viewer.Capturer.GetNextFrame();
|
||||
|
||||
var diffArea = ImageUtils.GetDiffArea(Viewer.Capturer.CurrentFrame, Viewer.Capturer.PreviousFrame, Viewer.Capturer.CaptureFullscreen);
|
||||
var diffArea = ImageUtils.GetDiffArea(viewer.Capturer.CurrentFrame, viewer.Capturer.PreviousFrame, viewer.Capturer.CaptureFullscreen);
|
||||
|
||||
if (diffArea.IsEmpty)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
using (var newImage = Viewer.Capturer.CurrentFrame.Clone(diffArea, PixelFormat.Format32bppArgb))
|
||||
using (var newImage = viewer.Capturer.CurrentFrame.Clone(diffArea, PixelFormat.Format32bppArgb))
|
||||
{
|
||||
if (Viewer.Capturer.CaptureFullscreen)
|
||||
if (viewer.Capturer.CaptureFullscreen)
|
||||
{
|
||||
Viewer.Capturer.CaptureFullscreen = false;
|
||||
viewer.Capturer.CaptureFullscreen = false;
|
||||
}
|
||||
|
||||
encodedImageBytes = ImageUtils.EncodeBitmap(newImage, Viewer.EncoderParams);
|
||||
encodedImageBytes = ImageUtils.EncodeBitmap(newImage, viewer.EncoderParams);
|
||||
|
||||
if (encodedImageBytes?.Length > 0)
|
||||
{
|
||||
|
||||
await Viewer.SendScreenCapture(encodedImageBytes, viewerID, diffArea.Left, diffArea.Top, diffArea.Width, diffArea.Height, Viewer.ImageQuality);
|
||||
await viewer.SendScreenCapture(encodedImageBytes, viewerID, diffArea.Left, diffArea.Top, diffArea.Width, diffArea.Height, viewer.ImageQuality);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -123,11 +115,11 @@ namespace Remotely.ScreenCast.Core.Services
|
||||
|
||||
try
|
||||
{
|
||||
Viewer.Dispose();
|
||||
viewer.Dispose();
|
||||
|
||||
Viewer.Capturer.Dispose();
|
||||
viewer.Capturer.Dispose();
|
||||
|
||||
Viewer.Disconnect();
|
||||
viewer.Disconnect();
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@ -8,7 +8,9 @@ namespace Remotely.ScreenCast.Linux.Services
|
||||
{
|
||||
public class ClipboardServiceLinux : IClipboardService
|
||||
{
|
||||
#pragma warning disable
|
||||
public event EventHandler<string> ClipboardTextChanged;
|
||||
#pragma warning restore
|
||||
|
||||
public void BeginWatching()
|
||||
{
|
||||
|
||||
@ -13,12 +13,6 @@ namespace Remotely.ScreenCast.Linux.Services
|
||||
{
|
||||
public class ScreenCasterLinux : ScreenCasterBase, IScreenCaster
|
||||
{
|
||||
public ScreenCasterLinux(Viewer viewer)
|
||||
: base(viewer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public async Task BeginScreenCasting(ScreenCastRequest screenCastRequest)
|
||||
{
|
||||
try
|
||||
|
||||
@ -13,8 +13,7 @@ namespace Remotely.ScreenCast.Win.Services
|
||||
{
|
||||
public class ScreenCasterWin : ScreenCasterBase, IScreenCaster
|
||||
{
|
||||
public ScreenCasterWin(CursorIconWatcher cursorIconWatcher, Viewer viewer)
|
||||
: base(viewer)
|
||||
public ScreenCasterWin(CursorIconWatcher cursorIconWatcher)
|
||||
{
|
||||
CursorIconWatcher = cursorIconWatcher;
|
||||
}
|
||||
|
||||
@ -45,6 +45,7 @@
|
||||
<Content Remove="wwwroot\scripts\Models\GenericCommandResult.ts" />
|
||||
<Content Remove="wwwroot\scripts\Models\Parameter.ts" />
|
||||
<Content Remove="wwwroot\scripts\Models\Point.ts" />
|
||||
<Content Remove="wwwroot\scripts\RemoteControl\RtcDtos\ClipboardTextDto.ts" />
|
||||
<Content Remove="wwwroot\scripts\RemoteControl\RtcDtos\MachineNameDto.ts" />
|
||||
<Content Remove="wwwroot\scripts\RemoteControl\RtcDtos\ScreenDataDto.ts" />
|
||||
<Content Remove="wwwroot\scripts\Models\UserOptions.ts" />
|
||||
@ -159,6 +160,7 @@
|
||||
<TypeScriptCompile Include="wwwroot\scripts\Enums\DynamicDtoType.ts" />
|
||||
<TypeScriptCompile Include="wwwroot\scripts\RemoteControl\RtcDtos\CaptureFrameDto.ts" />
|
||||
<TypeScriptCompile Include="wwwroot\scripts\Models\Point.ts" />
|
||||
<TypeScriptCompile Include="wwwroot\scripts\RemoteControl\RtcDtos\ClipboardTextDto.ts" />
|
||||
<TypeScriptCompile Include="wwwroot\scripts\RemoteControl\RtcDtos\MachineNameDto.ts">
|
||||
<SubType>Code</SubType>
|
||||
</TypeScriptCompile>
|
||||
|
||||
@ -4,5 +4,6 @@ export var DynamicDtoType;
|
||||
DynamicDtoType[DynamicDtoType["ScreenData"] = 1] = "ScreenData";
|
||||
DynamicDtoType[DynamicDtoType["ScreenSize"] = 2] = "ScreenSize";
|
||||
DynamicDtoType[DynamicDtoType["MachineName"] = 3] = "MachineName";
|
||||
DynamicDtoType[DynamicDtoType["ClipboardText"] = 4] = "ClipboardText";
|
||||
})(DynamicDtoType || (DynamicDtoType = {}));
|
||||
//# sourceMappingURL=DynamicDtoType.js.map
|
||||
@ -1 +1 @@
|
||||
{"version":3,"file":"DynamicDtoType.js","sourceRoot":"","sources":["DynamicDtoType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACtB,mEAAgB,CAAA;IAChB,+DAAc,CAAA;IACd,+DAAc,CAAA;IACd,iEAAe,CAAA;AACnB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB"}
|
||||
{"version":3,"file":"DynamicDtoType.js","sourceRoot":"","sources":["DynamicDtoType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,mEAAgB,CAAA;IAChB,+DAAc,CAAA;IACd,+DAAc,CAAA;IACd,iEAAe,CAAA;IACf,qEAAa,CAAA;AACjB,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB"}
|
||||
@ -2,5 +2,6 @@
|
||||
CaptureFrame = 0,
|
||||
ScreenData = 1,
|
||||
ScreenSize = 2,
|
||||
MachineName = 3
|
||||
MachineName = 3,
|
||||
ClipboardText
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
//# sourceMappingURL=ClipboardTextDto.js.map
|
||||
@ -0,0 +1 @@
|
||||
{"version":3,"file":"ClipboardTextDto.js","sourceRoot":"","sources":["ClipboardTextDto.ts"],"names":[],"mappings":""}
|
||||
@ -0,0 +1,5 @@
|
||||
import { DynamicDto } from "../DynamicDto.js";
|
||||
|
||||
export interface ClipboardTextDto extends DynamicDto {
|
||||
ClipboardText: string;
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
import * as UI from "./UI.js";
|
||||
import { DynamicDtoType } from "../Enums/DynamicDtoType.js";
|
||||
import { Remotely } from "./Main.js";
|
||||
import { PopupMessage } from "../UI.js";
|
||||
export class RtcMessageHandler {
|
||||
constructor() {
|
||||
this.FpsStack = [];
|
||||
@ -22,9 +23,15 @@ export class RtcMessageHandler {
|
||||
case DynamicDtoType.ScreenSize:
|
||||
this.ProcessScreenSize(model);
|
||||
break;
|
||||
case DynamicDtoType.ClipboardText:
|
||||
this.ProcessClipboardText(model);
|
||||
default:
|
||||
}
|
||||
}
|
||||
ProcessClipboardText(clipboardText) {
|
||||
Remotely.ClipboardWatcher.SetClipboardText(clipboardText.ClipboardText);
|
||||
PopupMessage("Clipboard updated.");
|
||||
}
|
||||
ProcessMachineName(machineNameDto) {
|
||||
document.title = `${machineNameDto.MachineName} - Remotely Session`;
|
||||
}
|
||||
|
||||
@ -1 +1 @@
|
||||
{"version":3,"file":"RtcMessageHandler.js","sourceRoot":"","sources":["RtcMessageHandler.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"RtcMessageHandler.js","sourceRoot":"","sources":["RtcMessageHandler.ts"],"names":[],"mappings":"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"}
|
||||
@ -6,6 +6,8 @@ import { CaptureFrameDto } from "./RtcDtos/CaptureFrameDto.js";
|
||||
import { MachineNameDto } from "./RtcDtos/MachineNameDto.js";
|
||||
import { ScreenDataDto } from "./RtcDtos/ScreenDataDto.js";
|
||||
import { ScreenSizeDto } from "./RtcDtos/ScreenSizeDto.js";
|
||||
import { ClipboardTextDto } from "./RtcDtos/ClipboardTextDto.js";
|
||||
import { PopupMessage } from "../UI.js";
|
||||
|
||||
export class RtcMessageHandler {
|
||||
FpsStack: Array<number> = [];
|
||||
@ -26,9 +28,15 @@ export class RtcMessageHandler {
|
||||
case DynamicDtoType.ScreenSize:
|
||||
this.ProcessScreenSize(model as unknown as ScreenSizeDto)
|
||||
break;
|
||||
case DynamicDtoType.ClipboardText:
|
||||
this.ProcessClipboardText(model as unknown as ClipboardTextDto);
|
||||
default:
|
||||
}
|
||||
}
|
||||
ProcessClipboardText(clipboardText: ClipboardTextDto) {
|
||||
Remotely.ClipboardWatcher.SetClipboardText(clipboardText.ClipboardText);
|
||||
PopupMessage("Clipboard updated.");
|
||||
}
|
||||
ProcessMachineName(machineNameDto: MachineNameDto) {
|
||||
document.title = `${machineNameDto.MachineName} - Remotely Session`;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user