summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backends/native/meta-cursor-renderer-native.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/backends/native/meta-cursor-renderer-native.c b/src/backends/native/meta-cursor-renderer-native.c
index b28d26ca3..aea86dffd 100644
--- a/src/backends/native/meta-cursor-renderer-native.c
+++ b/src/backends/native/meta-cursor-renderer-native.c
@@ -291,9 +291,11 @@ update_monitor_crtc_cursor (MetaMonitor *monitor,
data->in_cursor_renderer_native;
MetaCursorRendererNativePrivate *priv =
meta_cursor_renderer_native_get_instance_private (cursor_renderer_native);
+ MetaMonitorTransform transform;
ClutterRect scaled_crtc_rect;
float scale;
int crtc_x, crtc_y;
+ int crtc_width, crtc_height;
if (meta_is_stage_views_scaled ())
scale = meta_logical_monitor_get_scale (data->in_logical_monitor);
@@ -305,14 +307,26 @@ update_monitor_crtc_cursor (MetaMonitor *monitor,
META_MONITOR_TRANSFORM_NORMAL,
&crtc_x, &crtc_y);
+ transform = meta_logical_monitor_get_transform (data->in_logical_monitor);
+ if (meta_monitor_transform_is_rotated (transform))
+ {
+ crtc_width = monitor_crtc_mode->crtc_mode->height;
+ crtc_height = monitor_crtc_mode->crtc_mode->width;
+ }
+ else
+ {
+ crtc_width = monitor_crtc_mode->crtc_mode->width;
+ crtc_height = monitor_crtc_mode->crtc_mode->height;
+ }
+
scaled_crtc_rect = (ClutterRect) {
.origin = {
.x = crtc_x / scale,
.y = crtc_y / scale
},
.size = {
- .width = monitor_crtc_mode->crtc_mode->width / scale,
- .height = monitor_crtc_mode->crtc_mode->height / scale
+ .width = crtc_width / scale,
+ .height = crtc_height / scale
},
};