From 03f0a7c9bac3e61126fc852e543b8ea254471eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Tue, 14 Dec 2021 13:45:23 +0100 Subject: [PATCH] pipewire: module-session-manager: harmonize type of `change_mask` The `pw_*_info` structures in core pipewire all have 64-bit change masks. Convert the change masks in the session manager extension to 64-bit as the differing sizes can cause problems. This introduces an API and ABI break unfortunately, but due to the limited number of users of the session manager extension, it was deemed safe. See wireplumber#49 --- .../module-session-manager/protocol-native.c | 16 ++++++++-------- .../extensions/session-manager/introspect.h | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/modules/module-session-manager/protocol-native.c b/src/modules/module-session-manager/protocol-native.c index 971d01779..9ad65215b 100644 --- a/src/modules/module-session-manager/protocol-native.c +++ b/src/modules/module-session-manager/protocol-native.c @@ -126,7 +126,7 @@ marshal_pw_session_info(struct spa_pod_builder *b, spa_pod_builder_add(b, SPA_POD_Int(info->version), SPA_POD_Int(info->id), - SPA_POD_Int(info->change_mask), + SPA_POD_Long(info->change_mask), NULL); push_dict(b, info->props); push_param_infos(b, info->n_params, info->params); @@ -143,7 +143,7 @@ do { \ spa_pod_parser_get(p, \ SPA_POD_Int(&version), \ SPA_POD_Int(&(info)->id), \ - SPA_POD_Int(&(info)->change_mask), \ + SPA_POD_Long(&(info)->change_mask), \ NULL) < 0) \ return -EINVAL; \ \ @@ -169,7 +169,7 @@ marshal_pw_endpoint_info(struct spa_pod_builder *b, SPA_POD_String(info->media_class), SPA_POD_Int(info->direction), SPA_POD_Int(info->flags), - SPA_POD_Int(info->change_mask), + SPA_POD_Long(info->change_mask), SPA_POD_Int(info->n_streams), SPA_POD_Int(info->session_id), NULL); @@ -192,7 +192,7 @@ do { \ SPA_POD_String(&(info)->media_class), \ SPA_POD_Int(&(info)->direction), \ SPA_POD_Int(&(info)->flags), \ - SPA_POD_Int(&(info)->change_mask), \ + SPA_POD_Long(&(info)->change_mask), \ SPA_POD_Int(&(info)->n_streams), \ SPA_POD_Int(&(info)->session_id), \ NULL) < 0) \ @@ -218,7 +218,7 @@ marshal_pw_endpoint_stream_info(struct spa_pod_builder *b, SPA_POD_Int(info->id), SPA_POD_Int(info->endpoint_id), SPA_POD_String(info->name), - SPA_POD_Int(info->change_mask), + SPA_POD_Long(info->change_mask), SPA_POD_Pod(info->link_params), NULL); push_dict(b, info->props); @@ -238,7 +238,7 @@ do { \ SPA_POD_Int(&(info)->id), \ SPA_POD_Int(&(info)->endpoint_id), \ SPA_POD_String(&(info)->name), \ - SPA_POD_Int(&(info)->change_mask), \ + SPA_POD_Long(&(info)->change_mask), \ SPA_POD_Pod(&(info)->link_params), \ NULL) < 0) \ return -EINVAL; \ @@ -266,7 +266,7 @@ marshal_pw_endpoint_link_info(struct spa_pod_builder *b, SPA_POD_Int(info->output_stream_id), SPA_POD_Int(info->input_endpoint_id), SPA_POD_Int(info->input_stream_id), - SPA_POD_Int(info->change_mask), + SPA_POD_Long(info->change_mask), SPA_POD_Int(info->state), SPA_POD_String(info->error), NULL); @@ -290,7 +290,7 @@ do { \ SPA_POD_Int(&(info)->output_stream_id), \ SPA_POD_Int(&(info)->input_endpoint_id), \ SPA_POD_Int(&(info)->input_stream_id), \ - SPA_POD_Int(&(info)->change_mask), \ + SPA_POD_Long(&(info)->change_mask), \ SPA_POD_Int(&(info)->state), \ SPA_POD_String(&(info)->error), \ NULL) < 0) \ diff --git a/src/pipewire/extensions/session-manager/introspect.h b/src/pipewire/extensions/session-manager/introspect.h index 2d50ba058..a35a70b56 100644 --- a/src/pipewire/extensions/session-manager/introspect.h +++ b/src/pipewire/extensions/session-manager/introspect.h @@ -53,7 +53,7 @@ struct pw_session_info { #define PW_SESSION_CHANGE_MASK_PROPS (1 << 0) #define PW_SESSION_CHANGE_MASK_PARAMS (1 << 1) #define PW_SESSION_CHANGE_MASK_ALL ((1 << 2)-1) - uint32_t change_mask; /**< bitfield of changed fields since last call */ + uint64_t change_mask; /**< bitfield of changed fields since last call */ struct spa_dict *props; /**< extra properties */ struct spa_param_info *params; /**< parameters */ uint32_t n_params; /**< number of items in \a params */ @@ -73,7 +73,7 @@ struct pw_endpoint_info { #define PW_ENDPOINT_CHANGE_MASK_PROPS (1 << 2) #define PW_ENDPOINT_CHANGE_MASK_PARAMS (1 << 3) #define PW_ENDPOINT_CHANGE_MASK_ALL ((1 << 4)-1) - uint32_t change_mask; /**< bitfield of changed fields since last call */ + uint64_t change_mask; /**< bitfield of changed fields since last call */ uint32_t n_streams; /**< number of streams available */ uint32_t session_id; /**< the id of the controlling session */ struct spa_dict *props; /**< extra properties */ @@ -91,7 +91,7 @@ struct pw_endpoint_stream_info { #define PW_ENDPOINT_STREAM_CHANGE_MASK_PROPS (1 << 1) #define PW_ENDPOINT_STREAM_CHANGE_MASK_PARAMS (1 << 2) #define PW_ENDPOINT_STREAM_CHANGE_MASK_ALL ((1 << 3)-1) - uint32_t change_mask; /**< bitfield of changed fields since last call */ + uint64_t change_mask; /**< bitfield of changed fields since last call */ struct spa_pod *link_params; /**< information for linking this stream */ struct spa_dict *props; /**< extra properties */ struct spa_param_info *params; /**< parameters */ @@ -111,7 +111,7 @@ struct pw_endpoint_link_info { #define PW_ENDPOINT_LINK_CHANGE_MASK_PROPS (1 << 1) #define PW_ENDPOINT_LINK_CHANGE_MASK_PARAMS (1 << 2) #define PW_ENDPOINT_LINK_CHANGE_MASK_ALL ((1 << 3)-1) - uint32_t change_mask; /**< bitfield of changed fields since last call */ + uint64_t change_mask; /**< bitfield of changed fields since last call */ enum pw_endpoint_link_state state; /**< the state of the link */ char *error; /**< error string if state == ERROR */ struct spa_dict *props; /**< extra properties */