[PATCH] screenshooter: correct output ordering of screencast recording when Y-flip is off

Bryce Harrington bryce at osg.samsung.com
Wed Oct 14 16:12:02 PDT 2015


On Sun, Oct 04, 2015 at 05:39:43PM +0300, Giulio Camuffo wrote:
> 2015-07-07 13:06 GMT+03:00 Tomohito Esaki <etom at igel.co.jp>:
> > The screenshooter encoder wrote the output from either top-to-bottom or
> > bottom-to-top, depending on the Y-flip setting, but wcap-decode only
> > decodes from bottom-to-top. Make the encoder always output from
> > bottom-to-top, to match the decoder, and flip the input (source)
> > according to the Y-flip setting.
> 
> I tried removing the WESTON_CAP_CAPTURE_YFLIP cap in the gl-renderer
> and manually flipping the image after the glReadPixels and indeed the
> output of wcap-decode was inverted. This patch fixes the issue and
> looks good to me.
> 
> Reviewed-by: Giulio Camuffo <giuliocamuffo at gmail.com>

Thanks, pushed:

remote: I: patch #53809 updated using rev 9054e4c8c4d0d1aa5d996458d2f142edac7833c8
remote: I: 1 patch(es) updated to state Accepted.
To ssh://git.freedesktop.org/git/wayland/weston
   a6714fa..9054e4c  master -> master

> > Signed-off-by: Tomohito Esaki <etom at igel.co.jp>
> > ---
> >  src/screenshooter.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/screenshooter.c b/src/screenshooter.c
> > index b7b8dce..6dae12f 100644
> > --- a/src/screenshooter.c
> > +++ b/src/screenshooter.c
> > @@ -417,14 +417,14 @@ weston_recorder_frame_notify(struct wl_listener *listener, void *data)
> >                                 compositor->read_format, recorder->rect,
> >                                 r[i].x1, y_orig, width, height);
> >
> > -               s = recorder->rect;
> >                 p = outbuf;
> >                 run = prev = 0; /* quiet gcc */
> >                 for (j = 0; j < height; j++) {
> >                         if (do_yflip)
> > -                               y_orig = r[i].y2 - j - 1;
> > +                               s = recorder->rect + width * j;
> >                         else
> > -                               y_orig = r[i].y1 + j;
> > +                               s = recorder->rect + width * (height - j - 1);
> > +                       y_orig = r[i].y2 - j - 1;
> >                         d = recorder->frame + stride * y_orig + r[i].x1;
> >
> >                         for (k = 0; k < width; k++) {
> > --
> > 1.8.0
> >
> > _______________________________________________
> > wayland-devel mailing list
> > wayland-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list