summaryrefslogtreecommitdiffstats
path: root/meta-agl-drm-lease/recipes-core/psplash/files/0010-Rework-flip-as-function-pointer.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-drm-lease/recipes-core/psplash/files/0010-Rework-flip-as-function-pointer.patch')
-rw-r--r--meta-agl-drm-lease/recipes-core/psplash/files/0010-Rework-flip-as-function-pointer.patch141
1 files changed, 141 insertions, 0 deletions
diff --git a/meta-agl-drm-lease/recipes-core/psplash/files/0010-Rework-flip-as-function-pointer.patch b/meta-agl-drm-lease/recipes-core/psplash/files/0010-Rework-flip-as-function-pointer.patch
new file mode 100644
index 00000000..2d897a37
--- /dev/null
+++ b/meta-agl-drm-lease/recipes-core/psplash/files/0010-Rework-flip-as-function-pointer.patch
@@ -0,0 +1,141 @@
+From e1004cd1a1252a17219f5ebd13749c91e8ddc09b Mon Sep 17 00:00:00 2001
+From: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
+Date: Mon, 25 Apr 2022 10:59:49 +0300
+Subject: [PATCH 10/17] Rework flip as function pointer
+
+It allows making parse_command and psplash_main independent of FB.
+
+drm-backend backport from:
+https://patchwork.yoctoproject.org/project/yocto/cover/20220425075954.10427-1-vasyl.vavrychuk@opensynergy.com/
+
+Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
+---
+ psplash-draw.h | 3 +++
+ psplash-fb.c | 8 +++++---
+ psplash-fb.h | 3 ---
+ psplash.c | 16 ++++++++--------
+ 4 files changed, 16 insertions(+), 14 deletions(-)
+
+diff --git a/psplash-draw.h b/psplash-draw.h
+index 44546b0..292ddd9 100644
+--- a/psplash-draw.h
++++ b/psplash-draw.h
+@@ -36,6 +36,9 @@ typedef struct PSplashCanvas
+ int green_length;
+ int blue_offset;
+ int blue_length;
++
++ void *priv;
++ void (*flip)(struct PSplashCanvas *canvas, int sync);
+ }
+ PSplashCanvas;
+
+diff --git a/psplash-fb.c b/psplash-fb.c
+index dd50a5a..d41c477 100644
+--- a/psplash-fb.c
++++ b/psplash-fb.c
+@@ -18,9 +18,10 @@ psplash_wait_for_vsync(PSplashFB *fb)
+ fprintf(stderr, "Error, FB vsync ioctl [%d]\n", err);
+ }
+
+-void
+-psplash_fb_flip(PSplashFB *fb, int sync)
++static void
++psplash_fb_flip(PSplashCanvas *canvas, int sync)
+ {
++ PSplashFB *fb = canvas->priv;
+ char *tmp;
+
+ if (fb->double_buffering) {
+@@ -154,7 +155,8 @@ psplash_fb_new (int angle, int fbdev_id)
+ }
+
+ memset (fb, 0, sizeof(PSplashFB));
+-
++ fb->canvas.priv = fb;
++ fb->canvas.flip = psplash_fb_flip;
+ fb->fd = -1;
+
+ if ((fb->fd = open (fbdev, O_RDWR)) < 0)
+diff --git a/psplash-fb.h b/psplash-fb.h
+index 1b16bd5..979d23a 100644
+--- a/psplash-fb.h
++++ b/psplash-fb.h
+@@ -40,7 +40,4 @@ psplash_fb_destroy (PSplashFB *fb);
+ PSplashFB*
+ psplash_fb_new (int angle, int fbdev_id);
+
+-void
+-psplash_fb_flip(PSplashFB *fb, int sync);
+-
+ #endif
+diff --git a/psplash.c b/psplash.c
+index c234d46..036dfb1 100644
+--- a/psplash.c
++++ b/psplash.c
+@@ -100,7 +100,7 @@ psplash_draw_progress(PSplashCanvas *canvas, int value)
+ #endif /* PSPLASH_SHOW_PROGRESS_BAR */
+
+ static int
+-parse_command (PSplashFB *fb, char *string)
++parse_command(PSplashCanvas *canvas, char *string)
+ {
+ char *command;
+
+@@ -116,7 +116,7 @@ parse_command (PSplashFB *fb, char *string)
+ char *arg = strtok(NULL, "\0");
+
+ if (arg)
+- psplash_draw_msg(&fb->canvas, arg);
++ psplash_draw_msg(canvas, arg);
+ }
+ #ifdef PSPLASH_SHOW_PROGRESS_BAR
+ else if (!strcmp(command,"PROGRESS"))
+@@ -124,7 +124,7 @@ parse_command (PSplashFB *fb, char *string)
+ char *arg = strtok(NULL, "\0");
+
+ if (arg)
+- psplash_draw_progress(&fb->canvas, atoi(arg));
++ psplash_draw_progress(canvas, atoi(arg));
+ }
+ #endif
+ else if (!strcmp(command,"QUIT"))
+@@ -132,12 +132,12 @@ parse_command (PSplashFB *fb, char *string)
+ return 1;
+ }
+
+- psplash_fb_flip(fb, 0);
++ canvas->flip(canvas, 0);
+ return 0;
+ }
+
+ void
+-psplash_main (PSplashFB *fb, int pipe_fd, int timeout)
++psplash_main(PSplashCanvas *canvas, int pipe_fd, int timeout)
+ {
+ int err;
+ ssize_t length = 0;
+@@ -200,7 +200,7 @@ psplash_main (PSplashFB *fb, int pipe_fd, int timeout)
+ continue;
+ }
+
+- if (parse_command(fb, cmd))
++ if (parse_command(canvas, cmd))
+ return;
+
+ length -= cmdlen;
+@@ -345,9 +345,9 @@ main (int argc, char** argv)
+ * text and progress bar change which overwrite the specific areas with every
+ * update.
+ */
+- psplash_fb_flip(fb, 1);
++ canvas->flip(canvas, 1);
+
+- psplash_main (fb, pipe_fd, 0);
++ psplash_main(canvas, pipe_fd, 0);
+
+ psplash_fb_destroy (fb);
+
+--
+2.25.1
+