* rename cdbus header include guards to use CDBUS_ instead of LASH_DBUS_
* remove dbus/error.h and dbus/error.c
error.h contained lash/ladish specific error strings and
lash_dbus_error() prototype. lash_dbus_error() is renamed to
cdbus_error() and its implementation is moved to dbus/method.c. The
D-Bus error strings that have DBUS_ERROR_XXX matches are removed and
their uses are switched to the libdbus variants. The ladish specific
error strings are moved to dbus_constants.h
ATM ladish_graph_copy() is always copied without skipping hidden elements.
skip_hidden mechanism must be replaced with filtering in callbacks,
because it is tricky and because app filtering does not belong to
generic graph object.
The project state now is can now have more than one state. The project
unload sequence now first removes all connections, then stopps all
apps, and as last step - clears the graph. When project load fails,
ladish_room_unload_project() is not called anymore, because unloading
of room even without apps is now a multistep process. Instead, a new
function, ladish_room_clear_project(), is introduced. It is called
when project load fails and as last step in project unload.
For real jack ports it works because different apps have different jack client.
For a2j ports, it did not work because the jack client is same and the
a2j_fake_jack_port_name is same too, because the instead of alsa client name,
the app name is used now
For studio saves, save only studio vgraph a2j ports.
For room project saves, save only room vgraph a2j ports.
If there is not a2j ports for the vgraph being saved, an empty a2j client will not be saved anymore
Same or derivate project can be loaded in more than one room. This will cause more than one port
with given uuid to be added to the jack graph. This changeset uses vgraph-port_uuid pair when searching
for port that was added at earlier project load stage. For this to work, when ports are created and added
to the jack graph, the vgraph handle is stored in the port object.
The room link ports were searched by uuid gloablly.
When two rooms had same ports uuid, always the first one was found.
Then when setting the graph override uuid for port, the port
override uuid of the second room was set over the port of the first
room. Thus the first room port was getting wrong override uuid and the
second room port override uuid was never set.
The solution implemented is to search for the port within the already
found room client. Then set the override uuid for the found port.
Room client in the studio graph has uuid of the room and is created
when room is loaded. This ensures that later when room-link ports are
added, the port of the right room client will be found. Then the
override uuid will be set to the proper port.
* Helper functions in daemon/save.c will be used in project save functionality as well
* Graph iteration callbacks now receive the handle of the graph being iterated
* Indention is now more flexible because now it is not string but an integer
This is needed to properly cleanup room graph during room destruction.
ladish_graph_is_empty() returns false if there are hidden connections.
Also it makes no sense to have hidden connections for removed ports