Fix macos memory leaks

This commit is contained in:
AuroraWright
2024-02-27 10:30:00 +01:00
parent 608e97c974
commit c361747e69
2 changed files with 21 additions and 18 deletions

View File

@@ -344,16 +344,17 @@ class AppleLiveText:
else: else:
raise ValueError(f'img_or_path must be a path or PIL.Image, instead got: {img_or_path}') raise ValueError(f'img_or_path must be a path or PIL.Image, instead got: {img_or_path}')
req = VKCImageAnalyzerRequest.alloc().initWithImage_requestType_(self._preprocess(img), 1) #VKAnalysisTypeText with objc.autorelease_pool():
req.setLocales_(['ja','en']) req = VKCImageAnalyzerRequest.alloc().initWithImage_requestType_(self._preprocess(img), 1) #VKAnalysisTypeText
self.result = None req.setLocales_(['ja','en'])
self.analyzer.processRequest_progressHandler_completionHandler_(req, lambda progress: None, self._process) self.result = None
self.analyzer.processRequest_progressHandler_completionHandler_(req, lambda progress: None, self._process)
CFRunLoopRunInMode(kCFRunLoopDefaultMode, 10.0, False) CFRunLoopRunInMode(kCFRunLoopDefaultMode, 10.0, False)
if self.result == None: if self.result == None:
return (False, 'Unknown error!') return (False, 'Unknown error!')
return (True, self.result) return (True, self.result)
def _process(self, analysis, error): def _process(self, analysis, error):
res = '' res = ''

View File

@@ -36,6 +36,7 @@ except ImportError:
pass pass
try: try:
import objc
from AppKit import NSData, NSImage, NSBitmapImageRep, NSDeviceRGBColorSpace, NSGraphicsContext, NSZeroPoint, NSZeroRect, NSCompositingOperationCopy from AppKit import NSData, NSImage, NSBitmapImageRep, NSDeviceRGBColorSpace, NSGraphicsContext, NSZeroPoint, NSZeroRect, NSCompositingOperationCopy
except ImportError: except ImportError:
pass pass
@@ -682,16 +683,17 @@ def run(read_from=None,
win32clipboard.CloseClipboard() win32clipboard.CloseClipboard()
elif mac_clipboard_polling: elif mac_clipboard_polling:
if not paused: if not paused:
old_count = count with objc.autorelease_pool():
count = pasteboard.changeCount() old_count = count
if not just_unpaused and count != old_count and NSPasteboardTypeTIFF in pasteboard.types(): count = pasteboard.changeCount()
clipboard_text = '' if not just_unpaused and count != old_count and NSPasteboardTypeTIFF in pasteboard.types():
if NSPasteboardTypeString in pasteboard.types(): clipboard_text = ''
clipboard_text = pasteboard.stringForType_(NSPasteboardTypeString) if NSPasteboardTypeString in pasteboard.types():
if ignore_flag or clipboard_text != '*ocr_ignore*': clipboard_text = pasteboard.stringForType_(NSPasteboardTypeString)
img = normalize_macos_clipboard(pasteboard.dataForType_(NSPasteboardTypeTIFF)) if ignore_flag or clipboard_text != '*ocr_ignore*':
img = Image.open(io.BytesIO(img)) img = normalize_macos_clipboard(pasteboard.dataForType_(NSPasteboardTypeTIFF))
process_clipboard = True img = Image.open(io.BytesIO(img))
process_clipboard = True
else: else:
if not paused: if not paused:
old_img = img old_img = img