Changeset 1a33b80 in ingen


Ignore:
Timestamp:
Oct 25, 2015, 10:47:28 AM (2 years ago)
Author:
David Robillard <d@…>
Branches:
groups, master, nodeless, parallel, parameters, sequencefix, tasks
Children:
70fe348
Parents:
ffae1d8
Message:

Fix saving and loading of copy-pasted blocks

git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5785 a436a847-0d15-0410-975c-d299462d15a1

Location:
src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src/Parser.cpp

    rffae1d8 r1a33b80  
    290290    std::string type_uri;
    291291    for (const Sord::URI& prototype : prototype_predicates) {
    292         Sord::Iter i = model.find(subject, prototype, Sord::Node());
    293         if (!i.end() && i.get_object().type() == Sord::Node::URI) {
    294             type_uri = relative_uri(base_uri,
    295                                     i.get_object().to_string(),
    296                                     false);
    297             break;
     292        for (Sord::Iter p = model.find(subject, prototype, Sord::Node()); !p.end(); ++p) {
     293            const std::string prot_uri = relative_uri(
     294                base_uri, p.get_object().to_string(), false);
     295            if (serd_uri_string_has_scheme((const uint8_t*)prot_uri.c_str())) {
     296                /* Ignore prototypes that are relative to this bundle, they are
     297                   blocks (probably from copy and paste), but we want files or
     298                   LV2 plugins here. */
     299                type_uri = prot_uri;
     300                break;
     301            }
    298302        }
    299303    }
  • src/Serialiser.cpp

    rffae1d8 r1a33b80  
    564564        if (!skip_property(_world.uris(), key)) {
    565565            if (p.second.type() == _world.uris().atom_URI &&
    566                 !strncmp((const char*)p.second.get_body(), "ingen:/", 7)) {
    567                 /* Value is an ingen:/ URI, relative to the running engine.
    568                    Chop the prefix and save the path relative to the bundle.
     566                !strncmp((const char*)p.second.get_body(), "ingen:/graph/", 13)) {
     567                /* Value is a graph URI relative to the running engine.
     568                   Chop the prefix and save the path relative to the graph file.
    569569                   This allows saving references to bundle resources. */
    570570                sratom_write(_sratom, unmap, 0,
     
    572572                             sord_node_to_serd_node(key.c_obj()),
    573573                             p.second.type(), p.second.size(),
    574                              (const char*)p.second.get_body() + 7);
     574                             (const char*)p.second.get_body() + 13);
    575575            } else {
    576576                sratom_write(_sratom, unmap, 0,
  • src/server/events/CreateBlock.cpp

    rffae1d8 r1a33b80  
    3434namespace Events {
    3535
    36 CreateBlock::CreateBlock(Engine&                     engine,
    37                          SPtr<Interface>             client,
    38                          int32_t                     id,
    39                          SampleCount                 timestamp,
    40                          const Raul::Path&           path,
    41                          const Resource::Properties& properties)
     36CreateBlock::CreateBlock(Engine&               engine,
     37                         SPtr<Interface>       client,
     38                         int32_t               id,
     39                         SampleCount           timestamp,
     40                         const Raul::Path&     path,
     41                         Resource::Properties& properties)
    4242    : Event(engine, client, id, timestamp)
    4343    , _path(path)
  • src/server/events/CreateBlock.hpp

    rffae1d8 r1a33b80  
    3939{
    4040public:
    41     CreateBlock(Engine&                     engine,
    42                 SPtr<Interface>             client,
    43                 int32_t                     id,
    44                 SampleCount                 timestamp,
    45                 const Raul::Path&           block_path,
    46                 const Resource::Properties& properties);
     41    CreateBlock(Engine&               engine,
     42                SPtr<Interface>       client,
     43                int32_t               id,
     44                SampleCount           timestamp,
     45                const Raul::Path&     block_path,
     46                Resource::Properties& properties);
    4747
    4848    ~CreateBlock();
     
    5454private:
    5555    Raul::Path            _path;
    56     Resource::Properties  _properties;
     56    Resource::Properties& _properties;
    5757    Events::Get::Response _update;
    5858    GraphImpl*            _graph;
Note: See TracChangeset for help on using the changeset viewer.