77271f3a3f9febfa1ddd63c4721d051f52b2f016
[AGL/meta-agl.git] /
1 From 10fcfd66069c774e28f67b18afd329e4bcf9f5b3 Mon Sep 17 00:00:00 2001
2 From: Ray Smith <rsmith@brightsign.biz>
3 Date: Tue, 19 Dec 2023 11:45:45 +0000
4 Subject: [PATCH 2/2] backend-drm: always create gem_handle_refcnt hash table
5
6 Devices created via drm_device_create have this hash table, but those
7 created via drm_backend_create don't.
8
9 Signed-off-by: Ray Smith <rsmith@brightsign.biz>
10 Upstream-Status: Backport [https://gitlab.freedesktop.org/wayland/weston/-/commit/e7960048]
11
12 ---
13  libweston/backend-drm/drm.c | 12 +++++++++---
14  1 file changed, 9 insertions(+), 3 deletions(-)
15
16 diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c
17 index fcececb..9d6a9cf 100644
18 --- a/libweston/backend-drm/drm.c
19 +++ b/libweston/backend-drm/drm.c
20 @@ -3364,8 +3364,7 @@ drm_destroy(struct weston_backend *backend)
21         weston_launcher_close(ec->launcher, device->drm.fd);
22         weston_launcher_destroy(ec->launcher);
23  
24 -       if (device->gem_handle_refcnt)
25 -               hash_table_destroy(device->gem_handle_refcnt);
26 +       hash_table_destroy(device->gem_handle_refcnt);
27  
28         free(device->drm.filename);
29         free(device);
30 @@ -3867,10 +3866,13 @@ drm_backend_create(struct weston_compositor *compositor,
31  
32         device = zalloc(sizeof *device);
33         if (device == NULL)
34 -               return NULL;
35 +               goto err_backend;
36         device->state_invalid = true;
37         device->drm.fd = -1;
38         device->backend = b;
39 +       device->gem_handle_refcnt = hash_table_create();
40 +       if (!device->gem_handle_refcnt)
41 +               goto err_device;
42  
43         b->drm = device;
44         wl_list_init(&b->kms_list);
45 @@ -4108,6 +4110,10 @@ err_compositor:
46         if (b->gbm)
47                 gbm_device_destroy(b->gbm);
48  #endif
49 +       hash_table_destroy(device->gem_handle_refcnt);
50 +err_device:
51 +       free(device);
52 +err_backend:
53         free(b);
54         return NULL;
55  }
56 -- 
57 2.43.0
58