summaryrefslogtreecommitdiff
path: root/src/compositor-wayland.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor-wayland.c')
-rw-r--r--src/compositor-wayland.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index 67f15be9..a08b71ab 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -1149,7 +1149,7 @@ wayland_output_create_for_parent_output(struct wayland_compositor *c,
if (poutput->current_mode) {
mode = poutput->current_mode;
} else if (poutput->preferred_mode) {
- mode = poutput->current_mode;
+ mode = poutput->preferred_mode;
} else if (!wl_list_empty(&poutput->mode_list)) {
mode = container_of(poutput->mode_list.next,
struct weston_mode, link);
@@ -1424,8 +1424,10 @@ input_handle_keymap(void *data, struct wl_keyboard *keyboard, uint32_t format,
struct xkb_keymap *keymap;
char *map_str;
- if (!data)
- goto error;
+ if (!data) {
+ close(fd);
+ return;
+ }
if (format == WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) {
map_str = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
@@ -1723,8 +1725,11 @@ wayland_compositor_register_output(struct wayland_compositor *c, uint32_t id)
output->id = id;
output->global = wl_registry_bind(c->parent.registry, id,
&wl_output_interface, 1);
- if (!output->global)
+ if (!output->global) {
+ free(output);
return;
+ }
+
wl_output_add_listener(output->global, &output_listener, output);
output->scale = 0;