From e3fc8173f877d4371832bbb90f54ffdb16ae74a0 Mon Sep 17 00:00:00 2001 From: Thomas Holder Date: Wed, 17 Apr 2024 19:41:57 +0200 Subject: [PATCH] Remove default_delete Remove all GC::Anchored related logic from SPDocument. --- src/document.cpp | 10 ---------- src/document.h | 28 ++-------------------------- src/inkscape-application.cpp | 2 -- src/ui/dialog/symbols.cpp | 2 -- 4 files changed, 2 insertions(+), 40 deletions(-) diff --git a/src/document.cpp b/src/document.cpp index af627281df..391429f423 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -750,16 +750,6 @@ SPDocument *SPDocument::createNewDocFromMem(gchar const *buffer, gint length, bo return doc; } -std::unique_ptr SPDocument::doRef() -{ - Inkscape::GC::anchor(this); - return std::unique_ptr(this); -} -std::unique_ptr SPDocument::doRef() const -{ - return const_cast(this)->doRef(); -} - /// guaranteed not to return nullptr Inkscape::Util::Unit const* SPDocument::getDisplayUnit() { diff --git a/src/document.h b/src/document.h index 596847f935..6c9eb93f8f 100644 --- a/src/document.h +++ b/src/document.h @@ -41,9 +41,6 @@ #include "3rdparty/libcroco/src/cr-cascade.h" // for CRCascade -#include "gc-anchored.h" -#include "gc-finalized.h" - #include "inkgc/gc-managed.h" #include "composite-undo-stack-observer.h" @@ -100,9 +97,7 @@ namespace Inkscape { } // namespace Inkscape /// Typed SVG document implementation. -class SPDocument : public Inkscape::GC::Managed<>, - public Inkscape::GC::Finalized, - public Inkscape::GC::Anchored +class SPDocument : public Inkscape::GC::Managed { public: @@ -113,7 +108,7 @@ public: // Fundamental ------------------------ SPDocument(); - ~SPDocument() override; + ~SPDocument(); SPDocument(SPDocument const &) = delete; // no copy void operator=(SPDocument const &) = delete; // no assign @@ -145,10 +140,6 @@ public: bool getVirgin() { return virgin; } const SPDocument *getOriginalDocument() const { return _original_document; } - //! Increment reference count by one and return a self-dereferencing pointer. - std::unique_ptr doRef(); - std::unique_ptr doRef() const; - bool isModifiedSinceSave() const { return modified_since_save; } bool isModifiedSinceAutoSave() const { return modified_since_autosave; } void setModifiedSinceSave(bool const modified = true); @@ -508,21 +499,6 @@ public: void emitReconstructionFinish(); }; -namespace std { -template <> -struct default_delete { - void operator()(SPDocument *ptr) const { - Inkscape::GC::release(ptr); - if (ptr->_anchored_refcount() == 0) { - // Explicit delete required to free SPDocument - // see https://gitlab.com/inkscape/inkscape/-/issues/2723 - delete ptr; - } - } -}; - -}; // namespace std - /* * Ideas: How to overcome style invalidation nightmare * diff --git a/src/inkscape-application.cpp b/src/inkscape-application.cpp index fff9eddcaf..6186044f2e 100644 --- a/src/inkscape-application.cpp +++ b/src/inkscape-application.cpp @@ -359,8 +359,6 @@ InkscapeApplication::document_close(SPDocument* document) std::cerr << "InkscapeApplication::close_document: Document not registered with application." << std::endl; } - Inkscape::GC::release(document); - assert(document->_anchored_refcount() == 0); delete document; } else { diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp index fb240a01a4..dd3a9a508d 100644 --- a/src/ui/dialog/symbols.cpp +++ b/src/ui/dialog/symbols.cpp @@ -439,8 +439,6 @@ SymbolsDialog::SymbolsDialog(const char* prefsPath) SymbolsDialog::~SymbolsDialog() { - Inkscape::GC::release(preview_document); - assert(preview_document->_anchored_refcount() == 0); delete preview_document; } -- GitLab