canvas/source/cairo/cairo_textlayout.cxx | 5 + desktop/source/deployment/manager/dp_extensionmanager.cxx | 37 ++++++-------- desktop/source/deployment/manager/dp_extensionmanager.hxx | 5 - desktop/source/deployment/registry/dp_backend.cxx | 4 + 4 files changed, 23 insertions(+), 28 deletions(-)
New commits: commit c9a27eb938b98d7812d3ab965fc88bb511e0b996 Author: Stephan Bergmann <sberg...@redhat.com> Date: Fri Oct 26 16:14:06 2012 +0200 Work around premature disposing of PackageRegistryBackends With ucbhelper::Content now requiring an XComponentContext during construction, calling "unopkg add" with an .oxt that requires license acceptance would lead to an assertion about a null XComponentContext, as doChecksForAddExtension calls the XPackage's checkPrerequisites -> checkLicnese -> getTextFromURL, which creates an ucbhelper::Content with getMyBackend()->getComponentContext(), but early release of the "tmp" manager would already have caused disposing of that backend, which clears m_xComponentContext. I assume this problem had always been lurking silently in the code. Change-Id: I9f59c612fe3831b2f6dd832ef2f0505b6590b8e0 diff --git a/desktop/source/deployment/manager/dp_extensionmanager.cxx b/desktop/source/deployment/manager/dp_extensionmanager.cxx index de78275..4ba5584 100644 --- a/desktop/source/deployment/manager/dp_extensionmanager.cxx +++ b/desktop/source/deployment/manager/dp_extensionmanager.cxx @@ -655,8 +655,22 @@ Reference<deploy::XPackage> ExtensionManager::addExtension( //would remove the first one. ::osl::MutexGuard addGuard(m_addMutex); - Reference<deploy::XPackage> xTmpExtension = - getTempExtension(url, xAbortChannel, xCmdEnv); + Reference<deploy::XPackageManager> xTmpRepository(getTmpRepository()); + // make sure xTmpRepository is alive as long as xTmpExtension is; as + // the "tmp" manager is only held weakly by m_xPackageManagerFactory, it + // could otherwise be disposed early, which would in turn dispose + // xTmpExtension's PackageRegistryBackend behind its back + Reference<deploy::XPackage> xTmpExtension( + xTmpRepository->addPackage( + url, uno::Sequence<beans::NamedValue>(), OUString(), xAbortChannel, + new TmpRepositoryCommandEnv())); + if (!xTmpExtension.is()) { + throw deploy::DeploymentException( + ("Extension Manager: Failed to create temporary XPackage for url: " + + url), + static_cast<OWeakObject*>(this), uno::Any()); + } + //Make sure the extension is removed from the tmp repository in case //of an exception ExtensionRemoveGuard tmpExtensionRemoveGuard(xTmpExtension, getTmpRepository()); @@ -1404,25 +1418,6 @@ void ExtensionManager::checkUpdate( static_cast<OWeakObject *>(this), request ); } -Reference<deploy::XPackage> ExtensionManager::getTempExtension( - OUString const & url, - Reference<task::XAbortChannel> const & xAbortChannel, - Reference<ucb::XCommandEnvironment> const & /*xCmdEnv*/) - -{ - Reference<ucb::XCommandEnvironment> tmpCmdEnvA(new TmpRepositoryCommandEnv()); - Reference<deploy::XPackage> xTmpPackage = getTmpRepository()->addPackage( - url, uno::Sequence<beans::NamedValue>(),OUString(), xAbortChannel, tmpCmdEnvA); - if (!xTmpPackage.is()) - { - throw deploy::DeploymentException( - OUSTR("Extension Manager: Failed to create temporary XPackage for url: ") + url, - static_cast<OWeakObject*>(this), uno::Any()); - - } - return xTmpPackage; -} - uno::Sequence<Reference<deploy::XPackage> > SAL_CALL ExtensionManager::getExtensionsWithUnacceptedLicenses( OUString const & repository, diff --git a/desktop/source/deployment/manager/dp_extensionmanager.hxx b/desktop/source/deployment/manager/dp_extensionmanager.hxx index c8d8b30..584f01c 100644 --- a/desktop/source/deployment/manager/dp_extensionmanager.hxx +++ b/desktop/source/deployment/manager/dp_extensionmanager.hxx @@ -280,11 +280,6 @@ private: css::uno::Reference<css::deployment::XPackage> const & oldExtension, css::uno::Reference<css::ucb::XCommandEnvironment> const & xCmdEnv); - css::uno::Reference<css::deployment::XPackage> getTempExtension( - ::rtl::OUString const & url, - css::uno::Reference<css::task::XAbortChannel> const & xAbortChannel, - css::uno::Reference<css::ucb::XCommandEnvironment> const & xCmdEnv); - void addExtensionsToMap( id2extensions & mapExt, css::uno::Sequence<css::uno::Reference<css::deployment::XPackage> > const & seqExt, commit 89e875b50a275512c5732557c1d09d1e1f1cbfe9 Author: Stephan Bergmann <sberg...@redhat.com> Date: Fri Oct 26 16:13:45 2012 +0200 Add sanity-check assertion Change-Id: I119f008734e4978d6bcf5f786ae3604db5c0f8a9 diff --git a/desktop/source/deployment/registry/dp_backend.cxx b/desktop/source/deployment/registry/dp_backend.cxx index 57703d5..ad6c2a8 100644 --- a/desktop/source/deployment/registry/dp_backend.cxx +++ b/desktop/source/deployment/registry/dp_backend.cxx @@ -26,6 +26,9 @@ * ************************************************************************/ +#include "sal/config.h" + +#include <cassert> #include "dp_backend.h" #include "dp_ucb.h" @@ -85,6 +88,7 @@ PackageRegistryBackend::PackageRegistryBackend( m_eContext( CONTEXT_UNKNOWN ), m_readOnly( false ) { + assert(xContext.is()); boost::optional<OUString> cachePath; boost::optional<bool> readOnly; comphelper::unwrapArgs( args, m_context, cachePath, readOnly ); commit b6aa58c4d8af8b960b085646d97f73c912503a96 Author: Flex Liu <wind...@gmail.com> Date: Fri Oct 26 15:18:35 2012 +0100 Resolves: fdo#47432 Improve the "faux bold" in cairo canvas The "faux bold" make the bold font in Asian ugly & unacceptable, Adjust & improve the "faux bold" to make the bold font better. Change-Id: I2e02156ffc30629476b80134ffb0b50e793f7ead diff --git a/canvas/source/cairo/cairo_textlayout.cxx b/canvas/source/cairo/cairo_textlayout.cxx index 383b0ff..6fa5562 100644 --- a/canvas/source/cairo/cairo_textlayout.cxx +++ b/canvas/source/cairo/cairo_textlayout.cxx @@ -609,14 +609,15 @@ namespace cairocanvas if (rSysFontData.bFakeBold) { double bold_dx = 0.5 * sqrt( 0.7 * aFont.GetHeight() ); - int total_steps = 2 * ((int) (bold_dx + 0.5)); + int total_steps = 1 * ((int) (bold_dx + 0.5)); // loop to draw the text for every half pixel of displacement for (int nSteps = 0; nSteps < total_steps; nSteps++) { for(int nGlyphIdx = 0; nGlyphIdx < (int) cairo_glyphs.size(); nGlyphIdx++) { - cairo_glyphs[nGlyphIdx].x += bold_dx * nSteps / total_steps; + cairo_glyphs[nGlyphIdx].x += (bold_dx * nSteps / total_steps) / 4; + cairo_glyphs[nGlyphIdx].y -= (bold_dx * nSteps / total_steps) / 4; } cairo_show_glyphs(pSCairo.get(), &cairo_glyphs[0], cairo_glyphs.size()); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits