mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-01-02 10:43:31 +00:00
Don't render device types that aren't usable
This commit is contained in:
parent
039593c6fe
commit
d7bf26a738
@ -52,8 +52,8 @@ namespace Artemis.Managers
|
||||
//TODO DarthAffe 14.01.2017: A stop-condition and a real cleanup instead of just aborting might be better
|
||||
while (true)
|
||||
{
|
||||
// try
|
||||
// {
|
||||
try
|
||||
{
|
||||
long preUpdateTicks = DateTime.Now.Ticks;
|
||||
|
||||
Render();
|
||||
@ -61,11 +61,11 @@ namespace Artemis.Managers
|
||||
int sleep = (int)(40f - ((DateTime.Now.Ticks - preUpdateTicks) / 10000f));
|
||||
if (sleep > 0)
|
||||
Thread.Sleep(sleep);
|
||||
// }
|
||||
// catch (Exception e)
|
||||
// {
|
||||
// _logger.Warn(e, "Exception in render loop");
|
||||
// }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.Warn(e, "Exception in render loop");
|
||||
}
|
||||
}
|
||||
// ReSharper disable once FunctionNeverReturns
|
||||
}
|
||||
@ -157,10 +157,11 @@ namespace Artemis.Managers
|
||||
var headsets = _deviceManager.HeadsetProviders.Where(m => m.CanUse).ToList();
|
||||
var generics = _deviceManager.GenericProviders.Where(m => m.CanUse).ToList();
|
||||
var mousemats = _deviceManager.MousematProviders.Where(m => m.CanUse).ToList();
|
||||
|
||||
var keyboardOnly = !mice.Any() && !headsets.Any() && !generics.Any() && !mousemats.Any();
|
||||
|
||||
// Setup the frame for this tick
|
||||
using (var frame = new RenderFrame(_deviceManager.ActiveKeyboard))
|
||||
using (var frame = new RenderFrame(_deviceManager.ActiveKeyboard, mice.Any(), headsets.Any(), generics.Any(), mousemats.Any()))
|
||||
{
|
||||
if (renderModule.IsInitialized)
|
||||
renderModule.Render(frame, keyboardOnly);
|
||||
@ -202,47 +203,55 @@ namespace Artemis.Managers
|
||||
|
||||
public class RenderFrame : IDisposable
|
||||
{
|
||||
public RenderFrame(KeyboardProvider keyboard)
|
||||
public RenderFrame(KeyboardProvider keyboard, bool renderMice, bool renderHeadsets, bool renderGenerics, bool renderMousemats)
|
||||
{
|
||||
if (keyboard == null)
|
||||
return;
|
||||
|
||||
KeyboardBitmap = keyboard.KeyboardBitmap();
|
||||
KeyboardBitmap.SetResolution(96, 96);
|
||||
|
||||
MouseBitmap = new Bitmap(10, 10);
|
||||
MouseBitmap.SetResolution(96, 96);
|
||||
|
||||
HeadsetBitmap = new Bitmap(10, 10);
|
||||
HeadsetBitmap.SetResolution(96, 96);
|
||||
|
||||
GenericBitmap = new Bitmap(10, 10);
|
||||
GenericBitmap.SetResolution(96, 96);
|
||||
|
||||
MousematBitmap = new Bitmap(10, 10);
|
||||
MousematBitmap.SetResolution(96, 96);
|
||||
|
||||
using (var g = Graphics.FromImage(KeyboardBitmap))
|
||||
{
|
||||
g.Clear(Color.Black);
|
||||
}
|
||||
|
||||
if (renderMice)
|
||||
{
|
||||
MouseBitmap = new Bitmap(10, 10);
|
||||
MouseBitmap.SetResolution(96, 96);
|
||||
using (var g = Graphics.FromImage(MouseBitmap))
|
||||
{
|
||||
g.Clear(Color.Black);
|
||||
}
|
||||
}
|
||||
if (renderHeadsets)
|
||||
{
|
||||
HeadsetBitmap = new Bitmap(10, 10);
|
||||
HeadsetBitmap.SetResolution(96, 96);
|
||||
using (var g = Graphics.FromImage(HeadsetBitmap))
|
||||
{
|
||||
g.Clear(Color.Black);
|
||||
}
|
||||
}
|
||||
if (renderGenerics)
|
||||
{
|
||||
GenericBitmap = new Bitmap(10, 10);
|
||||
GenericBitmap.SetResolution(96, 96);
|
||||
using (var g = Graphics.FromImage(GenericBitmap))
|
||||
{
|
||||
g.Clear(Color.Black);
|
||||
}
|
||||
}
|
||||
if (renderMousemats)
|
||||
{
|
||||
MousematBitmap = new Bitmap(10, 10);
|
||||
MousematBitmap.SetResolution(96, 96);
|
||||
using (var g = Graphics.FromImage(MousematBitmap))
|
||||
{
|
||||
g.Clear(Color.Black);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Bitmap KeyboardBitmap { get; set; }
|
||||
public Bitmap MouseBitmap { get; set; }
|
||||
|
||||
@ -164,25 +164,37 @@ namespace Artemis.Modules.Abstract
|
||||
}
|
||||
// Render mice layer-by-layer
|
||||
var devRec = new Rect(0, 0, 10, 10);
|
||||
if (frame.MouseBitmap != null)
|
||||
{
|
||||
using (var g = Graphics.FromImage(frame.MouseBitmap))
|
||||
{
|
||||
ProfileModel?.DrawLayers(g, layers, DrawType.Mouse, DataModel, devRec, preview);
|
||||
}
|
||||
}
|
||||
// Render headsets layer-by-layer
|
||||
if (frame.HeadsetBitmap != null)
|
||||
{
|
||||
using (var g = Graphics.FromImage(frame.HeadsetBitmap))
|
||||
{
|
||||
ProfileModel?.DrawLayers(g, layers, DrawType.Headset, DataModel, devRec, preview);
|
||||
}
|
||||
}
|
||||
// Render generic devices layer-by-layer
|
||||
if (frame.GenericBitmap != null)
|
||||
{
|
||||
using (var g = Graphics.FromImage(frame.GenericBitmap))
|
||||
{
|
||||
ProfileModel?.DrawLayers(g, layers, DrawType.Generic, DataModel, devRec, preview);
|
||||
}
|
||||
}
|
||||
// Render mousemats layer-by-layer
|
||||
if (frame.MousematBitmap != null)
|
||||
{
|
||||
using (var g = Graphics.FromImage(frame.MousematBitmap))
|
||||
{
|
||||
ProfileModel?.DrawLayers(g, layers, DrawType.Mousemat, DataModel, devRec, preview);
|
||||
}
|
||||
}
|
||||
|
||||
// Trace debugging
|
||||
if (DateTime.Now.AddSeconds(-2) <= _lastTrace || Logger == null)
|
||||
|
||||
@ -75,17 +75,23 @@ namespace Artemis.Modules.General.GeneralProfile
|
||||
|
||||
private MMDevice _defaultRecording;
|
||||
private MMDevice _defaultPlayback;
|
||||
private AudioMeterInformation _recordingInfo;
|
||||
private AudioMeterInformation _playbackInfo;
|
||||
|
||||
private void SetupAudio()
|
||||
{
|
||||
_defaultPlayback = MMDeviceEnumerator.DefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
|
||||
_defaultRecording = MMDeviceEnumerator.DefaultAudioEndpoint(DataFlow.Capture, Role.Multimedia);
|
||||
_recordingInfo = AudioMeterInformation.FromDevice(_defaultRecording);
|
||||
_defaultPlayback = MMDeviceEnumerator.DefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
|
||||
_playbackInfo = AudioMeterInformation.FromDevice(_defaultPlayback);
|
||||
}
|
||||
|
||||
private void AudioDeviceChanged(object sender, AudioDeviceChangedEventArgs e)
|
||||
{
|
||||
_defaultRecording = e.DefaultRecording;
|
||||
_recordingInfo = AudioMeterInformation.FromDevice(_defaultRecording);
|
||||
_defaultPlayback = e.DefaultPlayback;
|
||||
_playbackInfo = AudioMeterInformation.FromDevice(_defaultPlayback);
|
||||
}
|
||||
|
||||
private void UpdateAudio(GeneralProfileDataModel dataModel)
|
||||
@ -93,8 +99,8 @@ namespace Artemis.Modules.General.GeneralProfile
|
||||
// Update microphone, only bother with OverallPeak
|
||||
if (_defaultRecording != null)
|
||||
{
|
||||
var recording = AudioMeterInformation.FromDevice(_defaultRecording);
|
||||
dataModel.Audio.Recording.OverallPeak = recording.PeakValue;
|
||||
|
||||
dataModel.Audio.Recording.OverallPeak = _recordingInfo.PeakValue;
|
||||
}
|
||||
|
||||
if (_defaultPlayback == null)
|
||||
@ -105,9 +111,8 @@ namespace Artemis.Modules.General.GeneralProfile
|
||||
|
||||
// Update speakers, only do overall, left and right for now
|
||||
// TODO: When adding list support lets do all channels
|
||||
var playback = AudioMeterInformation.FromDevice(_defaultPlayback);
|
||||
var peakValues = playback.GetChannelsPeakValues();
|
||||
dataModel.Audio.Playback.OverallPeak = playback.PeakValue;
|
||||
var peakValues = _playbackInfo.GetChannelsPeakValues();
|
||||
dataModel.Audio.Playback.OverallPeak = _playbackInfo.PeakValue;
|
||||
dataModel.Audio.Playback.LeftPeak = peakValues[0];
|
||||
dataModel.Audio.Playback.LeftPeak = peakValues[1];
|
||||
}
|
||||
|
||||
@ -75,7 +75,7 @@ namespace Artemis.Profiles.Layers.Types.Audio
|
||||
var direction = ((AudioPropertiesModel) layerModel.Properties).Direction;
|
||||
|
||||
// Create a geometry that will be formed by all the bars
|
||||
Geometry barGeometry = new RectangleGeometry();
|
||||
GeometryGroup barGeometry = new GeometryGroup();
|
||||
|
||||
switch (direction)
|
||||
{
|
||||
@ -84,7 +84,7 @@ namespace Artemis.Profiles.Layers.Types.Audio
|
||||
{
|
||||
var clipRect = new Rect((parentX + index) * 4, parentY * 4, 4, _lineValues[index] * 4);
|
||||
var barRect = new RectangleGeometry(clipRect);
|
||||
barGeometry = Geometry.Combine(barGeometry, barRect, CombineMode, Transform.Identity);
|
||||
barGeometry.Children.Add(barRect);
|
||||
}
|
||||
break;
|
||||
case Direction.BottomToTop:
|
||||
@ -93,7 +93,7 @@ namespace Artemis.Profiles.Layers.Types.Audio
|
||||
var clipRect = new Rect((parentX + index) * 4, parentY * 4, 4, _lineValues[index] * 4);
|
||||
clipRect.Y = clipRect.Y + layerModel.Height * 4 - clipRect.Height;
|
||||
var barRect = new RectangleGeometry(clipRect);
|
||||
barGeometry = Geometry.Combine(barGeometry, barRect, CombineMode, Transform.Identity);
|
||||
barGeometry.Children.Add(barRect);
|
||||
}
|
||||
break;
|
||||
case Direction.LeftToRight:
|
||||
@ -101,7 +101,7 @@ namespace Artemis.Profiles.Layers.Types.Audio
|
||||
{
|
||||
var clipRect = new Rect((parentX + index) * 4, parentY * 4, 4, _lineValues[index] * 4);
|
||||
var barRect = new RectangleGeometry(clipRect);
|
||||
barGeometry = Geometry.Combine(barGeometry, barRect, CombineMode, Transform.Identity);
|
||||
barGeometry.Children.Add(barRect);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -109,7 +109,7 @@ namespace Artemis.Profiles.Layers.Types.Audio
|
||||
{
|
||||
var clipRect = new Rect((parentX + index) * 4, parentY * 4, 4, _lineValues[index] * 4);
|
||||
var barRect = new RectangleGeometry(clipRect);
|
||||
barGeometry = Geometry.Combine(barGeometry, barRect, CombineMode, Transform.Identity);
|
||||
barGeometry.Children.Add(barRect);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@ -6,20 +6,19 @@ using System.Windows.Media;
|
||||
using Artemis.Managers;
|
||||
using Artemis.Utilities;
|
||||
using Caliburn.Micro;
|
||||
using Action = System.Action;
|
||||
|
||||
namespace Artemis.ViewModels
|
||||
{
|
||||
public class DebugViewModel : Screen
|
||||
{
|
||||
private readonly DeviceManager _deviceManager;
|
||||
|
||||
private DrawingImage _razerDisplay;
|
||||
private DrawingImage _generic;
|
||||
private DrawingImage _headset;
|
||||
private DrawingImage _keyboard;
|
||||
private DrawingImage _mouse;
|
||||
private DrawingImage _headset;
|
||||
private DrawingImage _mousemat;
|
||||
private DrawingImage _generic;
|
||||
|
||||
private DrawingImage _razerDisplay;
|
||||
|
||||
public DebugViewModel(DeviceManager deviceManager)
|
||||
{
|
||||
@ -137,9 +136,13 @@ namespace Artemis.ViewModels
|
||||
Keyboard = ImageUtilities.BitmapToDrawingImage(frame.KeyboardBitmap, rect);
|
||||
}
|
||||
|
||||
if (frame.MouseBitmap != null)
|
||||
Mouse = ImageUtilities.BitmapToDrawingImage(frame.MouseBitmap, new Rect(0, 0, 10, 10));
|
||||
if (frame.HeadsetBitmap != null)
|
||||
Headset = ImageUtilities.BitmapToDrawingImage(frame.HeadsetBitmap, new Rect(0, 0, 10, 10));
|
||||
if (frame.MousematBitmap != null)
|
||||
Mousemat = ImageUtilities.BitmapToDrawingImage(frame.MousematBitmap, new Rect(0, 0, 10, 10));
|
||||
if (frame.GenericBitmap != null)
|
||||
Generic = ImageUtilities.BitmapToDrawingImage(frame.GenericBitmap, new Rect(0, 0, 10, 10));
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user