Commit 296cc77
drm_hwcomposer: Fix deadlock with flattening
FlatteningController acquires its internal lock first, and then acquires
the global lock in DrmHwcThree::SendRefreshEventToClient.
During normal validate/present, the thread acquires the global lock
first, and will acquire the FlatteningController internal lock in
NewFrame.
Move the "must_validate" flag out of Hwc3Display to remove the need to
acquire the global lock in the SendRefreshEventToClient callback.
Add a std::set to track which displays must be validated, and protect
access to this set with a different mutex to avoid deadlocks.
Tracked-On: OAM-133858
Change-Id: I62d59252107f9f16a4b8bb43f850115bf327a127
Signed-off-by: Drew Davenport <ddavenport@google.com>
Signed-off-by: ZhuChenyanX <zhucx@intel.com>1 parent 7026d8c commit 296cc77
3 files changed
+27
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
730 | 730 | | |
731 | 731 | | |
732 | 732 | | |
733 | | - | |
| 733 | + | |
734 | 734 | | |
735 | 735 | | |
736 | 736 | | |
| |||
751 | 751 | | |
752 | 752 | | |
753 | 753 | | |
754 | | - | |
| 754 | + | |
755 | 755 | | |
756 | 756 | | |
757 | 757 | | |
| |||
1505 | 1505 | | |
1506 | 1506 | | |
1507 | 1507 | | |
1508 | | - | |
| 1508 | + | |
1509 | 1509 | | |
1510 | 1510 | | |
1511 | 1511 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
| 65 | + | |
| 66 | + | |
73 | 67 | | |
74 | 68 | | |
75 | 69 | | |
| |||
96 | 90 | | |
97 | 91 | | |
98 | 92 | | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
99 | 96 | | |
100 | 97 | | |
101 | 98 | | |
| |||
104 | 101 | | |
105 | 102 | | |
106 | 103 | | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
107 | 107 | | |
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
111 | 111 | | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
112 | 122 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
29 | 28 | | |
30 | 29 | | |
31 | 30 | | |
| |||
49 | 48 | | |
50 | 49 | | |
51 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
52 | 54 | | |
53 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
54 | 59 | | |
55 | 60 | | |
0 commit comments