GUI: Don't redraw whole dialog stack with kRedrawTopDialog
This commit is contained in:
parent
e228ff8725
commit
f824f8ad13
1 changed files with 7 additions and 4 deletions
|
@ -310,7 +310,6 @@ void GuiManager::redraw() {
|
||||||
switch (_redrawStatus) {
|
switch (_redrawStatus) {
|
||||||
case kRedrawCloseDialog:
|
case kRedrawCloseDialog:
|
||||||
case kRedrawFull:
|
case kRedrawFull:
|
||||||
case kRedrawTopDialog:
|
|
||||||
_theme->clearAll();
|
_theme->clearAll();
|
||||||
_theme->drawToBackbuffer();
|
_theme->drawToBackbuffer();
|
||||||
|
|
||||||
|
@ -324,8 +323,9 @@ void GuiManager::redraw() {
|
||||||
// fall through
|
// fall through
|
||||||
|
|
||||||
case kRedrawOpenDialog:
|
case kRedrawOpenDialog:
|
||||||
|
case kRedrawTopDialog:
|
||||||
// This case is an optimization to avoid redrawing the whole dialog
|
// This case is an optimization to avoid redrawing the whole dialog
|
||||||
// stack when opening a new dialog.
|
// stack when opening a new dialog or redrawing the current one.
|
||||||
|
|
||||||
if (_displayTopDialogOnly) {
|
if (_displayTopDialogOnly) {
|
||||||
// When displaying only the top dialog clear the screen
|
// When displaying only the top dialog clear the screen
|
||||||
|
@ -341,7 +341,8 @@ void GuiManager::redraw() {
|
||||||
previousDialog->drawDialog(kDrawLayerForeground);
|
previousDialog->drawDialog(kDrawLayerForeground);
|
||||||
}
|
}
|
||||||
|
|
||||||
_theme->applyScreenShading(shading);
|
if (_redrawStatus != kRedrawTopDialog)
|
||||||
|
_theme->applyScreenShading(shading);
|
||||||
}
|
}
|
||||||
|
|
||||||
_dialogStack.top()->drawDialog(kDrawLayerBackground);
|
_dialogStack.top()->drawDialog(kDrawLayerBackground);
|
||||||
|
@ -776,7 +777,9 @@ void GuiManager::processEvent(const Common::Event &event, Dialog *const activeDi
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiManager::scheduleTopDialogRedraw() {
|
void GuiManager::scheduleTopDialogRedraw() {
|
||||||
_redrawStatus = kRedrawTopDialog;
|
// Open/Close dialog redraws have higher priority, otherwise they may not be processed at all
|
||||||
|
if (_redrawStatus != kRedrawOpenDialog && _redrawStatus != kRedrawCloseDialog)
|
||||||
|
_redrawStatus = kRedrawTopDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiManager::giveFocusToDialog(Dialog *dialog) {
|
void GuiManager::giveFocusToDialog(Dialog *dialog) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue