diff --git a/src/proc/asset/sequence.cpp b/src/proc/asset/sequence.cpp index 0090a62ef..7e1d4ec63 100644 --- a/src/proc/asset/sequence.cpp +++ b/src/proc/asset/sequence.cpp @@ -23,6 +23,7 @@ #include "proc/asset/sequence.hpp" //#include "proc/mobject/session/track.hpp" +#include "proc/assetmanager.hpp" //#include "proc/mobject/placement.hpp" //#include "proc/mobject/session/mobjectfactory.hpp" @@ -33,10 +34,20 @@ namespace asset { /** create an empty default configured Sequence */ Sequence::Sequence (const Asset::Ident& idi) : Struct (idi) -// : track (makeDefaultTrack ()) -// , clips (0) + { } + + + PSequence + Sequence::create (Asset::Ident const& idi) { + REQUIRE (getRegistry); + PSequence newSeq (AssetManager::instance().wrap (*new Sequence (idi))); + getRegistry().append (newSeq); + + ENSURE (newSeq); + ENSURE (getRegistry().isRegistered(*newSeq)); + return newSeq; } diff --git a/src/proc/asset/sequence.hpp b/src/proc/asset/sequence.hpp index c24cfd3c0..6da5544b3 100644 --- a/src/proc/asset/sequence.hpp +++ b/src/proc/asset/sequence.hpp @@ -53,6 +53,8 @@ //#include "proc/mobject/mobject.hpp" //#include "proc/mobject/placement.hpp" #include "proc/mobject/mobject-ref.hpp" +#include "lib/p.hpp" +#include "lib/element-tracker.hpp" //#include //#include @@ -71,21 +73,26 @@ namespace session { namespace asset { + class Sequence; + typedef lumiera::P PSequence; + + /** * TODO type comment */ class Sequence : public Struct + , public lib::AutoRegistered { typedef mobject::session::RTrack RTrack; + Sequence (Ident const&); ///////////TODO pass in track here + public: - void detach() { TODO("Session-Sequence registration"); } + /** create and register a new Sequence instance */ + static PSequence create (Asset::Ident const& idi); - protected: - Sequence (const Asset::Ident& idi); - friend class StructFactoryImpl; }; diff --git a/src/proc/asset/struct-factory-impl.hpp b/src/proc/asset/struct-factory-impl.hpp index 3a28e80e4..fc2221d55 100644 --- a/src/proc/asset/struct-factory-impl.hpp +++ b/src/proc/asset/struct-factory-impl.hpp @@ -230,7 +230,9 @@ namespace asset { // - track doesn't exist --> create and root attach it // - track exists and is root attached, but belongs already to a sequence --> throw // - track exists, but isn't root attached ---> what do do here? steal it?? - return new Sequence (createIdent (caps)); ///////////TODO fed track in here + PSequence newSequence = Sequence::create (createIdent (caps)); ///////////TODO fed track in here + ENSURE (newSequence); + return newSequence.get(); }