aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--types/scene/wlr_scene.c8
-rw-r--r--util/box.c14
2 files changed, 17 insertions, 5 deletions
diff --git a/types/scene/wlr_scene.c b/types/scene/wlr_scene.c
index de4ad4b6..e9527fb7 100644
--- a/types/scene/wlr_scene.c
+++ b/types/scene/wlr_scene.c
@@ -754,16 +754,14 @@ void wlr_scene_buffer_set_opaque_region(struct wlr_scene_buffer *scene_buffer,
void wlr_scene_buffer_set_source_box(struct wlr_scene_buffer *scene_buffer,
const struct wlr_fbox *box) {
- struct wlr_fbox *cur = &scene_buffer->src_box;
- if ((wlr_fbox_empty(box) && wlr_fbox_empty(cur)) ||
- (box != NULL && wlr_fbox_equal(cur, box))) {
+ if (wlr_fbox_equal(&scene_buffer->src_box, box)) {
return;
}
if (box != NULL) {
- memcpy(cur, box, sizeof(*box));
+ scene_buffer->src_box = *box;
} else {
- memset(cur, 0, sizeof(*cur));
+ scene_buffer->src_box = (struct wlr_fbox){0};
}
scene_node_update(&scene_buffer->node, NULL);
diff --git a/util/box.c b/util/box.c
index 48bfbfdd..2ff22686 100644
--- a/util/box.c
+++ b/util/box.c
@@ -175,6 +175,13 @@ void wlr_fbox_transform(struct wlr_fbox *dest, const struct wlr_fbox *box,
#ifdef WLR_USE_UNSTABLE
bool wlr_box_equal(const struct wlr_box *a, const struct wlr_box *b) {
+ if (wlr_box_empty(a)) {
+ a = NULL;
+ }
+ if (wlr_box_empty(b)) {
+ b = NULL;
+ }
+
if (a == NULL || b == NULL) {
return a == b;
}
@@ -184,6 +191,13 @@ bool wlr_box_equal(const struct wlr_box *a, const struct wlr_box *b) {
}
bool wlr_fbox_equal(const struct wlr_fbox *a, const struct wlr_fbox *b) {
+ if (wlr_fbox_empty(a)) {
+ a = NULL;
+ }
+ if (wlr_fbox_empty(b)) {
+ b = NULL;
+ }
+
if (a == NULL || b == NULL) {
return a == b;
}