diff --git a/src/document.cpp b/src/document.cpp index af627281dff5b5c38928ff7e6e8da4472e4876bb..391429f42310aae7c6a2fc9a27bb143c617648f1 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 596847f93544f0de4860d0473629694b45a85ec1..6c9eb93f8f11bed2d9b5a153cb0cb29386000162 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 fff9eddcaf0f9a0f06a9aa262831fe4c36272437..6186044f2ec296f1ab00f35a97941dbe9f6b9d1a 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 fb240a01a4b216bcb80f89017d601f7ae173a526..dd3a9a508dd7f9a91fb10f97f9f72eccc0cb445a 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; }