Added watchdog support
This commit is contained in:
@@ -35,8 +35,8 @@ from PySide6.QtCore import (
|
||||
from PySide6.QtGui import QImage, QImageReader, QImageIOHandler
|
||||
|
||||
from constants import (
|
||||
APP_CONFIG, CACHE_PATH, CACHE_MAX_SIZE, CONFIG_DIR, DISK_CACHE_MAX_BYTES,
|
||||
HAVE_BAGHEERASEARCH_LIB, IMAGE_EXTENSIONS,
|
||||
APP_CONFIG, CACHE_PATH, CACHE_MAX_SIZE, CACHE_MAX_RAM_BYTES, CONFIG_DIR,
|
||||
DISK_CACHE_MAX_BYTES, HAVE_BAGHEERASEARCH_LIB, IMAGE_EXTENSIONS,
|
||||
SCANNER_SETTINGS_DEFAULTS, SEARCH_CMD, THUMBNAIL_SIZES,
|
||||
UITexts
|
||||
)
|
||||
@@ -646,12 +646,10 @@ class ThumbnailCache(QObject):
|
||||
def _ensure_cache_limit(self):
|
||||
"""Enforces cache size limit by evicting oldest entries.
|
||||
Must be called with a write lock held."""
|
||||
# Safety limit: 512MB for thumbnails in RAM to prevent system freeze
|
||||
MAX_RAM_BYTES = 512 * 1024 * 1024
|
||||
|
||||
while len(self._thumbnail_cache) > 0 and (
|
||||
len(self._thumbnail_cache) >= CACHE_MAX_SIZE or
|
||||
self._cache_bytes_size > MAX_RAM_BYTES):
|
||||
self._cache_bytes_size > CACHE_MAX_RAM_BYTES):
|
||||
oldest_path = next(iter(self._thumbnail_cache))
|
||||
cached_sizes = self._thumbnail_cache.pop(oldest_path)
|
||||
for img, _ in cached_sizes.values():
|
||||
@@ -1752,6 +1750,10 @@ class ImageScanner(QThread):
|
||||
batch.append(r.result)
|
||||
self.count += 1
|
||||
images_loaded += 1
|
||||
# Emit progress every time an image is loaded
|
||||
if len(self.all_files) > 0:
|
||||
percent = int((self.count / len(self.all_files)) * 100)
|
||||
self.progress_percent.emit(percent)
|
||||
|
||||
# Clean up runnables
|
||||
runnables.clear()
|
||||
@@ -1796,12 +1798,11 @@ class ImageScanner(QThread):
|
||||
"scan_batch_size"]))
|
||||
return
|
||||
|
||||
if self.count % 10 == 0: # Update progress less frequently
|
||||
self.progress_msg.emit(
|
||||
UITexts.LOADING_SCAN.format(self.count, len(self.all_files)))
|
||||
if len(self.all_files) > 0:
|
||||
percent = int((self.count / len(self.all_files)) * 100)
|
||||
self.progress_percent.emit(percent)
|
||||
# Emit progress message less frequently, e.g., every 50 images or at batch
|
||||
# end
|
||||
if self.count % 50 == 0 or images_loaded >= to_load:
|
||||
self.progress_msg.emit(UITexts.LOADING_SCAN.format(
|
||||
self.count, len(self.all_files)))
|
||||
|
||||
self.index = len(self.all_files)
|
||||
if batch:
|
||||
|
||||
Reference in New Issue
Block a user