diff --git a/src/modules/module-session-manager/client-endpoint/endpoint-stream.c b/src/modules/module-session-manager/client-endpoint/endpoint-stream.c index 0c85c57db..40b9bf276 100644 --- a/src/modules/module-session-manager/client-endpoint/endpoint-stream.c +++ b/src/modules/module-session-manager/client-endpoint/endpoint-stream.c @@ -10,6 +10,7 @@ #include #include +#include #include "endpoint-stream.h" #include "client-endpoint.h" @@ -39,8 +40,8 @@ static int endpoint_stream_enum_params (void *object, int seq, struct endpoint_stream *this = data->stream; struct spa_pod *result; struct spa_pod *param; - uint8_t buffer[1024]; - struct spa_pod_builder b = { 0 }; + uint8_t buffer[2048]; + struct spa_pod_dynamic_builder b = { 0 }; uint32_t index; uint32_t next = start; uint32_t count = 0; @@ -55,15 +56,15 @@ static int endpoint_stream_enum_params (void *object, int seq, if (param == NULL || !spa_pod_is_object_id(param, id)) continue; - spa_pod_builder_init(&b, buffer, sizeof(buffer)); - if (spa_pod_filter(&b, &result, param, filter) != 0) - continue; + spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096); + if (spa_pod_filter(&b.b, &result, param, filter) == 0) { + pw_log_debug(NAME" %p: %d param %u", this, seq, index); + pw_endpoint_stream_resource_param(resource, seq, id, index, next, result); + count++; + } + spa_pod_dynamic_builder_clean(&b); - pw_log_debug(NAME" %p: %d param %u", this, seq, index); - - pw_endpoint_stream_resource_param(resource, seq, id, index, next, result); - - if (++count == num) + if (count == num) break; } return 0; diff --git a/src/modules/module-session-manager/client-endpoint/endpoint.c b/src/modules/module-session-manager/client-endpoint/endpoint.c index aa69f43b6..583844a4e 100644 --- a/src/modules/module-session-manager/client-endpoint/endpoint.c +++ b/src/modules/module-session-manager/client-endpoint/endpoint.c @@ -10,6 +10,7 @@ #include #include +#include #include "endpoint.h" #include "client-endpoint.h" @@ -39,8 +40,8 @@ static int endpoint_enum_params (void *object, int seq, struct endpoint *this = data->endpoint; struct spa_pod *result; struct spa_pod *param; - uint8_t buffer[1024]; - struct spa_pod_builder b = { 0 }; + uint8_t buffer[2048]; + struct spa_pod_dynamic_builder b = { 0 }; uint32_t index; uint32_t next = start; uint32_t count = 0; @@ -57,15 +58,15 @@ static int endpoint_enum_params (void *object, int seq, if (param == NULL || !spa_pod_is_object_id(param, id)) continue; - spa_pod_builder_init(&b, buffer, sizeof(buffer)); - if (spa_pod_filter(&b, &result, param, filter) != 0) - continue; + spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096); + if (spa_pod_filter(&b.b, &result, param, filter) == 0) { + pw_log_debug(NAME" %p: %d param %u", this, seq, index); + pw_endpoint_resource_param(resource, seq, id, index, next, result); + count++; + } + spa_pod_dynamic_builder_clean(&b); - pw_log_debug(NAME" %p: %d param %u", this, seq, index); - - pw_endpoint_resource_param(resource, seq, id, index, next, result); - - if (++count == num) + if (count == num) break; } return 0; diff --git a/src/modules/module-session-manager/client-session/endpoint-link.c b/src/modules/module-session-manager/client-session/endpoint-link.c index 207bb8a4e..f7f797115 100644 --- a/src/modules/module-session-manager/client-session/endpoint-link.c +++ b/src/modules/module-session-manager/client-session/endpoint-link.c @@ -10,6 +10,7 @@ #include #include +#include #include "endpoint-link.h" #include "client-session.h" @@ -39,8 +40,8 @@ static int endpoint_link_enum_params (void *object, int seq, struct endpoint_link *this = data->link; struct spa_pod *result; struct spa_pod *param; - uint8_t buffer[1024]; - struct spa_pod_builder b = { 0 }; + uint8_t buffer[2048]; + struct spa_pod_dynamic_builder b = { 0 }; uint32_t index; uint32_t next = start; uint32_t count = 0; @@ -55,15 +56,15 @@ static int endpoint_link_enum_params (void *object, int seq, if (param == NULL || !spa_pod_is_object_id(param, id)) continue; - spa_pod_builder_init(&b, buffer, sizeof(buffer)); - if (spa_pod_filter(&b, &result, param, filter) != 0) - continue; + spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096); + if (spa_pod_filter(&b.b, &result, param, filter) == 0) { + pw_log_debug(NAME" %p: %d param %u", this, seq, index); + pw_endpoint_link_resource_param(resource, seq, id, index, next, result); + count++; + } + spa_pod_dynamic_builder_clean(&b); - pw_log_debug(NAME" %p: %d param %u", this, seq, index); - - pw_endpoint_link_resource_param(resource, seq, id, index, next, result); - - if (++count == num) + if (count == num) break; } return 0; diff --git a/src/modules/module-session-manager/client-session/session.c b/src/modules/module-session-manager/client-session/session.c index 38a505746..9c1936874 100644 --- a/src/modules/module-session-manager/client-session/session.c +++ b/src/modules/module-session-manager/client-session/session.c @@ -10,6 +10,7 @@ #include #include +#include #include "session.h" #include "client-session.h" @@ -39,8 +40,8 @@ static int session_enum_params (void *object, int seq, struct session *this = data->session; struct spa_pod *result; struct spa_pod *param; - uint8_t buffer[1024]; - struct spa_pod_builder b = { 0 }; + uint8_t buffer[2048]; + struct spa_pod_dynamic_builder b = { 0 }; uint32_t index; uint32_t next = start; uint32_t count = 0; @@ -55,15 +56,15 @@ static int session_enum_params (void *object, int seq, if (param == NULL || !spa_pod_is_object_id(param, id)) continue; - spa_pod_builder_init(&b, buffer, sizeof(buffer)); - if (spa_pod_filter(&b, &result, param, filter) != 0) - continue; + spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096); + if (spa_pod_filter(&b.b, &result, param, filter) == 0) { + pw_log_debug(NAME" %p: %d param %u", this, seq, index); + pw_session_resource_param(resource, seq, id, index, next, result); + count++; + } + spa_pod_dynamic_builder_clean(&b); - pw_log_debug(NAME" %p: %d param %u", this, seq, index); - - pw_session_resource_param(resource, seq, id, index, next, result); - - if (++count == num) + if (count == num) break; } return 0; diff --git a/src/modules/module-session-manager/endpoint-link.c b/src/modules/module-session-manager/endpoint-link.c index 8b6a313b4..86f402d63 100644 --- a/src/modules/module-session-manager/endpoint-link.c +++ b/src/modules/module-session-manager/endpoint-link.c @@ -10,6 +10,7 @@ #include #include #include +#include #define MAX_PARAMS 32 @@ -84,8 +85,8 @@ static int method_enum_params(void *object, int seq, struct param_data *pdata; struct spa_pod *result; struct spa_pod *param; - uint8_t buffer[1024]; - struct spa_pod_builder b = { 0 }; + uint8_t buffer[2048]; + struct spa_pod_dynamic_builder b = { 0 }; uint32_t index; uint32_t next = start; uint32_t count = 0; @@ -103,15 +104,15 @@ static int method_enum_params(void *object, int seq, param = *pw_array_get_unchecked(&pdata->params, index, struct spa_pod*); - spa_pod_builder_init(&b, buffer, sizeof(buffer)); - if (spa_pod_filter(&b, &result, param, filter) != 0) - continue; + spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096); + if (spa_pod_filter(&b.b, &result, param, filter) == 0) { + pw_log_debug(NAME" %p: %d param %u", impl, seq, index); + pw_endpoint_link_resource_param(d->resource, seq, id, index, next, result); + count++; + } + spa_pod_dynamic_builder_clean(&b); - pw_log_debug(NAME" %p: %d param %u", impl, seq, index); - - pw_endpoint_link_resource_param(d->resource, seq, id, index, next, result); - - if (++count == num) + if (count == num) return 0; } } diff --git a/src/modules/module-session-manager/endpoint-stream.c b/src/modules/module-session-manager/endpoint-stream.c index df08b32ee..35c9acfd9 100644 --- a/src/modules/module-session-manager/endpoint-stream.c +++ b/src/modules/module-session-manager/endpoint-stream.c @@ -10,6 +10,7 @@ #include #include #include +#include #define MAX_PARAMS 32 @@ -84,8 +85,8 @@ static int method_enum_params(void *object, int seq, struct param_data *pdata; struct spa_pod *result; struct spa_pod *param; - uint8_t buffer[1024]; - struct spa_pod_builder b = { 0 }; + uint8_t buffer[2048]; + struct spa_pod_dynamic_builder b = { 0 }; uint32_t index; uint32_t next = start; uint32_t count = 0; @@ -103,15 +104,15 @@ static int method_enum_params(void *object, int seq, param = *pw_array_get_unchecked(&pdata->params, index, struct spa_pod*); - spa_pod_builder_init(&b, buffer, sizeof(buffer)); - if (spa_pod_filter(&b, &result, param, filter) != 0) - continue; + spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096); + if (spa_pod_filter(&b.b, &result, param, filter) == 0) { + pw_log_debug(NAME" %p: %d param %u", impl, seq, index); + pw_endpoint_stream_resource_param(d->resource, seq, id, index, next, result); + count++; + } + spa_pod_dynamic_builder_clean(&b); - pw_log_debug(NAME" %p: %d param %u", impl, seq, index); - - pw_endpoint_stream_resource_param(d->resource, seq, id, index, next, result); - - if (++count == num) + if (count == num) return 0; } } diff --git a/src/modules/module-session-manager/endpoint.c b/src/modules/module-session-manager/endpoint.c index 8f9429e2c..ed54609ef 100644 --- a/src/modules/module-session-manager/endpoint.c +++ b/src/modules/module-session-manager/endpoint.c @@ -9,6 +9,7 @@ #include #include +#include #include #define MAX_PARAMS 32 @@ -84,8 +85,8 @@ static int method_enum_params(void *object, int seq, struct param_data *pdata; struct spa_pod *result; struct spa_pod *param; - uint8_t buffer[1024]; - struct spa_pod_builder b = { 0 }; + uint8_t buffer[2048]; + struct spa_pod_dynamic_builder b = { 0 }; uint32_t index; uint32_t next = start; uint32_t count = 0; @@ -103,15 +104,15 @@ static int method_enum_params(void *object, int seq, param = *pw_array_get_unchecked(&pdata->params, index, struct spa_pod*); - spa_pod_builder_init(&b, buffer, sizeof(buffer)); - if (spa_pod_filter(&b, &result, param, filter) != 0) - continue; + spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096); + if (spa_pod_filter(&b.b, &result, param, filter) == 0) { + pw_log_debug(NAME" %p: %d param %u", impl, seq, index); + pw_endpoint_resource_param(d->resource, seq, id, index, next, result); + count++; + } + spa_pod_dynamic_builder_clean(&b); - pw_log_debug(NAME" %p: %d param %u", impl, seq, index); - - pw_endpoint_resource_param(d->resource, seq, id, index, next, result); - - if (++count == num) + if (count == num) return 0; } } diff --git a/src/modules/module-session-manager/session.c b/src/modules/module-session-manager/session.c index 94f434474..ebe6871f1 100644 --- a/src/modules/module-session-manager/session.c +++ b/src/modules/module-session-manager/session.c @@ -10,6 +10,7 @@ #include #include #include +#include #define MAX_PARAMS 32 @@ -84,8 +85,8 @@ static int method_enum_params(void *object, int seq, struct param_data *pdata; struct spa_pod *result; struct spa_pod *param; - uint8_t buffer[1024]; - struct spa_pod_builder b = { 0 }; + uint8_t buffer[2048]; + struct spa_pod_dynamic_builder b = { 0 }; uint32_t index; uint32_t next = start; uint32_t count = 0; @@ -103,15 +104,15 @@ static int method_enum_params(void *object, int seq, param = *pw_array_get_unchecked(&pdata->params, index, struct spa_pod*); - spa_pod_builder_init(&b, buffer, sizeof(buffer)); - if (spa_pod_filter(&b, &result, param, filter) != 0) - continue; + spa_pod_dynamic_builder_init(&b, buffer, sizeof(buffer), 4096); + if (spa_pod_filter(&b.b, &result, param, filter) == 0) { + pw_log_debug(NAME" %p: %d param %u", impl, seq, index); + pw_session_resource_param(d->resource, seq, id, index, next, result); + count++; + } + spa_pod_dynamic_builder_clean(&b); - pw_log_debug(NAME" %p: %d param %u", impl, seq, index); - - pw_session_resource_param(d->resource, seq, id, index, next, result); - - if (++count == num) + if (count == num) return 0; } }