[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.2' - desktop/source include/vcl vcl/source
Miklos Vajna (via logerrit)
logerrit at kemper.freedesktop.org
Thu Jul 4 14:38:57 UTC 2019
desktop/source/lib/init.cxx | 3 +++
include/vcl/graphicfilter.hxx | 2 ++
vcl/source/filter/graphicfilter.cxx | 26 ++++++++++++++++++++++++++
3 files changed, 31 insertions(+)
New commits:
commit 4965569d21395e7cc7176c63b820986808fe6211
Author: Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Thu Jul 4 11:57:27 2019 +0200
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Thu Jul 4 16:37:02 2019 +0200
vcl lok: pre-load graphic libraries
This is needed to be able to load e.g. TIFF files in Online, which does
not have code in the chroot since online.git commit
ad21717498cc214d5d5d5c0ff378238552137e2f (Avoid copying most code into
the chroot jail., 2018-03-10).
Change-Id: Ib095191ee690d9da6269878a82b1c6995df50dfa
Reviewed-on: https://gerrit.libreoffice.org/75077
Reviewed-by: Miklos Vajna <vmiklos at collabora.com>
Tested-by: Jenkins
(cherry picked from commit ad8f4c4432e0c5c052b6f87977d1ad8663debe09)
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 2b8a6f956d2f..cdf3c01a2c41 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -4266,6 +4266,9 @@ static int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath, const char
std::cerr << "Init vcl\n";
InitVCL();
+ // pre-load all graphic libraries.
+ GraphicFilter::GetGraphicFilter().preload();
+
// pre-load all component libraries.
if (!xContext.is())
throw css::uno::DeploymentException("preInit: XComponentContext is not created");
diff --git a/include/vcl/graphicfilter.hxx b/include/vcl/graphicfilter.hxx
index 5ef927761f97..ef66d16544e1 100644
--- a/include/vcl/graphicfilter.hxx
+++ b/include/vcl/graphicfilter.hxx
@@ -309,6 +309,8 @@ public:
ErrCode compressAsPNG(const Graphic& rGraphic, SvStream& rOutputStream);
+ void preload();
+
private:
OUString aFilterPath;
FilterConfigCache* pConfig;
diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx
index 2661cf32bf00..0fb9b2992899 100644
--- a/vcl/source/filter/graphicfilter.cxx
+++ b/vcl/source/filter/graphicfilter.cxx
@@ -68,6 +68,8 @@
#include <rtl/bootstrap.hxx>
#include <rtl/instance.hxx>
#include <vcl/metaact.hxx>
+#include <tools/svlibrary.h>
+#include <comphelper/string.hxx>
#include <vector>
#include <memory>
@@ -1667,6 +1669,30 @@ Graphic GraphicFilter::ImportUnloadedGraphic(SvStream& rIStream, sal_uInt64 size
return aGraphic;
}
+void GraphicFilter::preload()
+{
+ sal_Int32 nTokenCount = comphelper::string::getTokenCount(aFilterPath, ';');
+ ImpFilterLibCache& rCache = Cache::get();
+ static const std::initializer_list<OUStringLiteral> aFilterNames = {
+ "icd", "idx", "ime", "ipb", "ipd", "ips", "ipt", "ipx", "ira", "itg", "iti",
+ };
+
+ // Load library for each filter.
+ for (const auto& rFilterName : aFilterNames)
+ {
+ ImpFilterLibCacheEntry* pFilter = nullptr;
+ // Look at the library in each element inside the filter path.
+ for (sal_Int32 i = 0; i < nTokenCount; ++i)
+ {
+ pFilter = rCache.GetFilter(aFilterPath.getToken(i, ';'), SVLIBRARY("gie"), rFilterName);
+ if (pFilter)
+ {
+ break;
+ }
+ }
+ }
+}
+
ErrCode GraphicFilter::ImportGraphic( Graphic& rGraphic, const OUString& rPath, SvStream& rIStream,
sal_uInt16 nFormat, sal_uInt16* pDeterminedFormat, GraphicFilterImportFlags nImportFlags,
css::uno::Sequence< css::beans::PropertyValue >* pFilterData,
More information about the Libreoffice-commits
mailing list