summaryrefslogtreecommitdiff
path: root/src/compositor-drm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor-drm.c')
-rw-r--r--src/compositor-drm.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 3c15ec30..44413081 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -953,12 +953,15 @@ drm_output_prepare_cursor_view(struct weston_output *output_base,
{
struct drm_compositor *c =
(struct drm_compositor *) output_base->compositor;
+ struct weston_buffer_viewport *viewport = &ev->surface->buffer_viewport;
struct drm_output *output = (struct drm_output *) output_base;
if (c->gbm == NULL)
return NULL;
if (output->base.transform != WL_OUTPUT_TRANSFORM_NORMAL)
return NULL;
+ if (viewport->buffer.scale != output_base->current_scale)
+ return NULL;
if (output->cursor_view)
return NULL;
if (ev->output_mask != (1u << output_base->id))
@@ -2576,7 +2579,7 @@ recorder_frame_notify(struct wl_listener *listener, void *data)
return;
}
- vaapi_recorder_frame(output->recorder, fd, output->current->stride / 4);
+ vaapi_recorder_frame(output->recorder, fd, output->current->stride);
}
static void *
@@ -2783,9 +2786,15 @@ drm_compositor_create(struct wl_display *display,
wl_list_init(&ec->sprite_list);
create_sprites(ec);
+ if (udev_input_init(&ec->input,
+ &ec->base, ec->udev, param->seat_id) < 0) {
+ weston_log("failed to create input devices\n");
+ goto err_sprite;
+ }
+
if (create_outputs(ec, param->connector, drm_device) < 0) {
weston_log("failed to create output for %s\n", path);
- goto err_sprite;
+ goto err_udev_input;
}
/* A this point we have some idea of whether or not we have a working
@@ -2795,12 +2804,6 @@ drm_compositor_create(struct wl_display *display,
path = NULL;
- if (udev_input_init(&ec->input,
- &ec->base, ec->udev, param->seat_id) < 0) {
- weston_log("failed to create input devices\n");
- goto err_sprite;
- }
-
loop = wl_display_get_event_loop(ec->base.wl_display);
ec->drm_source =
wl_event_loop_add_fd(loop, ec->drm.fd,
@@ -2843,6 +2846,7 @@ err_udev_monitor:
udev_monitor_unref(ec->udev_monitor);
err_drm_source:
wl_event_source_remove(ec->drm_source);
+err_udev_input:
udev_input_destroy(&ec->input);
err_sprite:
ec->base.renderer->destroy(&ec->base);