diff --git a/mobile/lib/services/machine_learning/ml_indexing_isolate.dart b/mobile/lib/services/machine_learning/ml_indexing_isolate.dart index 52da789eb7..a9553b3fa7 100644 --- a/mobile/lib/services/machine_learning/ml_indexing_isolate.dart +++ b/mobile/lib/services/machine_learning/ml_indexing_isolate.dart @@ -28,6 +28,9 @@ class MLIndexingIsolate extends SuperIsolate { @override bool get shouldAutomaticDispose => true; + int _loadedModelsCount = 0; + int _deloadedModelsCount = 0; + final _initModelLock = Lock(); final _downloadModelLock = Lock(); @@ -144,6 +147,10 @@ class MLIndexingIsolate extends SuperIsolate { _logger.info( 'Loading models. faces: $shouldLoadFaces, clip: $shouldLoadClip', ); + _loadedModelsCount++; + _logger.info( + "Loaded models count: $_loadedModelsCount, deloaded models count: $_deloadedModelsCount", + ); await MLIndexingIsolate.instance ._loadModels(loadFaces: shouldLoadFaces, loadClip: shouldLoadClip); _logger.info('Models loaded'); @@ -249,6 +256,11 @@ class MLIndexingIsolate extends SuperIsolate { } if (modelNames.isEmpty) return; try { + _logger.info("Releasing models $modelNames"); + _deloadedModelsCount++; + _logger.info( + "Loaded models count: $_loadedModelsCount, deloaded models count: $_deloadedModelsCount", + ); await runInIsolate(IsolateOperation.releaseIndexingModels, { "modelNames": modelNames, "modelAddresses": modelAddresses, diff --git a/mobile/lib/services/machine_learning/ml_service.dart b/mobile/lib/services/machine_learning/ml_service.dart index 0961b50e4c..0b4fa4ad0b 100644 --- a/mobile/lib/services/machine_learning/ml_service.dart +++ b/mobile/lib/services/machine_learning/ml_service.dart @@ -51,6 +51,9 @@ class MLService { bool _isRunningML = false; bool _shouldPauseIndexingAndClustering = false; + bool get isRunningML => + _isRunningML || memoriesCacheService.isUpdatingMemories; + static const _kForceClusteringFaceCount = 8000; late final mlDataDB = MLDataDB.instance; diff --git a/mobile/lib/services/memories_cache_service.dart b/mobile/lib/services/memories_cache_service.dart index 21b9ab6f79..e5c7fb41e3 100644 --- a/mobile/lib/services/memories_cache_service.dart +++ b/mobile/lib/services/memories_cache_service.dart @@ -42,6 +42,9 @@ class MemoriesCacheService { List? _cachedMemories; bool _shouldUpdate = false; + bool _isUpdatingMemories = false; + bool get isUpdatingMemories => _isUpdatingMemories; + final _memoriesUpdateLock = Lock(); MemoriesCacheService(this._prefs) { @@ -174,6 +177,7 @@ class MemoriesCacheService { _logger.info( "Updating memories cache (shouldUpdate: $_shouldUpdate, forced: $forced)", ); + _isUpdatingMemories = true; try { final EnteWatch? w = kDebugMode ? EnteWatch("MemoriesCacheService") : null; @@ -226,6 +230,8 @@ class MemoriesCacheService { w?.logAndReset('_cacheUpdated method done'); } catch (e, s) { _logger.info("Error updating memories cache", e, s); + } finally { + _isUpdatingMemories = false; } }); } diff --git a/mobile/lib/ui/viewer/people/cluster_page.dart b/mobile/lib/ui/viewer/people/cluster_page.dart index 2b89097be9..0a7bc4ff2b 100644 --- a/mobile/lib/ui/viewer/people/cluster_page.dart +++ b/mobile/lib/ui/viewer/people/cluster_page.dart @@ -66,8 +66,7 @@ class _ClusterPageState extends State { files = widget.searchResult; _filesUpdatedEvent = Bus.instance.on().listen((event) { - if (event.type == EventType.deletedFromDevice || - event.type == EventType.deletedFromEverywhere || + if (event.type == EventType.deletedFromEverywhere || event.type == EventType.deletedFromRemote || event.type == EventType.hide) { for (var updatedFile in event.updatedFiles) { @@ -133,7 +132,7 @@ class _ClusterPageState extends State { selectedFiles: _selectedFiles, enableFileGrouping: widget.enableGrouping, initialFiles: widget.searchResult, - header: widget.showNamingBanner + header: widget.showNamingBanner && files.isNotEmpty ? PeopleBanner( type: PeopleBannerType.addName, faceWidget: PersonFaceWidget(