Add version to hello

This commit is contained in:
Wim Taymans 2018-10-27 17:19:50 +01:00
parent 537598726b
commit 2accfc84d7
5 changed files with 15 additions and 13 deletions

View file

@ -30,14 +30,14 @@
#include "connection.h"
static void core_marshal_hello(void *object)
static void core_marshal_hello(void *object, uint32_t version)
{
struct pw_proxy *proxy = object;
struct spa_pod_builder *b;
b = pw_protocol_native_begin_proxy(proxy, PW_CORE_PROXY_METHOD_HELLO);
spa_pod_builder_add_struct(b, "P", NULL);
spa_pod_builder_add_struct(b, "i", version);
pw_protocol_native_end_proxy(proxy, b);
}
@ -364,13 +364,14 @@ static int core_demarshal_hello(void *object, void *data, size_t size)
{
struct pw_resource *resource = object;
struct spa_pod_parser prs;
void *ptr;
uint32_t version;
spa_pod_parser_init(&prs, data, size, 0);
if (spa_pod_parser_get(&prs, "[P]", &ptr, NULL) < 0)
if (spa_pod_parser_get(&prs, "[ i", &version,
NULL) < 0)
return -EINVAL;
pw_resource_do(resource, struct pw_core_proxy_methods, hello, 0);
pw_resource_do(resource, struct pw_core_proxy_methods, hello, 0, version);
return 0;
}

View file

@ -134,12 +134,13 @@ static const struct pw_resource_events resource_events = {
.destroy = destroy_registry_resource
};
static void core_hello(void *object)
static void core_hello(void *object, uint32_t version)
{
struct pw_resource *resource = object;
struct pw_core *this = resource->core;
pw_log_debug("core %p: hello from source %p", this, resource);
pw_log_debug("core %p: hello %d from source %p", this, version, resource);
this->info.change_mask = PW_CORE_CHANGE_MASK_ALL;
pw_core_resource_info(resource, &this->info);
}

View file

@ -115,9 +115,9 @@ struct pw_core_proxy_methods {
uint32_t version;
/**
* Start a conversation with the server. This will send
* the core info and server types.
* the core info..
*/
void (*hello) (void *object);
void (*hello) (void *object, uint32_t version);
/**
* Do server roundtrip
*
@ -183,9 +183,9 @@ struct pw_core_proxy_methods {
};
static inline void
pw_core_proxy_hello(struct pw_core_proxy *core)
pw_core_proxy_hello(struct pw_core_proxy *core, uint32_t version)
{
pw_proxy_do((struct pw_proxy*)core, struct pw_core_proxy_methods, hello);
pw_proxy_do((struct pw_proxy*)core, struct pw_core_proxy_methods, hello, version);
}
static inline void

View file

@ -403,7 +403,7 @@ static void port_enum_params(void *object, uint32_t id, uint32_t index, uint32_t
}
static const struct pw_port_proxy_methods port_methods = {
PW_VERSION_NODE_PROXY_METHODS,
PW_VERSION_PORT_PROXY_METHODS,
.enum_params = port_enum_params
};

View file

@ -378,7 +378,7 @@ static int do_connect(struct pw_remote *remote)
pw_core_proxy_add_listener(remote->core_proxy, &impl->core_listener, &core_proxy_events, remote);
pw_core_proxy_hello(remote->core_proxy);
pw_core_proxy_hello(remote->core_proxy, PW_VERSION_CORE);
pw_core_proxy_client_update(remote->core_proxy, &remote->properties->dict);
pw_core_proxy_sync(remote->core_proxy, 0);