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

Michael Meeks (via logerrit) logerrit at kemper.freedesktop.org
Mon Apr 15 09:37:23 UTC 2019


 desktop/source/lib/init.cxx                  |   36 +++++++++++++++++++++++++++
 include/LibreOfficeKit/LibreOfficeKitEnums.h |    6 ++++
 libreofficekit/source/gtk/lokdocview.cxx     |    2 +
 3 files changed, 44 insertions(+)

New commits:
commit 35aff9067796ee7b108ffee88126f837b573d3c1
Author:     Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Fri Apr 12 21:16:38 2019 +0100
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Mon Apr 15 11:36:28 2019 +0200

    lok: emit ProfileZone data in messages when requested.
    
    Change-Id: I42a773e2d5b8e4deeafa8eeb2785913db36a47d7
    Reviewed-on: https://gerrit.libreoffice.org/70688
    Tested-by: Jenkins
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 279232e07c99..e6feceb595b2 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -50,6 +50,7 @@
 #include <comphelper/lok.hxx>
 #include <comphelper/processfactory.hxx>
 #include <comphelper/string.hxx>
+#include <comphelper/profilezone.hxx>
 #include <comphelper/propertysequence.hxx>
 #include <comphelper/scopeguard.hxx>
 #include <comphelper/threadpool.hxx>
@@ -4495,6 +4496,31 @@ static void preloadData()
     rtl::Bootstrap::set("UserInstallation", sUserPath);
 }
 
+class ProfileZoneDumper : public AutoTimer
+{
+    static const int dumpTimeoutMS = 5000;
+public:
+    ProfileZoneDumper() : AutoTimer( "zone dumper" )
+    {
+        SetTimeout(dumpTimeoutMS);
+        Start();
+    }
+    virtual void Invoke() override
+    {
+        css::uno::Sequence<OUString> aEvents =
+            comphelper::ProfileRecording::getRecordingAndClear();
+        OStringBuffer aOutput;
+        for (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 int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath, const char* pUserProfileUrl)
 {
     enum {
@@ -4505,6 +4531,7 @@ static int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath, const char
 
     // Did we do a pre-initialize
     static bool bPreInited = false;
+    static bool bProfileZones = getenv("SAL_PROFILEZONE_STDOUT") != nullptr;
 
     // What stage are we at ?
     if (pThis == nullptr)
@@ -4519,6 +4546,15 @@ static int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath, const char
     if (bInitialized)
         return 1;
 
+    // Turn profile zones on early
+    if (bProfileZones && eStage == SECOND_INIT)
+    {
+        comphelper::ProfileRecording::startRecording(true);
+        new ProfileZoneDumper();
+    }
+
+    comphelper::ProfileZone aZone("lok-init");
+
     if (eStage == PRE_INIT)
         rtl_alloc_preInit(true);
     else if (eStage == SECOND_INIT)
diff --git a/include/LibreOfficeKit/LibreOfficeKitEnums.h b/include/LibreOfficeKit/LibreOfficeKitEnums.h
index 1d55ce8583b3..ef24828988f7 100644
--- a/include/LibreOfficeKit/LibreOfficeKitEnums.h
+++ b/include/LibreOfficeKit/LibreOfficeKitEnums.h
@@ -610,6 +610,12 @@ typedef enum
      * On-load notification of the document signature status.
      */
     LOK_CALLBACK_SIGNATURE_STATUS = 40,
+
+    /**
+     * Profiling tracing information single string of multiple lines
+     * containing <pid> <timestamp> and zone start/stop information
+     */
+    LOK_CALLBACK_PROFILE_FRAME = 41
 }
 LibreOfficeKitCallbackType;
 
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
index 1221b056c2a3..36601e385173 100644
--- a/libreofficekit/source/gtk/lokdocview.cxx
+++ b/libreofficekit/source/gtk/lokdocview.cxx
@@ -448,6 +448,8 @@ callbackTypeToString (int nType)
         return "LOK_CALLBACK_CONTEXT_CHANGED";
     case LOK_CALLBACK_SIGNATURE_STATUS:
         return "LOK_CALLBACK_SIGNATURE_STATUS";
+    case LOK_CALLBACK_PROFILE_FRAME:
+        return "LOK_CALLBACK_PROFILE_FRAME";
     }
     g_assert(false);
     return nullptr;


More information about the Libreoffice-commits mailing list