Repository navigation
Commit 52aefa1
committed
ios: Return NO from run* calls on a running/terminated engine
We explicitly document in FlutterEngine's `run*` methods that calling
run more than once is will return without doing anything. In
`[FlutterEngine destroyContext]` we specifically document that the
engine is in an unusable state, that the engine will be in an unusable
state until it is deallocated, and that accessing properties or sending
messages to it will result in undefined behavior or runtime errors.
By design, all calls to `run*` methods after the first invocation
returned `NO`. This was unintentionally changed in
flutter-team-archive/engine#6774 such that calling `run` on an already-running
engine returns `YES` instead of `false` as it was prior to that patch.
That's incorrect behaviour since it suggests that a new engine was spun
up. A particularly obvious incorrect behaviour that this triggered was
returning `YES` in the second invocation in a case like this:
```objc
[engine runWithEntryPoint:@"main" ...];
[engine runWithEntryPoint:@"notMain" ...];
```
This restores the original behaviour and prevents spinning up a new
shell on a destroyed engine. We only ever documented that calling `run`
a second time was unsupported and would return immediately with no
effect, but never documented the return value on a second invocation,
this updates that to document (and test) the intended behaviour.
This also makes destroyContext idempotent such that calling it a second
time is a no-op. This can happen if destroyContext is called directly
as well as via e.g. `appOrSceneWillTerminate` or on view controller
deallocation.
This also adds null guards to unregisterTexture: and
textureFrameAvailable: which would previously have triggered a
null dereference.
Related: flutter-team-archive/engine#6774
Related: flutter-team-archive/engine#7610
Issue: #185608
Issue: #115157 (b/256086107)1 parent a388814 commit 52aefa1
3 files changed
Lines changed: 126 additions & 32 deletions
File tree
- engine/src/flutter/shell/platform/darwin/ios/framework
- Headers
- Source
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
177 | | - | |
178 | | - | |
| 177 | + | |
| 178 | + | |
179 | 179 | | |
180 | 180 | | |
181 | 181 | | |
182 | | - | |
| 182 | + | |
| 183 | + | |
183 | 184 | | |
184 | 185 | | |
185 | 186 | | |
186 | 187 | | |
187 | 188 | | |
188 | 189 | | |
189 | 190 | | |
190 | | - | |
191 | | - | |
| 191 | + | |
| 192 | + | |
192 | 193 | | |
193 | 194 | | |
194 | 195 | | |
| |||
197 | 198 | | |
198 | 199 | | |
199 | 200 | | |
200 | | - | |
| 201 | + | |
| 202 | + | |
201 | 203 | | |
202 | 204 | | |
203 | 205 | | |
204 | 206 | | |
205 | 207 | | |
206 | 208 | | |
207 | 209 | | |
208 | | - | |
209 | | - | |
| 210 | + | |
| 211 | + | |
210 | 212 | | |
211 | 213 | | |
212 | 214 | | |
| |||
217 | 219 | | |
218 | 220 | | |
219 | 221 | | |
220 | | - | |
| 222 | + | |
| 223 | + | |
221 | 224 | | |
222 | 225 | | |
223 | 226 | | |
| |||
226 | 229 | | |
227 | 230 | | |
228 | 231 | | |
229 | | - | |
230 | | - | |
| 232 | + | |
| 233 | + | |
231 | 234 | | |
232 | 235 | | |
233 | 236 | | |
| |||
238 | 241 | | |
239 | 242 | | |
240 | 243 | | |
241 | | - | |
| 244 | + | |
| 245 | + | |
242 | 246 | | |
243 | 247 | | |
244 | 248 | | |
| |||
247 | 251 | | |
248 | 252 | | |
249 | 253 | | |
250 | | - | |
251 | | - | |
| 254 | + | |
| 255 | + | |
252 | 256 | | |
253 | 257 | | |
254 | 258 | | |
| |||
261 | 265 | | |
262 | 266 | | |
263 | 267 | | |
264 | | - | |
| 268 | + | |
| 269 | + | |
265 | 270 | | |
266 | 271 | | |
267 | 272 | | |
| |||
271 | 276 | | |
272 | 277 | | |
273 | 278 | | |
274 | | - | |
275 | | - | |
| 279 | + | |
| 280 | + | |
276 | 281 | | |
277 | 282 | | |
278 | 283 | | |
| |||
286 | 291 | | |
287 | 292 | | |
288 | 293 | | |
289 | | - | |
| 294 | + | |
| 295 | + | |
290 | 296 | | |
291 | 297 | | |
292 | 298 | | |
| |||
300 | 306 | | |
301 | 307 | | |
302 | 308 | | |
| 309 | + | |
| 310 | + | |
303 | 311 | | |
304 | 312 | | |
305 | 313 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
130 | 130 | | |
131 | 131 | | |
132 | 132 | | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
133 | 136 | | |
134 | 137 | | |
135 | 138 | | |
| |||
608 | 611 | | |
609 | 612 | | |
610 | 613 | | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
611 | 618 | | |
612 | 619 | | |
613 | 620 | | |
| |||
923 | 930 | | |
924 | 931 | | |
925 | 932 | | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
926 | 939 | | |
927 | 940 | | |
928 | 941 | | |
| |||
1056 | 1069 | | |
1057 | 1070 | | |
1058 | 1071 | | |
1059 | | - | |
1060 | | - | |
| 1072 | + | |
| 1073 | + | |
1061 | 1074 | | |
1062 | | - | |
1063 | | - | |
| 1075 | + | |
| 1076 | + | |
1064 | 1077 | | |
1065 | 1078 | | |
1066 | 1079 | | |
| |||
1423 | 1436 | | |
1424 | 1437 | | |
1425 | 1438 | | |
1426 | | - | |
| 1439 | + | |
| 1440 | + | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
1427 | 1444 | | |
1428 | 1445 | | |
1429 | 1446 | | |
1430 | | - | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
1431 | 1452 | | |
1432 | 1453 | | |
1433 | 1454 | | |
| |||
1744 | 1765 | | |
1745 | 1766 | | |
1746 | 1767 | | |
1747 | | - | |
1748 | | - | |
1749 | | - | |
1750 | | - | |
1751 | | - | |
1752 | | - | |
1753 | | - | |
1754 | | - | |
| 1768 | + | |
| 1769 | + | |
| 1770 | + | |
| 1771 | + | |
| 1772 | + | |
| 1773 | + | |
| 1774 | + | |
| 1775 | + | |
1755 | 1776 | | |
1756 | 1777 | | |
1757 | 1778 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
48 | 58 | | |
49 | 59 | | |
50 | 60 | | |
| |||
133 | 143 | | |
134 | 144 | | |
135 | 145 | | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
136 | 201 | | |
137 | 202 | | |
138 | 203 | | |
| |||
0 commit comments