diff --git a/include/libweston/libweston.h b/include/libweston/libweston.h index ee9fbd5b4..35c420073 100644 --- a/include/libweston/libweston.h +++ b/include/libweston/libweston.h @@ -624,6 +624,15 @@ struct weston_output { struct weston_mode *native_mode; struct weston_mode *current_mode; struct weston_mode *original_mode; + /* FIXME: keep a local copy for native_mode */ + struct { + uint32_t flags; + enum weston_mode_aspect_ratio aspect_ratio; + int32_t width; + int32_t height; + uint32_t refresh; + } native_mode_copy; + struct wl_list mode_list; struct wl_list head_list; /**< List of driven weston_heads */ diff --git a/libweston/compositor.c b/libweston/compositor.c index 799bfa76c..fb5acc62b 100644 --- a/libweston/compositor.c +++ b/libweston/compositor.c @@ -555,6 +555,12 @@ weston_output_mode_set_native(struct weston_output *output, output->native_mode = mode; output->native_scale = scale; + output->native_mode_copy.width = mode->width; + output->native_mode_copy.height = mode->height; + output->native_mode_copy.flags = mode->flags; + output->native_mode_copy.aspect_ratio = mode->aspect_ratio; + output->native_mode_copy.refresh = mode->refresh; + weston_mode_switch_finish(output, mode_changed, scale_changed); if (mode_changed || scale_changed) {