On Tue, 4 Nov 2014 10:47:33 -0600 Derek Foreman <[email protected]> wrote:
> This breaks weston_output_mode_switch() into 3 functions: > weston_output_mode_set_native() > weston_output_mode_switch_to_temporary() > weston_output_mode_switch_to_native() > > Differences from previous behaviour: > SET_NATIVE didn't set current_scale (now it does) > SET_TEMPORARY could set mode and scale independently - now it can't. > > Signed-off-by: Derek Foreman <[email protected]> > --- > In previous version weston_output_mode_switch_to_temporary didn't > call weston_mode_switch_finish() correctly > > desktop-shell/shell.c | 12 +-- > fullscreen-shell/fullscreen-shell.c | 13 +-- > src/compositor-rdp.c | 2 +- > src/compositor.c | 185 > ++++++++++++++++++++---------------- > src/compositor.h | 17 ++-- > 5 files changed, 123 insertions(+), 106 deletions(-) ... > @@ -211,25 +148,113 @@ weston_output_switch_mode(struct weston_output > *output, struct weston_mode *mode > pixman_region32_fini(&old_output_region); > > /* notify clients of the changes */ > - if (notify_mode_changed || notify_scale_changed) { > - wl_resource_for_each(resource, &output->resource_list) { > - if(notify_mode_changed) { > - wl_output_send_mode(resource, > - mode->flags | > WL_OUTPUT_MODE_CURRENT, > - mode->width, > - mode->height, > - mode->refresh); > - } > + wl_resource_for_each(resource, &output->resource_list) { > + if (mode_changed) { > + wl_output_send_mode(resource, > + output->current_mode->flags, > + output->current_mode->width, > + output->current_mode->height, > + output->current_mode->refresh); > + } > + > + if (scale_changed) > + wl_output_send_scale(resource, output->current_scale); This and the original code have a bug here. The 'scale' event was added in interface version 2 according to wayland.xml, just like 'done', so need to check the resource version before sending. Would you like to send another patch fixing that? > + > + if (wl_resource_get_version(resource) >= 2) > + wl_output_send_done(resource); > + } > +} > > - if (notify_scale_changed) > - wl_output_send_scale(resource, scale); > +WL_EXPORT int > +weston_output_mode_set_native(struct weston_output *output, > + struct weston_mode *mode, > + int32_t scale) > +{ > + int ret; > + int mode_changed = 0, scale_changed = 0; > > - if (wl_resource_get_version(resource) >= 2) > - wl_output_send_done(resource); Looks good, pushed. Thanks, pq _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
