commit dc3c54c
Michael Forney
·
2020-01-04 22:43:58 +0000 UTC
parent 98b8e8f
region: Avoid unnecessary container struct
4 files changed,
+23,
-30
+1,
-5
1@@ -774,11 +774,7 @@ create_surface(struct wl_client *client, struct wl_resource *resource, uint32_t
2 static void
3 create_region(struct wl_client *client, struct wl_resource *resource, uint32_t id)
4 {
5- struct region *region;
6-
7- region = region_new(client, wl_resource_get_version(resource), id);
8-
9- if (!region)
10+ if (!region_new(client, wl_resource_get_version(resource), id))
11 wl_resource_post_no_memory(resource);
12 }
13
+16,
-13
1@@ -1,24 +1,26 @@
2 #include "region.h"
3 #include "util.h"
4
5+#include <pixman.h>
6 #include <stdlib.h>
7 #include <wayland-server.h>
8
9 static void
10 add(struct wl_client *client, struct wl_resource *resource, int32_t x, int32_t y, int32_t width, int32_t height)
11 {
12- struct region *region = wl_resource_get_user_data(resource);
13- pixman_region32_union_rect(®ion->region, ®ion->region, x, y, width, height);
14+ pixman_region32_t *region = wl_resource_get_user_data(resource);
15+
16+ pixman_region32_union_rect(region, region, x, y, width, height);
17 }
18
19 static void
20 subtract(struct wl_client *client, struct wl_resource *resource, int32_t x, int32_t y, int32_t width, int32_t height)
21 {
22- struct region *region = wl_resource_get_user_data(resource);
23+ pixman_region32_t *region = wl_resource_get_user_data(resource);
24 pixman_region32_t operand;
25
26 pixman_region32_init_rect(&operand, x, y, width, height);
27- pixman_region32_subtract(®ion->region, ®ion->region, &operand);
28+ pixman_region32_subtract(region, region, &operand);
29 }
30
31 static const struct wl_region_interface region_impl = {
32@@ -30,29 +32,30 @@ static const struct wl_region_interface region_impl = {
33 static void
34 region_destroy(struct wl_resource *resource)
35 {
36- struct region *region = wl_resource_get_user_data(resource);
37+ pixman_region32_t *region = wl_resource_get_user_data(resource);
38
39- pixman_region32_fini(®ion->region);
40+ pixman_region32_fini(region);
41 free(region);
42 }
43
44-struct region *
45+struct wl_resource *
46 region_new(struct wl_client *client, uint32_t version, uint32_t id)
47 {
48- struct region *region;
49+ pixman_region32_t *region;
50+ struct wl_resource *resource;
51
52 region = malloc(sizeof(*region));
53 if (!region)
54 goto error0;
55
56- region->resource = wl_resource_create(client, &wl_region_interface, version, id);
57- if (!region->resource)
58+ resource = wl_resource_create(client, &wl_region_interface, version, id);
59+ if (!resource)
60 goto error1;
61+ wl_resource_set_implementation(resource, ®ion_impl, region, ®ion_destroy);
62
63- pixman_region32_init(®ion->region);
64- wl_resource_set_implementation(region->resource, ®ion_impl, region, ®ion_destroy);
65+ pixman_region32_init(region);
66
67- return region;
68+ return resource;
69
70 error1:
71 free(region);
+2,
-8
1@@ -1,16 +1,10 @@
2 #ifndef SWC_REGION_H
3 #define SWC_REGION_H
4
5-#include <stdbool.h>
6-#include <pixman.h>
7+#include <stdint.h>
8
9 struct wl_client;
10
11-struct region {
12- struct wl_resource *resource;
13- pixman_region32_t region;
14-};
15-
16-struct region *region_new(struct wl_client *client, uint32_t version, uint32_t id);
17+struct wl_resource *region_new(struct wl_client *client, uint32_t version, uint32_t id);
18
19 #endif
+4,
-4
1@@ -189,8 +189,8 @@ set_opaque_region(struct wl_client *client, struct wl_resource *resource, struct
2 surface->pending.commit |= SURFACE_COMMIT_OPAQUE;
3
4 if (region_resource) {
5- struct region *region = wl_resource_get_user_data(region_resource);
6- pixman_region32_copy(&surface->pending.state.opaque, ®ion->region);
7+ pixman_region32_t *region = wl_resource_get_user_data(region_resource);
8+ pixman_region32_copy(&surface->pending.state.opaque, region);
9 } else {
10 pixman_region32_clear(&surface->pending.state.opaque);
11 }
12@@ -204,8 +204,8 @@ set_input_region(struct wl_client *client, struct wl_resource *resource, struct
13 surface->pending.commit |= SURFACE_COMMIT_INPUT;
14
15 if (region_resource) {
16- struct region *region = wl_resource_get_user_data(region_resource);
17- pixman_region32_copy(&surface->pending.state.input, ®ion->region);
18+ pixman_region32_t *region = wl_resource_get_user_data(region_resource);
19+ pixman_region32_copy(&surface->pending.state.input, region);
20 } else {
21 pixman_region32_reset(&surface->pending.state.input, &infinite_extents);
22 }