using Remotely.ScreenCast.Core.Interfaces; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Remotely.ScreenCast.Core.Enums; using Remotely.ScreenCast.Core.Services; using Remotely.ScreenCast.Core.Capture; using Remotely.ScreenCast.Core; using Remotely.ScreenCast.Core.Models; using Remotely.Shared.Models; using Remotely.ScreenCast.Win.Capture; namespace Remotely.ScreenCast.Win.Services { public class WinScreenCaster : ScreenCasterBase, IScreenCaster { public WinScreenCaster(CursorIconWatcher cursorIconWatcher) { CursorIconWatcher = cursorIconWatcher; } public CursorIconWatcher CursorIconWatcher { get; } public async Task BeginScreenCasting(ScreenCastRequest screenCastRequest) { await Conductor.Current.CasterSocket.SendCursorChange(CursorIconWatcher.GetCurrentCursor(), new List() { screenCastRequest.ViewerID }); _ = BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, GetCapturer()); } private static ICapturer GetCapturer() { return new BitBltCapture(); // TODO: DXCapture is leaking in the WPF app. //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; } } }