[Scummvm-git-logs] scummvm master -> 247fbe54929e5618086798408dd5864cbc1b224d

athrxx athrxx at scummvm.org
Thu Nov 11 18:30:38 UTC 2021


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
247fbe5492 KYRA: (EOB/LOL) - reduce calls to updateScreen


Commit: 247fbe54929e5618086798408dd5864cbc1b224d
    https://github.com/scummvm/scummvm/commit/247fbe54929e5618086798408dd5864cbc1b224d
Author: athrxx (athrxx at scummvm.org)
Date: 2021-11-11T19:30:22+01:00

Commit Message:
KYRA: (EOB/LOL) - reduce calls to updateScreen

(to improve performance with enabled vsync  option)

Changed paths:
    engines/kyra/engine/items_eob.cpp
    engines/kyra/gui/gui_eob.cpp
    engines/kyra/sequence/sequences_darkmoon.cpp
    engines/kyra/sequence/sequences_eob.cpp
    engines/kyra/text/text_rpg.cpp


diff --git a/engines/kyra/engine/items_eob.cpp b/engines/kyra/engine/items_eob.cpp
index 05ff3079a9..b21103a357 100644
--- a/engines/kyra/engine/items_eob.cpp
+++ b/engines/kyra/engine/items_eob.cpp
@@ -208,6 +208,8 @@ int EoBCoreEngine::deleteInventoryItem(int charIndex, int slot) {
 
 		if (_currentControlMode == 0)
 			gui_drawCharPortraitWithStats(charIndex);
+
+		_screen->updateScreen();
 	}
 
 	return _items[itm].value;
@@ -331,6 +333,8 @@ bool EoBCoreEngine::deletePartyItems(int16 itemType, int16 itemValue) {
 		}
 	}
 
+	_screen->updateScreen();
+
 	return res;
 }
 
diff --git a/engines/kyra/gui/gui_eob.cpp b/engines/kyra/gui/gui_eob.cpp
index eee3db2216..24b1cda7af 100644
--- a/engines/kyra/gui/gui_eob.cpp
+++ b/engines/kyra/gui/gui_eob.cpp
@@ -207,6 +207,7 @@ void EoBCoreEngine::gui_drawCharPortraitWithStats(int index, bool screenUpdt) {
 				gui_drawInventoryItem(27, 1, 2);
 
 			_screen->setFont(cf);
+			_screen->updateScreen();
 
 		} else {
 			_screen->setFont(cf);
@@ -541,7 +542,6 @@ void EoBCoreEngine::gui_drawInventoryItem(int slot, int redraw, int pageNum) {
 		drawItemIconShape(pageNum, item, x, y);
 	}
 	_screen->_curPage = cp;
-	_screen->updateScreen();
 }
 
 void EoBCoreEngine::gui_drawCharacterStatsPage() {
@@ -1490,6 +1490,8 @@ void EoBCoreEngine::gui_processInventorySlotClick(int slot) {
 			setHandItem(itm);
 		}
 
+		_screen->updateScreen();
+
 	} else if (slot == 27) {
 		gui_displayMap();
 
@@ -1498,6 +1500,7 @@ void EoBCoreEngine::gui_processInventorySlotClick(int slot) {
 		_characters[_updateCharNum].inventory[slot] = ih;
 		gui_drawInventoryItem(slot, 1, 0);
 		recalcArmorClass(_updateCharNum);
+		_screen->updateScreen();
 	}
 }
 
@@ -2144,10 +2147,12 @@ int GUI_EoB::simpleMenu_process(int sd, const char *const *strings, void *b, int
 		if (_vm->gameFlags().platform == Common::kPlatformSegaCD) {
 			_vm->_txt->printShadedText(strings[simpleMenu_getMenuItem(currentItem, menuItemsMask, itemOffset)], 4, (sd == 8 ? 2 : 20) + currentItem * lineH, _menuTextColor, _menuShadowColor);
 			_vm->_txt->printShadedText(strings[simpleMenu_getMenuItem(newItem, menuItemsMask, itemOffset)], 4, (sd == 8 ? 2 : 20) + newItem * lineH, _menuHighlightColor, _menuShadowColor);
+			_screen->sega_getRenderer()->render(0, 6, 20, 26, 5);
 		} else {
 			_screen->printText(strings[simpleMenu_getMenuItem(currentItem, menuItemsMask, itemOffset)], x, y + currentItem * lineH, _menuTextColor, 0);
 			_screen->printText(strings[simpleMenu_getMenuItem(newItem, menuItemsMask, itemOffset)], x, y + newItem * lineH, _menuHighlightColor, 0);
 		}
+		_screen->updateScreen();
 	}
 
 	if (result != -1) {
diff --git a/engines/kyra/sequence/sequences_darkmoon.cpp b/engines/kyra/sequence/sequences_darkmoon.cpp
index 9a1f337a29..f698def285 100644
--- a/engines/kyra/sequence/sequences_darkmoon.cpp
+++ b/engines/kyra/sequence/sequences_darkmoon.cpp
@@ -209,10 +209,8 @@ int DarkMoonEngine::mainMenuLoop() {
 		_gui->simpleMenu_setup(6, 0, _mainMenuStrings, -1, 0, 0, _configRenderMode == Common::kRenderCGA ? 1 : guiSettings()->colors.guiColorWhite, guiSettings()->colors.guiColorLightRed, guiSettings()->colors.guiColorBlack);
 		_screen->updateScreen();
 
-		while (sel == -1 && !shouldQuit()) {
+		while (sel == -1 && !shouldQuit())
 			sel = _gui->simpleMenu_process(6, _mainMenuStrings, 0, -1, 0);
-			_screen->updateScreen();
-		}
 	} while ((sel < 0 || sel > 5) && !shouldQuit());
 
 	if (_flags.platform == Common::kPlatformFMTowns && sel == 2) {
@@ -229,10 +227,8 @@ void DarkMoonEngine::townsUtilitiesMenu() {
 	do {
 		_gui->simpleMenu_setup(8, 0, _utilMenuStrings, -1, 0, 0, _configRenderMode == Common::kRenderCGA ? 1 : guiSettings()->colors.guiColorWhite, guiSettings()->colors.guiColorLightRed, guiSettings()->colors.guiColorBlack);
 		_screen->updateScreen();
-		while (sel == -1 && !shouldQuit()) {
+		while (sel == -1 && !shouldQuit())
 			sel = _gui->simpleMenu_process(8, _utilMenuStrings, 0, -1, 0);
-			_screen->updateScreen();
-		}
 		if (sel == 0) {
 			_config2431 ^= true;
 			sel = -1;
diff --git a/engines/kyra/sequence/sequences_eob.cpp b/engines/kyra/sequence/sequences_eob.cpp
index 1e8080947a..a8bf723d1e 100644
--- a/engines/kyra/sequence/sequences_eob.cpp
+++ b/engines/kyra/sequence/sequences_eob.cpp
@@ -2280,12 +2280,8 @@ int EoBEngine::mainMenuLoop() {
 			_screen->sega_getRenderer()->render(0);
 		_screen->updateScreen();
 
-		while (sel == -1 && !shouldQuit()) {
+		while (sel == -1 && !shouldQuit())
 			sel = _gui->simpleMenu_process(8, _mainMenuStrings, 0, -1, 0);
-			if (_flags.platform == Common::kPlatformSegaCD)
-				_screen->sega_getRenderer()->render(0, 6, 20, 26, 5);
-			_screen->updateScreen();
-		}
 	} while ((sel < 0 || sel > 5) && !shouldQuit());
 
 	return sel + 1;
diff --git a/engines/kyra/text/text_rpg.cpp b/engines/kyra/text/text_rpg.cpp
index fa865d417c..4ad968ffb3 100644
--- a/engines/kyra/text/text_rpg.cpp
+++ b/engines/kyra/text/text_rpg.cpp
@@ -192,6 +192,7 @@ void TextDisplayer_rpg::displayText(char *str, ...) {
 		switch (c - 1) {
 		case 0:
 			printLine(_currentLine);
+			_screen->updateScreen();
 			textPageBreak();
 			_numCharsPrinted = 0;
 			break;
@@ -260,6 +261,7 @@ void TextDisplayer_rpg::displayText(char *str, ...) {
 		printLine(_currentLine);
 
 	_screen->setFont(of);
+	_screen->updateScreen();
 }
 
 char TextDisplayer_rpg::parseCommand() {
@@ -327,6 +329,7 @@ void TextDisplayer_rpg::printLine(char *str) {
 	while (_textDimData[sdx].line >= lines) {
 		if ((lines - _waitButtonSpace) <= _lineCount && _allowPageBreak) {
 			_lineCount = 0;
+			_screen->updateScreen();
 			textPageBreak();
 			_numCharsPrinted = 0;
 		}
@@ -501,7 +504,6 @@ void TextDisplayer_rpg::printLine(char *str) {
 		_screen->printText(str, x1 & ~3, (y + 8) & ~7, col, 0);
 	} else {
 		_screen->printText(str, x1, y, col, _textDimData[sdx].color2);
-		_screen->updateScreen();
 	}
 
 	_textDimData[sdx].column += lw;




More information about the Scummvm-git-logs mailing list