Skip to content

Commit

Permalink
-
Browse files Browse the repository at this point in the history
  • Loading branch information
polina-c committed May 2, 2024
1 parent 7f45b3a commit f22bc4a
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,10 @@ class MemoryController extends DisposableController
switch (_mode) {
case ControllerCreationMode.disconnected:
// TODO(polina-c): load memory screen in disconnected mode, https://github.com/flutter/devtools/issues/6972
await _initializeData();
_initializeData();
case ControllerCreationMode.connected:
await serviceConnection.serviceManager.onServiceAvailable;
await _initializeData(
_initializeData(
diffPaneController: connectedDiff,
profilePaneController: connectedProfile,
);
Expand All @@ -107,23 +107,23 @@ class MemoryController extends DisposableController
return OfflineMemoryData.fromJson(data as Map<String, dynamic>);
},
shouldLoad: (data) => true,
loadData: (data) async => await _initializeData(offlineData: data),
loadData: (data) => _initializeData(offlineData: data),
);
// [maybeLoadOfflineData] will be a noop if there is no offline data for the memory screen,
// so ensure we still call [_initializedData] if it has not been called.
assert(loaded == _dataInitialized.isCompleted);
if (_dataInitialized.isCompleted) {
await _initializeData();
_initializeData();
}
}
assert(_dataInitialized.isCompleted);
}

Future<void> _initializeData({
void _initializeData({
OfflineMemoryData? offlineData,
@visibleForTesting DiffPaneController? diffPaneController,
@visibleForTesting ProfilePaneController? profilePaneController,
}) async {
}) {
assert(!_dataInitialized.isCompleted);

chart = MemoryChartPaneController(_mode, data: offlineData?.chart);
Expand All @@ -145,7 +145,6 @@ class MemoryController extends DisposableController
if (offlineData != null) profile.setFilter(offlineData.filter);
_shareClassFilterBetweenProfileAndDiff();

await chart.initialized;
_dataInitialized.complete();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,11 @@ class ChartVmConnection extends DisposableController
late final bool isDeviceAndroid;

void maybeInit() async {
if (initialized ||
!serviceConnection.serviceManager.connectedState.value.connected) {
if (initialized) return;
initialized = true;

if (!serviceConnection.serviceManager.connectedState.value.connected) {
isDeviceAndroid = false;
return;
}

Expand Down Expand Up @@ -82,8 +85,6 @@ class ChartVmConnection extends DisposableController
}
},
);

initialized = true;
}

@override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,32 +25,18 @@ class MemoryChartPaneController extends DisposableController
data.isDeviceAndroid != null),
'$mode, $data, ${data?.isDeviceAndroid}',
) {
_init(data);
}

ControllerCreationMode mode;

late final ChartData data;

late final ChartVmConnection? _chartConnection =
(mode == ControllerCreationMode.connected)
? ChartVmConnection(
data.timeline,
isAndroidChartVisible: isAndroidChartVisible,
)
: null;

Future<void> get initialized => _initialized.future;
final _initialized = Completer<void>();

void _init(ChartData? offlineData) {
assert(!_initialized.isCompleted);
if (mode == ControllerCreationMode.connected) {
data = ChartData(mode: ControllerCreationMode.connected);
this.data = ChartData(mode: ControllerCreationMode.connected);
_chartConnection = ChartVmConnection(
this.data.timeline,
isAndroidChartVisible: isAndroidChartVisible,
);
} else {
data = offlineData!;
this.data = data!;
_chartConnection = null;
_paused.value = false;
recomputeChartData();
_paused.value = true;
}

_updateChartVisibility();
Expand All @@ -61,10 +47,15 @@ class MemoryChartPaneController extends DisposableController
preferences.memory.androidCollectionEnabled,
_maybeCalculateAndroidChartVisibility,
);

_initialized.complete();
}

/// The mode at which the controller was created.
ControllerCreationMode mode;

late final ChartData data;

late final ChartVmConnection? _chartConnection;

late final EventChartController event =
EventChartController(data.timeline, paused: paused);
late final VMChartController vm =
Expand Down

0 comments on commit f22bc4a

Please sign in to comment.