[Libreoffice-commits] core.git: include/svl

Eike Rathke erack at redhat.com
Mon Jul 17 20:02:16 UTC 2017


 include/svl/ondemand.hxx |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

New commits:
commit 21394b08475d1d869aa62c1dbb46c3dcc93ae3f0
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Jul 17 21:59:38 2017 +0200

    Defer also loading of the English CalendarWrapper, tdf#109045 follow-up
    
    Always constructing the en-US CalendarWrapper defeats the original intention
    that not for every construction of SvNumberFormatter a calendar is needed, plus
    if no en-US is requested constructing such calendar is just wasted.
    
    Since
    
            commit 2a22696546ace75c38a72ad13f7383aedd00e06a
            Date:   Mon Jul 10 15:56:32 2017 +0200
    
                    tdf#109045: store en calendar separately in OnDemandCalendarWrapper
    
    Change-Id: I06e13754f03fc1fe4fbf48b76ccb82c917606480

diff --git a/include/svl/ondemand.hxx b/include/svl/ondemand.hxx
index 81fb6e36e5fd..a66b4aa4ef77 100644
--- a/include/svl/ondemand.hxx
+++ b/include/svl/ondemand.hxx
@@ -129,7 +129,7 @@ public:
     const   LocaleDataWrapper&  operator*() const   { return *get(); }
 };
 
-/** Load a calendar only if it's needed. Keep calendar for "en" locale
+/** Load a calendar only if it's needed. Keep calendar for "en-US" locale
     separately, as there can be alternation between locale dependent and
     locale independent formats.
     SvNumberformatter uses it upon switching locales.
@@ -143,7 +143,7 @@ class OnDemandCalendarWrapper
             css::lang::Locale  aEnglishLocale;
             css::lang::Locale  aLocale;
     mutable css::lang::Locale  aLastAnyLocale;
-            std::unique_ptr<CalendarWrapper> pEnglishPtr;
+    mutable std::unique_ptr<CalendarWrapper> pEnglishPtr;
     mutable std::unique_ptr<CalendarWrapper> pAnyPtr;
 
 public:
@@ -161,8 +161,7 @@ public:
                                     {
                                         m_xContext = rxContext;
                                         changeLocale( rLocale );
-                                        pEnglishPtr.reset(new CalendarWrapper( m_xContext ));
-                                        pEnglishPtr->loadDefaultCalendar( aEnglishLocale );
+                                        pEnglishPtr.reset();
                                         pAnyPtr.reset();
                                     }
 
@@ -176,6 +175,11 @@ public:
                                         CalendarWrapper* pPtr;
                                         if ( aLocale == aEnglishLocale )
                                         {
+                                            if (!pEnglishPtr)
+                                            {
+                                                pEnglishPtr.reset( new CalendarWrapper( m_xContext ));
+                                                pEnglishPtr->loadDefaultCalendar( aEnglishLocale );
+                                            }
                                             pPtr = pEnglishPtr.get();
                                         }
                                         else


More information about the Libreoffice-commits mailing list