summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ingen/Log.hpp3
-rw-r--r--src/Configuration.cpp1
-rw-r--r--src/Log.cpp13
-rw-r--r--src/World.cpp1
4 files changed, 18 insertions, 0 deletions
diff --git a/ingen/Log.hpp b/ingen/Log.hpp
index 94512309..6c88e9a4 100644
--- a/ingen/Log.hpp
+++ b/ingen/Log.hpp
@@ -42,9 +42,12 @@ public:
inline void info(const fmt& fmt) { info(fmt.str()); }
inline void warn(const fmt& fmt) { warn(fmt.str()); }
+ void set_flush(bool f) { _flush = f; }
+
private:
LV2_Log_Log* _log;
URIs& _uris;
+ bool _flush;
};
} // namespace Ingen
diff --git a/src/Configuration.cpp b/src/Configuration.cpp
index 70b76b20..0f3e3d53 100644
--- a/src/Configuration.cpp
+++ b/src/Configuration.cpp
@@ -64,6 +64,7 @@ Configuration::Configuration(Forge& forge)
add("execute", "execute", 'x', "File of commands to execute", SESSION, forge.String, Atom());
add("path", "path", 'L', "Target path for loaded graph", SESSION, forge.String, Atom());
add("queueSize", "queue-size", 'q', "Event queue size", GLOBAL, forge.Int, forge.make(4096));
+ add("flushLog", "flush-log", 'f', "Flush logs after every entry", SESSION, forge.Bool, forge.make(false));
add("humanNames", "human-names", 0, "Show human names in GUI", GUI, forge.Bool, forge.make(true));
add("portLabels", "port-labels", 0, "Show port labels in GUI", GUI, forge.Bool, forge.make(true));
add("graphDirectory", "graph-directory", 0, "Default directory for opening graphs", GUI, forge.String, Atom());
diff --git a/src/Log.cpp b/src/Log.cpp
index 5ce85db3..ccfc2e7c 100644
--- a/src/Log.cpp
+++ b/src/Log.cpp
@@ -33,6 +33,7 @@ static const char* const ANSI_YELLOW = "\033[0;33m";
Log::Log(LV2_Log_Log* log, URIs& uris)
: _log(log)
, _uris(uris)
+ , _flush(false)
{}
void
@@ -42,6 +43,10 @@ Log::error(const std::string& msg)
_log->printf(_log->handle, _uris.log_Error, "%s", msg.c_str());
} else {
std::cerr << ANSI_RED << msg << ANSI_RESET;
+ if (_flush) {
+ std::cerr << "flush!\n";
+ std::flush(std::cerr);
+ }
}
}
@@ -52,6 +57,10 @@ Log::warn(const std::string& msg)
_log->printf(_log->handle, _uris.log_Warning, "%s", msg.c_str());
} else {
std::cerr << ANSI_YELLOW << msg << ANSI_RESET;
+ if (_flush) {
+ std::cerr << "flush!\n";
+ std::flush(std::cerr);
+ }
}
}
@@ -62,6 +71,10 @@ Log::info(const std::string& msg)
_log->printf(_log->handle, _uris.log_Note, "%s", msg.c_str());
} else {
std::cout << msg;
+ if (_flush) {
+ std::cerr << "flush!\n";
+ std::flush(std::cout);
+ }
}
}
diff --git a/src/World.cpp b/src/World.cpp
index d3859563..9d4410eb 100644
--- a/src/World.cpp
+++ b/src/World.cpp
@@ -120,6 +120,7 @@ public:
// Parse command line options, overriding configuration file values
conf.parse(argc, argv);
+ log.set_flush(conf.option("flush-log").get<int32_t>());
lv2_features = new LV2Features();
lv2_features->add_feature(uri_map->urid_map_feature());