Skip to content

Commit f06b7f7

Browse files
committed
Redrawing desktop sized backbuffer is GPU intensive so add settings property to limit refresh rate - only really relevant when running resolutions higher than 1080p on a high refresh rate monitor
1 parent 59daca2 commit f06b7f7

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

Bender.bmx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ Repeat
2929
g_UserInterface = New UserInterface(g_DefaultMaximizeWindow)
3030
g_FileIO = New FileIO()
3131
g_GraphicsOutput = New GraphicsOutput(g_UserInterface.GetMaxWorkspaceWidth())
32-
EnablePolledInput()
3332

3433
'Apply user settings/defaults.
3534
g_UserInterface.SetColorTextboxValues(g_GraphicsOutput.SetBackgroundColor(Int[][g_DefaultBackgroundRed, g_DefaultBackgroundGreen, g_DefaultBackgroundBlue]))
@@ -40,10 +39,21 @@ Repeat
4039
g_UserInterface.SetFileTypeComboBoxVisible(g_UserInterface.SetSaveAsIndexedCheckboxValue(g_FileIO.SetSaveAsIndexed(g_DefaultSaveAsIndexed)))
4140
g_UserInterface.SetFileTypeComboBoxSelectedItem(g_FileIO.SetIndexedFileType(g_DefaultIndexedFileType))
4241

42+
Local refreshTimer:TTimer = CreateTimer(g_DefaultOutputRefreshRate)
43+
Local refreshOutput:Int = False
44+
45+
EnablePolledInput()
46+
4347
Repeat
48+
refreshOutput = False
4449
PollEvent()
4550

4651
Select EventID()
52+
Case EVENT_TIMERTICK
53+
Select EventSource()
54+
Case refreshTimer
55+
refreshOutput = True
56+
EndSelect
4757
Case EVENT_APPRESUME
4858
ActivateWindow(g_UserInterface.m_MainWindow)
4959
Case EVENT_WINDOWSIZE
@@ -112,6 +122,8 @@ Repeat
112122
EndSelect
113123

114124
g_GraphicsOutput.Update()
115-
g_GraphicsOutput.Draw()
125+
If refreshOutput Then
126+
g_GraphicsOutput.Draw()
127+
EndIf
116128
Forever
117129
Forever

Types/SettingsManager.bmx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Import "Utility.bmx"
33
'//// DEFAULT/USER EDITOR SETTINGS //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
44

55
Global g_DefaultMaximizeWindow:Int = False
6+
Global g_DefaultOutputRefreshRate:Int = DesktopHertz()
67
Global g_DefaultBackgroundRed:Int = 50
78
Global g_DefaultBackgroundGreen:Int = 170
89
Global g_DefaultBackgroundBlue:Int = 255
@@ -47,6 +48,8 @@ Type SettingsManager
4748
Select propAndValue[0]
4849
Case "StartMaximizedWindow"
4950
g_DefaultMaximizeWindow = Utility.Clamp(propAndValue[1].ToInt(), False, True)
51+
Case "OutputRefreshRate"
52+
g_DefaultOutputRefreshRate = Utility.Clamp(propAndValue[1].ToInt(), 1, DesktopHertz())
5053
Case "BackgroundRed"
5154
g_DefaultBackgroundRed = Utility.Clamp(propAndValue[1].ToInt(), 0, 255)
5255
Case "BackgroundGreen"
@@ -82,6 +85,7 @@ Type SettingsManager
8285
Local outputString:TStringBuilder = New TStringBuilder("// User Settings~n~n")
8386

8487
outputString.Append("StartMaximizedWindow = " + g_DefaultMaximizeWindow + "~n")
88+
outputString.Append("OutputRefreshRate = " + g_DefaultOutputRefreshRate + "~n")
8589
outputString.Append("BackgroundRed = " + propertyValues[0] + "~n")
8690
outputString.Append("BackgroundGreen = " + propertyValues[1] + "~n")
8791
outputString.Append("BackgroundBlue = " + propertyValues[2] + "~n")

0 commit comments

Comments
 (0)