public async Task Render() { const byte SHADE = 30; var bitmap = default(WriteableBitmap); var success = default(bool); var waveRenderInfo = default(BitmapHelper.RenderInfo); var powerRenderInfo = default(BitmapHelper.RenderInfo); if (this.RendererData == null) { return; } await Windows.Invoke(() => { bitmap = this.Bitmap; success = bitmap.TryLock(LockTimeout); if (!success) { return; } if (this.Rms.Value) { var colors = this.Color.ToPair(SHADE); waveRenderInfo = BitmapHelper.CreateRenderInfo(bitmap, colors[0]); powerRenderInfo = BitmapHelper.CreateRenderInfo(bitmap, colors[1]); } else { waveRenderInfo = BitmapHelper.CreateRenderInfo(bitmap, this.Color); } }).ConfigureAwait(false); if (!success) { //No bitmap or failed to establish lock. return; } Render( this.RendererData, waveRenderInfo, powerRenderInfo, this.Rms.Value, WaveBarBehaviourConfiguration.GetMode(this.Mode.Value) ); await Windows.Invoke(() => { bitmap.AddDirtyRect(new Int32Rect(0, 0, bitmap.PixelWidth, bitmap.PixelHeight)); bitmap.Unlock(); }).ConfigureAwait(false); }
public void Update() { if (this.GeneratorData != null && this.RendererData != null) { Update( this.GeneratorData, this.RendererData, this.Rms.Value, WaveBarBehaviourConfiguration.GetMode(this.Mode.Value) ); } var task = this.Render(); }