cursor-renderer/native: Deduplicate scale and transform code
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4093>
This commit is contained in:
parent
e32a788179
commit
129a71d0ca
@ -840,17 +840,36 @@ load_scaled_and_transformed_cursor_sprite (MetaCursorRendererNative *native,
|
|||||||
MetaCrtcKms *crtc_kms,
|
MetaCrtcKms *crtc_kms,
|
||||||
ClutterColorState *target_color_state,
|
ClutterColorState *target_color_state,
|
||||||
MetaCursorSprite *cursor_sprite,
|
MetaCursorSprite *cursor_sprite,
|
||||||
float relative_scale,
|
|
||||||
MtkMonitorTransform relative_transform,
|
|
||||||
uint8_t *data,
|
uint8_t *data,
|
||||||
int width,
|
int width,
|
||||||
int height,
|
int height,
|
||||||
int rowstride,
|
int rowstride,
|
||||||
uint32_t gbm_format)
|
uint32_t gbm_format)
|
||||||
{
|
{
|
||||||
|
MetaCursorRendererNativePrivate *priv =
|
||||||
|
meta_cursor_renderer_native_get_instance_private (native);
|
||||||
|
MetaCrtc *crtc = META_CRTC (crtc_kms);
|
||||||
|
MetaLogicalMonitor *logical_monitor;
|
||||||
|
MetaMonitor *monitor;
|
||||||
|
MtkMonitorTransform logical_transform;
|
||||||
|
float relative_scale;
|
||||||
|
MtkMonitorTransform relative_transform;
|
||||||
ClutterColorState *cursor_color_state;
|
ClutterColorState *cursor_color_state;
|
||||||
gboolean retval = FALSE;
|
gboolean retval = FALSE;
|
||||||
|
|
||||||
|
monitor = meta_output_get_monitor (meta_crtc_get_outputs (crtc)->data);
|
||||||
|
logical_monitor = meta_monitor_get_logical_monitor (monitor);
|
||||||
|
|
||||||
|
relative_scale = calculate_cursor_crtc_sprite_scale (priv->backend,
|
||||||
|
cursor_sprite,
|
||||||
|
logical_monitor);
|
||||||
|
|
||||||
|
logical_transform = meta_logical_monitor_get_transform (logical_monitor);
|
||||||
|
relative_transform = mtk_monitor_transform_transform (
|
||||||
|
mtk_monitor_transform_invert (
|
||||||
|
meta_cursor_sprite_get_texture_transform (cursor_sprite)),
|
||||||
|
meta_monitor_logical_to_crtc_transform (monitor, logical_transform));
|
||||||
|
|
||||||
cursor_color_state = meta_cursor_sprite_get_color_state (cursor_sprite);
|
cursor_color_state = meta_cursor_sprite_get_color_state (cursor_sprite);
|
||||||
|
|
||||||
if (!G_APPROX_VALUE (relative_scale, 1.f, FLT_EPSILON) ||
|
if (!G_APPROX_VALUE (relative_scale, 1.f, FLT_EPSILON) ||
|
||||||
@ -965,29 +984,9 @@ realize_cursor_sprite_from_wl_buffer_for_crtc (MetaCursorRenderer *renderer
|
|||||||
{
|
{
|
||||||
int rowstride = wl_shm_buffer_get_stride (shm_buffer);
|
int rowstride = wl_shm_buffer_get_stride (shm_buffer);
|
||||||
uint8_t *buffer_data;
|
uint8_t *buffer_data;
|
||||||
float relative_scale;
|
|
||||||
MtkMonitorTransform relative_transform;
|
|
||||||
uint32_t gbm_format;
|
uint32_t gbm_format;
|
||||||
|
|
||||||
MetaCrtc *crtc = META_CRTC (crtc_kms);
|
|
||||||
MetaLogicalMonitor *logical_monitor;
|
|
||||||
MetaMonitor *monitor;
|
|
||||||
MtkMonitorTransform logical_transform;
|
|
||||||
gboolean retval;
|
gboolean retval;
|
||||||
|
|
||||||
monitor = meta_output_get_monitor (meta_crtc_get_outputs (crtc)->data);
|
|
||||||
logical_monitor = meta_monitor_get_logical_monitor (monitor);
|
|
||||||
|
|
||||||
relative_scale = calculate_cursor_crtc_sprite_scale (priv->backend,
|
|
||||||
cursor_sprite,
|
|
||||||
logical_monitor);
|
|
||||||
|
|
||||||
logical_transform = meta_logical_monitor_get_transform (logical_monitor);
|
|
||||||
relative_transform = mtk_monitor_transform_transform (
|
|
||||||
mtk_monitor_transform_invert (
|
|
||||||
meta_cursor_sprite_get_texture_transform (cursor_sprite)),
|
|
||||||
meta_monitor_logical_to_crtc_transform (monitor, logical_transform));
|
|
||||||
|
|
||||||
wl_shm_buffer_begin_access (shm_buffer);
|
wl_shm_buffer_begin_access (shm_buffer);
|
||||||
buffer_data = wl_shm_buffer_get_data (shm_buffer);
|
buffer_data = wl_shm_buffer_get_data (shm_buffer);
|
||||||
|
|
||||||
@ -1011,8 +1010,6 @@ realize_cursor_sprite_from_wl_buffer_for_crtc (MetaCursorRenderer *renderer
|
|||||||
crtc_kms,
|
crtc_kms,
|
||||||
target_color_state,
|
target_color_state,
|
||||||
cursor_sprite,
|
cursor_sprite,
|
||||||
relative_scale,
|
|
||||||
relative_transform,
|
|
||||||
buffer_data,
|
buffer_data,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
@ -1112,29 +1109,8 @@ realize_cursor_sprite_from_xcursor_for_crtc (MetaCursorRenderer *renderer,
|
|||||||
MetaCursorSpriteXcursor *sprite_xcursor)
|
MetaCursorSpriteXcursor *sprite_xcursor)
|
||||||
{
|
{
|
||||||
MetaCursorRendererNative *native = META_CURSOR_RENDERER_NATIVE (renderer);
|
MetaCursorRendererNative *native = META_CURSOR_RENDERER_NATIVE (renderer);
|
||||||
MetaCursorRendererNativePrivate *priv =
|
|
||||||
meta_cursor_renderer_native_get_instance_private (native);
|
|
||||||
MetaCursorSprite *cursor_sprite = META_CURSOR_SPRITE (sprite_xcursor);
|
MetaCursorSprite *cursor_sprite = META_CURSOR_SPRITE (sprite_xcursor);
|
||||||
MetaCrtc *crtc = META_CRTC (crtc_kms);
|
|
||||||
MetaLogicalMonitor *logical_monitor;
|
|
||||||
MetaMonitor *monitor;
|
|
||||||
MtkMonitorTransform logical_transform;
|
|
||||||
XcursorImage *xc_image;
|
XcursorImage *xc_image;
|
||||||
float relative_scale;
|
|
||||||
MtkMonitorTransform relative_transform;
|
|
||||||
|
|
||||||
monitor = meta_output_get_monitor (meta_crtc_get_outputs (crtc)->data);
|
|
||||||
logical_monitor = meta_monitor_get_logical_monitor (monitor);
|
|
||||||
|
|
||||||
relative_scale = calculate_cursor_crtc_sprite_scale (priv->backend,
|
|
||||||
cursor_sprite,
|
|
||||||
logical_monitor);
|
|
||||||
|
|
||||||
logical_transform = meta_logical_monitor_get_transform (logical_monitor);
|
|
||||||
relative_transform = mtk_monitor_transform_transform (
|
|
||||||
mtk_monitor_transform_invert (
|
|
||||||
meta_cursor_sprite_get_texture_transform (cursor_sprite)),
|
|
||||||
meta_monitor_logical_to_crtc_transform (monitor, logical_transform));
|
|
||||||
|
|
||||||
xc_image = meta_cursor_sprite_xcursor_get_current_image (sprite_xcursor);
|
xc_image = meta_cursor_sprite_xcursor_get_current_image (sprite_xcursor);
|
||||||
|
|
||||||
@ -1142,8 +1118,6 @@ realize_cursor_sprite_from_xcursor_for_crtc (MetaCursorRenderer *renderer,
|
|||||||
crtc_kms,
|
crtc_kms,
|
||||||
target_color_state,
|
target_color_state,
|
||||||
cursor_sprite,
|
cursor_sprite,
|
||||||
relative_scale,
|
|
||||||
relative_transform,
|
|
||||||
(uint8_t *) xc_image->pixels,
|
(uint8_t *) xc_image->pixels,
|
||||||
xc_image->width,
|
xc_image->width,
|
||||||
xc_image->height,
|
xc_image->height,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user