summaryrefslogtreecommitdiff
path: root/cppuhelper/source
diff options
context:
space:
mode:
Diffstat (limited to 'cppuhelper/source')
-rw-r--r--cppuhelper/source/servicemanager.cxx51
1 files changed, 48 insertions, 3 deletions
diff --git a/cppuhelper/source/servicemanager.cxx b/cppuhelper/source/servicemanager.cxx
index eb2f1f9dfba7..556440dc8733 100644
--- a/cppuhelper/source/servicemanager.cxx
+++ b/cppuhelper/source/servicemanager.cxx
@@ -1805,6 +1805,34 @@ cppuhelper::ServiceManager::findServiceImplementation(
return impl;
}
+/// Make a simpler unique name for preload / progress reporting.
+#ifndef DISABLE_DYNLOADING
+static rtl::OUString simplifyModule(const rtl::OUString &uri)
+{
+ sal_Int32 nIdx;
+ OUStringBuffer edit(uri);
+ if ((nIdx = edit.lastIndexOf('/')) > 0)
+ edit.remove(0,nIdx+1);
+ if ((nIdx = edit.lastIndexOf(':')) > 0)
+ edit.remove(0,nIdx+1);
+ if ((nIdx = edit.lastIndexOf("lo.so")) > 0)
+ edit.truncate(nIdx);
+ if ((nIdx = edit.lastIndexOf(".3")) > 0)
+ edit.truncate(nIdx);
+ if ((nIdx = edit.lastIndexOf("gcc3.so")) > 0)
+ edit.truncate(nIdx);
+ if ((nIdx = edit.lastIndexOf(".so")) > 0)
+ edit.truncate(nIdx);
+ if ((nIdx = edit.lastIndexOf("_uno")) > 0)
+ edit.truncate(nIdx);
+ if ((nIdx = edit.lastIndexOf(".jar")) > 0)
+ edit.truncate(nIdx);
+ if (edit.indexOf("lib") == 0)
+ edit.remove(0,3);
+ return edit.makeStringAndClear();
+}
+#endif
+
/// Used only by LibreOfficeKit when used by Online to pre-initialize
void cppuhelper::ServiceManager::preloadImplementations() {
#ifdef DISABLE_DYNLOADING
@@ -1814,6 +1842,9 @@ void cppuhelper::ServiceManager::preloadImplementations() {
osl::MutexGuard g(rBHelper.rMutex);
css::uno::Environment aSourceEnv(css::uno::Environment::getCurrent());
+ std::cerr << "preload:";
+ std::vector<OUString> aReported;
+
// loop all implementations
for (Data::NamedImplementations::const_iterator iterator(
data_.namedImplementations.begin());
@@ -1823,6 +1854,16 @@ void cppuhelper::ServiceManager::preloadImplementations() {
{
const rtl::OUString &aLibrary = iterator->second->info->uri;
+ if (aLibrary.isEmpty())
+ continue;
+
+ if (std::find(aReported.begin(), aReported.end(), aLibrary) == aReported.end())
+ {
+ std::cerr << " " << simplifyModule(aLibrary);
+ std::cerr.flush();
+ aReported.push_back(aLibrary);
+ }
+
// expand absolute URI implementation component library
aUri = cppu::bootstrap_expandUri(aLibrary);
}
@@ -1839,16 +1880,19 @@ void cppuhelper::ServiceManager::preloadImplementations() {
// Blacklist some components that are known to fail
if (iterator->second->info->name == "com.sun.star.comp.configuration.backend.KDE4Backend")
{
- std::cerr << "preload: Skipping " << iterator->second->info->name << std::endl;
+ std::cerr << ":skipping";
+ std::cerr.flush();
continue;
}
// load component library
- std::cerr << "preload: Loading " << aUri << " for " << iterator->second->info->name << std::endl;
osl::Module aModule(aUri, SAL_LOADMODULE_NOW | SAL_LOADMODULE_GLOBAL);
if (!aModule.is())
- std::cerr << "preload: Loading " << aUri << " for " << iterator->second->info->name << " failed" << std::endl;
+ {
+ std::cerr << ":failed" << std::endl;
+ std::cerr.flush();
+ }
if (aModule.is() &&
!iterator->second->info->environment.isEmpty())
@@ -1934,6 +1978,7 @@ void cppuhelper::ServiceManager::preloadImplementations() {
aModule.release();
}
}
+ std::cerr << std::endl;
#endif
}