File tree Expand file tree Collapse file tree 2 files changed +27
-1
lines changed Expand file tree Collapse file tree 2 files changed +27
-1
lines changed Original file line number Diff line number Diff line change @@ -196,7 +196,17 @@ typedef _PerformanceModeCleanupCallback = VoidCallback;
196
196
/// To create a [PerformanceModeRequestHandle] , use [SchedulerBinding.requestPerformanceMode] .
197
197
/// The component that makes the request is responsible for disposing the handle.
198
198
class PerformanceModeRequestHandle {
199
- PerformanceModeRequestHandle ._(_PerformanceModeCleanupCallback this ._cleanup);
199
+ PerformanceModeRequestHandle ._(_PerformanceModeCleanupCallback this ._cleanup) {
200
+ // TODO(polina-c): stop duplicating code across disposables
201
+ // https://github.com/flutter/flutter/issues/137435
202
+ if (kFlutterMemoryAllocationsEnabled) {
203
+ MemoryAllocations .instance.dispatchObjectCreated (
204
+ library: 'package:flutter/scheduler.dart' ,
205
+ className: '$PerformanceModeRequestHandle ' ,
206
+ object: this ,
207
+ );
208
+ }
209
+ }
200
210
201
211
_PerformanceModeCleanupCallback ? _cleanup;
202
212
@@ -206,6 +216,11 @@ class PerformanceModeRequestHandle {
206
216
/// This method must only be called once per object.
207
217
void dispose () {
208
218
assert (_cleanup != null );
219
+ // TODO(polina-c): stop duplicating code across disposables
220
+ // https://github.com/flutter/flutter/issues/137435
221
+ if (kFlutterMemoryAllocationsEnabled) {
222
+ MemoryAllocations .instance.dispatchObjectDisposed (object: this );
223
+ }
209
224
_cleanup !();
210
225
_cleanup = null ;
211
226
}
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import 'dart:ui';
7
7
import 'package:flutter/scheduler.dart' ;
8
8
import 'package:flutter/widgets.dart' ;
9
9
import 'package:flutter_test/flutter_test.dart' ;
10
+ import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart' ;
10
11
11
12
void main () {
12
13
late SchedulerBinding binding;
@@ -53,4 +54,14 @@ void main() {
53
54
requestHandle2? .dispose ();
54
55
expect (binding.debugGetRequestedPerformanceMode (), isNull);
55
56
});
57
+
58
+ test ('PerformanceModeRequestHandle dispatches memory events' , () async {
59
+ await expectLater (
60
+ await memoryEvents (
61
+ () => binding.requestPerformanceMode (DartPerformanceMode .latency)! .dispose (),
62
+ PerformanceModeRequestHandle ,
63
+ ),
64
+ areCreateAndDispose,
65
+ );
66
+ });
56
67
}
You can’t perform that action at this time.
0 commit comments