diff options
author | Tor Lillqvist <tml@collabora.com> | 2021-06-29 15:03:23 +0300 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-07-15 12:16:46 +0200 |
commit | 794b68bb1bbe80717c530530358799c6a4d598c0 (patch) | |
tree | f1e84f546ea36ecab98e8ba6fcb4ffe945240d30 /comphelper | |
parent | 9ff73bfc2411f201e022ffc5d73eb0f96768495e (diff) |
Enable flushing accumulated Trace Events when their number reaches a limit
Change-Id: I99ecf56b0faa5c444dbe9e22b8cce035f240c35c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118119
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118932
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'comphelper')
-rw-r--r-- | comphelper/source/misc/traceevent.cxx | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/comphelper/source/misc/traceevent.cxx b/comphelper/source/misc/traceevent.cxx index 5f0ddcc18d39..4fc4410615b4 100644 --- a/comphelper/source/misc/traceevent.cxx +++ b/comphelper/source/misc/traceevent.cxx @@ -24,6 +24,10 @@ std::atomic<bool> TraceEvent::s_bRecording = (getenv("TRACE_EVENT_RECORDING") != #else std::atomic<bool> TraceEvent::s_bRecording = false; #endif + +std::size_t TraceEvent::s_nBufferSize = 0; +void (*TraceEvent::s_pBufferFullCallback)() = nullptr; + int AsyncEvent::s_nIdCounter = 0; int ProfileZone::s_nNesting = 0; @@ -38,6 +42,12 @@ void TraceEvent::addRecording(const OUString& sObject) osl::MutexGuard aGuard(g_aMutex); g_aRecording.emplace_back(sObject); + + if (s_nBufferSize > 0 && g_aRecording.size() >= s_nBufferSize) + { + if (s_pBufferFullCallback != nullptr) + (*s_pBufferFullCallback)(); + } } void TraceEvent::addInstantEvent(const char* sName, const std::map<OUString, OUString>& args) @@ -72,6 +82,12 @@ void TraceEvent::startRecording() void TraceEvent::stopRecording() { s_bRecording = false; } +void TraceEvent::setBufferSizeAndCallback(std::size_t bufferSize, void (*bufferFullCallback)()) +{ + s_nBufferSize = bufferSize; + s_pBufferFullCallback = bufferFullCallback; +} + std::vector<OUString> TraceEvent::getEventVectorAndClear() { bool bRecording; |