From ea85d5ef490324ef676fa45ee6bdb5d58483096b Mon Sep 17 00:00:00 2001 From: Kirill Smelkov Date: Fri, 2 Nov 2012 09:10:33 -0300 Subject: [PATCH] --- yaml --- r: 357093 b: refs/heads/master c: d40fbf8d52ae6c9b7fe9d76eeab624afc3a3f1ea h: refs/heads/master i: 357091: 9da750e2f0a15d9cbe17528f5bb99611660bc265 v: v3 --- [refs] | 2 +- trunk/drivers/media/platform/vivi.c | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 215b2077f4b9..33faec5eb4cb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 13908f330f91996b6d59355aa7860553dd1093d5 +refs/heads/master: d40fbf8d52ae6c9b7fe9d76eeab624afc3a3f1ea diff --git a/trunk/drivers/media/platform/vivi.c b/trunk/drivers/media/platform/vivi.c index ec832e9461a8..7abb046e0fa5 100644 --- a/trunk/drivers/media/platform/vivi.c +++ b/trunk/drivers/media/platform/vivi.c @@ -512,12 +512,22 @@ static void gen_twopix(struct vivi_dev *dev, u8 *buf, int colorpos, bool odd) static void precalculate_line(struct vivi_dev *dev) { - int w; - - for (w = 0; w < dev->width * 2; w++) { - int colorpos = w / (dev->width / 8) % 8; - - gen_twopix(dev, dev->line + w * dev->pixelsize, colorpos, w & 1); + unsigned pixsize = dev->pixelsize; + unsigned pixsize2 = 2*pixsize; + int colorpos; + u8 *pos; + + for (colorpos = 0; colorpos < 16; ++colorpos) { + u8 pix[8]; + int wstart = colorpos * dev->width / 8; + int wend = (colorpos+1) * dev->width / 8; + int w; + + gen_twopix(dev, &pix[0], colorpos % 8, 0); + gen_twopix(dev, &pix[pixsize], colorpos % 8, 1); + + for (w = wstart/2*2, pos = dev->line + w*pixsize; w < wend; w += 2, pos += pixsize2) + memcpy(pos, pix, pixsize2); } }