Esempio n. 1
0
 /// <summary>
 /// New devices found.
 /// </summary>
 private void CallBack(List <AndroidDevice> list)
 {
     lock (devicesLock)
     {
         // Look for removed devices
         var removed = devices.Where(x => list.All(y => y.Serial != x.Serial)).ToList();
         foreach (var device in removed)
         {
             devices.Remove(device);
             DeviceRemoved.Fire(this, new EventArgs <AndroidDevice>(device));
         }
         // Look for added or changed devices
         foreach (var device in list)
         {
             var serial   = device.Serial;
             var existing = devices.FirstOrDefault(x => x.Serial == serial);
             if (existing == null)
             {
                 // Device added
                 devices.Add(device);
                 DeviceAdded.Fire(this, new EventArgs <AndroidDevice>(device));
             }
             else if (existing.DeviceState != device.DeviceState)
             {
                 // State changed
                 devices.Remove(existing);
                 devices.Add(device);
                 DeviceStateChanged.Fire(this, new EventArgs <AndroidDevice>(device));
             }
         }
         receivedInitialUpdate = true;
         Monitor.PulseAll(devicesLock);
     }
 }
Esempio n. 2
0
 /// <summary>
 /// A device has been added.
 /// </summary>
 void OnDeviceAdded(object sender, EventArgs <AndroidDevice> e)
 {
     if (InvokeRequired)
     {
         Invoke(new EventHandler <EventArgs <AndroidDevice> >(OnDeviceAdded), sender, e);
     }
     else
     {
         var ui         = TaskScheduler.FromCurrentSynchronizationContext();
         var createTask = Task.Factory.StartNew(() => new AndroidDeviceItem(e.Data));
         createTask.ContinueWith(x => {
             if (x.Status == TaskStatus.RanToCompletion)
             {
                 RemoveItemsBySerial(e.Data.Serial);
                 var item = new AndroidDeviceItem(e.Data);
                 tvList.Items.Add(item);
                 SetIsCompatible(item);
                 ReloadList();
                 if (UserPreferences.Preferences.PreferredDeviceSerial == item.Serial)
                 {
                     Select(item.Device);
                 }
                 UpdateNoDevicesItem();
                 DeviceAdded.Fire(this, e);
             }
         }, ui);
     }
 }