private void EnumerateCallback(IntPtr device, IntPtr context) { try { var mGuid = Guid.Empty; DirectOutputClass.GetDeviceType(device, ref mGuid); Console.WriteLine($"Adding new DirectOutput device {device} of type: {mGuid.ToString()}"); //Called initially when enumerating FIPs. if (!IsFipDevice(device)) { return; } var fipPanel = new FipPanel(device); _fipPanels.Add(fipPanel); fipPanel.Initalize(); } catch (Exception ex) { Console.WriteLine(ex); } }
private void DeviceCallback(IntPtr device, bool added, IntPtr context) { try { //Called whenever a DirectOutput device is added or removed from the system. Console.WriteLine("DeviceCallback(): 0x" + device.ToString("x") + (added ? " Added" : " Removed")); if (!IsFipDevice(device)) { return; } if (!added && _fipPanels.Count == 0) { return; } var i = _fipPanels.Count - 1; var found = false; do { if (_fipPanels[i].FipDevicePointer == device) { found = true; var fipPanel = _fipPanels[i]; if (!added) { fipPanel.Shutdown(); _fipPanels.Remove(fipPanel); } } i--; } while (i >= 0); if (added && !found) { Console.WriteLine("DeviceCallback() Spawning FipPanel. " + device); var fipPanel = new FipPanel(device); _fipPanels.Add(fipPanel); fipPanel.Initalize(); } } catch (Exception ex) { Console.WriteLine(ex); } }