mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
Remove static screencaster.
This commit is contained in:
parent
e4374bc380
commit
40fb8748e1
@ -40,7 +40,7 @@ namespace Remotely.Desktop.Unix.ViewModels
|
||||
new X11Input(),
|
||||
new LinuxAudioCapturer(),
|
||||
new LinuxClipboardService(),
|
||||
new LinuxScreenCaster());
|
||||
new LinuxScreenCaster(new X11Capture()));
|
||||
|
||||
Conductor.SessionIDChanged += SessionIDChanged;
|
||||
Conductor.ViewerRemoved += ViewerRemoved;
|
||||
@ -209,7 +209,7 @@ namespace Remotely.Desktop.Unix.ViewModels
|
||||
}
|
||||
|
||||
await Conductor.CasterSocket.SendCursorChange(new CursorInfo(null, Point.Empty, "default"), new List<string>() { screenCastRequest.ViewerID });
|
||||
_ = ScreenCaster.BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, capturer);
|
||||
_ = Conductor.ScreenCaster.BeginScreenCasting(screenCastRequest);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -36,7 +36,7 @@ namespace Remotely.Desktop.Win.ViewModels
|
||||
new WinInput(),
|
||||
new WinAudioCapturer(),
|
||||
new WinClipboardService(),
|
||||
new WinScreenCaster(CursorIconWatcher));
|
||||
new WinScreenCaster(CursorIconWatcher, GetCapturer()));
|
||||
|
||||
Conductor.SessionIDChanged += SessionIDChanged;
|
||||
Conductor.ViewerRemoved += ViewerRemoved;
|
||||
@ -188,6 +188,29 @@ namespace Remotely.Desktop.Win.ViewModels
|
||||
await Conductor?.CasterSocket?.SendCursorChange(cursor, Conductor.Viewers.Keys.ToList());
|
||||
}
|
||||
}
|
||||
|
||||
private ICapturer GetCapturer()
|
||||
{
|
||||
ICapturer capturer;
|
||||
try
|
||||
{
|
||||
if (Conductor.Current.Viewers.Count == 0)
|
||||
{
|
||||
capturer = new DXCapture();
|
||||
}
|
||||
else
|
||||
{
|
||||
capturer = new BitBltCapture();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Write(ex);
|
||||
capturer = new BitBltCapture();
|
||||
}
|
||||
|
||||
return capturer;
|
||||
}
|
||||
private void ScreenCastRequested(object sender, ScreenCastRequest screenCastRequest)
|
||||
{
|
||||
App.Current.Dispatcher.Invoke(() =>
|
||||
@ -215,7 +238,7 @@ namespace Remotely.Desktop.Win.ViewModels
|
||||
capturer = new BitBltCapture();
|
||||
}
|
||||
await Conductor.CasterSocket.SendCursorChange(CursorIconWatcher.GetCurrentCursor(), new List<string>() { screenCastRequest.ViewerID });
|
||||
_ = ScreenCaster.BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, capturer);
|
||||
_ = Conductor.ScreenCaster.BeginScreenCasting(screenCastRequest);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -16,9 +16,14 @@ using Remotely.ScreenCast.Core.Interfaces;
|
||||
|
||||
namespace Remotely.ScreenCast.Core.Capture
|
||||
{
|
||||
public class ScreenCaster
|
||||
public class ScreenCasterBase
|
||||
{
|
||||
public static async Task BeginScreenCasting(string viewerID,
|
||||
protected ICapturer Capturer { get; }
|
||||
public ScreenCasterBase(ICapturer capturer)
|
||||
{
|
||||
Capturer = capturer;
|
||||
}
|
||||
public async Task BeginScreenCasting(string viewerID,
|
||||
string requesterName,
|
||||
ICapturer capturer)
|
||||
{
|
||||
@ -19,14 +19,16 @@ namespace Remotely.ScreenCast.Core
|
||||
public class Conductor
|
||||
{
|
||||
public static Conductor Current { get; private set; }
|
||||
public IScreenCaster ScreenCaster { get; }
|
||||
|
||||
public Conductor(IKeyboardMouseInput keyboardMouse,
|
||||
IAudioCapturer audioService,
|
||||
IClipboardService clipboardService,
|
||||
IScreenCaster screenCastService)
|
||||
IScreenCaster screenCaster)
|
||||
{
|
||||
Current = this;
|
||||
CasterSocket = new CasterSocket(this, keyboardMouse, screenCastService, audioService, clipboardService);
|
||||
ScreenCaster = screenCaster;
|
||||
CasterSocket = new CasterSocket(this, keyboardMouse, screenCaster, audioService, clipboardService);
|
||||
}
|
||||
public event EventHandler<ScreenCastRequest> ScreenCastRequested;
|
||||
|
||||
|
||||
@ -25,18 +25,18 @@ namespace Remotely.ScreenCast.Core.Sockets
|
||||
Conductor conductor,
|
||||
IKeyboardMouseInput keyboardMouseInput,
|
||||
IScreenCaster screenCastService,
|
||||
IAudioCapturer audioService,
|
||||
IAudioCapturer audioCapturer,
|
||||
IClipboardService clipboardService)
|
||||
{
|
||||
Conductor = conductor;
|
||||
KeyboardMouseInput = keyboardMouseInput;
|
||||
ClipboardService = clipboardService;
|
||||
AudioService = audioService;
|
||||
ScreenCastService = screenCastService;
|
||||
AudioCapturer = audioCapturer;
|
||||
ScreenCaster = screenCastService;
|
||||
}
|
||||
|
||||
public IScreenCaster ScreenCastService { get; }
|
||||
private IAudioCapturer AudioService { get; }
|
||||
public IScreenCaster ScreenCaster { get; }
|
||||
private IAudioCapturer AudioCapturer { get; }
|
||||
private IClipboardService ClipboardService { get; }
|
||||
private Conductor Conductor { get; }
|
||||
private HubConnection Connection { get; set; }
|
||||
@ -153,7 +153,7 @@ namespace Remotely.ScreenCast.Core.Sockets
|
||||
{
|
||||
try
|
||||
{
|
||||
ScreenCastService.BeginScreenCasting(new ScreenCastRequest() { ViewerID = viewerID, RequesterName = requesterName });
|
||||
ScreenCaster.BeginScreenCasting(new ScreenCastRequest() { ViewerID = viewerID, RequesterName = requesterName });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -277,7 +277,7 @@ namespace Remotely.ScreenCast.Core.Sockets
|
||||
{
|
||||
if (Conductor.Viewers.TryGetValue(viewerID, out var viewer) && viewer.HasControl)
|
||||
{
|
||||
AudioService.ToggleAudio(toggleOn);
|
||||
AudioCapturer.ToggleAudio(toggleOn);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ using Remotely.ScreenCast.Core.Services;
|
||||
using System;
|
||||
using System.Threading;
|
||||
using Remotely.ScreenCast.Linux.Services;
|
||||
using Remotely.ScreenCast.Linux.Capture;
|
||||
|
||||
namespace Remotely.ScreenCast.Linux
|
||||
{
|
||||
@ -18,7 +19,7 @@ namespace Remotely.ScreenCast.Linux
|
||||
new X11Input(),
|
||||
new LinuxAudioCapturer(),
|
||||
new LinuxClipboardService(),
|
||||
new LinuxScreenCaster());
|
||||
new LinuxScreenCaster(new X11Capture()));
|
||||
|
||||
Conductor.ProcessArgs(args);
|
||||
Conductor.Connect().ContinueWith(async (task) =>
|
||||
|
||||
@ -12,15 +12,19 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Remotely.ScreenCast.Linux.Services
|
||||
{
|
||||
public class LinuxScreenCaster : IScreenCaster
|
||||
public class LinuxScreenCaster : ScreenCasterBase, IScreenCaster
|
||||
{
|
||||
public LinuxScreenCaster(ICapturer capturer)
|
||||
: base(capturer)
|
||||
{
|
||||
|
||||
}
|
||||
public async Task BeginScreenCasting(ScreenCastRequest screenCastRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
var capturer = new X11Capture();
|
||||
await Conductor.Current.CasterSocket.SendCursorChange(new CursorInfo(null, Point.Empty, "default"), new List<string>() { screenCastRequest.ViewerID });
|
||||
_ = ScreenCaster.BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, capturer);
|
||||
_ = BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, Capturer);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@ -8,6 +8,8 @@ using System.Threading.Tasks;
|
||||
using Remotely.Shared.Win32;
|
||||
using System.Threading;
|
||||
using Remotely.ScreenCast.Win.Services;
|
||||
using Remotely.ScreenCast.Core.Interfaces;
|
||||
using Remotely.ScreenCast.Win.Capture;
|
||||
|
||||
namespace Remotely.ScreenCast.Win
|
||||
{
|
||||
@ -33,7 +35,7 @@ namespace Remotely.ScreenCast.Win
|
||||
new WinInput(),
|
||||
new WinAudioCapturer(),
|
||||
new WinClipboardService(),
|
||||
new WinScreenCaster(CursorIconWatcher));
|
||||
new WinScreenCaster(CursorIconWatcher, GetCapturer()));
|
||||
Conductor.ProcessArgs(args);
|
||||
|
||||
Conductor.Connect().ContinueWith(async (task) =>
|
||||
@ -57,8 +59,6 @@ namespace Remotely.ScreenCast.Win
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static async Task CheckForRelaunch()
|
||||
{
|
||||
|
||||
@ -102,6 +102,28 @@ namespace Remotely.ScreenCast.Win
|
||||
Logger.Write((Exception)e.ExceptionObject);
|
||||
}
|
||||
|
||||
private static ICapturer GetCapturer()
|
||||
{
|
||||
ICapturer capturer;
|
||||
try
|
||||
{
|
||||
if (Conductor.Current.Viewers.Count == 0)
|
||||
{
|
||||
capturer = new DXCapture();
|
||||
}
|
||||
else
|
||||
{
|
||||
capturer = new BitBltCapture();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Write(ex);
|
||||
capturer = new BitBltCapture();
|
||||
}
|
||||
|
||||
return capturer;
|
||||
}
|
||||
private static async Task HandleConnection(Conductor conductor)
|
||||
{
|
||||
while (true)
|
||||
|
||||
@ -14,9 +14,10 @@ using Remotely.ScreenCast.Win.Capture;
|
||||
|
||||
namespace Remotely.ScreenCast.Win.Services
|
||||
{
|
||||
public class WinScreenCaster : IScreenCaster
|
||||
public class WinScreenCaster : ScreenCasterBase, IScreenCaster
|
||||
{
|
||||
public WinScreenCaster(CursorIconWatcher cursorIconWatcher)
|
||||
public WinScreenCaster(CursorIconWatcher cursorIconWatcher, ICapturer capturer)
|
||||
: base(capturer)
|
||||
{
|
||||
CursorIconWatcher = cursorIconWatcher;
|
||||
}
|
||||
@ -25,25 +26,8 @@ namespace Remotely.ScreenCast.Win.Services
|
||||
|
||||
public async Task BeginScreenCasting(ScreenCastRequest screenCastRequest)
|
||||
{
|
||||
ICapturer capturer;
|
||||
try
|
||||
{
|
||||
if (Conductor.Current.Viewers.Count == 0)
|
||||
{
|
||||
capturer = new DXCapture();
|
||||
}
|
||||
else
|
||||
{
|
||||
capturer = new BitBltCapture();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Write(ex);
|
||||
capturer = new BitBltCapture();
|
||||
}
|
||||
await Conductor.Current.CasterSocket.SendCursorChange(CursorIconWatcher.GetCurrentCursor(), new List<string>() { screenCastRequest.ViewerID });
|
||||
_ = ScreenCaster.BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, capturer);
|
||||
_ = BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, Capturer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user