From 08b1388cbd6acb982032763b3c2a0ff78822a4f8 Mon Sep 17 00:00:00 2001 From: Sour Date: Sun, 31 Mar 2019 20:02:10 -0400 Subject: [PATCH] Debugger: Limit refresh to ~100 FPS on all debugger windows (to reduce chances of UI locking up at max speed) --- UI/Debugger/EventViewer/frmEventViewer.cs | 13 +++++++++---- UI/Debugger/PpuViewer/frmPaletteViewer.cs | 14 +++++++++----- UI/Debugger/PpuViewer/frmTileViewer.cs | 12 ++++++++---- UI/Debugger/PpuViewer/frmTilemapViewer.cs | 12 ++++++++---- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/UI/Debugger/EventViewer/frmEventViewer.cs b/UI/Debugger/EventViewer/frmEventViewer.cs index 5da7f74..a12d079 100644 --- a/UI/Debugger/EventViewer/frmEventViewer.cs +++ b/UI/Debugger/EventViewer/frmEventViewer.cs @@ -14,6 +14,7 @@ namespace Mesen.GUI.Debugger public partial class frmEventViewer : BaseForm { private NotificationListener _notifListener; + private DateTime _lastUpdate = DateTime.MinValue; public frmEventViewer() { @@ -41,10 +42,14 @@ namespace Mesen.GUI.Debugger switch(e.NotificationType) { case ConsoleNotificationType.CodeBreak: case ConsoleNotificationType.EventViewerRefresh: - ctrlPpuView.RefreshData(); - this.BeginInvoke((Action)(() => { - ctrlPpuView.RefreshViewer(); - })); + if((DateTime.Now - _lastUpdate).Milliseconds > 10) { + _lastUpdate = DateTime.Now; + + ctrlPpuView.RefreshData(); + this.BeginInvoke((Action)(() => { + ctrlPpuView.RefreshViewer(); + })); + } break; } } diff --git a/UI/Debugger/PpuViewer/frmPaletteViewer.cs b/UI/Debugger/PpuViewer/frmPaletteViewer.cs index 5c40a53..238364a 100644 --- a/UI/Debugger/PpuViewer/frmPaletteViewer.cs +++ b/UI/Debugger/PpuViewer/frmPaletteViewer.cs @@ -7,6 +7,7 @@ namespace Mesen.GUI.Debugger public partial class frmPaletteViewer : BaseForm { private NotificationListener _notifListener; + private DateTime _lastUpdate = DateTime.MinValue; public frmPaletteViewer() { @@ -54,11 +55,14 @@ namespace Mesen.GUI.Debugger case ConsoleNotificationType.CodeBreak: case ConsoleNotificationType.ViewerRefresh: if(e.Parameter.ToInt32() == ctrlScanlineCycleSelect.ViewerId) { - ctrlPaletteViewer.RefreshData(); - this.BeginInvoke((Action)(() => { - ctrlPaletteViewer.RefreshViewer(); - UpdateFields(); - })); + if((DateTime.Now - _lastUpdate).Milliseconds > 10) { + _lastUpdate = DateTime.Now; + ctrlPaletteViewer.RefreshData(); + this.BeginInvoke((Action)(() => { + ctrlPaletteViewer.RefreshViewer(); + UpdateFields(); + })); + } } break; diff --git a/UI/Debugger/PpuViewer/frmTileViewer.cs b/UI/Debugger/PpuViewer/frmTileViewer.cs index 2602d18..5affedf 100644 --- a/UI/Debugger/PpuViewer/frmTileViewer.cs +++ b/UI/Debugger/PpuViewer/frmTileViewer.cs @@ -24,6 +24,7 @@ namespace Mesen.GUI.Debugger private bool _zoomed; private SnesMemoryType _memoryType = SnesMemoryType.VideoRam; private int _addressOffset = 0; + private DateTime _lastUpdate = DateTime.MinValue; public frmTileViewer() { @@ -71,10 +72,13 @@ namespace Mesen.GUI.Debugger case ConsoleNotificationType.CodeBreak: case ConsoleNotificationType.ViewerRefresh: if(e.Parameter.ToInt32() == ctrlScanlineCycleSelect.ViewerId) { - RefreshData(); - this.BeginInvoke((Action)(() => { - this.RefreshViewer(); - })); + if((DateTime.Now - _lastUpdate).Milliseconds > 10) { + _lastUpdate = DateTime.Now; + RefreshData(); + this.BeginInvoke((Action)(() => { + this.RefreshViewer(); + })); + } } break; diff --git a/UI/Debugger/PpuViewer/frmTilemapViewer.cs b/UI/Debugger/PpuViewer/frmTilemapViewer.cs index 3b1931a..eda981a 100644 --- a/UI/Debugger/PpuViewer/frmTilemapViewer.cs +++ b/UI/Debugger/PpuViewer/frmTilemapViewer.cs @@ -28,6 +28,7 @@ namespace Mesen.GUI.Debugger private int _scale = 1; private int _selectedRow = 0; private int _selectedColumn = 0; + private DateTime _lastUpdate = DateTime.MinValue; public frmTilemapViewer() { @@ -77,10 +78,13 @@ namespace Mesen.GUI.Debugger case ConsoleNotificationType.CodeBreak: case ConsoleNotificationType.ViewerRefresh: if(e.Parameter.ToInt32() == ctrlScanlineCycleSelect.ViewerId) { - RefreshData(); - this.BeginInvoke((Action)(() => { - this.RefreshViewer(); - })); + if((DateTime.Now - _lastUpdate).Milliseconds > 10) { + _lastUpdate = DateTime.Now; + RefreshData(); + this.BeginInvoke((Action)(() => { + this.RefreshViewer(); + })); + } } break;