diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-11-08 19:56:51 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-11-08 19:56:51 +0000 |
| commit | 9bef763b47b5e5a273ce6eed4583004690571fcf (patch) | |
| tree | 84ec4cbf460695533d1a849d0515111a7dbca0ab /lib/base/eerror.cpp | |
| parent | ff008af237bba3e58012f637cbe8996f4450f031 (diff) | |
| download | enigma2-9bef763b47b5e5a273ce6eed4583004690571fcf.tar.gz enigma2-9bef763b47b5e5a273ce6eed4583004690571fcf.zip | |
make logOutput thread safe
Diffstat (limited to 'lib/base/eerror.cpp')
| -rw-r--r-- | lib/base/eerror.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/base/eerror.cpp b/lib/base/eerror.cpp index 3fc38ade..a8411879 100644 --- a/lib/base/eerror.cpp +++ b/lib/base/eerror.cpp @@ -76,6 +76,9 @@ int infatal=0; Signal2<void, int, const std::string&> logOutput; int logOutputConsole=1; +pthread_mutex_t signalLock = + PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP; + void eFatal(const char* fmt, ...) { char buf[1024]; @@ -83,6 +86,7 @@ void eFatal(const char* fmt, ...) va_start(ap, fmt); vsnprintf(buf, 1024, fmt, ap); va_end(ap); + singleLock s(signalLock); logOutput(lvlFatal, buf); fprintf(stderr, "FATAL: %s\n",buf ); #if 0 @@ -94,7 +98,6 @@ void eFatal(const char* fmt, ...) msg.exec(); } #endif - _exit(0); } @@ -106,6 +109,7 @@ void eDebug(const char* fmt, ...) va_start(ap, fmt); vsnprintf(buf, 1024, fmt, ap); va_end(ap); + singleLock s(signalLock); logOutput(lvlDebug, std::string(buf) + "\n"); if (logOutputConsole) fprintf(stderr, "%s\n", buf); @@ -118,6 +122,7 @@ void eDebugNoNewLine(const char* fmt, ...) va_start(ap, fmt); vsnprintf(buf, 1024, fmt, ap); va_end(ap); + singleLock s(signalLock); logOutput(lvlDebug, buf); if (logOutputConsole) fprintf(stderr, "%s", buf); @@ -130,6 +135,7 @@ void eWarning(const char* fmt, ...) va_start(ap, fmt); vsnprintf(buf, 1024, fmt, ap); va_end(ap); + singleLock s(signalLock); logOutput(lvlWarning, std::string(buf) + "\n"); if (logOutputConsole) fprintf(stderr, "%s\n", buf); |
