diff options
author | Kirill Primak <vyivel@eclair.cafe> | 2023-05-23 21:08:22 +0300 |
---|---|---|
committer | Kirill Primak <vyivel@eclair.cafe> | 2023-05-23 21:08:22 +0300 |
commit | 5f4a35290d5e2a7382dde4d893fc36c44cb0e1fd (patch) | |
tree | ff2c2db6e6360d60bfb08bdc27043f8abaf899fe | |
parent | 5d67bbde861b0fa47d231ee1f0741317c4de5519 (diff) |
util/box: always treat NULL boxes as empty
-rw-r--r-- | include/wlr/util/box.h | 5 | ||||
-rw-r--r-- | util/box.c | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/include/wlr/util/box.h b/include/wlr/util/box.h index 84df50a6..e866b1df 100644 --- a/include/wlr/util/box.h +++ b/include/wlr/util/box.h @@ -41,6 +41,11 @@ struct wlr_fbox { }; /** + * Functions below accept NULL where a box is expected, which is treated + * the same as an empty box. + */ + +/** * Finds the closest point within the box bounds. * * Returns NAN if the box is empty. @@ -8,7 +8,7 @@ void wlr_box_closest_point(const struct wlr_box *box, double x, double y, double *dest_x, double *dest_y) { // if box is empty, then it contains no points, so no closest point either - if (box->width <= 0 || box->height <= 0) { + if (wlr_box_empty(box)) { *dest_x = NAN; *dest_y = NAN; return; @@ -71,6 +71,11 @@ bool wlr_box_contains_point(const struct wlr_box *box, double x, double y) { void wlr_box_transform(struct wlr_box *dest, const struct wlr_box *box, enum wl_output_transform transform, int width, int height) { + if (wlr_box_empty(box)) { + *dest = (struct wlr_box){0}; + return; + } + struct wlr_box src = *box; if (transform % 2 == 0) { @@ -123,6 +128,11 @@ bool wlr_fbox_empty(const struct wlr_fbox *box) { void wlr_fbox_transform(struct wlr_fbox *dest, const struct wlr_fbox *box, enum wl_output_transform transform, double width, double height) { + if (wlr_fbox_empty(box)) { + *dest = (struct wlr_fbox){0}; + return; + } + struct wlr_fbox src = *box; if (transform % 2 == 0) { |