[RFC PATCH v1] utils: ipc: Do not define variables in signal handler upfront
Paul Elder
paul.elder at ideasonboard.com
Tue Apr 22 12:49:34 CEST 2025
Hi Barnabás,
Thanks for the patch.
On Wed, Mar 26, 2025 at 11:13:24AM +0100, Barnabás Pőcze wrote:
> Defining the variables at the beginning of the function forces the types
> to be default constructible, which may not be desirable; furthermore, it
> also forces the move/copy assignment operator to be used when the
> deserialized value is retrieved.
Ah, I see. Nice catch.
>
> Having `T val = f()` has the advantage of benefitting from potential RVO
> as well as not requiring `T` to be default constructible, so generate
> code in that form by calling `deserialize_call()` with `declare=true`.
>
> Signed-off-by: Barnabás Pőcze <barnabas.pocze at ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
> ---
> .../generators/libcamera_templates/module_ipa_proxy.cpp.tmpl | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl
> index ce3cc5ab6..07165821e 100644
> --- a/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl
> +++ b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl
> @@ -239,10 +239,7 @@ void {{proxy_name}}::{{method.mojom_name}}IPC(
> [[maybe_unused]] size_t dataSize,
> [[maybe_unused]] const std::vector<SharedFD> &fds)
> {
> -{%- for param in method.parameters %}
> - {{param|name}} {{param.mojom_name}};
> -{%- endfor %}
> -{{proxy_funcs.deserialize_call(method.parameters, 'data', 'fds', false, false, true, 'dataSize')}}
> +{{proxy_funcs.deserialize_call(method.parameters, 'data', 'fds', false, true, true, 'dataSize')}}
> {{method.mojom_name}}.emit({{method.parameters|params_comma_sep}});
> }
> {% endfor %}
> --
> 2.49.0
>
More information about the libcamera-devel
mailing list