diff options
author | emersion <contact@emersion.fr> | 2018-02-03 00:15:44 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-02-03 00:15:44 +0100 |
commit | 3d3ea321372d656fa82db48c4729e8109d6f19e2 (patch) | |
tree | 23d2a425eecb3a8b4f5760d8470cdf8288dafdf2 /include/wlr | |
parent | bb4aeb3b2f8d739b042ab8c2f2b9b6d1caf6e26b (diff) | |
parent | 86a404f2cd7e046e9ce9d23b4ae52c91adb47570 (diff) |
Merge remote-tracking branch 'upstream/master' into output-damage
Diffstat (limited to 'include/wlr')
-rw-r--r-- | include/wlr/types/wlr_output.h | 4 | ||||
-rw-r--r-- | include/wlr/types/wlr_xcursor_manager.h | 30 | ||||
-rw-r--r-- | include/wlr/xcursor.h | 17 |
3 files changed, 40 insertions, 11 deletions
diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h index f10d8286..a1058a8c 100644 --- a/include/wlr/types/wlr_output.h +++ b/include/wlr/types/wlr_output.h @@ -31,6 +31,10 @@ struct wlr_output_cursor { struct wlr_surface *surface; struct wl_listener surface_commit; struct wl_listener surface_destroy; + + struct { + struct wl_signal destroy; + } events; }; struct wlr_output_impl; diff --git a/include/wlr/types/wlr_xcursor_manager.h b/include/wlr/types/wlr_xcursor_manager.h index 2a2c9035..c7fa83be 100644 --- a/include/wlr/types/wlr_xcursor_manager.h +++ b/include/wlr/types/wlr_xcursor_manager.h @@ -6,7 +6,7 @@ #include <wlr/xcursor.h> /** - * A scaled XCursor theme. + * An XCursor theme at a particular scale factor of the base size. */ struct wlr_xcursor_manager_theme { float scale; @@ -15,11 +15,10 @@ struct wlr_xcursor_manager_theme { }; /** - * Manage multiple XCursor themes with different scales and set `wlr_cursor` - * images. - * - * This manager can be used to display cursor images on multiple outputs having - * different scale factors. + * wlr_xcursor_manager dynamically loads xcursor themes at sizes necessary for + * use on outputs at arbitrary scale factors. You should call + * wlr_xcursor_manager_load for each output you will show your cursor on, with + * the scale factor parameter set to that output's scale factor. */ struct wlr_xcursor_manager { char *name; @@ -28,24 +27,33 @@ struct wlr_xcursor_manager { }; /** - * Create a new XCursor manager. After initialization, scaled themes need to be - * loaded with `wlr_xcursor_manager_load`. `size` is the unscaled cursor theme - * size. + * Creates a new XCursor manager with the given xcursor theme name and base size + * (for use when scale=1). */ struct wlr_xcursor_manager *wlr_xcursor_manager_create(const char *name, uint32_t size); void wlr_xcursor_manager_destroy(struct wlr_xcursor_manager *manager); +/** + * Ensures an xcursor theme at the given scale factor is loaded in the manager. + */ int wlr_xcursor_manager_load(struct wlr_xcursor_manager *manager, float scale); +/** + * Retrieves a wlr_xcursor reference for the given cursor name at the given + * scale factor, or NULL if this wlr_xcursor_manager has not loaded a cursor + * theme at the requested scale. + */ struct wlr_xcursor *wlr_xcursor_manager_get_xcursor( struct wlr_xcursor_manager *manager, const char *name, float scale); /** - * Set a `wlr_cursor` image. The manager uses all currently loaded scaled - * themes. + * Set a wlr_cursor's cursor image to the specified cursor name for all scale + * factors. wlr_cursor will take over from this point and ensure the correct + * cursor is used on each output, assuming a wlr_output_layout is attached to + * it. */ void wlr_xcursor_manager_set_cursor_image(struct wlr_xcursor_manager *manager, const char *name, struct wlr_cursor *cursor); diff --git a/include/wlr/xcursor.h b/include/wlr/xcursor.h index 42fcedb9..d97469f8 100644 --- a/include/wlr/xcursor.h +++ b/include/wlr/xcursor.h @@ -50,6 +50,9 @@ struct wlr_xcursor { uint32_t total_delay; /* length of the animation in ms */ }; +/** + * Container for an Xcursor theme. + */ struct wlr_xcursor_theme { unsigned int cursor_count; struct wlr_xcursor **cursors; @@ -57,13 +60,27 @@ struct wlr_xcursor_theme { int size; }; +/** + * Loads the named xcursor theme at the given cursor size (in pixels). This is + * useful if you need cursor images for your compositor to use when a + * client-side cursors is not available or you wish to override client-side + * cursors for a particular UI interaction (such as using a grab cursor when + * moving a window around). + */ struct wlr_xcursor_theme *wlr_xcursor_theme_load(const char *name, int size); void wlr_xcursor_theme_destroy(struct wlr_xcursor_theme *theme); +/** + * Obtains a wlr_xcursor image for the specified cursor name (e.g. "left_ptr"). + */ struct wlr_xcursor *wlr_xcursor_theme_get_cursor( struct wlr_xcursor_theme *theme, const char *name); +/** + * Returns the current frame number for an animated cursor give a monotonic time + * reference. + */ int wlr_xcursor_frame(struct wlr_xcursor *cursor, uint32_t time); /** |