include/svx/sdr/contact/viewcontact.hxx               |    4 --
 include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx |    2 -
 svx/inc/sdr/contact/viewcontactofsdrpage.hxx          |    7 ----
 svx/source/sdr/contact/viewcontactofsdrpage.cxx       |   29 +-----------------
 svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx  |    9 +----
 5 files changed, 5 insertions(+), 46 deletions(-)

New commits:
commit 7fdf64f6e5c30dff5caea27ea92bee98137cce27
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Thu Oct 17 16:12:45 2024 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Oct 17 20:33:32 2024 +0200

    tdf#159007 Revert "optimization to skip SdrObject::GetViewContent()"
    
    This reverts commit 313be607903a381830600c0a60b2e299fcaec685.
    
    Change-Id: I2dc7489ecc302473edd763fd0e4d6784fadc9bb4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175044
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/include/svx/sdr/contact/viewcontact.hxx 
b/include/svx/sdr/contact/viewcontact.hxx
index 00b7f6253eae..a3ddcf760a58 100644
--- a/include/svx/sdr/contact/viewcontact.hxx
+++ b/include/svx/sdr/contact/viewcontact.hxx
@@ -153,9 +153,7 @@ public:
     // It is always possible to delete the VOCs, these are re-created on demand
     void flushViewObjectContacts(bool bWithHierarchy = true);
 
-    // helper around getPrimitive2DSequenceHierarchy to enable a given 
implementation
-    // to optimize getting a Primitive2DSequenceHierarchy for a child of index 
a
-    virtual void getPrimitive2DSequenceHierarchyOfIndex(
+    void getPrimitive2DSequenceHierarchyOfIndex(
         sal_uInt32 a, DisplayInfo& rDisplayInfo, ObjectContact& rObjectContact,
         drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor);
 };
diff --git a/include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx 
b/include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx
index 0ea6f307a22c..5989559c758e 100644
--- a/include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx
+++ b/include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx
@@ -56,8 +56,6 @@ public:
         This method cares for this, by retrieving the very original 
OutputDevice.
     */
     const OutputDevice* getPageViewOutputDevice() const;
-
-    static bool isObjectVisibleOnAnyLayer(const SdrObject& rObject, const 
SdrLayerIDSet& rLayers);
 };
 }
 
diff --git a/svx/inc/sdr/contact/viewcontactofsdrpage.hxx 
b/svx/inc/sdr/contact/viewcontactofsdrpage.hxx
index 0f7143aebcda..98d6f577e86e 100644
--- a/svx/inc/sdr/contact/viewcontactofsdrpage.hxx
+++ b/svx/inc/sdr/contact/viewcontactofsdrpage.hxx
@@ -113,19 +113,12 @@ class ViewContactOfPageHierarchy final : public 
ViewContactOfPageSubObject
     virtual ViewObjectContact& 
CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
     virtual void 
createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor&
 rVisitor) const override;
 
-    SdrObject& GetSdrObject(sal_uInt32 nIndex) const;
-
 public:
     explicit ViewContactOfPageHierarchy(ViewContactOfSdrPage& 
rParentViewContactOfSdrPage);
     virtual ~ViewContactOfPageHierarchy() override;
 
     virtual sal_uInt32 GetObjectCount() const override;
     virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const override;
-
-    // optimize version of parent impl to quicker skip hidden SdrObjects
-    virtual void getPrimitive2DSequenceHierarchyOfIndex(
-        sal_uInt32 a, DisplayInfo& rDisplayInfo, ObjectContact& rObjectContact,
-        drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) 
override;
 };
 
 class ViewContactOfGrid final : public ViewContactOfPageSubObject
diff --git a/svx/source/sdr/contact/viewcontactofsdrpage.cxx 
b/svx/source/sdr/contact/viewcontactofsdrpage.cxx
index c07bcffe762d..dee5ab7865db 100644
--- a/svx/source/sdr/contact/viewcontactofsdrpage.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrpage.cxx
@@ -18,7 +18,6 @@
  */
 
 #include <sdr/contact/viewcontactofsdrpage.hxx>
-#include <svx/sdr/contact/displayinfo.hxx>
 #include <svx/sdr/contact/viewobjectcontact.hxx>
 #include <svx/svdpage.hxx>
 #include <sdr/contact/viewobjectcontactofsdrpage.hxx>
@@ -28,7 +27,6 @@
 #include <tools/debug.hxx>
 #include <vcl/svapp.hxx>
 #include <svx/sdr/contact/objectcontact.hxx>
-#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
 #include <drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx>
 #include <drawinglayer/primitive2d/PolygonHairlinePrimitive2D.hxx>
 #include <drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx>
@@ -402,34 +400,11 @@ sal_uInt32 ViewContactOfPageHierarchy::GetObjectCount() 
const
     return getPage().GetObjCount();
 }
 
-SdrObject& ViewContactOfPageHierarchy::GetSdrObject(sal_uInt32 nIndex) const
+ViewContact& ViewContactOfPageHierarchy::GetViewContact(sal_uInt32 nIndex) 
const
 {
     SdrObject* pObj = getPage().GetObj(nIndex);
     assert(pObj && "ViewContactOfPageHierarchy::GetViewContact: Corrupt 
SdrObjList (!)");
-    return *pObj;
-}
-
-ViewContact& ViewContactOfPageHierarchy::GetViewContact(sal_uInt32 nIndex) 
const
-{
-    return GetSdrObject(nIndex).GetViewContact();
-}
-
-void ViewContactOfPageHierarchy::getPrimitive2DSequenceHierarchyOfIndex(
-    sal_uInt32 nIndex, DisplayInfo& rDisplayInfo, ObjectContact& 
rObjectContact,
-    drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor)
-{
-    SdrObject& rSdrObject(GetSdrObject(nIndex));
-
-    // optimization over parent impl to skip SdrObject::GetViewContent(), etc 
if the SdrObject isn't
-    // shown on the target layer. 
ViewObjectContactOfSdrobject::getPrimitive2DSequenceHierarchy does
-    // the same check, but after a set of allocations which is expensive in 
the case of SdrCaptions
-    // in a calc internal layer where there can be thousands of such objects.
-    if (!ViewObjectContactOfSdrObj::isObjectVisibleOnAnyLayer(rSdrObject, 
rDisplayInfo.GetProcessLayers()))
-        return;
-
-    ViewContact& rViewContact = rSdrObject.GetViewContact();
-    const ViewObjectContact& 
rCandidate(rViewContact.GetViewObjectContact(rObjectContact));
-    rCandidate.getPrimitive2DSequenceHierarchy(rDisplayInfo, rVisitor);
+    return pObj->GetViewContact();
 }
 
 ViewObjectContact& 
ViewContactOfGrid::CreateObjectSpecificViewObjectContact(ObjectContact& 
rObjectContact)
diff --git a/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx 
b/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx
index 0cc353a5b65c..f87906240338 100644
--- a/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx
@@ -50,14 +50,9 @@ ViewObjectContactOfSdrObj::~ViewObjectContactOfSdrObj()
 {
 }
 
-bool ViewObjectContactOfSdrObj::isObjectVisibleOnAnyLayer(const SdrObject& 
rSdrObject, const SdrLayerIDSet& rLayers)
+bool ViewObjectContactOfSdrObj::isPrimitiveVisibleOnAnyLayer(const 
SdrLayerIDSet& aLayers) const
 {
-    return rLayers.IsSet(rSdrObject.GetLayer());
-}
-
-bool ViewObjectContactOfSdrObj::isPrimitiveVisibleOnAnyLayer(const 
SdrLayerIDSet& rLayers) const
-{
-    return 
ViewObjectContactOfSdrObj::isObjectVisibleOnAnyLayer(getSdrObject(), rLayers);
+    return aLayers.IsSet(getSdrObject().GetLayer());
 }
 
 bool ViewObjectContactOfSdrObj::isPrimitiveVisible(const DisplayInfo& 
rDisplayInfo) const

Reply via email to