Let fbsplash display images even when a second buffer is active
authorDan Fandrich <dan@coneharvesters.com>
Wed, 26 Jan 2011 19:30:34 +0000 (11:30 -0800)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sat, 5 Feb 2011 02:34:52 +0000 (03:34 +0100)
If a previous application uses double buffering and makes the
second buffer visible, fbsplash's images (written to the first
buffer) otherwise won't be visible.

Signed-off-by: Dan Fandrich <dan@coneharvesters.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
miscutils/fbsplash.c

index 6b84563..1509923 100644 (file)
@@ -83,11 +83,14 @@ static void fb_open(const char *strfb_device)
 
        // map the device in memory
        G.addr = mmap(NULL,
-                       G.scr_var.xres * G.scr_var.yres
+                       G.scr_var.xres * G.scr_var.yres_virtual
                        * BYTES_PER_PIXEL /*(G.scr_var.bits_per_pixel / 8)*/,
                        PROT_WRITE, MAP_SHARED, fbfd, 0);
        if (G.addr == MAP_FAILED)
                bb_perror_msg_and_die("mmap");
+
+       // point to the start of the visible screen
+       G.addr += G.scr_var.yoffset * G.scr_fix.line_length + G.scr_var.xoffset * BYTES_PER_PIXEL;
        close(fbfd);
 }