diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/backend/drm/drm.h | 5 | ||||
-rw-r--r-- | include/backend/drm/renderer.h | 7 | ||||
-rw-r--r-- | include/backend/wayland.h | 2 | ||||
-rw-r--r-- | include/wlr/interfaces/wlr_output.h | 13 | ||||
-rw-r--r-- | include/wlr/types/wlr_output.h | 2 |
5 files changed, 15 insertions, 14 deletions
diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h index ec19918b..d742fdd1 100644 --- a/include/backend/drm/drm.h +++ b/include/backend/drm/drm.h @@ -34,9 +34,10 @@ struct wlr_drm_plane { struct wlr_drm_format_set formats; - // Only used by cursor + // Only used by cursor plane bool cursor_enabled; - int32_t cursor_hotspot_x, cursor_hotspot_y; + int cursor_width, cursor_height; + int cursor_hotspot_x, cursor_hotspot_y; union wlr_drm_plane_props props; }; diff --git a/include/backend/drm/renderer.h b/include/backend/drm/renderer.h index c4dee425..468dd41e 100644 --- a/include/backend/drm/renderer.h +++ b/include/backend/drm/renderer.h @@ -43,6 +43,9 @@ bool init_drm_renderer(struct wlr_drm_backend *drm, struct wlr_drm_renderer *renderer); void finish_drm_renderer(struct wlr_drm_renderer *renderer); +bool init_drm_surface(struct wlr_drm_surface *surf, + struct wlr_drm_renderer *renderer, uint32_t width, uint32_t height, + const struct wlr_drm_format *drm_format); bool drm_surface_make_current(struct wlr_drm_surface *surf, int *buffer_age); void drm_surface_unset_current(struct wlr_drm_surface *surf); @@ -53,8 +56,12 @@ void drm_fb_destroy(struct wlr_drm_fb *fb); void drm_fb_clear(struct wlr_drm_fb **fb); void drm_fb_move(struct wlr_drm_fb **new, struct wlr_drm_fb **old); +struct wlr_buffer *drm_surface_blit(struct wlr_drm_surface *surf, + struct wlr_buffer *buffer); bool drm_surface_render_black_frame(struct wlr_drm_surface *surf); +struct wlr_drm_format *drm_plane_pick_render_format( + struct wlr_drm_plane *plane, struct wlr_drm_renderer *renderer); bool drm_plane_init_surface(struct wlr_drm_plane *plane, struct wlr_drm_backend *drm, int32_t width, uint32_t height, bool with_modifiers); diff --git a/include/backend/wayland.h b/include/backend/wayland.h index 59758ffd..923bfe72 100644 --- a/include/backend/wayland.h +++ b/include/backend/wayland.h @@ -83,9 +83,7 @@ struct wlr_wl_output { struct { struct wlr_wl_pointer *pointer; struct wl_surface *surface; - struct wlr_swapchain *swapchain; int32_t hotspot_x, hotspot_y; - int32_t width, height; } cursor; }; diff --git a/include/wlr/interfaces/wlr_output.h b/include/wlr/interfaces/wlr_output.h index 7b07ea6e..aef41367 100644 --- a/include/wlr/interfaces/wlr_output.h +++ b/include/wlr/interfaces/wlr_output.h @@ -24,22 +24,15 @@ struct wlr_output_impl { /** * Set the output cursor plane image. * - * The parameters describe the image texture, its scale and its transform. - * If the scale and transform doesn't match the output's, the backend is - * responsible for scaling and transforming the texture appropriately. - * If texture is NULL, the cursor should be hidden. + * If buffer is NULL, the cursor should be hidden. * * The hotspot indicates the offset that needs to be applied to the * top-left corner of the image to match the cursor position. In other * words, the image should be displayed at (x - hotspot_x, y - hotspot_y). * The hotspot is given in the texture's coordinate space. - * - * If update_texture is true, all parameters need to be taken into account. - * If update_texture is false, only the hotspot is to be updated. */ - bool (*set_cursor)(struct wlr_output *output, struct wlr_texture *texture, - float scale, enum wl_output_transform transform, - int32_t hotspot_x, int32_t hotspot_y, bool update_texture); + bool (*set_cursor)(struct wlr_output *output, struct wlr_buffer *buffer, + int hotspot_x, int hotspot_y); /** * Set the output cursor plane position. * diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h index 507bfa47..dd5051c9 100644 --- a/include/wlr/types/wlr_output.h +++ b/include/wlr/types/wlr_output.h @@ -181,6 +181,8 @@ struct wlr_output { struct wl_list cursors; // wlr_output_cursor::link struct wlr_output_cursor *hardware_cursor; + struct wlr_swapchain *cursor_swapchain; + struct wlr_buffer *cursor_front_buffer; int software_cursor_locks; // number of locks forcing software cursors struct wl_listener display_destroy; |