OSDN Git Service

media: coda: split marking last meta into helper function
authorPhilipp Zabel <p.zabel@pengutronix.de>
Wed, 18 Mar 2020 18:35:34 +0000 (19:35 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 14 Apr 2020 09:54:31 +0000 (11:54 +0200)
Split marking the last metadata entry into a helper function to simplify
coda_decoder_cmd.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/coda/coda-common.c

index 096e8e1..ee25435 100644 (file)
@@ -1153,6 +1153,26 @@ static int coda_try_decoder_cmd(struct file *file, void *fh,
        return v4l2_m2m_ioctl_try_decoder_cmd(file, fh, dc);
 }
 
+static bool coda_mark_last_meta(struct coda_ctx *ctx)
+{
+       struct coda_buffer_meta *meta;
+
+       coda_dbg(1, ctx, "marking last meta\n");
+
+       spin_lock(&ctx->buffer_meta_lock);
+       if (list_empty(&ctx->buffer_meta_list)) {
+               spin_unlock(&ctx->buffer_meta_lock);
+               return false;
+       }
+
+       meta = list_last_entry(&ctx->buffer_meta_list, struct coda_buffer_meta,
+                              list);
+       meta->last = true;
+
+       spin_unlock(&ctx->buffer_meta_lock);
+       return true;
+}
+
 static int coda_decoder_cmd(struct file *file, void *fh,
                            struct v4l2_decoder_cmd *dc)
 {
@@ -1197,22 +1217,10 @@ static int coda_decoder_cmd(struct file *file, void *fh,
                                stream_end = true;
                        }
                } else {
-                       coda_dbg(1, ctx, "marking last meta\n");
-
-                       /* Mark last meta */
-                       spin_lock(&ctx->buffer_meta_lock);
-                       if (!list_empty(&ctx->buffer_meta_list)) {
-                               struct coda_buffer_meta *meta;
-
-                               meta = list_last_entry(&ctx->buffer_meta_list,
-                                                      struct coda_buffer_meta,
-                                                      list);
-                               meta->last = true;
+                       if (coda_mark_last_meta(ctx))
                                stream_end = true;
-                       } else {
+                       else
                                wakeup = true;
-                       }
-                       spin_unlock(&ctx->buffer_meta_lock);
                }
 
                if (stream_end) {