On some toolchains/architectures, a char with -1 value is not equal
to the integer -1, resulting in this code to think that it got
an unrecognized command line option
Don't directly expose the state change methods. Only expose an activate
method for nodes that indicates if the node should be scheduled or not.
Let the link automatically negotiate two active nodes.
Make some defines for properties.
Use link property to make passive links. Passive links don't activate
the nodes.
Make sure the mainloop quits when quit is called before run.
Add signal handlers for daemon to shut down
Add destroy listeners for modules and do cleanup
Fix some leaks
Simplify port registration in new nodes
Hide some more data structures
Let the node implementation take care of the reuse_buffer signal because
then we can get to the graph nodes to find the destination port.
Destroy modules in core cleanup. Modules should undo everything they
have done.
Activate the link after we negotiated format and buffers.
Use device manager to add/remove all video providers dynamically, remove
v4l2 specific code.
Get the client proxy from subscribe instead of waiting for the
subscription callback. This way we can actually make an error on
failure.
Clean up the objects when the server disappears.
Remove subscription from the server, we don't need it. Install server
objects in bus_acquired.
Move source and source-output to the server side again.
Make the daemon track objects per sender so that we can remove them
when the sender disappears.
Add a source gstreamer element
Expose error in context
Make it possible to set the source in the error state
Add properties to a stream and use those to get a source-output
Fix signal for new-buffer
Attach the socket source to the thread default mainloop
Make subscribe cancellable.
Propagate state and error in context.
Add bus handler for v4l2 source
Use negotiated properties to set capsfilter in v4l2
Fix subscribe in test-client
Track senders in the subscribe object and aggregate events from all
connected clients. This allows each client to get a complete view of all
the objects of pulsevideo. With all the source objects available, we can
then to the selection of the source on each client.
Remove the CreatSourceOutput on the Client1 object but let the client
select a good source and call CreateSourceOutput directly on the source.
This avoid going through the server to get a connection and the client
can just as well select a source.
Add a state property to the source and make it such that it can do async
state changes.
Remove the source provider object, each client can now directly see the
objects of another clients so there is no need for intermediate objects
in the server.
Track remote and local sources separately and make SourceProvider1
interfaces for remote objects so that we get the subscription right.
Move disconnect from the Manager1 to Client1 interface and implement
in the context.