diff --git a/include/polyscope/render/mock_opengl/mock_gl_engine.h b/include/polyscope/render/mock_opengl/mock_gl_engine.h index df2651c7..6560902c 100644 --- a/include/polyscope/render/mock_opengl/mock_gl_engine.h +++ b/include/polyscope/render/mock_opengl/mock_gl_engine.h @@ -328,6 +328,9 @@ class MockGLEngine : public Engine { virtual void shutdown() override; void checkError(bool fatal = false) override; + // mock backend is always headless + virtual bool isHeadless() override { return true; } + void swapDisplayBuffers() override; std::vector readDisplayBuffer() override; diff --git a/src/messages.cpp b/src/messages.cpp index 093689b4..a936d7ae 100644 --- a/src/messages.cpp +++ b/src/messages.cpp @@ -233,8 +233,11 @@ void terminatingError(std::string message) { std::cout << options::printPrefix << "[ERROR] " << message << std::endl; } - auto func = std::bind(buildErrorUI, message, true); - pushContext(func, false); + // Enter a modal UI loop showing the warning + if (!isHeadless()) { // don't do it if running headless + auto func = std::bind(buildErrorUI, message, true); + pushContext(func, false); + } // Quit the program shutdown(true); @@ -243,6 +246,13 @@ void terminatingError(std::string message) { void warning(std::string baseMessage, std::string detailMessage) { + // print to stdout + if (options::verbosity > 0) { + std::cout << options::printPrefix << "[WARNING] " << baseMessage; + if (detailMessage != "") std::cout << " --- " << detailMessage; + std::cout << std ::endl; + } + // Look for a message with the same name bool found = false; for (WarningMessage& w : warningMessages) { @@ -268,16 +278,13 @@ void showDelayedWarnings() { showingWarning = true; WarningMessage& currMessage = warningMessages.front(); - if (options::verbosity > 0) { - std::cout << options::printPrefix << "[WARNING] " << currMessage.baseMessage; - if (currMessage.detailMessage != "") std::cout << " --- " << currMessage.detailMessage; - if (currMessage.repeatCount > 0) std::cout << " (and " << currMessage.repeatCount << " similar messages)."; - std::cout << std ::endl; + // Enter a modal UI loop showing the warning + if (!isHeadless()) { // don't do it if running headless + auto func = + std::bind(buildWarningUI, currMessage.baseMessage, currMessage.detailMessage, currMessage.repeatCount); + pushContext(func, false); } - auto func = std::bind(buildWarningUI, currMessage.baseMessage, currMessage.detailMessage, currMessage.repeatCount); - pushContext(func, false); - warningMessages.pop_front(); showingWarning = false; }