[Libreoffice-commits] core.git: desktop/source

Tor Lillqvist (via logerrit) logerrit at kemper.freedesktop.org
Wed Jun 9 11:46:01 UTC 2021


 desktop/source/lib/init.cxx |   64 +++++++++++++++++++++++++-------------------
 1 file changed, 37 insertions(+), 27 deletions(-)

New commits:
commit e4f5705b91ecacdfc84e564e116dfe812fd96b61
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Mon May 10 15:50:45 2021 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Wed Jun 9 13:44:01 2021 +0200

    We must collect the Trace Events when recording them is turned on
    
    Recording them can be turned on and off on-the-fly.
    
    Also rename the class from ProfileZoneDumper to TraceEventDumper as
    ProfileZones are just one special case of Trace Events.
    
    Change-Id: I4928397937963c83ffe8022ba4fa941f81119e15
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115332
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tor Lillqvist <tml at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115593
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116846
    Tested-by: Jenkins

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 77fb9e4baecc..d509643ce4d1 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -200,7 +200,38 @@ struct ExtensionMap
     const char *filterName;
 };
 
-}
+class TraceEventDumper : public AutoTimer
+{
+    static const int dumpTimeoutMS = 5000;
+
+public:
+    TraceEventDumper() : AutoTimer( "Trace Event dumper" )
+    {
+        SetTimeout(dumpTimeoutMS);
+        Start();
+    }
+    virtual void Invoke() override
+    {
+        const css::uno::Sequence<OUString> aEvents =
+            comphelper::TraceEvent::getRecordingAndClear();
+        OStringBuffer aOutput;
+        for (const auto &s : aEvents)
+        {
+            aOutput.append(OUStringToOString(s, RTL_TEXTENCODING_UTF8));
+            aOutput.append("\n");
+        }
+        if (aOutput.getLength() > 0)
+        {
+            OString aChunk = aOutput.makeStringAndClear();
+            if (gImpl && gImpl->mpCallback)
+                gImpl->mpCallback(LOK_CALLBACK_PROFILE_FRAME, aChunk.getStr(), gImpl->mpCallbackData);
+        }
+    }
+};
+
+} // unnamed namespace
+
+static TraceEventDumper *traceEventDumper = nullptr;
 
 const ExtensionMap aWriterExtensionMap[] =
 {
@@ -3852,7 +3883,11 @@ static void lo_setOption(LibreOfficeKit* /*pThis*/, const char *pOption, const c
     if (strcmp(pOption, "traceeventrecording") == 0)
     {
         if (strcmp(pValue, "start") == 0)
+        {
             comphelper::TraceEvent::startRecording();
+            if (traceEventDumper == nullptr)
+                traceEventDumper = new TraceEventDumper();
+        }
         else if (strcmp(pValue, "stop") == 0)
             comphelper::TraceEvent::stopRecording();
     }
@@ -6095,31 +6130,6 @@ static void preloadData()
 
 namespace {
 
-class ProfileZoneDumper : public AutoTimer
-{
-    static const int dumpTimeoutMS = 5000;
-public:
-    ProfileZoneDumper() : AutoTimer( "zone dumper" )
-    {
-        SetTimeout(dumpTimeoutMS);
-        Start();
-    }
-    virtual void Invoke() override
-    {
-        const css::uno::Sequence<OUString> aEvents =
-            comphelper::TraceEvent::getRecordingAndClear();
-        OStringBuffer aOutput;
-        for (const auto &s : aEvents)
-        {
-            aOutput.append(OUStringToOString(s, RTL_TEXTENCODING_UTF8));
-            aOutput.append("\n");
-        }
-        OString aChunk = aOutput.makeStringAndClear();
-        if (gImpl && gImpl->mpCallback)
-            gImpl->mpCallback(LOK_CALLBACK_PROFILE_FRAME, aChunk.getStr(), gImpl->mpCallbackData);
-    }
-};
-
 static void activateNotebookbar(std::u16string_view rApp)
 {
     OUString aPath = OUString::Concat("org.openoffice.Office.UI.ToolbarMode/Applications/") + rApp;
@@ -6190,7 +6200,7 @@ static int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath, const char
     if (bProfileZones && eStage == SECOND_INIT)
     {
         comphelper::TraceEvent::startRecording();
-        new ProfileZoneDumper();
+        traceEventDumper = new TraceEventDumper();
     }
 
     comphelper::ProfileZone aZone("lok-init");


More information about the Libreoffice-commits mailing list