Commit 058a551
RDKDEV-1148: Release CDM resources when not used
When HTMLMediaElement has been created in WPE and HTMLMediaElement::setMediaKeys()
method was called to set DRM keys, CDMThunder implementation already allocates CDM
resources and they're not released until HTMLMediaElement object is destructed.
HTMLMediaElement destruction is non-deterministic and it's relying on Garbage Collector.
In this case very often we observe that after WPE exit (WPE process is not closed,
but some #boot address is being loaded), CDM resources are not released immediately
and CDM can't be used by other applications like IP Player or Netflix.
Proposed solution introduces following changes:
1) CDMPrivateThunder implementation doesn't occupy CDM resources permanently,
as it only needs CDM resources to check if server certificate is supported
so CDM resources can be acquired before check and released afterwards. The CDM
resources are reallocated again if any code asks for the OpenCDMSystem instance
again.
2) CDMInstanceThunder object's CDM resources are released on HTMLMediaElement::stop()
to not wait for Garbage Collector
See: #1580
Co-authored by: Enrique Ocaña González <eocanha@igalia.com>
WARNING: While this commit is currently working for all the tested use cases,
including reassigning one MediaKeys from one <video> to a different one, it's
generally a bad idea to mess with the lifecycle of objects in this way. There
can be some other unforeseen usage patterns that may create issues in the
future. The proper solution to the problem would be to ensure that when the
WebKitBrowser Thunder plugin is destroyed, all the JavaScript objects held by
the WebProcess are properly garbage collected and therefore destroyed. This
would release the OpenCDMSystem and other valuable external resources without
requiring the preventive release hack done in this commit.1 parent ef2fbfe commit 058a551
6 files changed
Lines changed: 33 additions & 6 deletions
File tree
- Source/WebCore
- Modules/encryptedmedia
- html
- platform
- encryptedmedia
- graphics/gstreamer/eme
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
161 | 161 | | |
162 | 162 | | |
163 | 163 | | |
| 164 | + | |
| 165 | + | |
164 | 166 | | |
165 | 167 | | |
166 | 168 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6097 | 6097 | | |
6098 | 6098 | | |
6099 | 6099 | | |
| 6100 | + | |
| 6101 | + | |
| 6102 | + | |
| 6103 | + | |
| 6104 | + | |
| 6105 | + | |
6100 | 6106 | | |
6101 | 6107 | | |
6102 | 6108 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
107 | 107 | | |
108 | 108 | | |
109 | 109 | | |
| 110 | + | |
110 | 111 | | |
111 | 112 | | |
112 | 113 | | |
| |||
Lines changed: 3 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
67 | | - | |
68 | | - | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
69 | 70 | | |
70 | 71 | | |
71 | 72 | | |
| |||
Lines changed: 19 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
141 | 141 | | |
142 | 142 | | |
143 | 143 | | |
144 | | - | |
145 | 144 | | |
146 | 145 | | |
147 | 146 | | |
| |||
204 | 203 | | |
205 | 204 | | |
206 | 205 | | |
207 | | - | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
208 | 209 | | |
209 | 210 | | |
210 | 211 | | |
| |||
258 | 259 | | |
259 | 260 | | |
260 | 261 | | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
261 | 265 | | |
262 | 266 | | |
263 | 267 | | |
| |||
267 | 271 | | |
268 | 272 | | |
269 | 273 | | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
270 | 287 | | |
271 | 288 | | |
272 | 289 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
102 | | - | |
103 | 102 | | |
104 | 103 | | |
105 | 104 | | |
| |||
114 | 113 | | |
115 | 114 | | |
116 | 115 | | |
| 116 | + | |
117 | 117 | | |
118 | | - | |
| 118 | + | |
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| |||
0 commit comments