compositor: Update output state after mode switch
After a mode switch, the output region and transformation matrix need to be updated. The call to weston_output_move() would do the former but not the latter, but calling that when the output remains in the same coordinate doesn't make much sense. Instead, update this state and the transformation matrix in weston_output_mode_switch().
This commit is contained in:
parent
b77aa062c9
commit
5c38ef4d4a
@ -1041,8 +1041,6 @@ drm_output_switch_mode(struct weston_output *output_base, struct weston_mode *mo
|
||||
|
||||
/*update output*/
|
||||
output->base.current = &drm_mode->base;
|
||||
output->base.dirty = 1;
|
||||
weston_output_move(&output->base, output->base.x, output->base.y);
|
||||
return 0;
|
||||
|
||||
err_gl:
|
||||
|
@ -84,13 +84,31 @@ sigchld_handler(int signal_number, void *data)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
weston_output_transform_init(struct weston_output *output, uint32_t transform);
|
||||
|
||||
WL_EXPORT int
|
||||
weston_output_switch_mode(struct weston_output *output, struct weston_mode *mode)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!output->switch_mode)
|
||||
return -1;
|
||||
|
||||
return output->switch_mode(output, mode);
|
||||
ret = output->switch_mode(output, mode);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Update output region and transformation matrix */
|
||||
weston_output_transform_init(output, output->transform);
|
||||
|
||||
pixman_region32_init(&output->previous_damage);
|
||||
pixman_region32_init_rect(&output->region, output->x, output->y,
|
||||
output->width, output->height);
|
||||
|
||||
weston_output_update_matrix(output);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
WL_EXPORT void
|
||||
|
Loading…
Reference in New Issue
Block a user