[PATCH 2/5] winegstreamer: Create, start and stop a bin container.

Zebediah Figura zfigura at codeweavers.com
Mon Feb 21 18:23:06 CST 2022


Sorry for the slow review here; I meant to reply earlier but had a 
computer part die on me...

On 2/18/22 11:27, Rémi Bernon wrote:
> @@ -62,6 +63,12 @@ NTSTATUS wg_transform_destroy(void *args)
>   {
>       struct wg_transform *transform = args;
>   
> +    if (transform->container)
> +        gst_element_set_state(transform->container, GST_STATE_NULL);
> +
> +    if (transform->container)
> +        g_object_unref(transform->container);
> +

These conditions can be collapsed.

Actually I'm not much of a fan of calling destruction functions from the 
error path of the corresponding creation function like this; I find it 
tends to lead to problems later.

> @@ -111,6 +122,13 @@ NTSTATUS wg_transform_create(void *args)
>       gst_pad_set_element_private(transform->my_sink, transform);
>       gst_pad_set_chain_function(transform->my_sink, transform_sink_chain_cb);
>   
> +    status = STATUS_UNSUCCESSFUL;
> +
> +    gst_element_set_state(transform->container, GST_STATE_PAUSED);
> +    ret = gst_element_get_state(transform->container, NULL, NULL, -1);
> +    if (ret == GST_STATE_CHANGE_FAILURE)
> +        goto done;
> +

I'd rather set "status" inside the if block here.

(Although given that we never interpret the status value, there doesn't 
seem to be much point in setting it to anything specific; i.e. we could 
just always set it to STATUS_UNSUCCESSFUL and have done.)



More information about the wine-devel mailing list