mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
Change how casting thread is started.
This commit is contained in:
parent
82e3074354
commit
14291e0920
@ -220,14 +220,12 @@ namespace Remotely.Desktop.Core.Services
|
||||
}
|
||||
}
|
||||
|
||||
_ = Task.Run(() => {
|
||||
ScreenCaster.BeginScreenCasting(new ScreenCastRequest()
|
||||
{
|
||||
NotifyUser = notifyUser,
|
||||
ViewerID = viewerID,
|
||||
RequesterName = requesterName,
|
||||
UseWebRtc = useWebRtc
|
||||
});
|
||||
ScreenCaster.BeginScreenCasting(new ScreenCastRequest()
|
||||
{
|
||||
NotifyUser = notifyUser,
|
||||
ViewerID = viewerID,
|
||||
RequesterName = requesterName,
|
||||
UseWebRtc = useWebRtc
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@ -25,7 +25,6 @@ namespace Remotely.Desktop.Core.Services
|
||||
|
||||
public class ScreenCaster : IScreenCaster
|
||||
{
|
||||
private readonly ConcurrentDictionary<string, Thread> _castingThreads = new();
|
||||
private readonly Conductor _conductor;
|
||||
private readonly ICursorIconWatcher _cursorIconWatcher;
|
||||
private readonly ISessionIndicator _sessionIndicator;
|
||||
@ -45,13 +44,7 @@ namespace Remotely.Desktop.Core.Services
|
||||
|
||||
public void BeginScreenCasting(ScreenCastRequest screenCastRequest)
|
||||
{
|
||||
var castingThread = new Thread(async () =>
|
||||
{
|
||||
await CastScreen(screenCastRequest);
|
||||
});
|
||||
castingThread.SetApartmentState(ApartmentState.STA);
|
||||
_castingThreads.AddOrUpdate(screenCastRequest.ViewerID, castingThread, (k, v) => castingThread);
|
||||
castingThread.Start();
|
||||
_ = Task.Run(async () => await CastScreen(screenCastRequest));
|
||||
}
|
||||
|
||||
private async Task CastScreen(ScreenCastRequest screenCastRequest)
|
||||
@ -215,7 +208,6 @@ namespace Remotely.Desktop.Core.Services
|
||||
Logger.Write("No more viewers. Calling shutdown service.");
|
||||
await _shutdownService.Shutdown();
|
||||
}
|
||||
_castingThreads.TryRemove(screenCastRequest.ViewerID, out _);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -315,26 +315,19 @@ namespace Remotely.Desktop.Win.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
private void ScreenCastRequested(object sender, ScreenCastRequest screenCastRequest)
|
||||
private async void ScreenCastRequested(object sender, ScreenCastRequest screenCastRequest)
|
||||
{
|
||||
App.Current.Dispatcher.Invoke(() =>
|
||||
await App.Current.Dispatcher.InvokeAsync(async () =>
|
||||
{
|
||||
App.Current.MainWindow.Activate();
|
||||
var result = MessageBox.Show(Application.Current.MainWindow, $"You've received a connection request from {screenCastRequest.RequesterName}. Accept?", "Connection Request", MessageBoxButton.YesNo, MessageBoxImage.Question);
|
||||
if (result == MessageBoxResult.Yes)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
Services.GetRequiredService<IScreenCaster>().BeginScreenCasting(screenCastRequest);
|
||||
});
|
||||
Services.GetRequiredService<IScreenCaster>().BeginScreenCasting(screenCastRequest);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Run on another thread so it doesn't tie up the UI thread.
|
||||
Task.Run(async () =>
|
||||
{
|
||||
await _casterSocket.SendConnectionRequestDenied(screenCastRequest.ViewerID);
|
||||
});
|
||||
await _casterSocket.SendConnectionRequestDenied(screenCastRequest.ViewerID);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -20,7 +20,6 @@ namespace Remotely.Desktop.XPlat
|
||||
{
|
||||
public class App : Application
|
||||
{
|
||||
private static Conductor Conductor;
|
||||
private static IServiceProvider Services => ServiceContainer.Instance;
|
||||
|
||||
public override void Initialize()
|
||||
@ -96,24 +95,24 @@ namespace Remotely.Desktop.XPlat
|
||||
|
||||
BuildServices();
|
||||
|
||||
Conductor = Services.GetRequiredService<Conductor>();
|
||||
var conductor = Services.GetRequiredService<Conductor>();
|
||||
|
||||
var args = Environment.GetCommandLineArgs().SkipWhile(x => !x.StartsWith("-"));
|
||||
Logger.Write("Processing Args: " + string.Join(", ", args));
|
||||
Conductor.ProcessArgs(args.ToArray());
|
||||
conductor.ProcessArgs(args.ToArray());
|
||||
|
||||
await Services.GetRequiredService<IDeviceInitService>().GetInitParams();
|
||||
|
||||
if (Conductor.Mode == Core.Enums.AppMode.Chat)
|
||||
if (conductor.Mode == Core.Enums.AppMode.Chat)
|
||||
{
|
||||
await Services.GetRequiredService<IChatClientService>().StartChat(Conductor.RequesterID, Conductor.OrganizationName);
|
||||
await Services.GetRequiredService<IChatClientService>().StartChat(conductor.RequesterID, conductor.OrganizationName);
|
||||
}
|
||||
else if (Conductor.Mode == Core.Enums.AppMode.Unattended)
|
||||
else if (conductor.Mode == Core.Enums.AppMode.Unattended)
|
||||
{
|
||||
var casterSocket = Services.GetRequiredService<ICasterSocket>();
|
||||
await casterSocket.Connect(Conductor.Host).ConfigureAwait(false);
|
||||
await casterSocket.SendDeviceInfo(Conductor.ServiceID, Environment.MachineName, Conductor.DeviceID).ConfigureAwait(false);
|
||||
await casterSocket.NotifyRequesterUnattendedReady(Conductor.RequesterID).ConfigureAwait(false);
|
||||
await casterSocket.Connect(conductor.Host).ConfigureAwait(false);
|
||||
await casterSocket.SendDeviceInfo(conductor.ServiceID, Environment.MachineName, conductor.DeviceID).ConfigureAwait(false);
|
||||
await casterSocket.NotifyRequesterUnattendedReady(conductor.RequesterID).ConfigureAwait(false);
|
||||
Services.GetRequiredService<IdleTimer>().Start();
|
||||
Services.GetRequiredService<IClipboardService>().BeginWatching();
|
||||
Services.GetRequiredService<IKeyboardMouseInput>().Init();
|
||||
|
||||
@ -284,10 +284,7 @@ namespace Remotely.Desktop.XPlat.ViewModels
|
||||
var result = await MessageBox.Show($"You've received a connection request from {screenCastRequest.RequesterName}. Accept?", "Connection Request", MessageBoxType.YesNo);
|
||||
if (result == MessageBoxResult.Yes)
|
||||
{
|
||||
_ = Task.Run(() =>
|
||||
{
|
||||
Services.GetRequiredService<IScreenCaster>().BeginScreenCasting(screenCastRequest);
|
||||
});
|
||||
Services.GetRequiredService<IScreenCaster>().BeginScreenCasting(screenCastRequest);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user