public void StartScrcpyServer(UsbDeviceEventArgs dev) { Task <int> task = new Task <int>(() => { try { OnVideoDataArrived cb = OnMirrorImageArrive; RegistVideoCB(cb); GC.KeepAlive(cb); OnScrcpyLog cb2 = OnScrcpyLog1; RegistScrcpyLogCB(cb2); GC.KeepAlive(cb); SetADBFolderPath(Marshal.StringToHGlobalAnsi(adb_path_) , Marshal.StringToHGlobalAnsi(adb_svr_path_)); IntPtr[] sbs = GetCommand($"-s {dev.GetSerial()} -m {Display_height} -b 2M"); var ret = RunScrcpy(sbs.Length, sbs); return(ret); } catch (Exception e) { log_.Error($"StartScrcpyServer {e.ToString()}"); } finally { OnDeviceDisconnected?.Invoke(this, dev); if (!adb_server_.GetStatus().IsRunning) { adb_server_.RestartServer(); } } return(-1); }); task.Start(); }
extern static unsafe int RegistVideoCB(OnVideoDataArrived funcVideoDataCB);