mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
Fix DirectX capturer initialization.
This commit is contained in:
parent
1f74ebffa5
commit
47dedfe2b1
@ -40,7 +40,7 @@ namespace Remotely.Desktop.Unix.ViewModels
|
||||
new X11Input(),
|
||||
new LinuxAudioCapturer(),
|
||||
new LinuxClipboardService(),
|
||||
new LinuxScreenCaster(new X11Capture()));
|
||||
new LinuxScreenCaster());
|
||||
|
||||
Conductor.SessionIDChanged += SessionIDChanged;
|
||||
Conductor.ViewerRemoved += ViewerRemoved;
|
||||
|
||||
@ -36,7 +36,7 @@ namespace Remotely.Desktop.Win.ViewModels
|
||||
new WinInput(),
|
||||
new WinAudioCapturer(),
|
||||
new WinClipboardService(),
|
||||
new WinScreenCaster(CursorIconWatcher, GetCapturer()));
|
||||
new WinScreenCaster(CursorIconWatcher));
|
||||
|
||||
Conductor.SessionIDChanged += SessionIDChanged;
|
||||
Conductor.ViewerRemoved += ViewerRemoved;
|
||||
@ -189,28 +189,6 @@ namespace Remotely.Desktop.Win.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
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(() =>
|
||||
|
||||
@ -18,11 +18,6 @@ namespace Remotely.ScreenCast.Core.Capture
|
||||
{
|
||||
public class ScreenCasterBase
|
||||
{
|
||||
protected ICapturer Capturer { get; }
|
||||
public ScreenCasterBase(ICapturer capturer)
|
||||
{
|
||||
Capturer = capturer;
|
||||
}
|
||||
public async Task BeginScreenCasting(string viewerID,
|
||||
string requesterName,
|
||||
ICapturer capturer)
|
||||
|
||||
@ -121,8 +121,8 @@ namespace Remotely.ScreenCast.Core.Sockets
|
||||
{
|
||||
Connection.Closed += (ex) =>
|
||||
{
|
||||
Logger.Write($"Connection closed. Error: {ex.Message}");
|
||||
Environment.Exit(1);
|
||||
Logger.Write($"Connection closed. Error: {ex?.Message}");
|
||||
Environment.Exit(0);
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ namespace Remotely.ScreenCast.Linux
|
||||
new X11Input(),
|
||||
new LinuxAudioCapturer(),
|
||||
new LinuxClipboardService(),
|
||||
new LinuxScreenCaster(new X11Capture()));
|
||||
new LinuxScreenCaster());
|
||||
|
||||
Conductor.ProcessArgs(args);
|
||||
Conductor.Connect().ContinueWith(async (task) =>
|
||||
|
||||
@ -14,17 +14,12 @@ namespace Remotely.ScreenCast.Linux.Services
|
||||
{
|
||||
public class LinuxScreenCaster : ScreenCasterBase, IScreenCaster
|
||||
{
|
||||
public LinuxScreenCaster(ICapturer capturer)
|
||||
: base(capturer)
|
||||
{
|
||||
|
||||
}
|
||||
public async Task BeginScreenCasting(ScreenCastRequest screenCastRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
await Conductor.Current.CasterSocket.SendCursorChange(new CursorInfo(null, Point.Empty, "default"), new List<string>() { screenCastRequest.ViewerID });
|
||||
_ = BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, Capturer);
|
||||
_ = BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, new X11Capture());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@ -35,7 +35,7 @@ namespace Remotely.ScreenCast.Win
|
||||
new WinInput(),
|
||||
new WinAudioCapturer(),
|
||||
new WinClipboardService(),
|
||||
new WinScreenCaster(CursorIconWatcher, GetCapturer()));
|
||||
new WinScreenCaster(CursorIconWatcher));
|
||||
Conductor.ProcessArgs(args);
|
||||
|
||||
Conductor.Connect().ContinueWith(async (task) =>
|
||||
@ -102,28 +102,7 @@ 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)
|
||||
|
||||
@ -16,8 +16,7 @@ namespace Remotely.ScreenCast.Win.Services
|
||||
{
|
||||
public class WinScreenCaster : ScreenCasterBase, IScreenCaster
|
||||
{
|
||||
public WinScreenCaster(CursorIconWatcher cursorIconWatcher, ICapturer capturer)
|
||||
: base(capturer)
|
||||
public WinScreenCaster(CursorIconWatcher cursorIconWatcher)
|
||||
{
|
||||
CursorIconWatcher = cursorIconWatcher;
|
||||
}
|
||||
@ -27,7 +26,30 @@ namespace Remotely.ScreenCast.Win.Services
|
||||
public async Task BeginScreenCasting(ScreenCastRequest screenCastRequest)
|
||||
{
|
||||
await Conductor.Current.CasterSocket.SendCursorChange(CursorIconWatcher.GetCurrentCursor(), new List<string>() { screenCastRequest.ViewerID });
|
||||
_ = BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, Capturer);
|
||||
_ = BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, GetCapturer());
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -188,7 +188,6 @@ namespace Remotely.Server
|
||||
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
|
||||
});
|
||||
|
||||
// TODO: Re-enable when Swagger works when building for Linux on Windows.
|
||||
app.UseSwagger();
|
||||
|
||||
app.UseSwaggerUI(c =>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user