Allow a LV2 plugin to mark the session dirty
If some plugin-internal state changes (GUI <> Plugin e.g. load a sample) no ports change and the host does not know that the plugin state has changed. The session may be closed without save. This is a prototype using an ardour.org URI, pending upstream lv2plug.in
This commit is contained in:
parent
c09e467595
commit
215d88ac87
|
@ -92,6 +92,7 @@ public:
|
||||||
uint32_t auto_end;
|
uint32_t auto_end;
|
||||||
uint32_t auto_parameter;
|
uint32_t auto_parameter;
|
||||||
uint32_t auto_value;
|
uint32_t auto_value;
|
||||||
|
uint32_t state_Dirty;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -2692,6 +2692,18 @@ LV2Plugin::connect_and_run(BufferSet& bufs,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Intercept state dirty message
|
||||||
|
if (_has_state_interface /* && (flags & PORT_DIRTYMSG)*/) {
|
||||||
|
LV2_Atom* atom = (LV2_Atom*)(data - sizeof(LV2_Atom));
|
||||||
|
if (atom->type == _uri_map.urids.atom_Blank ||
|
||||||
|
atom->type == _uri_map.urids.atom_Object) {
|
||||||
|
LV2_Atom_Object* obj = (LV2_Atom_Object*)atom;
|
||||||
|
if (obj->body.otype == _uri_map.urids.state_Dirty) {
|
||||||
|
_session.set_dirty ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Intercept patch change messages to emit PropertyChanged signal
|
// Intercept patch change messages to emit PropertyChanged signal
|
||||||
|
|
|
@ -70,6 +70,7 @@ URIMap::URIDs::init(URIMap& uri_map)
|
||||||
auto_end = uri_map.uri_to_id(LV2_AUTOMATE_URI__end);
|
auto_end = uri_map.uri_to_id(LV2_AUTOMATE_URI__end);
|
||||||
auto_parameter = uri_map.uri_to_id(LV2_AUTOMATE_URI__parameter);
|
auto_parameter = uri_map.uri_to_id(LV2_AUTOMATE_URI__parameter);
|
||||||
auto_value = uri_map.uri_to_id(LV2_AUTOMATE_URI__value);
|
auto_value = uri_map.uri_to_id(LV2_AUTOMATE_URI__value);
|
||||||
|
state_Dirty = uri_map.uri_to_id("http://ardour.org/lv2/state#Dirty"); // XXX http://lv2plug.in/ns/ext/state/#dirty
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue