From a643b3d239dbe5af0464b3da53cde0ac56d9217d Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 12 Nov 2020 10:43:04 +0100 Subject: [PATCH] minimized UI redraws and renderings when message is displayed refactored message creation --- src/common/PNGLibrary.cxx | 6 +- src/common/PaletteHandler.cxx | 8 +- src/common/RewindManager.cxx | 4 +- src/common/SoundSDL2.cxx | 4 +- src/common/StateManager.cxx | 18 +- src/debugger/gui/RomWidget.cxx | 2 +- src/debugger/gui/TiaOutputWidget.cxx | 8 +- src/debugger/gui/TiaZoomWidget.cxx | 4 +- src/emucore/Console.cxx | 42 ++-- src/emucore/EventHandler.cxx | 46 ++--- src/emucore/FrameBuffer.cxx | 295 +++++++++++++-------------- src/emucore/FrameBuffer.hxx | 25 ++- src/emucore/OSystem.cxx | 6 +- src/emucore/QuadTari.cxx | 2 +- src/emucore/TIASurface.cxx | 10 +- src/gui/DialogContainer.cxx | 4 +- src/gui/GameInfoDialog.cxx | 6 +- src/gui/LauncherDialog.cxx | 2 +- src/gui/LoggerDialog.cxx | 4 +- src/gui/TimeMachineDialog.cxx | 4 +- 20 files changed, 252 insertions(+), 248 deletions(-) diff --git a/src/common/PNGLibrary.cxx b/src/common/PNGLibrary.cxx index 901d42478..2a6f84d6a 100644 --- a/src/common/PNGLibrary.cxx +++ b/src/common/PNGLibrary.cxx @@ -267,7 +267,7 @@ void PNGLibrary::toggleContinuousSnapshots(bool perFrame) buf << "Enabling snapshots in " << interval << " second intervals"; interval *= uInt32(myOSystem.frameRate()); } - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem.frameBuffer().showTextMessage(buf.str()); setContinuousSnapInterval(interval); } else @@ -276,7 +276,7 @@ void PNGLibrary::toggleContinuousSnapshots(bool perFrame) buf << "Disabling snapshots, generated " << (mySnapCounter / mySnapInterval) << " files"; - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem.frameBuffer().showTextMessage(buf.str()); setContinuousSnapInterval(0); } } @@ -378,7 +378,7 @@ void PNGLibrary::takeSnapshot(uInt32 number) // Re-enable old messages myOSystem.frameBuffer().enableMessages(true); } - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/common/PaletteHandler.cxx b/src/common/PaletteHandler.cxx index db6961af8..f13c18ab1 100644 --- a/src/common/PaletteHandler.cxx +++ b/src/common/PaletteHandler.cxx @@ -69,7 +69,7 @@ void PaletteHandler::cyclePalette(int direction) const string palette = toPaletteName(PaletteType(type)); const string message = MESSAGES[type] + " palette"; - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); setPalette(palette); } @@ -112,7 +112,7 @@ void PaletteHandler::showAdjustableMessage() const float value = myOSystem.console().timing() == ConsoleTiming::pal ? myPhasePAL : myPhaseNTSC; buf << std::fixed << std::setprecision(1) << value << DEGREE; - myOSystem.frameBuffer().showMessage( + myOSystem.frameBuffer().showGaugeMessage( "Palette phase shift", buf.str(), value, (isNTSC ? DEF_NTSC_SHIFT : DEF_PAL_SHIFT) - MAX_PHASE_SHIFT, (isNTSC ? DEF_NTSC_SHIFT : DEF_PAL_SHIFT) + MAX_PHASE_SHIFT); @@ -122,7 +122,7 @@ void PaletteHandler::showAdjustableMessage() const float value = *myAdjustables[myCurrentAdjustable].value; buf << std::fixed << std::setprecision(1) << value << DEGREE; - myOSystem.frameBuffer().showMessage( + myOSystem.frameBuffer().showGaugeMessage( msg.str(), buf.str(), value, -MAX_RGB_SHIFT, +MAX_RGB_SHIFT); } else @@ -131,7 +131,7 @@ void PaletteHandler::showAdjustableMessage() ? scaleRGBTo100(*myAdjustables[myCurrentAdjustable].value) : scaleTo100(*myAdjustables[myCurrentAdjustable].value); buf << value << "%"; - myOSystem.frameBuffer().showMessage( + myOSystem.frameBuffer().showGaugeMessage( msg.str(), buf.str(), value); } } diff --git a/src/common/RewindManager.cxx b/src/common/RewindManager.cxx index bc6b70813..044bc57e9 100644 --- a/src/common/RewindManager.cxx +++ b/src/common/RewindManager.cxx @@ -181,7 +181,7 @@ uInt32 RewindManager::rewindStates(uInt32 numStates) if(myOSystem.eventHandler().state() != EventHandlerState::TIMEMACHINE && myOSystem.eventHandler().state() != EventHandlerState::PLAYBACK) - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); return i; } @@ -216,7 +216,7 @@ uInt32 RewindManager::unwindStates(uInt32 numStates) if(myOSystem.eventHandler().state() != EventHandlerState::TIMEMACHINE && myOSystem.eventHandler().state() != EventHandlerState::PLAYBACK) - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); return i; } diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index 6caabc72e..40b95b0f0 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -224,7 +224,7 @@ bool SoundSDL2::toggleMute() string message = "Sound "; message += enabled ? "unmuted" : "muted"; - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); //ostringstream strval; //uInt32 volume; @@ -282,7 +282,7 @@ void SoundSDL2::adjustVolume(int direction) strval << percent << "%"; else strval << "Off"; - myOSystem.frameBuffer().showMessage("Volume", strval.str(), percent); + myOSystem.frameBuffer().showGaugeMessage("Volume", strval.str(), percent); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/common/StateManager.cxx b/src/common/StateManager.cxx index a4add0889..956f62409 100644 --- a/src/common/StateManager.cxx +++ b/src/common/StateManager.cxx @@ -132,9 +132,9 @@ void StateManager::toggleTimeMachine() myActiveMode = myActiveMode == Mode::TimeMachine ? Mode::Off : Mode::TimeMachine; if(myActiveMode == Mode::TimeMachine) - myOSystem.frameBuffer().showMessage("Time Machine enabled"); + myOSystem.frameBuffer().showTextMessage("Time Machine enabled"); else - myOSystem.frameBuffer().showMessage("Time Machine disabled"); + myOSystem.frameBuffer().showTextMessage("Time Machine disabled"); myOSystem.settings().setValue(devSettings ? "dev.timemachine" : "plr.timemachine", myActiveMode == Mode::TimeMachine); } @@ -215,7 +215,7 @@ void StateManager::loadState(int slot) { buf.str(""); buf << "Can't open/load from state file " << slot; - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem.frameBuffer().showTextMessage(buf.str()); return; } @@ -239,7 +239,7 @@ void StateManager::loadState(int slot) buf << "Invalid data in state " << slot << " file"; } - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem.frameBuffer().showTextMessage(buf.str()); } } @@ -261,7 +261,7 @@ void StateManager::saveState(int slot) { buf.str(""); buf << "Can't open/save to state file " << slot; - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem.frameBuffer().showTextMessage(buf.str()); return; } @@ -274,7 +274,7 @@ void StateManager::saveState(int slot) catch(...) { buf << "Error saving state " << slot; - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem.frameBuffer().showTextMessage(buf.str()); return; } @@ -292,7 +292,7 @@ void StateManager::saveState(int slot) else buf << "Error saving state " << slot; - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem.frameBuffer().showTextMessage(buf.str()); } } @@ -307,7 +307,7 @@ void StateManager::changeState(int direction) buf << "Changed to state slot " << myCurrentSlot; else buf << "State slot " << myCurrentSlot; - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem.frameBuffer().showTextMessage(buf.str()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -318,7 +318,7 @@ void StateManager::toggleAutoSlot() // Print appropriate message ostringstream buf; buf << "Automatic slot change " << (autoSlot ? "enabled" : "disabled"); - myOSystem.frameBuffer().showMessage(buf.str()); + myOSystem.frameBuffer().showTextMessage(buf.str()); myOSystem.settings().setValue("autoslot", autoSlot); } diff --git a/src/debugger/gui/RomWidget.cxx b/src/debugger/gui/RomWidget.cxx index 9b387d69f..87572d6ed 100644 --- a/src/debugger/gui/RomWidget.cxx +++ b/src/debugger/gui/RomWidget.cxx @@ -199,7 +199,7 @@ void RomWidget::runtoPC(int disasm_line) ostringstream command; command << "runtopc #" << address; string msg = instance().debugger().run(command.str()); - instance().frameBuffer().showMessage(msg); + instance().frameBuffer().showTextMessage(msg); } } diff --git a/src/debugger/gui/TiaOutputWidget.cxx b/src/debugger/gui/TiaOutputWidget.cxx index 01d6d094b..2062bd436 100644 --- a/src/debugger/gui/TiaOutputWidget.cxx +++ b/src/debugger/gui/TiaOutputWidget.cxx @@ -92,10 +92,10 @@ void TiaOutputWidget::saveSnapshot(int execDepth, const string& execPrefix) message = e.what(); } if (execDepth == 0) { - instance().frameBuffer().showMessage(message); + instance().frameBuffer().showTextMessage(message); } #else - instance().frameBuffer().showMessage("PNG image saving not supported"); + instance().frameBuffer().showTextMessage("PNG image saving not supported"); #endif } @@ -135,7 +135,7 @@ void TiaOutputWidget::handleCommand(CommandSender* sender, int cmd, int data, in { command << "scanline #" << lines; string message = instance().debugger().parser().run(command.str()); - instance().frameBuffer().showMessage(message); + instance().frameBuffer().showTextMessage(message); } } else if(rmb == "bp") @@ -144,7 +144,7 @@ void TiaOutputWidget::handleCommand(CommandSender* sender, int cmd, int data, in int scanline = myClickY + startLine; command << "breakif _scan==#" << scanline; string message = instance().debugger().parser().run(command.str()); - instance().frameBuffer().showMessage(message); + instance().frameBuffer().showTextMessage(message); } else if(rmb == "zoom") { diff --git a/src/debugger/gui/TiaZoomWidget.cxx b/src/debugger/gui/TiaZoomWidget.cxx index a008c4444..759e95516 100644 --- a/src/debugger/gui/TiaZoomWidget.cxx +++ b/src/debugger/gui/TiaZoomWidget.cxx @@ -262,7 +262,7 @@ void TiaZoomWidget::handleCommand(CommandSender* sender, int cmd, int data, int { command << "scanline #" << lines; string message = instance().debugger().parser().run(command.str()); - instance().frameBuffer().showMessage(message); + instance().frameBuffer().showTextMessage(message); } } else if(rmb == "bp") @@ -271,7 +271,7 @@ void TiaZoomWidget::handleCommand(CommandSender* sender, int cmd, int data, int int scanline = myClickY / myZoomLevel + myOffY + startLine; command << "breakif _scan==#" << scanline; string message = instance().debugger().parser().run(command.str()); - instance().frameBuffer().showMessage(message); + instance().frameBuffer().showTextMessage(message); } else { diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index 099773989..bb292859e 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -476,7 +476,7 @@ void Console::setFormat(uInt32 format, bool force) initializeAudio(); // ensure that audio synthesis is set up to match emulation rate myOSystem.resetFps(); // Reset FPS measurement - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); // Let the other devices know about the console change mySystem->consoleChanged(myConsoleTiming); @@ -493,10 +493,10 @@ void Console::toggleColorLoss(bool toggle) string message = string("PAL color-loss ") + (colorloss ? "enabled" : "disabled"); - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); } else - myOSystem.frameBuffer().showMessage( + myOSystem.frameBuffer().showTextMessage( "PAL color-loss not available in non PAL modes"); } @@ -521,7 +521,7 @@ void Console::toggleInter(bool toggle) ostringstream ss; ss << "Interpolation " << (enabled ? "enabled" : "disabled"); - myOSystem.frameBuffer().showMessage(ss.str()); + myOSystem.frameBuffer().showTextMessage(ss.str()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -539,7 +539,7 @@ void Console::toggleTurbo() ostringstream ss; ss << "Turbo mode " << (!enabled ? "enabled" : "disabled"); - myOSystem.frameBuffer().showMessage(ss.str()); + myOSystem.frameBuffer().showTextMessage(ss.str()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -564,7 +564,7 @@ void Console::changeSpeed(int direction) ostringstream val; val << formatSpeed(speed) << "%"; - myOSystem.frameBuffer().showMessage("Emulation speed", val.str(), speed, MIN_SPEED, MAX_SPEED); + myOSystem.frameBuffer().showGaugeMessage("Emulation speed", val.str(), speed, MIN_SPEED, MAX_SPEED); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -574,13 +574,13 @@ void Console::togglePhosphor() { myProperties.set(PropType::Display_Phosphor, "NO"); myOSystem.frameBuffer().tiaSurface().enablePhosphor(false); - myOSystem.frameBuffer().showMessage("Phosphor effect disabled"); + myOSystem.frameBuffer().showTextMessage("Phosphor effect disabled"); } else { myProperties.set(PropType::Display_Phosphor, "YES"); myOSystem.frameBuffer().tiaSurface().enablePhosphor(true); - myOSystem.frameBuffer().showMessage("Phosphor effect enabled"); + myOSystem.frameBuffer().showTextMessage("Phosphor effect enabled"); } } @@ -605,7 +605,7 @@ void Console::changePhosphor(int direction) val.str(""); val << "Off"; } - myOSystem.frameBuffer().showMessage("Phosphor blend", val.str(), blend); + myOSystem.frameBuffer().showGaugeMessage("Phosphor blend", val.str(), blend); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -699,7 +699,7 @@ void Console::changeVerticalCenter(int direction) if (vcenter != myTIA->vcenter()) myTIA->setVcenter(vcenter); val << (vcenter ? vcenter > 0 ? "+" : "" : " ") << vcenter << "px"; - myOSystem.frameBuffer().showMessage("V-Center", val.str(), vcenter, + myOSystem.frameBuffer().showGaugeMessage("V-Center", val.str(), vcenter, myTIA->minVcenter(), myTIA->maxVcenter()); } @@ -729,7 +729,7 @@ void Console::changeVSizeAdjust(int direction) val << (newAdjustVSize ? newAdjustVSize > 0 ? "+" : "" : " ") << newAdjustVSize << "%"; - myOSystem.frameBuffer().showMessage("V-Size", val.str(), newAdjustVSize, -5, 5); + myOSystem.frameBuffer().showGaugeMessage("V-Size", val.str(), newAdjustVSize, -5, 5); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -746,7 +746,7 @@ void Console::toggleCorrectAspectRatio(bool toggle) const string& message = string("Correct aspect ratio ") + (enabled ? "enabled" : "disabled"); - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -920,7 +920,7 @@ unique_ptr Console::getControllerPort(const Controller::Type type, Controller::onMessageCallback callback = [&os = myOSystem](const string& msg) { bool devSettings = os.settings().getBool("dev.settings"); if(os.settings().getBool(devSettings ? "dev.eepromaccess" : "plr.eepromaccess")) - os.frameBuffer().showMessage(msg); + os.frameBuffer().showTextMessage(msg); }; controller = make_unique(port, myEvent, *mySystem, myOSystem.settings().getString("avoxport"), nvramfile, callback); @@ -933,7 +933,7 @@ unique_ptr Console::getControllerPort(const Controller::Type type, Controller::onMessageCallback callback = [&os = myOSystem](const string& msg) { bool devSettings = os.settings().getBool("dev.settings"); if(os.settings().getBool(devSettings ? "dev.eepromaccess" : "plr.eepromaccess")) - os.frameBuffer().showMessage(msg); + os.frameBuffer().showTextMessage(msg); }; controller = make_unique(port, myEvent, *mySystem, nvramfile, callback); break; @@ -987,7 +987,7 @@ void Console::changeAutoFireRate(int direction) else val << "Off"; - myOSystem.frameBuffer().showMessage("Autofire rate", val.str(), rate, 0, isNTSC ? 30 : 25); + myOSystem.frameBuffer().showGaugeMessage("Autofire rate", val.str(), rate, 0, isNTSC ? 30 : 25); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1012,7 +1012,7 @@ void Console::toggleTIABit(TIABit bit, const string& bitname, bool show, bool to bool result = myTIA->toggleBit(bit, toggle ? 2 : 3); const string message = bitname + (result ? " enabled" : " disabled"); - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1021,7 +1021,7 @@ void Console::toggleBits(bool toggle) const bool enabled = myTIA->toggleBits(toggle); const string message = string("TIA bits ") + (enabled ? "enabled" : "disabled"); - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1030,7 +1030,7 @@ void Console::toggleTIACollision(TIABit bit, const string& bitname, bool show, b bool result = myTIA->toggleCollision(bit, toggle ? 2 : 3); const string message = bitname + (result ? " collision enabled" : " collision disabled"); - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1039,7 +1039,7 @@ void Console::toggleCollisions(bool toggle) const bool enabled = myTIA->toggleCollisions(toggle); const string message = string("TIA collisions ") + (enabled ? "enabled" : "disabled"); - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1048,7 +1048,7 @@ void Console::toggleFixedColors(bool toggle) const bool enabled = toggle ? myTIA->toggleFixedColors() : myTIA->usingFixedColors(); const string message = string("Fixed debug colors ") + (enabled ? "enabled" : "disabled"); - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1057,7 +1057,7 @@ void Console::toggleJitter(bool toggle) const bool enabled = myTIA->toggleJitter(toggle ? 2 : 3); const string message = string("TV scanline jitter ") + (enabled ? "enabled" : "disabled"); - myOSystem.frameBuffer().showMessage(message); + myOSystem.frameBuffer().showTextMessage(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx index 871d6cd73..9e7c9ea5f 100644 --- a/src/emucore/EventHandler.cxx +++ b/src/emucore/EventHandler.cxx @@ -191,12 +191,12 @@ void EventHandler::toggleSAPortOrder() if(saport == "lr") { mapStelladaptors("rl"); - myOSystem.frameBuffer().showMessage("Stelladaptor ports right/left"); + myOSystem.frameBuffer().showTextMessage("Stelladaptor ports right/left"); } else { mapStelladaptors("lr"); - myOSystem.frameBuffer().showMessage("Stelladaptor ports left/right"); + myOSystem.frameBuffer().showTextMessage("Stelladaptor ports left/right"); } #endif } @@ -214,7 +214,7 @@ void EventHandler::set7800Mode() void EventHandler::handleMouseControl() { if(myMouseControl) - myOSystem.frameBuffer().showMessage(myMouseControl->next()); + myOSystem.frameBuffer().showTextMessage(myMouseControl->next()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -550,7 +550,7 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) default: break; } - myOSystem.frameBuffer().showMessage(msg + " settings"); + myOSystem.frameBuffer().showTextMessage(msg + " settings"); myAdjustActive = false; } break; @@ -1210,7 +1210,7 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) case Event::SaveAllStates: if (pressed && !repeated) - myOSystem.frameBuffer().showMessage(myOSystem.state().rewindManager().saveAllStates()); + myOSystem.frameBuffer().showTextMessage(myOSystem.state().rewindManager().saveAllStates()); return; case Event::PreviousState: @@ -1243,7 +1243,7 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) case Event::LoadAllStates: if (pressed && !repeated) - myOSystem.frameBuffer().showMessage(myOSystem.state().rewindManager().loadAllStates()); + myOSystem.frameBuffer().showTextMessage(myOSystem.state().rewindManager().loadAllStates()); return; case Event::RewindPause: @@ -1476,7 +1476,7 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) { myEvent.set(Event::ConsoleBlackWhite, 0); myEvent.set(Event::ConsoleColor, 1); - myOSystem.frameBuffer().showMessage(myIs7800 ? "Pause released" : "Color Mode"); + myOSystem.frameBuffer().showTextMessage(myIs7800 ? "Pause released" : "Color Mode"); myOSystem.console().switches().update(); } return; @@ -1485,7 +1485,7 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) { myEvent.set(Event::ConsoleBlackWhite, 1); myEvent.set(Event::ConsoleColor, 0); - myOSystem.frameBuffer().showMessage(myIs7800 ? "Pause pushed" : "B/W Mode"); + myOSystem.frameBuffer().showTextMessage(myIs7800 ? "Pause pushed" : "B/W Mode"); myOSystem.console().switches().update(); } return; @@ -1496,13 +1496,13 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) { myEvent.set(Event::ConsoleBlackWhite, 1); myEvent.set(Event::ConsoleColor, 0); - myOSystem.frameBuffer().showMessage(myIs7800 ? "Pause pushed" : "B/W Mode"); + myOSystem.frameBuffer().showTextMessage(myIs7800 ? "Pause pushed" : "B/W Mode"); } else { myEvent.set(Event::ConsoleBlackWhite, 0); myEvent.set(Event::ConsoleColor, 1); - myOSystem.frameBuffer().showMessage(myIs7800 ? "Pause released" : "Color Mode"); + myOSystem.frameBuffer().showTextMessage(myIs7800 ? "Pause released" : "Color Mode"); } myOSystem.console().switches().update(); } @@ -1514,7 +1514,7 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) myEvent.set(Event::ConsoleBlackWhite, 0); myEvent.set(Event::ConsoleColor, 0); if (myIs7800) - myOSystem.frameBuffer().showMessage("Pause pressed"); + myOSystem.frameBuffer().showTextMessage("Pause pressed"); myOSystem.console().switches().update(); } return; @@ -1524,7 +1524,7 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) { myEvent.set(Event::ConsoleLeftDiffA, 1); myEvent.set(Event::ConsoleLeftDiffB, 0); - myOSystem.frameBuffer().showMessage(GUI::LEFT_DIFFICULTY + " A"); + myOSystem.frameBuffer().showTextMessage(GUI::LEFT_DIFFICULTY + " A"); myOSystem.console().switches().update(); } return; @@ -1533,7 +1533,7 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) { myEvent.set(Event::ConsoleLeftDiffA, 0); myEvent.set(Event::ConsoleLeftDiffB, 1); - myOSystem.frameBuffer().showMessage(GUI::LEFT_DIFFICULTY + " B"); + myOSystem.frameBuffer().showTextMessage(GUI::LEFT_DIFFICULTY + " B"); myOSystem.console().switches().update(); } return; @@ -1544,13 +1544,13 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) { myEvent.set(Event::ConsoleLeftDiffA, 0); myEvent.set(Event::ConsoleLeftDiffB, 1); - myOSystem.frameBuffer().showMessage(GUI::LEFT_DIFFICULTY + " B"); + myOSystem.frameBuffer().showTextMessage(GUI::LEFT_DIFFICULTY + " B"); } else { myEvent.set(Event::ConsoleLeftDiffA, 1); myEvent.set(Event::ConsoleLeftDiffB, 0); - myOSystem.frameBuffer().showMessage(GUI::LEFT_DIFFICULTY + " A"); + myOSystem.frameBuffer().showTextMessage(GUI::LEFT_DIFFICULTY + " A"); } myOSystem.console().switches().update(); } @@ -1561,7 +1561,7 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) { myEvent.set(Event::ConsoleRightDiffA, 1); myEvent.set(Event::ConsoleRightDiffB, 0); - myOSystem.frameBuffer().showMessage(GUI::RIGHT_DIFFICULTY + " A"); + myOSystem.frameBuffer().showTextMessage(GUI::RIGHT_DIFFICULTY + " A"); myOSystem.console().switches().update(); } return; @@ -1570,7 +1570,7 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) { myEvent.set(Event::ConsoleRightDiffA, 0); myEvent.set(Event::ConsoleRightDiffB, 1); - myOSystem.frameBuffer().showMessage(GUI::RIGHT_DIFFICULTY + " B"); + myOSystem.frameBuffer().showTextMessage(GUI::RIGHT_DIFFICULTY + " B"); myOSystem.console().switches().update(); } return; @@ -1581,13 +1581,13 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) { myEvent.set(Event::ConsoleRightDiffA, 0); myEvent.set(Event::ConsoleRightDiffB, 1); - myOSystem.frameBuffer().showMessage(GUI::RIGHT_DIFFICULTY + " B"); + myOSystem.frameBuffer().showTextMessage(GUI::RIGHT_DIFFICULTY + " B"); } else { myEvent.set(Event::ConsoleRightDiffA, 1); myEvent.set(Event::ConsoleRightDiffB, 0); - myOSystem.frameBuffer().showMessage(GUI::RIGHT_DIFFICULTY + " A"); + myOSystem.frameBuffer().showTextMessage(GUI::RIGHT_DIFFICULTY + " A"); } myOSystem.console().switches().update(); } @@ -2312,15 +2312,15 @@ bool EventHandler::enterDebugMode() myOSystem.debugger().setQuitState(); setState(EventHandlerState::EMULATION); if(fbstatus == FBInitStatus::FailTooLarge) - myOSystem.frameBuffer().showMessage("Debugger window too large for screen", - MessagePosition::BottomCenter, true); + myOSystem.frameBuffer().showTextMessage("Debugger window too large for screen", + MessagePosition::BottomCenter, true); return false; } myOverlay->reStack(); myOSystem.sound().mute(true); #else - myOSystem.frameBuffer().showMessage("Debugger support not included", - MessagePosition::BottomCenter, true); + myOSystem.frameBuffer().showTextMessage("Debugger support not included", + MessagePosition::BottomCenter, true); #endif return true; diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index 828c14e8f..66747b2a3 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -322,13 +322,8 @@ void FrameBuffer::update(bool force) // - at the bottom of ::update(), to actually draw them (this must come // last, since they are always drawn on top of everything else). - // Full rendering is required when messages are enabled - force |= (myMsg.counter >= 0); - - // Detect when a message has been turned off; one last redraw is required - // in this case, to draw over the area that the message occupied - if(myMsg.counter == 0) - myMsg.counter = -1; + // Forced full rendering is required when messages are being disabled + force |= (myMsg.enabled && myMsg.counter == 0); bool redraw = false; switch(myOSystem.eventHandler().state()) @@ -344,7 +339,7 @@ void FrameBuffer::update(bool force) if(myPausedCount-- <= 0) { myPausedCount = uInt32(7 * myOSystem.frameRate()); - showMessage("Paused", MessagePosition::MiddleCenter); + showTextMessage("Paused", MessagePosition::MiddleCenter); } if(force) myTIASurface->render(); @@ -422,12 +417,12 @@ void FrameBuffer::update(bool force) } force = force || success; - if (force) + if(force) myTIASurface->render(); // Stop playback mode at the end of the state buffer // and switch to Time Machine or Pause mode - if (!success) + if(!success) { frames = 0; myOSystem.eventHandler().enterMenuMode(EventHandlerState::TIMEMACHINE); @@ -468,7 +463,7 @@ void FrameBuffer::update(bool force) // indicates that, and then the code at the top of this method sees // the change and redraws everything if(myMsg.enabled) - drawMessage(); + redraw |= drawMessage(); // Push buffers to screen only when necessary if(force || redraw) @@ -501,19 +496,15 @@ void FrameBuffer::updateInEmulationMode(float framesPerSecond) myBackend->renderToScreen(); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void FrameBuffer::showMessage(const string& message, MessagePosition position, - bool force) -{ #ifdef GUI_SUPPORT +void FrameBuffer::createMessage(const string& message, MessagePosition position, bool force) +{ // Only show messages if they've been enabled if(myMsg.surface == nullptr || !(force || myOSystem.settings().getBool("uimessages"))) return; - const int fontWidth = font().getMaxCharWidth(), - fontHeight = font().getFontHeight(); + const int fontHeight = font().getFontHeight(); const int VBORDER = fontHeight / 4; - const int HBORDER = fontWidth * 1.25 / 2.0; myMsg.counter = uInt32(myOSystem.frameRate()) * 2; // Show message for 2 seconds if(myMsg.counter == 0) @@ -522,39 +513,41 @@ void FrameBuffer::showMessage(const string& message, MessagePosition position, // Precompute the message coordinates myMsg.text = message; myMsg.color = kBtnTextColor; - myMsg.showGauge = false; - myMsg.w = std::min(fontWidth * (MESSAGE_WIDTH) - HBORDER * 2, - font().getStringWidth(myMsg.text) + HBORDER * 2); myMsg.h = fontHeight + VBORDER * 2; myMsg.position = position; myMsg.enabled = true; + myMsg.dirty = true; + myMsg.surface->setSrcSize(myMsg.w, myMsg.h); myMsg.surface->setDstSize(myMsg.w * hidpiScaleFactor(), myMsg.h * hidpiScaleFactor()); +} +#endif + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void FrameBuffer::showTextMessage(const string& message, MessagePosition position, + bool force) +{ +#ifdef GUI_SUPPORT + const int fontWidth = font().getMaxCharWidth(); + const int HBORDER = fontWidth * 1.25 / 2.0; + + myMsg.showGauge = false; + myMsg.w = std::min(fontWidth * (MESSAGE_WIDTH) - HBORDER * 2, + font().getStringWidth(message) + HBORDER * 2); + + createMessage(message, position, force); #endif } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void FrameBuffer::showMessage(const string& message, const string& valueText, - float value, float minValue, float maxValue) +void FrameBuffer::showGaugeMessage(const string& message, const string& valueText, + float value, float minValue, float maxValue) { #ifdef GUI_SUPPORT - // Only show messages if they've been enabled - if(myMsg.surface == nullptr || !myOSystem.settings().getBool("uimessages")) - return; - - const int fontWidth = font().getMaxCharWidth(), - fontHeight = font().getFontHeight(); - const int VBORDER = fontHeight / 4; + const int fontWidth = font().getMaxCharWidth(); const int HBORDER = fontWidth * 1.25 / 2.0; - myMsg.counter = uInt32(myOSystem.frameRate()) * 2; // Show message for 2 seconds - if(myMsg.counter == 0) - myMsg.counter = 120; - - // Precompute the message coordinates - myMsg.text = message; - myMsg.color = kBtnTextColor; myMsg.showGauge = true; if(maxValue - minValue != 0) myMsg.value = (value - minValue) / (maxValue - minValue) * 100.F; @@ -562,16 +555,12 @@ void FrameBuffer::showMessage(const string& message, const string& valueText, myMsg.value = 100.F; myMsg.valueText = valueText; myMsg.w = std::min(fontWidth * MESSAGE_WIDTH, - font().getStringWidth(myMsg.text) + font().getStringWidth(message) + fontWidth * (GAUGEBAR_WIDTH + 2) - + font().getStringWidth(myMsg.valueText)) - + HBORDER * 2; - myMsg.h = fontHeight + VBORDER * 2; - myMsg.position = MessagePosition::BottomCenter; - myMsg.enabled = true; + + font().getStringWidth(valueText)) + + HBORDER * 2; - myMsg.surface->setSrcSize(myMsg.w, myMsg.h); - myMsg.surface->setDstSize(myMsg.w * hidpiScaleFactor(), myMsg.h * hidpiScaleFactor()); + createMessage(message, MessagePosition::BottomCenter); #endif } @@ -652,8 +641,8 @@ void FrameBuffer::toggleFrameStats(bool toggle) myOSystem.settings().setValue( myOSystem.settings().getBool("dev.settings") ? "dev.stats" : "plr.stats", myStatsEnabled); - myOSystem.frameBuffer().showMessage(string("Console info ") + - (myStatsEnabled ? "enabled" : "disabled")); + myOSystem.frameBuffer().showTextMessage(string("Console info ") + + (myStatsEnabled ? "enabled" : "disabled")); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -676,7 +665,6 @@ void FrameBuffer::enableMessages(bool enable) myStatsMsg.enabled = false; // Erase old messages on the screen - myMsg.enabled = false; myMsg.counter = 0; update(true); // Force update immediately } @@ -689,116 +677,120 @@ inline bool FrameBuffer::drawMessage() // Either erase the entire message (when time is reached), // or show again this frame if(myMsg.counter == 0) - { - myMsg.enabled = false; - return true; - } - else if(myMsg.counter < 0) { myMsg.enabled = false; return false; } - // Draw the bounded box and text - const Common::Rect& dst = myMsg.surface->dstRect(); - const int fontWidth = font().getMaxCharWidth(), - fontHeight = font().getFontHeight(); - const int VBORDER = fontHeight / 4; - const int HBORDER = fontWidth * 1.25 / 2.0; - constexpr int BORDER = 1; - - switch(myMsg.position) + if(myMsg.dirty) { - case MessagePosition::TopLeft: - myMsg.x = 5; - myMsg.y = 5; - break; + cerr << "--- draw message ---" << endl; - case MessagePosition::TopCenter: - myMsg.x = (imageRect().w() - dst.w()) >> 1; - myMsg.y = 5; - break; + // Draw the bounded box and text + const Common::Rect& dst = myMsg.surface->dstRect(); + const int fontWidth = font().getMaxCharWidth(), + fontHeight = font().getFontHeight(); + const int VBORDER = fontHeight / 4; + const int HBORDER = fontWidth * 1.25 / 2.0; + constexpr int BORDER = 1; - case MessagePosition::TopRight: - myMsg.x = imageRect().w() - dst.w() - 5; - myMsg.y = 5; - break; - - case MessagePosition::MiddleLeft: - myMsg.x = 5; - myMsg.y = (imageRect().h() - dst.h()) >> 1; - break; - - case MessagePosition::MiddleCenter: - myMsg.x = (imageRect().w() - dst.w()) >> 1; - myMsg.y = (imageRect().h() - dst.h()) >> 1; - break; - - case MessagePosition::MiddleRight: - myMsg.x = imageRect().w() - dst.w() - 5; - myMsg.y = (imageRect().h() - dst.h()) >> 1; - break; - - case MessagePosition::BottomLeft: - myMsg.x = 5; - myMsg.y = imageRect().h() - dst.h() - 5; - break; - - case MessagePosition::BottomCenter: - myMsg.x = (imageRect().w() - dst.w()) >> 1; - myMsg.y = imageRect().h() - dst.h() - 5; - break; - - case MessagePosition::BottomRight: - myMsg.x = imageRect().w() - dst.w() - 5; - myMsg.y = imageRect().h() - dst.h() - 5; - break; - } - - myMsg.surface->setDstPos(myMsg.x + imageRect().x(), myMsg.y + imageRect().y()); - myMsg.surface->fillRect(0, 0, myMsg.w, myMsg.h, kColor); - myMsg.surface->fillRect(BORDER, BORDER, myMsg.w - BORDER * 2, myMsg.h - BORDER * 2, kBtnColor); - myMsg.surface->drawString(font(), myMsg.text, HBORDER, VBORDER, - myMsg.w, myMsg.color); - - if(myMsg.showGauge) - { - constexpr int NUM_TICKMARKS = 4; - // limit gauge bar width if texts are too long - const int swidth = std::min(fontWidth * GAUGEBAR_WIDTH, - fontWidth * (MESSAGE_WIDTH - 2) - - font().getStringWidth(myMsg.text) - - font().getStringWidth(myMsg.valueText)); - const int bwidth = swidth * myMsg.value / 100.F; - const int bheight = fontHeight >> 1; - const int x = HBORDER + font().getStringWidth(myMsg.text) + fontWidth; - // align bar with bottom of text - const int y = VBORDER + font().desc().ascent - bheight; - - // draw gauge bar - myMsg.surface->fillRect(x - BORDER, y, swidth + BORDER * 2, bheight, kSliderBGColor); - myMsg.surface->fillRect(x, y + BORDER, bwidth, bheight - BORDER * 2, kSliderColor); - // draw tickmark in the middle of the bar - for(int i = 1; i < NUM_TICKMARKS; ++i) + switch(myMsg.position) { - ColorId color; - int xt = x + swidth * i / NUM_TICKMARKS; - if(bwidth < xt - x) - color = kCheckColor; // kSliderColor; - else - color = kSliderBGColor; - myMsg.surface->vLine(xt, y + bheight / 2, y + bheight - 1, color); + case MessagePosition::TopLeft: + myMsg.x = 5; + myMsg.y = 5; + break; + + case MessagePosition::TopCenter: + myMsg.x = (imageRect().w() - dst.w()) >> 1; + myMsg.y = 5; + break; + + case MessagePosition::TopRight: + myMsg.x = imageRect().w() - dst.w() - 5; + myMsg.y = 5; + break; + + case MessagePosition::MiddleLeft: + myMsg.x = 5; + myMsg.y = (imageRect().h() - dst.h()) >> 1; + break; + + case MessagePosition::MiddleCenter: + myMsg.x = (imageRect().w() - dst.w()) >> 1; + myMsg.y = (imageRect().h() - dst.h()) >> 1; + break; + + case MessagePosition::MiddleRight: + myMsg.x = imageRect().w() - dst.w() - 5; + myMsg.y = (imageRect().h() - dst.h()) >> 1; + break; + + case MessagePosition::BottomLeft: + myMsg.x = 5; + myMsg.y = imageRect().h() - dst.h() - 5; + break; + + case MessagePosition::BottomCenter: + myMsg.x = (imageRect().w() - dst.w()) >> 1; + myMsg.y = imageRect().h() - dst.h() - 5; + break; + + case MessagePosition::BottomRight: + myMsg.x = imageRect().w() - dst.w() - 5; + myMsg.y = imageRect().h() - dst.h() - 5; + break; } - // draw value text - myMsg.surface->drawString(font(), myMsg.valueText, - x + swidth + fontWidth, VBORDER, + + myMsg.surface->setDstPos(myMsg.x + imageRect().x(), myMsg.y + imageRect().y()); + myMsg.surface->fillRect(0, 0, myMsg.w, myMsg.h, kColor); + myMsg.surface->fillRect(BORDER, BORDER, myMsg.w - BORDER * 2, myMsg.h - BORDER * 2, kBtnColor); + myMsg.surface->drawString(font(), myMsg.text, HBORDER, VBORDER, myMsg.w, myMsg.color); + + if(myMsg.showGauge) + { + constexpr int NUM_TICKMARKS = 4; + // limit gauge bar width if texts are too long + const int swidth = std::min(fontWidth * GAUGEBAR_WIDTH, + fontWidth * (MESSAGE_WIDTH - 2) + - font().getStringWidth(myMsg.text) + - font().getStringWidth(myMsg.valueText)); + const int bwidth = swidth * myMsg.value / 100.F; + const int bheight = fontHeight >> 1; + const int x = HBORDER + font().getStringWidth(myMsg.text) + fontWidth; + // align bar with bottom of text + const int y = VBORDER + font().desc().ascent - bheight; + + // draw gauge bar + myMsg.surface->fillRect(x - BORDER, y, swidth + BORDER * 2, bheight, kSliderBGColor); + myMsg.surface->fillRect(x, y + BORDER, bwidth, bheight - BORDER * 2, kSliderColor); + // draw tickmark in the middle of the bar + for(int i = 1; i < NUM_TICKMARKS; ++i) + { + ColorId color; + int xt = x + swidth * i / NUM_TICKMARKS; + if(bwidth < xt - x) + color = kCheckColor; // kSliderColor; + else + color = kSliderBGColor; + myMsg.surface->vLine(xt, y + bheight / 2, y + bheight - 1, color); + } + // draw value text + myMsg.surface->drawString(font(), myMsg.valueText, + x + swidth + fontWidth, VBORDER, + myMsg.w, myMsg.color); + } + myMsg.dirty = false; + myMsg.surface->render(); + return true; } - myMsg.surface->render(); + myMsg.counter--; + myMsg.surface->render(); #endif - return true; + return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -898,7 +890,6 @@ void FrameBuffer::setUIPalette() void FrameBuffer::stateChanged(EventHandlerState state) { // Make sure any onscreen messages are removed - myMsg.enabled = false; myMsg.counter = 0; update(true); // force full update @@ -1010,7 +1001,7 @@ void FrameBuffer::toggleFullscreen(bool toggle) msg << "disabled ("; msg << "Zoom " << myActiveVidMode.zoom * 100 << "%)"; - showMessage(msg.str()); + showTextMessage(msg.str()); } break; } @@ -1043,7 +1034,7 @@ void FrameBuffer::toggleAdaptRefresh(bool toggle) msg << (isAdaptRefresh ? "enabled" : "disabled"); msg << " (" << myBackend->refreshRate() << " Hz)"; - showMessage(msg.str()); + showTextMessage(msg.str()); } } #endif @@ -1069,7 +1060,7 @@ void FrameBuffer::changeOverscan(int direction) val << (overscan > 0 ? "+" : "" ) << overscan << "%"; else val << "Off"; - myOSystem.frameBuffer().showMessage("Overscan", val.str(), overscan, 0, 10); + myOSystem.frameBuffer().showGaugeMessage("Overscan", val.str(), overscan, 0, 10); } } @@ -1106,9 +1097,9 @@ void FrameBuffer::switchVideoMode(int direction) if(applyVideoMode() == FBInitStatus::Success) { if(fullScreen()) - showMessage(myActiveVidMode.description); + showTextMessage(myActiveVidMode.description); else - showMessage("Zoom", myActiveVidMode.description, myActiveVidMode.zoom, + showGaugeMessage("Zoom", myActiveVidMode.description, myActiveVidMode.zoom, supportedTIAMinZoom(), myTIAMaxZoom); } } @@ -1248,9 +1239,9 @@ void FrameBuffer::toggleGrabMouse() myGrabMouse = !myGrabMouse; setCursorState(); myOSystem.settings().setValue("grabmouse", myGrabMouse); - myOSystem.frameBuffer().showMessage(oldState != myGrabMouse ? myGrabMouse - ? "Grab mouse enabled" : "Grab mouse disabled" - : "Grab mouse not allowed while cursor shown"); + myOSystem.frameBuffer().showTextMessage(oldState != myGrabMouse ? myGrabMouse + ? "Grab mouse enabled" : "Grab mouse disabled" + : "Grab mouse not allowed while cursor shown"); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/FrameBuffer.hxx b/src/emucore/FrameBuffer.hxx index c084c9cf6..8cda8d25c 100644 --- a/src/emucore/FrameBuffer.hxx +++ b/src/emucore/FrameBuffer.hxx @@ -92,15 +92,15 @@ class FrameBuffer void updateInEmulationMode(float framesPerSecond); /** - Shows a message onscreen. + Shows a text message onscreen. @param message The message to be shown @param position Onscreen position for the message @param force Force showing this message, even if messages are disabled */ - void showMessage(const string& message, - MessagePosition position = MessagePosition::BottomCenter, - bool force = false); + void showTextMessage(const string& message, + MessagePosition position = MessagePosition::BottomCenter, + bool force = false); /** Shows a message with a gauge bar onscreen. @@ -110,8 +110,8 @@ class FrameBuffer @param minValue The minimal value of the gauge bar @param maxValue The maximal value of the gauge bar */ - void showMessage(const string& message, const string& valueText, - float value, float minValue = 0.F, float maxValue = 100.F); + void showGaugeMessage(const string& message, const string& valueText, + float value, float minValue = 0.F, float maxValue = 100.F); bool messageShown() const; @@ -375,6 +375,18 @@ class FrameBuffer */ void resetSurfaces(); + #ifdef GUI_SUPPORT + /** + Helps to create a basic message onscreen. + + @param message The message to be shown + @param position Onscreen position for the message + @param force Force showing this message, even if messages are disabled + */ + void createMessage(const string& message, MessagePosition position, + bool force = false); + #endif + /** Draw pending messages. @@ -478,6 +490,7 @@ class FrameBuffer ColorId color{kNone}; shared_ptr surface; bool enabled{false}; + bool dirty{false}; bool showGauge{false}; float value{0.0F}; string valueText; diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index 611439e45..e659c1e5c 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -475,9 +475,9 @@ string OSystem::createConsole(const FilesystemNode& rom, const string& md5sum, { const string& id = myConsole->cartridge().multiCartID(); if(id == "") - myFrameBuffer->showMessage("New console created"); + myFrameBuffer->showTextMessage("New console created"); else - myFrameBuffer->showMessage("Multicart " + + myFrameBuffer->showTextMessage("Multicart " + myConsole->cartridge().detectedType() + ", loading ROM" + id); } buf << "Game console created:" << endl @@ -506,7 +506,7 @@ string OSystem::createConsole(const FilesystemNode& rom, const string& md5sum, msg << myConsole->leftController().name() << "/" << myConsole->rightController().name() << " - " << myConsole->cartridge().detectedType() << " - " << myConsole->getFormatString(); - myFrameBuffer->showMessage(msg.str()); + myFrameBuffer->showTextMessage(msg.str()); } } diff --git a/src/emucore/QuadTari.cxx b/src/emucore/QuadTari.cxx index 64c0cf027..f3fb00cdf 100644 --- a/src/emucore/QuadTari.cxx +++ b/src/emucore/QuadTari.cxx @@ -71,7 +71,7 @@ unique_ptr QuadTari::addController(const Controller::Type type, bool Controller::onMessageCallback callback = [&os = myOSystem](const string& msg) { bool devSettings = os.settings().getBool("dev.settings"); if(os.settings().getBool(devSettings ? "dev.eepromaccess" : "plr.eepromaccess")) - os.frameBuffer().showMessage(msg); + os.frameBuffer().showTextMessage(msg); }; switch(type) diff --git a/src/emucore/TIASurface.cxx b/src/emucore/TIASurface.cxx index 3858817a7..ec9dfe020 100644 --- a/src/emucore/TIASurface.cxx +++ b/src/emucore/TIASurface.cxx @@ -184,7 +184,7 @@ void TIASurface::setNTSC(NTSCFilter::Preset preset, bool show) } myOSystem.settings().setValue("tv.filter", int(preset)); - if(show) myFB.showMessage(buf.str()); + if(show) myFB.showTextMessage(buf.str()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -221,7 +221,7 @@ void TIASurface::setNTSCAdjustable(int direction) setNTSC(NTSCFilter::Preset::CUSTOM); ntsc().selectAdjustable(direction, text, valueText, value); - myOSystem.frameBuffer().showMessage(text, valueText, value); + myOSystem.frameBuffer().showGaugeMessage(text, valueText, value); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -232,7 +232,7 @@ void TIASurface::changeNTSCAdjustable(int adjustable, int direction) setNTSC(NTSCFilter::Preset::CUSTOM); ntsc().changeAdjustable(adjustable, direction, text, valueText, newValue); - myOSystem.frameBuffer().showMessage(text, valueText, newValue); + myOSystem.frameBuffer().showGaugeMessage(text, valueText, newValue); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -243,7 +243,7 @@ void TIASurface::changeCurrentNTSCAdjustable(int direction) setNTSC(NTSCFilter::Preset::CUSTOM); ntsc().changeCurrentAdjustable(direction, text, valueText, newValue); - myOSystem.frameBuffer().showMessage(text, valueText, newValue); + myOSystem.frameBuffer().showGaugeMessage(text, valueText, newValue); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -259,7 +259,7 @@ void TIASurface::setScanlineIntensity(int direction) buf << intensity << "%"; else buf << "Off"; - myFB.showMessage("Scanline intensity", buf.str(), intensity); + myFB.showGaugeMessage("Scanline intensity", buf.str(), intensity); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/DialogContainer.cxx b/src/gui/DialogContainer.cxx index 9649e447c..d4f4c165b 100644 --- a/src/gui/DialogContainer.cxx +++ b/src/gui/DialogContainer.cxx @@ -127,8 +127,8 @@ int DialogContainer::addDialog(Dialog* d) const uInt32 scale = myOSystem.frameBuffer().hidpiScaleFactor(); if(uInt32(d->getWidth() * scale) > r.w() || uInt32(d->getHeight() * scale) > r.h()) - myOSystem.frameBuffer().showMessage( - "Unable to show dialog box; FIX THE CODE"); + myOSystem.frameBuffer().showTextMessage( + "Unable to show dialog box; FIX THE CODE", MessagePosition::BottomCenter, true); else { // "darken" current top dialog diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 5a3c4b1b5..57ad900d2 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -855,12 +855,12 @@ void GameInfoDialog::saveCurrentPropertiesToDisk() propfile /= myGameFile.getNameWithExt(".pro"); propfile.write(out); - instance().frameBuffer().showMessage("Properties saved to " + - propfile.getShortPath()); + instance().frameBuffer().showTextMessage("Properties saved to " + + propfile.getShortPath()); } catch(...) { - instance().frameBuffer().showMessage("Error saving properties"); + instance().frameBuffer().showTextMessage("Error saving properties"); } } diff --git a/src/gui/LauncherDialog.cxx b/src/gui/LauncherDialog.cxx index 3f6ddcec8..8018bcb44 100644 --- a/src/gui/LauncherDialog.cxx +++ b/src/gui/LauncherDialog.cxx @@ -662,7 +662,7 @@ void LauncherDialog::loadRom() instance().settings().setValue("romdir", currentNode().getParent().getShortPath()); } else - instance().frameBuffer().showMessage(result, MessagePosition::MiddleCenter, true); + instance().frameBuffer().showTextMessage(result, MessagePosition::MiddleCenter, true); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/LoggerDialog.cxx b/src/gui/LoggerDialog.cxx index bf53d80a0..3f94e093e 100644 --- a/src/gui/LoggerDialog.cxx +++ b/src/gui/LoggerDialog.cxx @@ -123,12 +123,12 @@ void LoggerDialog::saveLogFile() { stringstream out; out << Logger::instance().logMessages(); - instance().frameBuffer().showMessage("Saving log file to " + node.getShortPath()); + instance().frameBuffer().showTextMessage("Saving log file to " + node.getShortPath()); node.write(out); } catch(...) { - instance().frameBuffer().showMessage("Error saving log file to " + node.getShortPath()); + instance().frameBuffer().showTextMessage("Error saving log file to " + node.getShortPath()); } } diff --git a/src/gui/TimeMachineDialog.cxx b/src/gui/TimeMachineDialog.cxx index e822504a9..1e983eb92 100644 --- a/src/gui/TimeMachineDialog.cxx +++ b/src/gui/TimeMachineDialog.cxx @@ -440,11 +440,11 @@ void TimeMachineDialog::handleCommand(CommandSender* sender, int cmd, break; case kSaveAll: - instance().frameBuffer().showMessage(instance().state().rewindManager().saveAllStates()); + instance().frameBuffer().showTextMessage(instance().state().rewindManager().saveAllStates()); break; case kLoadAll: - instance().frameBuffer().showMessage(instance().state().rewindManager().loadAllStates()); + instance().frameBuffer().showTextMessage(instance().state().rewindManager().loadAllStates()); initBar(); break;