From c4a6011621fa640b7f1d54d60e29f2ab711a822b Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Thu, 23 May 2024 16:32:25 +0530 Subject: [PATCH 1/4] [mob][photos] Revert back to FlutterIsolate --- .../face_ml/face_ml_service.dart | 6 +++--- mobile/lib/utils/image_ml_isolate.dart | 6 +++--- mobile/pubspec.lock | 16 ++++++++-------- mobile/pubspec.yaml | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart b/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart index 42fb6a2b7..f123e4b24 100644 --- a/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart +++ b/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart @@ -7,8 +7,8 @@ import "dart:typed_data" show Uint8List, Float32List, ByteData; import "dart:ui" show Image; import "package:computer/computer.dart"; -import "package:dart_ui_isolate/dart_ui_isolate.dart"; import "package:flutter/foundation.dart" show debugPrint, kDebugMode; +import "package:flutter_isolate/flutter_isolate.dart"; import "package:logging/logging.dart"; import "package:onnxruntime/onnxruntime.dart"; import "package:package_info_plus/package_info_plus.dart"; @@ -69,7 +69,7 @@ class FaceMlService { final Duration _inactivityDuration = const Duration(seconds: 120); int _activeTasks = 0; final _initLockIsolate = Lock(); - late DartUiIsolate _isolate; + late FlutterIsolate _isolate; late ReceivePort _receivePort = ReceivePort(); late SendPort _mainSendPort; @@ -223,7 +223,7 @@ class FaceMlService { _receivePort = ReceivePort(); try { - _isolate = await DartUiIsolate.spawn( + _isolate = await FlutterIsolate.spawn( _isolateMain, _receivePort.sendPort, ); diff --git a/mobile/lib/utils/image_ml_isolate.dart b/mobile/lib/utils/image_ml_isolate.dart index 66de0c255..977599220 100644 --- a/mobile/lib/utils/image_ml_isolate.dart +++ b/mobile/lib/utils/image_ml_isolate.dart @@ -4,7 +4,7 @@ import 'dart:isolate'; import 'dart:typed_data' show Float32List, Uint8List; import 'dart:ui'; -import "package:dart_ui_isolate/dart_ui_isolate.dart"; +import "package:flutter_isolate/flutter_isolate.dart"; import "package:logging/logging.dart"; import "package:photos/face/model/box.dart"; import "package:photos/face/model/dimension.dart"; @@ -45,7 +45,7 @@ class ImageMlIsolate { final _initLock = Lock(); final _functionLock = Lock(); - late DartUiIsolate _isolate; + late FlutterIsolate _isolate; late ReceivePort _receivePort = ReceivePort(); late SendPort _mainSendPort; @@ -69,7 +69,7 @@ class ImageMlIsolate { _receivePort = ReceivePort(); try { - _isolate = await DartUiIsolate.spawn( + _isolate = await FlutterIsolate.spawn( _isolateMain, _receivePort.sendPort, ); diff --git a/mobile/pubspec.lock b/mobile/pubspec.lock index 8b71025e9..2a05a20ad 100644 --- a/mobile/pubspec.lock +++ b/mobile/pubspec.lock @@ -363,14 +363,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.2" - dart_ui_isolate: - dependency: "direct main" - description: - name: dart_ui_isolate - sha256: bd531558002a00de0ac7dd73c84887dd01e652bd254d3098d7763881535196d7 - url: "https://pub.dev" - source: hosted - version: "1.1.1" dbus: dependency: transitive description: @@ -715,6 +707,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.8.0" + flutter_isolate: + dependency: "direct main" + description: + name: flutter_isolate + sha256: "994ddec596da4ca12ca52154fd59404077584643eb7e3f1008a55fda9fe0b76b" + url: "https://pub.dev" + source: hosted + version: "2.0.4" flutter_launcher_icons: dependency: "direct main" description: diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 538898cf9..5af801ae3 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -40,7 +40,6 @@ dependencies: cross_file: ^0.3.3 crypto: ^3.0.2 cupertino_icons: ^1.0.0 - dart_ui_isolate: ^1.1.1 defer_pointer: ^0.0.2 device_info_plus: ^9.0.3 dio: ^4.0.6 @@ -79,6 +78,7 @@ dependencies: flutter_email_sender: ^5.2.0 flutter_image_compress: ^1.1.0 flutter_inappwebview: ^5.8.0 + flutter_isolate: ^2.0.4 flutter_launcher_icons: ^0.13.1 flutter_local_notifications: ^17.0.0 flutter_localizations: From 63653411b89f1cd7d3b537ce4ba5f85ec63e1dea Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Thu, 23 May 2024 16:33:21 +0530 Subject: [PATCH 2/4] [mob][photos] Logs --- .../machine_learning/face_ml/face_ml_service.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart b/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart index f123e4b24..38968aa97 100644 --- a/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart +++ b/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart @@ -109,6 +109,7 @@ class FaceMlService { return; } _logger.info("init called"); + _logStatus(); await _computer.compute(initOrtEnv); try { await FaceDetectionService.instance.init(); @@ -517,7 +518,8 @@ class FaceMlService { for (final smallestChunk in smallerChunks) { if (!await canUseHighBandwidth()) { _logger.info( - 'stopping indexing because user is not connected to wifi',); + 'stopping indexing because user is not connected to wifi', + ); break outerLoop; } for (final enteFile in smallestChunk) { @@ -761,6 +763,9 @@ class FaceMlService { // disposeImageIsolateAfterUse: false, ); if (result == null) { + _logger.severe( + "Failed to analyze image with uploadedFileID: ${enteFile.uploadedFileID}", + ); return false; } final List faces = []; @@ -880,6 +885,7 @@ class FaceMlService { ), ) as String?; if (resultJsonString == null) { + _logger.severe('Analyzing image in isolate is giving back null'); return null; } result = FaceMlResult.fromJsonString(resultJsonString); From cc8e345a17932a2605fd2e0f37de5572387e596e Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Thu, 23 May 2024 16:35:45 +0530 Subject: [PATCH 3/4] Revert "[mob][photos] Revert back to FlutterIsolate" This reverts commit c4a6011621fa640b7f1d54d60e29f2ab711a822b. --- .../face_ml/face_ml_service.dart | 6 +++--- mobile/lib/utils/image_ml_isolate.dart | 6 +++--- mobile/pubspec.lock | 16 ++++++++-------- mobile/pubspec.yaml | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart b/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart index 38968aa97..bd45d1023 100644 --- a/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart +++ b/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart @@ -7,8 +7,8 @@ import "dart:typed_data" show Uint8List, Float32List, ByteData; import "dart:ui" show Image; import "package:computer/computer.dart"; +import "package:dart_ui_isolate/dart_ui_isolate.dart"; import "package:flutter/foundation.dart" show debugPrint, kDebugMode; -import "package:flutter_isolate/flutter_isolate.dart"; import "package:logging/logging.dart"; import "package:onnxruntime/onnxruntime.dart"; import "package:package_info_plus/package_info_plus.dart"; @@ -69,7 +69,7 @@ class FaceMlService { final Duration _inactivityDuration = const Duration(seconds: 120); int _activeTasks = 0; final _initLockIsolate = Lock(); - late FlutterIsolate _isolate; + late DartUiIsolate _isolate; late ReceivePort _receivePort = ReceivePort(); late SendPort _mainSendPort; @@ -224,7 +224,7 @@ class FaceMlService { _receivePort = ReceivePort(); try { - _isolate = await FlutterIsolate.spawn( + _isolate = await DartUiIsolate.spawn( _isolateMain, _receivePort.sendPort, ); diff --git a/mobile/lib/utils/image_ml_isolate.dart b/mobile/lib/utils/image_ml_isolate.dart index 977599220..66de0c255 100644 --- a/mobile/lib/utils/image_ml_isolate.dart +++ b/mobile/lib/utils/image_ml_isolate.dart @@ -4,7 +4,7 @@ import 'dart:isolate'; import 'dart:typed_data' show Float32List, Uint8List; import 'dart:ui'; -import "package:flutter_isolate/flutter_isolate.dart"; +import "package:dart_ui_isolate/dart_ui_isolate.dart"; import "package:logging/logging.dart"; import "package:photos/face/model/box.dart"; import "package:photos/face/model/dimension.dart"; @@ -45,7 +45,7 @@ class ImageMlIsolate { final _initLock = Lock(); final _functionLock = Lock(); - late FlutterIsolate _isolate; + late DartUiIsolate _isolate; late ReceivePort _receivePort = ReceivePort(); late SendPort _mainSendPort; @@ -69,7 +69,7 @@ class ImageMlIsolate { _receivePort = ReceivePort(); try { - _isolate = await FlutterIsolate.spawn( + _isolate = await DartUiIsolate.spawn( _isolateMain, _receivePort.sendPort, ); diff --git a/mobile/pubspec.lock b/mobile/pubspec.lock index 2a05a20ad..8b71025e9 100644 --- a/mobile/pubspec.lock +++ b/mobile/pubspec.lock @@ -363,6 +363,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.2" + dart_ui_isolate: + dependency: "direct main" + description: + name: dart_ui_isolate + sha256: bd531558002a00de0ac7dd73c84887dd01e652bd254d3098d7763881535196d7 + url: "https://pub.dev" + source: hosted + version: "1.1.1" dbus: dependency: transitive description: @@ -707,14 +715,6 @@ packages: url: "https://pub.dev" source: hosted version: "5.8.0" - flutter_isolate: - dependency: "direct main" - description: - name: flutter_isolate - sha256: "994ddec596da4ca12ca52154fd59404077584643eb7e3f1008a55fda9fe0b76b" - url: "https://pub.dev" - source: hosted - version: "2.0.4" flutter_launcher_icons: dependency: "direct main" description: diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 5af801ae3..538898cf9 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -40,6 +40,7 @@ dependencies: cross_file: ^0.3.3 crypto: ^3.0.2 cupertino_icons: ^1.0.0 + dart_ui_isolate: ^1.1.1 defer_pointer: ^0.0.2 device_info_plus: ^9.0.3 dio: ^4.0.6 @@ -78,7 +79,6 @@ dependencies: flutter_email_sender: ^5.2.0 flutter_image_compress: ^1.1.0 flutter_inappwebview: ^5.8.0 - flutter_isolate: ^2.0.4 flutter_launcher_icons: ^0.13.1 flutter_local_notifications: ^17.0.0 flutter_localizations: From 3810df1b2036cc537ea3f22d0a8e4f8a09ac8854 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Thu, 23 May 2024 16:37:34 +0530 Subject: [PATCH 4/4] [mob][photos] Fix for dart_ui_isolate --- .../lib/services/machine_learning/face_ml/face_ml_service.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart b/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart index bd45d1023..38079753c 100644 --- a/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart +++ b/mobile/lib/services/machine_learning/face_ml/face_ml_service.dart @@ -246,6 +246,7 @@ class FaceMlService { } /// The main execution function of the isolate. + @pragma('vm:entry-point') static void _isolateMain(SendPort mainSendPort) async { final receivePort = ReceivePort(); mainSendPort.send(receivePort.sendPort);