Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
c567f843
Unverified
Commit
c567f843
authored
3 years ago
by
Jason C.H
Committed by
GitHub
3 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Ensure the engineLayer is disposed when an OpacityLayer is disabled (#94280)
parent
5a862ebe
stable
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
1 deletion
+21
-1
layer.dart
packages/flutter/lib/src/rendering/layer.dart
+6
-1
layers_test.dart
packages/flutter/test/rendering/layers_test.dart
+15
-0
No files found.
packages/flutter/lib/src/rendering/layer.dart
View file @
c567f843
...
...
@@ -1764,11 +1764,16 @@ class OpacityLayer extends OffsetLayer {
@override
void
addToScene
(
ui
.
SceneBuilder
builder
)
{
assert
(
alpha
!=
null
);
bool
enabled
=
firstChild
!=
null
;
// don't add this layer if there's no child
// Don't add this layer if there's no child.
bool
enabled
=
firstChild
!=
null
;
if
(!
enabled
)
{
// Ensure the engineLayer is disposed.
engineLayer
=
null
;
// TODO(dnfield): Remove this if/when we can fix https://github.com/flutter/flutter/issues/90004
return
;
}
assert
(()
{
enabled
=
enabled
&&
!
debugDisableOpacityLayers
;
return
true
;
...
...
This diff is collapsed.
Click to expand it.
packages/flutter/test/rendering/layers_test.dart
View file @
c567f843
...
...
@@ -637,6 +637,21 @@ void main() {
expect
(
builder
.
addedPicture
,
true
);
expect
(
layer
.
engineLayer
,
isA
<
FakeOpacityEngineLayer
>());
});
test
(
'OpacityLayer dispose its engineLayer if there are no children'
,
()
{
final
OpacityLayer
layer
=
OpacityLayer
(
alpha:
128
);
final
FakeSceneBuilder
builder
=
FakeSceneBuilder
();
layer
.
addToScene
(
builder
);
expect
(
layer
.
engineLayer
,
null
);
layer
.
append
(
PictureLayer
(
Rect
.
largest
)..
picture
=
FakePicture
());
layer
.
addToScene
(
builder
);
expect
(
layer
.
engineLayer
,
isA
<
FakeOpacityEngineLayer
>());
layer
.
removeAllChildren
();
layer
.
addToScene
(
builder
);
expect
(
layer
.
engineLayer
,
null
);
});
}
class
FakeEngineLayer
extends
Fake
implements
EngineLayer
{
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment