[Spice-devel] [PATCH spice-gtk] channel-display: add spice_frame_free() helper
Christophe Fergeau
cfergeau at redhat.com
Tue Jan 22 14:10:24 UTC 2019
On Mon, Jan 21, 2019 at 04:29:56PM +0000, Frediano Ziglio wrote:
> Heavily based on a former patch from Victor Toso removing some issues
> (https://lists.freedesktop.org/archives/spice-devel/2018-April/043168.html)
>
> The SpiceFrame is created in channel-display.c but it is currently
> freed at each decoders' end. A helper function can reduce some code
> and makes it easier to check if the function is called, what time was
> called, etc.
"what time it was called"
>
> In channel-display-mjpeg.c this means removing free_spice_frame()
> function.
>
> In channel-display-gst.c, SpiceFrame is under SpiceGstFrame so we just
> need to be careful to call spice_frame_free() once by removing the
> unref function parameter to gst_buffer_new_wrapped_full();
>
> The patch is using g_clear_pointer() everywhere that makes sense
> (checking for NULL before calling free and setting pointer to NULL
> afterwards)
Doing that in a preliminary commit + adding some static
spice_free_frame() functions in channel-display-gst.c would probably
have cut the diff size in half, making it easier to focus on the actual
changes during the review.
>
> The ownedship management is more clear:
'ownership'
> - SpiceFrame owns frame data (as it has a pointer to it);
> - spice_frame_free releases frame data;
> - SpiceFrame interface is simplified;
> - GstBuffer owns SpiceFrame (not only frame data);
> - SpiceGstFrame owns GstBuffer.
This last bullet point makes SpiceGstFrame a bit harder to understand
imo, since now you have frame, sample and buffer members, so you have
to understand the role of each of these.
>
> Signed-off-by: Victor Toso <victortoso at redhat.com>
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
> src/channel-display-gst.c | 25 +++++++++++--------------
> src/channel-display-mjpeg.c | 28 +++++++---------------------
> src/channel-display-priv.h | 5 +----
> src/channel-display.c | 15 ++++++++++++---
> 4 files changed, 31 insertions(+), 42 deletions(-)
>
> diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
> index 0b871a71..a6ad4f1c 100644
> --- a/src/channel-display-gst.c
> +++ b/src/channel-display-gst.c
> @@ -79,6 +79,7 @@ typedef enum {
>
> struct SpiceGstFrame {
> GstClockTime timestamp;
> + GstBuffer *buffer;
> SpiceFrame *frame;
> GstSample *sample;
Might be worth using 'encoded_buffer' and 'decoded_sample' as names?
Rest of the patch looks good to me.
Acked-by: Christophe Fergeau <cfergeau at redhat.com>
Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20190122/aa3d62e2/attachment.sig>
More information about the Spice-devel
mailing list