aboutsummaryrefslogtreecommitdiff
path: root/include/wlr
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-02-03 00:15:44 +0100
committeremersion <contact@emersion.fr>2018-02-03 00:15:44 +0100
commit3d3ea321372d656fa82db48c4729e8109d6f19e2 (patch)
tree23d2a425eecb3a8b4f5760d8470cdf8288dafdf2 /include/wlr
parentbb4aeb3b2f8d739b042ab8c2f2b9b6d1caf6e26b (diff)
parent86a404f2cd7e046e9ce9d23b4ae52c91adb47570 (diff)
Merge remote-tracking branch 'upstream/master' into output-damage
Diffstat (limited to 'include/wlr')
-rw-r--r--include/wlr/types/wlr_output.h4
-rw-r--r--include/wlr/types/wlr_xcursor_manager.h30
-rw-r--r--include/wlr/xcursor.h17
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);
/**