This variable describes whether we have systemd and libsystemd,
not just <systemd/sd-daemon.h>
While at it, sneak in a fix for the warning message:
"systemd should never ever be capitalized".
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Make sure the hook lists are emptied so that the removed callbacks
are called. The callers should really remove the hook they installed
themselves but this is a last chance to fix things up.
Remove the hooks we installed on objects in the destroy/free event
or before calling _destroy. This is not really needed but it is
a nice thing to do because it calls the hook removed callbacks.
Callers of _destroy should be able to reply on the fact that no
more events will be emited on the proxy whitout being required to
remove the hooks themselves.
Because of the refcount in the proxy, it can stay alive after the
_destroy and being used to emit events, like emit an error in
protocol-native.
Fixes#366
Implement a minimal version of the LOAD_MODULE and UNLOAD_MODULE
stream commands. The only supported module for now is the null
sink.
Modules are stored on a per-client bases, so that when clients
are disconnected, the modules they loaded is removed too.
This is enough to allow GNOME Network Displays to register a sink.
We don't need to bind to the core object again, we can just use the
events on the manager core.
We don't actually have info when the Core is added so don't try to
use it to get defaults for the client.
Use the manager core info in server info.
Always remix the channels to match the ones on the device even if
that means upmixing.
This will make mono streams go to all inputs of the device instead
of just one.
Fixes#355
A rescan can trigger a new rescan and with a blocking rountrip this
can recursively never end. Catch a rescan while rescanning and queue
it for when we end the current scan.
Fixes#364
Drop the current client context to check permissions. This restores the
previous behaviour and fixes the permissions set by the portal module.
This fixes screen sharing again.
Fixes#362
After we receive the properties from the client, do the access check
and then pause client messages until the session manager sets
client permissions.
Without this we would do access control right after creating the
client which would block the client messages, which would then never
register the global of the client, which would leave the client
blocked forever because the session manager doesn't see the client
and can't configure permissions.
Fixes#352