summaryrefslogtreecommitdiff
path: root/svl
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2017-06-06 20:53:00 +0200
committerEike Rathke <erack@redhat.com>2017-06-06 20:53:47 +0200
commitf300a627b9a88eb8814cc35844ed7c6aa7f19379 (patch)
tree34d067c5a937d5aced3eb7810aab4571ed225b6b /svl
parentc2b256084b086b63a13d16f65d1be2966f4febb3 (diff)
Perf-sc: tdf#100709 SfxPoolItem::IsVoidItem() instead of dynamic_cast
SfxItemSet::GetItemState() before, Ir: 4 048 231 416 after, Ir: 2 577 117 709 Change-Id: I26d8b91ad5d851011a670b38b7b98e5582c319cf
Diffstat (limited to 'svl')
-rw-r--r--svl/source/items/itemset.cxx2
-rw-r--r--svl/source/items/poolitem.cxx9
2 files changed, 10 insertions, 1 deletions
diff --git a/svl/source/items/itemset.cxx b/svl/source/items/itemset.cxx
index e69418456833..ddd821d85218 100644
--- a/svl/source/items/itemset.cxx
+++ b/svl/source/items/itemset.cxx
@@ -440,7 +440,7 @@ SfxItemState SfxItemSet::GetItemState( sal_uInt16 nWhich,
// Different ones are present
return SfxItemState::DONTCARE;
- if ( dynamic_cast<const SfxVoidItem *>(*ppFnd) != nullptr )
+ if ( (*ppFnd)->IsVoidItem() )
return SfxItemState::DISABLED;
if (ppItem)
diff --git a/svl/source/items/poolitem.cxx b/svl/source/items/poolitem.cxx
index ba27df64fcf1..5c2c77cae919 100644
--- a/svl/source/items/poolitem.cxx
+++ b/svl/source/items/poolitem.cxx
@@ -136,6 +136,10 @@ SfxPoolItem* SfxPoolItem::CloneSetWhich( sal_uInt16 nNewWhich ) const
return pItem;
}
+bool SfxPoolItem::IsVoidItem() const
+{
+ return false;
+}
SfxPoolItem* SfxVoidItem::CreateDefault()
{
@@ -186,6 +190,11 @@ SfxPoolItem* SfxVoidItem::Clone(SfxItemPool *) const
return new SfxVoidItem(*this);
}
+bool SfxVoidItem::IsVoidItem() const
+{
+ return true;
+}
+
void SfxPoolItem::ScaleMetrics( long /*lMult*/, long /*lDiv*/ )
{
}