backend/drm: move cursor fields to wlr_drm_connector
Doesn't make a lot of sense to split the cursor fields between wlr_drm_plane and wlr_drm_connector. Let's just move everything to wlr_drm_connector.
This commit is contained in:
parent
2b0a1aeed5
commit
b86a0c8d8f
|
@ -850,18 +850,18 @@ static bool drm_connector_set_cursor(struct wlr_output *output,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plane->cursor_hotspot_x != hotspot_x ||
|
if (conn->cursor_hotspot_x != hotspot_x ||
|
||||||
plane->cursor_hotspot_y != hotspot_y) {
|
conn->cursor_hotspot_y != hotspot_y) {
|
||||||
// Update cursor hotspot
|
// Update cursor hotspot
|
||||||
conn->cursor_x -= hotspot_x - plane->cursor_hotspot_x;
|
conn->cursor_x -= hotspot_x - conn->cursor_hotspot_x;
|
||||||
conn->cursor_y -= hotspot_y - plane->cursor_hotspot_y;
|
conn->cursor_y -= hotspot_y - conn->cursor_hotspot_y;
|
||||||
plane->cursor_hotspot_x = hotspot_x;
|
conn->cursor_hotspot_x = hotspot_x;
|
||||||
plane->cursor_hotspot_y = hotspot_y;
|
conn->cursor_hotspot_y = hotspot_y;
|
||||||
|
|
||||||
wlr_output_update_needs_frame(output);
|
wlr_output_update_needs_frame(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
plane->cursor_enabled = false;
|
conn->cursor_enabled = false;
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
if ((uint64_t)buffer->width != drm->cursor_width ||
|
if ((uint64_t)buffer->width != drm->cursor_width ||
|
||||||
(uint64_t)buffer->height != drm->cursor_height) {
|
(uint64_t)buffer->height != drm->cursor_height) {
|
||||||
|
@ -900,9 +900,9 @@ static bool drm_connector_set_cursor(struct wlr_output *output,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
plane->cursor_enabled = true;
|
conn->cursor_enabled = true;
|
||||||
plane->cursor_width = buffer->width;
|
conn->cursor_width = buffer->width;
|
||||||
plane->cursor_height = buffer->height;
|
conn->cursor_height = buffer->height;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_output_update_needs_frame(output);
|
wlr_output_update_needs_frame(output);
|
||||||
|
@ -929,8 +929,8 @@ static bool drm_connector_move_cursor(struct wlr_output *output,
|
||||||
wlr_output_transform_invert(output->transform);
|
wlr_output_transform_invert(output->transform);
|
||||||
wlr_box_transform(&box, &box, transform, width, height);
|
wlr_box_transform(&box, &box, transform, width, height);
|
||||||
|
|
||||||
box.x -= plane->cursor_hotspot_x;
|
box.x -= conn->cursor_hotspot_x;
|
||||||
box.y -= plane->cursor_hotspot_y;
|
box.y -= conn->cursor_hotspot_y;
|
||||||
|
|
||||||
conn->cursor_x = box.x;
|
conn->cursor_x = box.x;
|
||||||
conn->cursor_y = box.y;
|
conn->cursor_y = box.y;
|
||||||
|
@ -940,14 +940,11 @@ static bool drm_connector_move_cursor(struct wlr_output *output,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool drm_connector_is_cursor_visible(struct wlr_drm_connector *conn) {
|
bool drm_connector_is_cursor_visible(struct wlr_drm_connector *conn) {
|
||||||
assert(conn->crtc != NULL && conn->crtc->cursor != NULL);
|
return conn->cursor_enabled &&
|
||||||
struct wlr_drm_plane *plane = conn->crtc->cursor;
|
|
||||||
|
|
||||||
return plane->cursor_enabled &&
|
|
||||||
conn->cursor_x < conn->output.width &&
|
conn->cursor_x < conn->output.width &&
|
||||||
conn->cursor_y < conn->output.height &&
|
conn->cursor_y < conn->output.height &&
|
||||||
conn->cursor_x + plane->cursor_width >= 0 &&
|
conn->cursor_x + conn->cursor_width >= 0 &&
|
||||||
conn->cursor_y + plane->cursor_height >= 0;
|
conn->cursor_y + conn->cursor_height >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dealloc_crtc(struct wlr_drm_connector *conn);
|
static void dealloc_crtc(struct wlr_drm_connector *conn);
|
||||||
|
@ -1095,10 +1092,8 @@ static void dealloc_crtc(struct wlr_drm_connector *conn) {
|
||||||
|
|
||||||
drm_plane_finish_surface(conn->crtc->primary);
|
drm_plane_finish_surface(conn->crtc->primary);
|
||||||
drm_plane_finish_surface(conn->crtc->cursor);
|
drm_plane_finish_surface(conn->crtc->cursor);
|
||||||
if (conn->crtc->cursor != NULL) {
|
|
||||||
conn->crtc->cursor->cursor_enabled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
conn->cursor_enabled = false;
|
||||||
conn->crtc = NULL;
|
conn->crtc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,11 +34,6 @@ struct wlr_drm_plane {
|
||||||
|
|
||||||
struct wlr_drm_format_set formats;
|
struct wlr_drm_format_set formats;
|
||||||
|
|
||||||
// Only used by cursor plane
|
|
||||||
bool cursor_enabled;
|
|
||||||
int cursor_width, cursor_height;
|
|
||||||
int cursor_hotspot_x, cursor_hotspot_y;
|
|
||||||
|
|
||||||
union wlr_drm_plane_props props;
|
union wlr_drm_plane_props props;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -123,7 +118,10 @@ struct wlr_drm_connector {
|
||||||
|
|
||||||
union wlr_drm_connector_props props;
|
union wlr_drm_connector_props props;
|
||||||
|
|
||||||
int32_t cursor_x, cursor_y;
|
bool cursor_enabled;
|
||||||
|
int cursor_x, cursor_y;
|
||||||
|
int cursor_width, cursor_height;
|
||||||
|
int cursor_hotspot_x, cursor_hotspot_y;
|
||||||
|
|
||||||
drmModeCrtc *old_crtc;
|
drmModeCrtc *old_crtc;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue