startRecording method

Implementation

Future<CockpitRecordingSession> startRecording(
  CockpitRecordingRequest request,
) async {
  if (_recordingStarting) {
    throw StateError('A screen recording is already starting.');
  }
  if (_activeRecordingSession != null) {
    throw StateError('A screen recording is already active.');
  }
  if (_performanceStarting ||
      _activePerformanceSession != null ||
      performanceCollector.isRunning) {
    throw StateError(
      'Screen recording cannot overlap a performance capture.',
    );
  }
  _recordingStarting = true;
  try {
    final session = await nativeRecording.startRecording(request: request);
    _activeRecordingSession = session.state == CockpitRecordingState.recording
        ? session
        : null;
    return session;
  } finally {
    _recordingStarting = false;
  }
}