backends/native: Pass cursor transform from renderer to cursor manager

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3180>
This commit is contained in:
Daniel van Vugt 2023-08-14 18:05:41 +08:00 committed by Marge Bot
parent 5a05b1a901
commit ca27dbabd9
3 changed files with 12 additions and 1 deletions

View File

@ -384,7 +384,9 @@ meta_cursor_renderer_native_update_cursor (MetaCursorRenderer *cursor_renderer,
meta_kms_cursor_manager_update_sprite (kms_cursor_manager, meta_kms_cursor_manager_update_sprite (kms_cursor_manager,
kms_crtc, kms_crtc,
NULL, NULL); NULL,
META_MONITOR_TRANSFORM_NORMAL,
NULL);
} }
} }
} }
@ -657,6 +659,7 @@ load_cursor_sprite_gbm_buffer_for_crtc (MetaCursorRendererNative *native,
meta_kms_cursor_manager_update_sprite (kms_cursor_manager, meta_kms_cursor_manager_update_sprite (kms_cursor_manager,
kms_crtc, kms_crtc,
buffer, buffer,
transform,
&hotspot); &hotspot);
return TRUE; return TRUE;
} }
@ -982,6 +985,7 @@ realize_cursor_sprite_from_wl_buffer_for_crtc (MetaCursorRenderer *renderer
meta_kms_cursor_manager_update_sprite (kms_cursor_manager, meta_kms_cursor_manager_update_sprite (kms_cursor_manager,
kms_crtc, kms_crtc,
META_DRM_BUFFER (buffer_gbm), META_DRM_BUFFER (buffer_gbm),
META_MONITOR_TRANSFORM_NORMAL,
&GRAPHENE_POINT_INIT (hot_x, hot_y)); &GRAPHENE_POINT_INIT (hot_x, hot_y));
return TRUE; return TRUE;

View File

@ -49,6 +49,7 @@ typedef struct _CrtcStateImpl
MetaKmsCrtc *crtc; MetaKmsCrtc *crtc;
graphene_rect_t layout; graphene_rect_t layout;
float scale; float scale;
MetaMonitorTransform transform;
MetaDrmBuffer *buffer; MetaDrmBuffer *buffer;
graphene_point_t hotspot; graphene_point_t hotspot;
@ -719,6 +720,7 @@ typedef struct
{ {
MetaKmsCrtc *crtc; MetaKmsCrtc *crtc;
MetaDrmBuffer *buffer; MetaDrmBuffer *buffer;
MetaMonitorTransform transform;
graphene_point_t hotspot; graphene_point_t hotspot;
} UpdateSpriteData; } UpdateSpriteData;
@ -742,6 +744,7 @@ update_sprite_in_impl (MetaThreadImpl *thread_impl,
old_buffer = g_steal_pointer (&crtc_state_impl->buffer); old_buffer = g_steal_pointer (&crtc_state_impl->buffer);
crtc_state_impl->buffer = g_steal_pointer (&data->buffer); crtc_state_impl->buffer = g_steal_pointer (&data->buffer);
crtc_state_impl->transform = data->transform;
crtc_state_impl->hotspot = data->hotspot; crtc_state_impl->hotspot = data->hotspot;
crtc_state_impl->cursor_invalidated = TRUE; crtc_state_impl->cursor_invalidated = TRUE;
@ -764,6 +767,7 @@ void
meta_kms_cursor_manager_update_sprite (MetaKmsCursorManager *cursor_manager, meta_kms_cursor_manager_update_sprite (MetaKmsCursorManager *cursor_manager,
MetaKmsCrtc *crtc, MetaKmsCrtc *crtc,
MetaDrmBuffer *buffer, MetaDrmBuffer *buffer,
MetaMonitorTransform transform,
const graphene_point_t *hotspot) const graphene_point_t *hotspot)
{ {
UpdateSpriteData *data; UpdateSpriteData *data;
@ -771,6 +775,7 @@ meta_kms_cursor_manager_update_sprite (MetaKmsCursorManager *cursor_manager,
data = g_new0 (UpdateSpriteData, 1); data = g_new0 (UpdateSpriteData, 1);
data->crtc = crtc; data->crtc = crtc;
data->buffer = buffer ? g_object_ref (buffer) : NULL; data->buffer = buffer ? g_object_ref (buffer) : NULL;
data->transform = transform;
if (hotspot) if (hotspot)
data->hotspot = *hotspot; data->hotspot = *hotspot;

View File

@ -22,6 +22,7 @@
#include <glib-object.h> #include <glib-object.h>
#include <graphene.h> #include <graphene.h>
#include "backends/meta-monitor-transform.h"
#include "backends/native/meta-backend-native-types.h" #include "backends/native/meta-backend-native-types.h"
#include "backends/native/meta-kms-types.h" #include "backends/native/meta-kms-types.h"
#include "core/util-private.h" #include "core/util-private.h"
@ -54,6 +55,7 @@ void meta_kms_cursor_manager_position_changed_in_input_impl (MetaKmsCursorManage
void meta_kms_cursor_manager_update_sprite (MetaKmsCursorManager *cursor_manager, void meta_kms_cursor_manager_update_sprite (MetaKmsCursorManager *cursor_manager,
MetaKmsCrtc *crtc, MetaKmsCrtc *crtc,
MetaDrmBuffer *buffer, MetaDrmBuffer *buffer,
MetaMonitorTransform transform,
const graphene_point_t *hotspot); const graphene_point_t *hotspot);
META_EXPORT_TEST META_EXPORT_TEST