Changeset 1a33b80 in ingen


Ignore:
Timestamp:
10/25/15 10:47:28 (22 months ago)
Author:
David Robillard <d@…>
Branches:
master, groups, nodeless, parallel, parameters, sequencefix
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

    rade7143 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

    r1d92e1e 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

    r1831955 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

    r3353177 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.