[pulseaudio-discuss] [PATCH 2/3] device-port: Add mechanism to free implementation data

Tanu Kaskinen tanu.kaskinen at linux.intel.com
Fri Sep 20 05:21:06 PDT 2013


On Fri, 2013-09-20 at 17:27 +0530, Arun Raghavan wrote:
> This will be needed if the implementation data stores pointers to
> additional data that needs to be freed as well.
> ---
>  src/pulsecore/device-port.c | 3 +++
>  src/pulsecore/device-port.h | 3 +++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c
> index 0b65d5c..ac2c95e 100644
> --- a/src/pulsecore/device-port.c
> +++ b/src/pulsecore/device-port.c
> @@ -94,6 +94,9 @@ static void device_port_free(pa_object *o) {
>      pa_assert(p);
>      pa_assert(pa_device_port_refcnt(p) == 0);
>  
> +    if (p->impl_free)
> +        p->impl_free(p);
> +
>      if (p->proplist)
>          pa_proplist_free(p->proplist);
>  
> diff --git a/src/pulsecore/device-port.h b/src/pulsecore/device-port.h
> index b10d554..b5e80a5 100644
> --- a/src/pulsecore/device-port.h
> +++ b/src/pulsecore/device-port.h
> @@ -54,6 +54,9 @@ struct pa_device_port {
>      pa_direction_t direction;
>      int64_t latency_offset;
>  
> +    /* Free the extra implementation specific data. Called before other members are freed. */
> +    void (*impl_free)(pa_device_port *port);
> +
>      /* .. followed by some implementation specific data */
>  };
>  

It's sad that this is needed, but ack. (I have probably said this
earlier: I'd like ports to not require refcounting, in which case they
would probably be always owned by cards.)

-- 
Tanu



More information about the pulseaudio-discuss mailing list