summaryrefslogtreecommitdiff
path: root/dbaccess
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2021-05-07 22:06:14 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-05-08 17:36:54 +0200
commit1545949690c750d7b512000723b564e69cf3c3a6 (patch)
tree1463c8b2912a9e269fe8b7ef3f7326dc85173830 /dbaccess
parentc10ce2698a3b001d22db3d33f2f43513cc49ebda (diff)
ref-count SfxItemPool
so we can remove SfxItemPoolUser, which is a right performance hog when we have large calc spreadsheets Change-Id: I344002f536f6eead5cf98c6647dd1667fd9c8874 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115247 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'dbaccess')
-rw-r--r--dbaccess/source/ui/control/sqledit.cxx7
-rw-r--r--dbaccess/source/ui/dlg/dbadmin.cxx5
-rw-r--r--dbaccess/source/ui/inc/dbadmin.hxx4
-rw-r--r--dbaccess/source/ui/inc/sqledit.hxx2
-rw-r--r--dbaccess/source/ui/inc/unoadmin.hxx2
-rw-r--r--dbaccess/source/ui/misc/UITools.cxx4
-rw-r--r--dbaccess/source/ui/uno/unoadmin.cxx14
7 files changed, 15 insertions, 23 deletions
diff --git a/dbaccess/source/ui/control/sqledit.cxx b/dbaccess/source/ui/control/sqledit.cxx
index 01f9182835df..062f99e96cae 100644
--- a/dbaccess/source/ui/control/sqledit.cxx
+++ b/dbaccess/source/ui/control/sqledit.cxx
@@ -67,7 +67,6 @@ private:
SQLEditView::SQLEditView()
: m_aHighlighter(HighlighterLanguage::SQL)
- , m_pItemPool(nullptr)
, m_bInUpdate(false)
, m_bDisableInternalUndo(false)
{
@@ -114,8 +113,8 @@ void SQLEditView::makeEditEngine()
{
assert(!m_pItemPool);
m_pItemPool = EditEngine::CreatePool();
- SetItemPoolFont(m_pItemPool);
- m_xEditEngine.reset(new EditEngine(m_pItemPool));
+ SetItemPoolFont(m_pItemPool.get());
+ m_xEditEngine.reset(new EditEngine(m_pItemPool.get()));
}
void SQLEditView::SetDrawingArea(weld::DrawingArea* pDrawingArea)
@@ -366,7 +365,7 @@ void SQLEditView::ConfigurationChanged(utl::ConfigurationBroadcaster*, Configura
void SQLEditView::ImplSetFont()
{
// see SmEditWindow::DataChanged for a similar case
- SetItemPoolFont(m_pItemPool); // change default font
+ SetItemPoolFont(m_pItemPool.get()); // change default font
// re-create with the new font
EditEngine& rEditEngine = *GetEditEngine();
OUString aTxt(rEditEngine.GetText());
diff --git a/dbaccess/source/ui/dlg/dbadmin.cxx b/dbaccess/source/ui/dlg/dbadmin.cxx
index e37541bfd271..0c79cf0c9bae 100644
--- a/dbaccess/source/ui/dlg/dbadmin.cxx
+++ b/dbaccess/source/ui/dlg/dbadmin.cxx
@@ -262,7 +262,7 @@ void ODbAdminDialog::clearPassword()
m_pImpl->clearPassword();
}
-void ODbAdminDialog::createItemSet(std::unique_ptr<SfxItemSet>& _rpSet, SfxItemPool*& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults, ::dbaccess::ODsnTypeCollection* _pTypeCollection)
+void ODbAdminDialog::createItemSet(std::unique_ptr<SfxItemSet>& _rpSet, rtl::Reference<SfxItemPool>& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults, ::dbaccess::ODsnTypeCollection* _pTypeCollection)
{
// just to be sure...
_rpSet = nullptr;
@@ -408,7 +408,7 @@ void ODbAdminDialog::createItemSet(std::unique_ptr<SfxItemSet>& _rpSet, SfxItemP
_rpSet.reset(new SfxItemSet(*_rpPool));
}
-void ODbAdminDialog::destroyItemSet(std::unique_ptr<SfxItemSet>& _rpSet, SfxItemPool*& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults)
+void ODbAdminDialog::destroyItemSet(std::unique_ptr<SfxItemSet>& _rpSet, rtl::Reference<SfxItemPool>& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults)
{
// _first_ delete the set (referring the pool)
_rpSet.reset();
@@ -418,7 +418,6 @@ void ODbAdminDialog::destroyItemSet(std::unique_ptr<SfxItemSet>& _rpSet, SfxItem
{
_rpPool->ReleaseDefaults(true);
// the "true" means delete the items, too
- SfxItemPool::Free(_rpPool);
_rpPool = nullptr;
}
diff --git a/dbaccess/source/ui/inc/dbadmin.hxx b/dbaccess/source/ui/inc/dbadmin.hxx
index eef3aed0874e..fb948f940fb8 100644
--- a/dbaccess/source/ui/inc/dbadmin.hxx
+++ b/dbaccess/source/ui/inc/dbadmin.hxx
@@ -62,10 +62,10 @@ public:
@param _pTypeCollection pointer to an <type>ODatasourceMap</type>. May be NULL, in this case
the pool will not contain a typecollection default.
*/
- static void createItemSet(std::unique_ptr<SfxItemSet>& _rpSet, SfxItemPool*& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults, ::dbaccess::ODsnTypeCollection* _pTypeCollection);
+ static void createItemSet(std::unique_ptr<SfxItemSet>& _rpSet, rtl::Reference<SfxItemPool>& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults, ::dbaccess::ODsnTypeCollection* _pTypeCollection);
/** destroy and item set / item pool / pool defaults previously created by <method>createItemSet</method>
*/
- static void destroyItemSet(std::unique_ptr<SfxItemSet>& _rpSet, SfxItemPool*& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults);
+ static void destroyItemSet(std::unique_ptr<SfxItemSet>& _rpSet, rtl::Reference<SfxItemPool>& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults);
/** selects the DataSource
@param _rName
diff --git a/dbaccess/source/ui/inc/sqledit.hxx b/dbaccess/source/ui/inc/sqledit.hxx
index c434a4f06555..6f85ba825a71 100644
--- a/dbaccess/source/ui/inc/sqledit.hxx
+++ b/dbaccess/source/ui/inc/sqledit.hxx
@@ -41,7 +41,7 @@ namespace dbaui
Timer m_aUpdateDataTimer;
const SyntaxHighlighter m_aHighlighter;
svtools::ColorConfig m_ColorConfig;
- SfxItemPool* m_pItemPool;
+ rtl::Reference<SfxItemPool> m_pItemPool;
rtl::Reference<ChangesListener> m_listener;
osl::Mutex m_mutex;
diff --git a/dbaccess/source/ui/inc/unoadmin.hxx b/dbaccess/source/ui/inc/unoadmin.hxx
index b18e4eb276db..944dccf87ae6 100644
--- a/dbaccess/source/ui/inc/unoadmin.hxx
+++ b/dbaccess/source/ui/inc/unoadmin.hxx
@@ -37,7 +37,7 @@ class ODatabaseAdministrationDialog
{
protected:
std::unique_ptr<SfxItemSet> m_pDatasourceItems; // item set for the dialog
- SfxItemPool* m_pItemPool; // item pool for the item set for the dialog
+ rtl::Reference<SfxItemPool> m_pItemPool; // item pool for the item set for the dialog
std::vector<SfxPoolItem*>*
m_pItemPoolDefaults; // pool defaults
std::unique_ptr<::dbaccess::ODsnTypeCollection>
diff --git a/dbaccess/source/ui/misc/UITools.cxx b/dbaccess/source/ui/misc/UITools.cxx
index f22c9198ca69..fe28821bed62 100644
--- a/dbaccess/source/ui/misc/UITools.cxx
+++ b/dbaccess/source/ui/misc/UITools.cxx
@@ -788,7 +788,7 @@ bool callColumnFormatDialog(weld::Widget* _pParent,
new SvxNumberInfoItem(SID_ATTR_NUMBERFORMAT_INFO)
};
- std::unique_ptr<SfxItemPool, SfxItemPoolDeleter> pPool(new SfxItemPool("GridBrowserProperties", SBA_DEF_RANGEFORMAT, SBA_ATTR_ALIGN_HOR_JUSTIFY, aItemInfos, &pDefaults));
+ rtl::Reference<SfxItemPool> pPool(new SfxItemPool("GridBrowserProperties", SBA_DEF_RANGEFORMAT, SBA_ATTR_ALIGN_HOR_JUSTIFY, aItemInfos, &pDefaults));
pPool->SetDefaultMetric( MapUnit::MapTwip ); // ripped, don't understand why
pPool->FreezeIdRanges(); // the same
@@ -855,7 +855,7 @@ bool callColumnFormatDialog(weld::Widget* _pParent,
}
pFormatDescriptor.reset();
- pPool.reset();
+ pPool.clear();
for (SfxPoolItem* pDefault : pDefaults)
delete pDefault;
diff --git a/dbaccess/source/ui/uno/unoadmin.cxx b/dbaccess/source/ui/uno/unoadmin.cxx
index f53df65a9e99..3d863b92e8f9 100644
--- a/dbaccess/source/ui/uno/unoadmin.cxx
+++ b/dbaccess/source/ui/uno/unoadmin.cxx
@@ -32,7 +32,6 @@ namespace dbaui
ODatabaseAdministrationDialog::ODatabaseAdministrationDialog(const Reference< XComponentContext >& _rxORB)
:ODatabaseAdministrationDialogBase(_rxORB)
- ,m_pItemPool(nullptr)
,m_pItemPoolDefaults(nullptr)
{
m_pCollection.reset( new ::dbaccess::ODsnTypeCollection(_rxORB) );
@@ -41,15 +40,10 @@ ODatabaseAdministrationDialog::ODatabaseAdministrationDialog(const Reference< XC
ODatabaseAdministrationDialog::~ODatabaseAdministrationDialog()
{
- if (m_xDialog)
- {
- ::osl::MutexGuard aGuard(m_aMutex);
- if (m_xDialog)
- {
- destroyDialog();
- ODbAdminDialog::destroyItemSet(m_pDatasourceItems, m_pItemPool, m_pItemPoolDefaults);
- }
- }
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if (m_xDialog)
+ destroyDialog();
+ ODbAdminDialog::destroyItemSet(m_pDatasourceItems, m_pItemPool, m_pItemPoolDefaults);
}
void ODatabaseAdministrationDialog::implInitialize(const Any& _rValue)