diff --git a/lib/shared/services/content_recorder/controllers/content_recorder_controller.dart b/lib/shared/services/content_recorder/controllers/content_recorder_controller.dart index b0053188..4ad5431b 100644 --- a/lib/shared/services/content_recorder/controllers/content_recorder_controller.dart +++ b/lib/shared/services/content_recorder/controllers/content_recorder_controller.dart @@ -15,6 +15,7 @@ import '/shared/utils/unique_id_generator.dart'; import '../services/image_converter_service.dart'; import '../services/image_render_service.dart'; import '../services/isolate_manager.dart'; +import '../services/thread_fallback_manager.dart'; import '../services/thread_manager.dart'; import '../services/web_worker/web_worker_manager_dummy.dart' if (dart.library.js_interop) '../services/web_worker/web_worker_manager.dart'; @@ -35,7 +36,7 @@ class ContentRecorderController { recorderKey = GlobalKey(); recorderStream = StreamController(); - if (!ignoreGeneration) _initializeMultiThreading(); + _initializeMultiThreading(ignoreGeneration); } /// A flag indicating whether thumbnail generation is enabled. @@ -66,8 +67,10 @@ class ContentRecorderController { Completer recordReadyHelper = Completer(); /// Sets up the multi-threading environment, using isolates or web workers. - void _initializeMultiThreading() async { - if (!kIsWeb) { + void _initializeMultiThreading(bool ignoreGeneration) async { + if (ignoreGeneration) { + _threadManager = ThreadFallbackManager(_configs); + } else if (!kIsWeb) { _threadManager = IsolateManager(_configs); } else { _threadManager = WebWorkerManager(_configs); diff --git a/lib/shared/services/content_recorder/services/thread_fallback_manager.dart b/lib/shared/services/content_recorder/services/thread_fallback_manager.dart new file mode 100644 index 00000000..827d3e90 --- /dev/null +++ b/lib/shared/services/content_recorder/services/thread_fallback_manager.dart @@ -0,0 +1,13 @@ +import 'package:pro_image_editor/shared/services/content_recorder/services/thread_manager.dart'; + +/// Fallback manager for ThreadManager if multithreading isn't required. +class ThreadFallbackManager extends ThreadManager { + /// Constructs a `ThreadFallbackManager` instance with the specified configuration and + /// initializes the threading environment. + ThreadFallbackManager(super.configs); + + @override + void initialize() { + // No initialization required for fallback manager. + } +}