[Libreoffice-commits] Try to cut some costs

Stephan Bergmann sbergman at redhat.com
Tue Feb 21 09:14:11 UTC 2017


Any numbers that show that these complications of the code are worth it?

On 02/21/2017 12:54 AM, Maxim Monastirsky wrote:
> commit 8f381b47f5493151f06d77453ff5153cd075a68b
> Author: Maxim Monastirsky <momonasmon at gmail.com>
> Date:   Mon Feb 20 13:01:46 2017 +0200
>
>     Try to cut some costs
>
>     Change-Id: I0f541a020232960541bccdf970c042cf3303671e
>
> diff --git a/vcl/source/helper/commandinfoprovider.cxx b/vcl/source/helper/commandinfoprovider.cxx
> index dad5b58..d95ea55 100644
> --- a/vcl/source/helper/commandinfoprovider.cxx
> +++ b/vcl/source/helper/commandinfoprovider.cxx
> @@ -22,6 +22,7 @@
>  #include <vcl/mnemonic.hxx>
>  #include <comphelper/string.hxx>
>  #include <comphelper/processfactory.hxx>
> +#include <cppuhelper/weakref.hxx>
>
>  #include <com/sun/star/frame/ModuleManager.hpp>
>  #include <com/sun/star/frame/theUICommandDescription.hpp>
> @@ -37,6 +38,48 @@ using namespace css::uno;
>
>  namespace vcl { namespace CommandInfoProvider {
>
> +Reference<container::XNameAccess> const GetCommandDescription()
> +{
> +    static WeakReference<container::XNameAccess> xWeakRef;
> +    css::uno::Reference<container::XNameAccess> xRef(xWeakRef);
> +
> +    if (!xRef.is())
> +    {
> +        xRef = frame::theUICommandDescription::get(comphelper::getProcessComponentContext());
> +        xWeakRef = xRef;
> +    }
> +
> +    return xRef;
> +}
> +
> +Reference<ui::XModuleUIConfigurationManagerSupplier> const GetModuleConfigurationSupplier()
> +{
> +    static WeakReference<ui::XModuleUIConfigurationManagerSupplier> xWeakRef;
> +    css::uno::Reference<ui::XModuleUIConfigurationManagerSupplier> xRef(xWeakRef);
> +
> +    if (!xRef.is())
> +    {
> +        xRef = ui::theModuleUIConfigurationManagerSupplier::get(comphelper::getProcessComponentContext());
> +        xWeakRef = xRef;
> +    }
> +
> +    return xRef;
> +}
> +
> +Reference<ui::XAcceleratorConfiguration> const GetGlobalAcceleratorConfiguration()
> +{
> +    static WeakReference<ui::XAcceleratorConfiguration> xWeakRef;
> +    css::uno::Reference<ui::XAcceleratorConfiguration> xRef(xWeakRef);
> +
> +    if (!xRef.is())
> +    {
> +        xRef = ui::GlobalAcceleratorConfiguration::create(comphelper::getProcessComponentContext());
> +        xWeakRef = xRef;
> +    }
> +
> +    return xRef;
> +}
> +
>  Reference<ui::XAcceleratorConfiguration> const GetDocumentAcceleratorConfiguration(const Reference<frame::XFrame>& rxFrame)
>  {
>      Reference<frame::XController> xController = rxFrame->getController();
> @@ -49,8 +92,7 @@ Reference<ui::XAcceleratorConfiguration> const GetDocumentAcceleratorConfigurati
>              if (xSupplier.is())
>              {
>                  Reference<ui::XUIConfigurationManager> xConfigurationManager(
> -                    xSupplier->getUIConfigurationManager(),
> -                    UNO_QUERY);
> +                    xSupplier->getUIConfigurationManager());
>                  if (xConfigurationManager.is())
>                  {
>                      return xConfigurationManager->getShortCutManager();
> @@ -66,7 +108,7 @@ Reference<ui::XAcceleratorConfiguration> const GetModuleAcceleratorConfiguration
>      css::uno::Reference<css::ui::XAcceleratorConfiguration> curModuleAcceleratorConfiguration;
>      try
>      {
> -        Reference<ui::XModuleUIConfigurationManagerSupplier> xSupplier  = ui::theModuleUIConfigurationManagerSupplier::get(comphelper::getProcessComponentContext());
> +        Reference<ui::XModuleUIConfigurationManagerSupplier> xSupplier(GetModuleConfigurationSupplier());
>          Reference<ui::XUIConfigurationManager> xManager (
>              xSupplier->getUIConfigurationManager(GetModuleIdentifier(rxFrame)));
>          if (xManager.is())
> @@ -80,13 +122,6 @@ Reference<ui::XAcceleratorConfiguration> const GetModuleAcceleratorConfiguration
>      return curModuleAcceleratorConfiguration;
>  }
>
> -Reference<ui::XAcceleratorConfiguration> const GetGlobalAcceleratorConfiguration()
> -{
> -    // Get the global accelerator configuration.
> -    return ui::GlobalAcceleratorConfiguration::create(comphelper::getProcessComponentContext());
> -
> -}
> -
>  vcl::KeyCode AWTKey2VCLKey(const awt::KeyEvent& aAWTKey)
>  {
>      bool bShift = ((aAWTKey.Modifiers & awt::KeyModifier::SHIFT) == awt::KeyModifier::SHIFT );
> @@ -132,7 +167,7 @@ bool ResourceHasKey(const OUString& rsResourceName, const OUString& rsCommandNam
>      {
>          if (!rsModuleName.isEmpty())
>          {
> -            Reference<container::XNameAccess> xNameAccess  = frame::theUICommandDescription::get(comphelper::getProcessComponentContext());
> +            Reference<container::XNameAccess> xNameAccess(GetCommandDescription());
>              Reference<container::XNameAccess> xUICommandLabels;
>              if (xNameAccess->getByName(rsModuleName) >>= xUICommandLabels)
>              {
> @@ -159,7 +194,7 @@ Sequence<beans::PropertyValue> GetCommandProperties(const OUString& rsCommandNam
>      {
>          if (!rsModuleName.isEmpty())
>          {
> -            Reference<container::XNameAccess> xNameAccess  = frame::theUICommandDescription::get(comphelper::getProcessComponentContext());
> +            Reference<container::XNameAccess> xNameAccess(GetCommandDescription());
>              Reference<container::XNameAccess> xUICommandLabels;
>              if (xNameAccess->getByName(rsModuleName) >>= xUICommandLabels)
>                  xUICommandLabels->getByName(rsCommandName) >>= aProperties;
> @@ -285,7 +320,7 @@ BitmapEx GetBitmapForCommand(const OUString& rsCommandName,
>          Reference<ui::XUIConfigurationManagerSupplier> xSupplier(xModel, UNO_QUERY);
>          if (xSupplier.is())
>          {
> -            Reference<ui::XUIConfigurationManager> xDocUICfgMgr(xSupplier->getUIConfigurationManager(), UNO_QUERY);
> +            Reference<ui::XUIConfigurationManager> xDocUICfgMgr(xSupplier->getUIConfigurationManager());
>              Reference<ui::XImageManager> xDocImgMgr(xDocUICfgMgr->getImageManager(), UNO_QUERY);
>
>              Sequence< Reference<graphic::XGraphic> > aGraphicSeq;
> @@ -305,7 +340,7 @@ BitmapEx GetBitmapForCommand(const OUString& rsCommandName,
>      }
>
>      try {
> -        Reference<ui::XModuleUIConfigurationManagerSupplier> xModuleCfgMgrSupplier(ui::theModuleUIConfigurationManagerSupplier::get(comphelper::getProcessComponentContext()));
> +        Reference<ui::XModuleUIConfigurationManagerSupplier> xModuleCfgMgrSupplier(GetModuleConfigurationSupplier());
>          Reference<ui::XUIConfigurationManager> xUICfgMgr(xModuleCfgMgrSupplier->getUIConfigurationManager(GetModuleIdentifier(rxFrame)));
>
>          Sequence< Reference<graphic::XGraphic> > aGraphicSeq;
> @@ -371,7 +406,7 @@ bool IsExperimental(const OUString& rsCommandName,
>      {
>          if( rModuleName.getLength() > 0)
>          {
> -            Reference<container::XNameAccess> xNameAccess  = frame::theUICommandDescription::get(comphelper::getProcessComponentContext());
> +            Reference<container::XNameAccess> xNameAccess(GetCommandDescription());
>              Reference<container::XNameAccess> xUICommandLabels;
>              if (xNameAccess->getByName( rModuleName ) >>= xUICommandLabels )
>                  xUICommandLabels->getByName(rsCommandName) >>= aProperties;
> @@ -394,11 +429,18 @@ bool IsExperimental(const OUString& rsCommandName,
>
>  OUString const GetModuleIdentifier(const Reference<frame::XFrame>& rxFrame)
>  {
> -    Reference<frame::XModuleManager2> xModuleManager = frame::ModuleManager::create(comphelper::getProcessComponentContext());
> +    static WeakReference<frame::XModuleManager2> xWeakRef;
> +    css::uno::Reference<frame::XModuleManager2> xRef(xWeakRef);
> +
> +    if (!xRef.is())
> +    {
> +        xRef = frame::ModuleManager::create(comphelper::getProcessComponentContext());
> +        xWeakRef = xRef;
> +    }
>
>      try
>      {
> -        return xModuleManager->identify(rxFrame);
> +        return xRef->identify(rxFrame);
>      }
>      catch (const Exception&)
>      {}



More information about the LibreOffice mailing list