[PATCH weston 0/6] Clean-up, doc, and bug fix patches

Pekka Paalanen ppaalanen at gmail.com
Wed Feb 25 23:17:15 PST 2015


On Wed, 25 Feb 2015 13:03:46 -0800
Bryce Harrington <bryce at osg.samsung.com> wrote:

> > --- a/src/compositor.c
> > +++ b/src/compositor.c
> > @@ -1078,22 +1078,21 @@ weston_view_assign_output(struct weston_view *ev)
> >  }
> >  
> >  static void
> > -view_compute_bbox(struct weston_view *view, int32_t sx, int32_t sy,
> > -		  int32_t width, int32_t height,
> > +view_compute_bbox(struct weston_view *view, const pixman_box32_t *inbox,
> >  		  pixman_region32_t *bbox)
> >  {
> >  	float min_x = HUGE_VALF,  min_y = HUGE_VALF;
> >  	float max_x = -HUGE_VALF, max_y = -HUGE_VALF;
> 
> Maybe check inbox != NULL ?

Why bother, it's even a static function so very much internal. :-)


> On Wed, Feb 25, 2015 at 03:48:55PM +0200, Pekka Paalanen wrote:
> > From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> > 
> > These are independent tiny patches I have accumulated in my
> > development tree, all stemming from trying to understand how
> > Weston's region tracking works.
> > 
> > Pekka Paalanen (6):
> >   compositor: document view->transform.* regions
> >   compositor: note, weston_surface_damage does it wrong
> >   compositor: remove dead code from weston_output_move()
> >   compositor: weston_output::region is in global coords
> >   compositor: let view_compute_bbox() take a box32_t
> >   compositor: fix plane coords in view_accumulate_damage()
> 
> For this last one, for the purposes of the 1.8 release notes it might be
> nice to explain in the changelog how one might trigger the bug condition
> or elaborate on the symptoms, just in case someone actually does run
> into it.

To be honest, I'm not sure you can trigger it. The primary plane is
always at 0,0 so the calculation mistake is a no-op for that.
Non-primary planes always have a single surface with the DRM backend,
and there we do not use the damage region at all IIRC, because we just
push the whole buffer to scanout. No other backend uses non-primary
planes.

And the DRM backend's hw overlays are disabled unless force-enabled by
a debug binding. DRM cursor and direct scanout weston_planes ignore the
actual damage regions, I believe.

Maybe you could trigger something when there is damage on a non-primary
plane from a client, and that damage needs to be transmitted to the
primary plane due to transparency. I'm not sure, and honestly not really
interested in trying to trigger it, it's too complicated. (Oh wait,
damage shouldn't always be transmitted from plane to the below, only
when a view moves out of the plane... or something.)

Anyway, the symptom would be misplaced damage. You'll never notice too
much damage unless you specifically debug damage handling. Missing
damage might be noticeable under suitable conditions.

> >  src/compositor.c | 47 ++++++++++++++++++++++++-----------------------
> >  src/compositor.h | 14 +++++++++++++-
> >  2 files changed, 37 insertions(+), 24 deletions(-)
> 
> For the set,
> 
> Reviewed-by: Bryce Harrington <bryce at osg.samsung.com>

Thank you very much!
All pushed:
   6764bbe..502f5e0  master -> master


Thanks,
pq


More information about the wayland-devel mailing list