shell: Always configure when surface type changes
We can drop the force_configure hack.
This commit is contained in:
parent
7f366e7053
commit
f7e23d5c88
14
src/shell.c
14
src/shell.c
@ -154,8 +154,6 @@ struct shell_surface {
|
|||||||
struct weston_output *fullscreen_output;
|
struct weston_output *fullscreen_output;
|
||||||
struct weston_output *output;
|
struct weston_output *output;
|
||||||
struct wl_list link;
|
struct wl_list link;
|
||||||
|
|
||||||
int force_configure;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct shell_grab {
|
struct shell_grab {
|
||||||
@ -661,7 +659,6 @@ shell_unset_fullscreen(struct shell_surface *shsurf)
|
|||||||
weston_surface_destroy(shsurf->fullscreen.black_surface);
|
weston_surface_destroy(shsurf->fullscreen.black_surface);
|
||||||
shsurf->fullscreen.black_surface = NULL;
|
shsurf->fullscreen.black_surface = NULL;
|
||||||
shsurf->fullscreen_output = NULL;
|
shsurf->fullscreen_output = NULL;
|
||||||
shsurf->force_configure = 1;
|
|
||||||
weston_surface_set_position(shsurf->surface,
|
weston_surface_set_position(shsurf->surface,
|
||||||
shsurf->saved_x, shsurf->saved_y);
|
shsurf->saved_x, shsurf->saved_y);
|
||||||
if (shsurf->saved_rotation_valid) {
|
if (shsurf->saved_rotation_valid) {
|
||||||
@ -1008,9 +1005,6 @@ shell_surface_set_fullscreen(struct wl_client *client,
|
|||||||
shsurf->fullscreen.framerate = framerate;
|
shsurf->fullscreen.framerate = framerate;
|
||||||
shsurf->next_type = SHELL_SURFACE_FULLSCREEN;
|
shsurf->next_type = SHELL_SURFACE_FULLSCREEN;
|
||||||
|
|
||||||
if (weston_surface_is_mapped(es))
|
|
||||||
shsurf->force_configure = 1;
|
|
||||||
|
|
||||||
wl_shell_surface_send_configure(&shsurf->resource, 0,
|
wl_shell_surface_send_configure(&shsurf->resource, 0,
|
||||||
shsurf->output->current->width,
|
shsurf->output->current->width,
|
||||||
shsurf->output->current->height);
|
shsurf->output->current->height);
|
||||||
@ -2132,14 +2126,17 @@ shell_surface_configure(struct weston_surface *es, int32_t sx, int32_t sy)
|
|||||||
{
|
{
|
||||||
struct shell_surface *shsurf = get_shell_surface(es);
|
struct shell_surface *shsurf = get_shell_surface(es);
|
||||||
struct desktop_shell *shell = shsurf->shell;
|
struct desktop_shell *shell = shsurf->shell;
|
||||||
|
int type_changed;
|
||||||
|
|
||||||
if (shsurf->next_type != SHELL_SURFACE_NONE &&
|
if (shsurf->next_type != SHELL_SURFACE_NONE &&
|
||||||
shsurf->type != shsurf->next_type)
|
shsurf->type != shsurf->next_type) {
|
||||||
set_surface_type(shsurf);
|
set_surface_type(shsurf);
|
||||||
|
type_changed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!weston_surface_is_mapped(es)) {
|
if (!weston_surface_is_mapped(es)) {
|
||||||
map(shell, es, es->buffer->width, es->buffer->height, sx, sy);
|
map(shell, es, es->buffer->width, es->buffer->height, sx, sy);
|
||||||
} else if (shsurf->force_configure || sx != 0 || sy != 0 ||
|
} else if (type_changed || sx != 0 || sy != 0 ||
|
||||||
es->geometry.width != es->buffer->width ||
|
es->geometry.width != es->buffer->width ||
|
||||||
es->geometry.height != es->buffer->height) {
|
es->geometry.height != es->buffer->height) {
|
||||||
GLfloat from_x, from_y;
|
GLfloat from_x, from_y;
|
||||||
@ -2151,7 +2148,6 @@ shell_surface_configure(struct weston_surface *es, int32_t sx, int32_t sy)
|
|||||||
es->geometry.x + to_x - from_x,
|
es->geometry.x + to_x - from_x,
|
||||||
es->geometry.y + to_y - from_y,
|
es->geometry.y + to_y - from_y,
|
||||||
es->buffer->width, es->buffer->height);
|
es->buffer->width, es->buffer->height);
|
||||||
shsurf->force_configure = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user