On Fri, 30 Sep 2016 23:25:27 +0200 Armin Krezović <krezovic.ar...@gmail.com> wrote:
> This is required for implementing output layout setting > which relies on current output width and height, and > those are calculated in this function. > > It also changes the function signature to make use > of already stored scale and transform values in the > weston_output object. > > Signed-off-by: Armin Krezović <krezovic.ar...@gmail.com> > --- > libweston/compositor.c | 31 ++++++++++++++++++------------- > libweston/compositor.h | 2 ++ > 2 files changed, 20 insertions(+), 13 deletions(-) Hi, I think this would need a bit more thought on the API. The requirement is that one has to set some output parameters (video mode, transform, scale) before the output size is available. Output size then is needed for doing the layout. IMO it would make more sense to add a new function weston_output_get_size(), which would take into account the currently set (pending) parameters and compute the resulting size. This is also good in the long term since we would like to make struct weston_output opaque to the libweston user. We are going to need a getter for the size anyway. Thanks, pq > > diff --git a/libweston/compositor.c b/libweston/compositor.c > index d552e18..7ebc08c 100644 > --- a/libweston/compositor.c > +++ b/libweston/compositor.c > @@ -67,10 +67,6 @@ > #define DEFAULT_REPAINT_WINDOW 7 /* milliseconds */ > > static void > -weston_output_transform_scale_init(struct weston_output *output, > - uint32_t transform, uint32_t scale); > - > -static void > weston_compositor_build_view_list(struct weston_compositor *compositor); > > static void weston_mode_switch_finish(struct weston_output *output, > @@ -86,7 +82,7 @@ static void weston_mode_switch_finish(struct weston_output > *output, > pixman_region32_copy(&old_output_region, &output->region); > > /* Update output region and transformation matrix */ > - weston_output_transform_scale_init(output, output->transform, > output->current_scale); > + weston_output_transform_scale_init(output); > > pixman_region32_init(&output->previous_damage); > pixman_region32_init_rect(&output->region, output->x, output->y, > @@ -4212,17 +4208,25 @@ weston_output_update_matrix(struct weston_output > *output) > weston_matrix_invert(&output->inverse_matrix, &output->matrix); > } > > -static void > -weston_output_transform_scale_init(struct weston_output *output, uint32_t > transform, uint32_t scale) > +WL_EXPORT void > +weston_output_transform_scale_init(struct weston_output *output) > { > - output->transform = transform; > - output->native_scale = scale; > - output->current_scale = scale; > + /* Make sure transform and scale are set */ > + assert(output->scale); > + assert(output->transform != UINT32_MAX); > + > + /* Make sure output->current_mode has been constructed. */ > + assert(output->current_mode); > + > + /* TODO: Use output->original_scale in weston_output_set_scale() */ > + output->original_scale = output->scale; > + output->native_scale = output->scale; > + output->current_scale = output->scale; > > convert_size_by_transform_scale(&output->width, &output->height, > output->current_mode->width, > output->current_mode->height, > - transform, scale); > + output->transform, output->scale); > } > > static void > @@ -4448,6 +4452,8 @@ weston_output_init(struct weston_output *output, > output->scale = 0; > /* Can't use -1 on uint32_t and 0 is valid enum value */ > output->transform = UINT32_MAX; > + > + output->current_mode = NULL; > } > > /** Adds weston_output object to pending output list. > @@ -4529,9 +4535,8 @@ weston_output_enable(struct weston_output *output) > output->x = x; > output->y = y; > output->dirty = 1; > - output->original_scale = output->scale; > > - weston_output_transform_scale_init(output, output->transform, > output->scale); > + weston_output_transform_scale_init(output); > weston_output_init_zoom(output); > > weston_output_init_geometry(output, x, y); > diff --git a/libweston/compositor.h b/libweston/compositor.h > index 3e486d5..a39b327 100644 > --- a/libweston/compositor.h > +++ b/libweston/compositor.h > @@ -1596,6 +1596,8 @@ weston_output_activate_zoom(struct weston_output > *output, > void > weston_output_update_matrix(struct weston_output *output); > void > +weston_output_transform_scale_init(struct weston_output *output); > +void > weston_output_move(struct weston_output *output, int x, int y); > > void
pgpoM1NJnvSdr.pgp
Description: OpenPGP digital signature
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel