GUI: add option for late clear

This commit is contained in:
tildearrow 2023-06-08 04:15:57 -05:00
parent 32c300ff41
commit 402c520276
3 changed files with 19 additions and 1 deletions

View file

@ -5803,7 +5803,9 @@ bool FurnaceGUI::loop() {
} }
} }
rend->clear(uiColors[GUI_COLOR_BACKGROUND]); if (!settings.renderClearPos) {
rend->clear(uiColors[GUI_COLOR_BACKGROUND]);
}
renderTimeBegin=SDL_GetPerformanceCounter(); renderTimeBegin=SDL_GetPerformanceCounter();
ImGui::Render(); ImGui::Render();
renderTimeEnd=SDL_GetPerformanceCounter(); renderTimeEnd=SDL_GetPerformanceCounter();
@ -5821,6 +5823,9 @@ bool FurnaceGUI::loop() {
} }
} }
rend->present(); rend->present();
if (settings.renderClearPos) {
rend->clear(uiColors[GUI_COLOR_BACKGROUND]);
}
layoutTimeDelta=layoutTimeEnd-layoutTimeBegin; layoutTimeDelta=layoutTimeEnd-layoutTimeBegin;
renderTimeDelta=renderTimeEnd-renderTimeBegin; renderTimeDelta=renderTimeEnd-renderTimeBegin;

View file

@ -1495,6 +1495,7 @@ class FurnaceGUI {
int orderButtonPos; int orderButtonPos;
int compress; int compress;
int newPatternFormat; int newPatternFormat;
int renderClearPos;
unsigned int maxUndoSteps; unsigned int maxUndoSteps;
String mainFontPath; String mainFontPath;
String patFontPath; String patFontPath;
@ -1643,6 +1644,7 @@ class FurnaceGUI {
orderButtonPos(2), orderButtonPos(2),
compress(1), compress(1),
newPatternFormat(1), newPatternFormat(1),
renderClearPos(0),
maxUndoSteps(100), maxUndoSteps(100),
mainFontPath(""), mainFontPath(""),
patFontPath(""), patFontPath(""),

View file

@ -626,6 +626,14 @@ void FurnaceGUI::drawSettings() {
ImGui::SetTooltip("saves power by lowering the frame rate to 2fps when idle.\nmay cause issues under Mesa drivers!"); ImGui::SetTooltip("saves power by lowering the frame rate to 2fps when idle.\nmay cause issues under Mesa drivers!");
} }
bool renderClearPosB=settings.renderClearPos;
if (ImGui::Checkbox("Late render clear",&renderClearPosB)) {
settings.renderClearPos=renderClearPosB;
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("calls rend->clear() after rend->present(). might reduce UI latency by one frame in some drivers.");
}
#ifndef IS_MOBILE #ifndef IS_MOBILE
bool noThreadedInputB=settings.noThreadedInput; bool noThreadedInputB=settings.noThreadedInput;
if (ImGui::Checkbox("Disable threaded input (restart after changing!)",&noThreadedInputB)) { if (ImGui::Checkbox("Disable threaded input (restart after changing!)",&noThreadedInputB)) {
@ -2728,6 +2736,7 @@ void FurnaceGUI::syncSettings() {
settings.compress=e->getConfInt("compress",1); settings.compress=e->getConfInt("compress",1);
settings.newPatternFormat=e->getConfInt("newPatternFormat",1); settings.newPatternFormat=e->getConfInt("newPatternFormat",1);
settings.renderBackend=e->getConfString("renderBackend","SDL"); settings.renderBackend=e->getConfString("renderBackend","SDL");
settings.renderClearPos=e->getConfInt("renderClearPos",0);
clampSetting(settings.mainFontSize,2,96); clampSetting(settings.mainFontSize,2,96);
clampSetting(settings.patFontSize,2,96); clampSetting(settings.patFontSize,2,96);
@ -2850,6 +2859,7 @@ void FurnaceGUI::syncSettings() {
clampSetting(settings.orderButtonPos,0,2); clampSetting(settings.orderButtonPos,0,2);
clampSetting(settings.compress,0,1); clampSetting(settings.compress,0,1);
clampSetting(settings.newPatternFormat,0,1); clampSetting(settings.newPatternFormat,0,1);
clampSetting(settings.renderClearPos,0,1);
if (settings.exportLoops<0.0) settings.exportLoops=0.0; if (settings.exportLoops<0.0) settings.exportLoops=0.0;
if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0; if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0;
@ -3068,6 +3078,7 @@ void FurnaceGUI::commitSettings() {
e->setConf("compress",settings.compress); e->setConf("compress",settings.compress);
e->setConf("newPatternFormat",settings.newPatternFormat); e->setConf("newPatternFormat",settings.newPatternFormat);
e->setConf("renderBackend",settings.renderBackend); e->setConf("renderBackend",settings.renderBackend);
e->setConf("renderClearPos",settings.renderClearPos);
// colors // colors
for (int i=0; i<GUI_COLOR_MAX; i++) { for (int i=0; i<GUI_COLOR_MAX; i++) {