Debugger: Limit refresh to ~100 FPS on all debugger windows (to reduce chances of UI locking up at max speed)

This commit is contained in:
Sour 2019-03-31 20:02:10 -04:00
parent 2725534842
commit 08b1388cbd
4 changed files with 34 additions and 17 deletions

View file

@ -14,6 +14,7 @@ namespace Mesen.GUI.Debugger
public partial class frmEventViewer : BaseForm public partial class frmEventViewer : BaseForm
{ {
private NotificationListener _notifListener; private NotificationListener _notifListener;
private DateTime _lastUpdate = DateTime.MinValue;
public frmEventViewer() public frmEventViewer()
{ {
@ -41,10 +42,14 @@ namespace Mesen.GUI.Debugger
switch(e.NotificationType) { switch(e.NotificationType) {
case ConsoleNotificationType.CodeBreak: case ConsoleNotificationType.CodeBreak:
case ConsoleNotificationType.EventViewerRefresh: case ConsoleNotificationType.EventViewerRefresh:
ctrlPpuView.RefreshData(); if((DateTime.Now - _lastUpdate).Milliseconds > 10) {
this.BeginInvoke((Action)(() => { _lastUpdate = DateTime.Now;
ctrlPpuView.RefreshViewer();
})); ctrlPpuView.RefreshData();
this.BeginInvoke((Action)(() => {
ctrlPpuView.RefreshViewer();
}));
}
break; break;
} }
} }

View file

@ -7,6 +7,7 @@ namespace Mesen.GUI.Debugger
public partial class frmPaletteViewer : BaseForm public partial class frmPaletteViewer : BaseForm
{ {
private NotificationListener _notifListener; private NotificationListener _notifListener;
private DateTime _lastUpdate = DateTime.MinValue;
public frmPaletteViewer() public frmPaletteViewer()
{ {
@ -54,11 +55,14 @@ namespace Mesen.GUI.Debugger
case ConsoleNotificationType.CodeBreak: case ConsoleNotificationType.CodeBreak:
case ConsoleNotificationType.ViewerRefresh: case ConsoleNotificationType.ViewerRefresh:
if(e.Parameter.ToInt32() == ctrlScanlineCycleSelect.ViewerId) { if(e.Parameter.ToInt32() == ctrlScanlineCycleSelect.ViewerId) {
ctrlPaletteViewer.RefreshData(); if((DateTime.Now - _lastUpdate).Milliseconds > 10) {
this.BeginInvoke((Action)(() => { _lastUpdate = DateTime.Now;
ctrlPaletteViewer.RefreshViewer(); ctrlPaletteViewer.RefreshData();
UpdateFields(); this.BeginInvoke((Action)(() => {
})); ctrlPaletteViewer.RefreshViewer();
UpdateFields();
}));
}
} }
break; break;

View file

@ -24,6 +24,7 @@ namespace Mesen.GUI.Debugger
private bool _zoomed; private bool _zoomed;
private SnesMemoryType _memoryType = SnesMemoryType.VideoRam; private SnesMemoryType _memoryType = SnesMemoryType.VideoRam;
private int _addressOffset = 0; private int _addressOffset = 0;
private DateTime _lastUpdate = DateTime.MinValue;
public frmTileViewer() public frmTileViewer()
{ {
@ -71,10 +72,13 @@ namespace Mesen.GUI.Debugger
case ConsoleNotificationType.CodeBreak: case ConsoleNotificationType.CodeBreak:
case ConsoleNotificationType.ViewerRefresh: case ConsoleNotificationType.ViewerRefresh:
if(e.Parameter.ToInt32() == ctrlScanlineCycleSelect.ViewerId) { if(e.Parameter.ToInt32() == ctrlScanlineCycleSelect.ViewerId) {
RefreshData(); if((DateTime.Now - _lastUpdate).Milliseconds > 10) {
this.BeginInvoke((Action)(() => { _lastUpdate = DateTime.Now;
this.RefreshViewer(); RefreshData();
})); this.BeginInvoke((Action)(() => {
this.RefreshViewer();
}));
}
} }
break; break;

View file

@ -28,6 +28,7 @@ namespace Mesen.GUI.Debugger
private int _scale = 1; private int _scale = 1;
private int _selectedRow = 0; private int _selectedRow = 0;
private int _selectedColumn = 0; private int _selectedColumn = 0;
private DateTime _lastUpdate = DateTime.MinValue;
public frmTilemapViewer() public frmTilemapViewer()
{ {
@ -77,10 +78,13 @@ namespace Mesen.GUI.Debugger
case ConsoleNotificationType.CodeBreak: case ConsoleNotificationType.CodeBreak:
case ConsoleNotificationType.ViewerRefresh: case ConsoleNotificationType.ViewerRefresh:
if(e.Parameter.ToInt32() == ctrlScanlineCycleSelect.ViewerId) { if(e.Parameter.ToInt32() == ctrlScanlineCycleSelect.ViewerId) {
RefreshData(); if((DateTime.Now - _lastUpdate).Milliseconds > 10) {
this.BeginInvoke((Action)(() => { _lastUpdate = DateTime.Now;
this.RefreshViewer(); RefreshData();
})); this.BeginInvoke((Action)(() => {
this.RefreshViewer();
}));
}
} }
break; break;