Skip to content

Commit

Permalink
-
Browse files Browse the repository at this point in the history
  • Loading branch information
polina-c committed Apr 19, 2024
1 parent 8dfbf50 commit f6b83fd
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,6 @@ class MemoryController extends DisposableController
ProfilePaneController(mode: _mode);
control = MemoryControlPaneController(
chart.data.timeline,
isChartVisible: chart.isChartVisible,
exportData: exportData,
);
tracing = TracingPaneController();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ class MemoryChartPaneController extends DisposableController
with AutoDisposeControllerMixin {
MemoryChartPaneController(this.mode, {ChartData? data})
: assert(
mode == DevToolsMode.connected || data != null,
mode == DevToolsMode.connected ||
(data != null && data.isDeviceAndroid != null),
'If application is not connected, isDeviceAndroid must be provided.',
),
data = data ?? ChartData(isDeviceAndroid: null) {
unawaited(_init());
) {
unawaited(_init(data));
}

factory MemoryChartPaneController.offlineData(
Expand All @@ -50,7 +50,7 @@ class MemoryChartPaneController extends DisposableController

DevToolsMode mode;

final ChartData data;
late final ChartData data;

late final ChartConnection? _chartConnection =
(mode == DevToolsMode.connected)
Expand All @@ -60,11 +60,20 @@ class MemoryChartPaneController extends DisposableController
)
: null;

Future<void> _init() async {
Future<void> _init(ChartData? offlineData) async {
if (mode == DevToolsMode.connected) {
data = ChartData(isDeviceAndroid: null);
} else {
assert(offlineData!.isDeviceAndroid != null);
data = offlineData!;
}

_updateAndroidChartVisibility();

if (mode == DevToolsMode.connected && isChartVisible.value) {
await resume();
await maybeConnect();
}

addAutoDisposeListener(
preferences.memory.androidCollectionEnabled,
_updateAndroidChartVisibility,
Expand Down Expand Up @@ -104,11 +113,18 @@ class MemoryChartPaneController extends DisposableController
ValueListenable<bool> get paused => _paused;
final _paused = ValueNotifier<bool>(true);
void pause() => _paused.value = true;
Future<void> resume() async {
void resume() {
assert(mode == DevToolsMode.connected || _chartConnection != null);
_paused.value = false;
}

Future<void> _updateChartVisibility(bool show) async {}

/// Is invoked when chart is first time expanded.
Future<void> maybeConnect() async {
if (!_paused.value) return;
if (mode != DevToolsMode.connected) throw StateError('Not connected.');
if (mode != DevToolsMode.connected) return;
await _chartConnection!.maybeConnect();
_paused.value = false;
}

final isAndroidChartVisible = ValueNotifier<bool>(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ class _ChartControlPaneState extends State<ChartControlPane>
widget.chart.pause();
}

Future<void> _onResume() async {
void _onResume() {
ga.select(gac.memory, gac.resume);
await widget.chart.resume();
widget.chart.resume();
}

void _clearTimeline() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,12 @@ import '../../../shared/primitives/memory_timeline.dart';
class MemoryControlPaneController {
MemoryControlPaneController(
this.memoryTimeline, {
required this.isChartVisible,
required this.exportData,
});

final MemoryTimeline memoryTimeline;
final VoidCallback exportData;
final ValueNotifier<bool> isChartVisible;
final ValueNotifier<bool> isChartVisible = preferences.memory.showChart;

bool get isGcing => _gcing;
bool _gcing = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class PrimaryControls extends StatelessWidget {
@override
Widget build(BuildContext context) {
return VisibilityButton(
show: preferences.memory.showChart,
show: controller.isChartVisible,
gaScreen: gac.memory,
onPressed: (show) => controller.isChartVisible.value = show,
minScreenWidthForTextBeforeScaling: memoryControlsMinVerboseWidth,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class AdaptedProfile {
final adaptedProfile = AdaptedProfile._(
total: ProfileRecord.total(profile),
items: (profile.members ?? [])
.where((e) => (e.instancesCurrent ?? 0) > 0)
.map((e) => ProfileRecord.fromClassHeapStats(e))
.toList(),
newSpaceGCStats: profile.newSpaceGCStats,
Expand Down

0 comments on commit f6b83fd

Please sign in to comment.