• v0.2.5 3a69f3f6a1

    Fix scrape crash: don't run GUI slots on worker threads
    build / Windows x64 (Wine) (push) Successful in 3m44s
    build / Linux x86_64 (push) Successful in 3m4s

    quoije released this 2026-09-14 21:54:59 -04:00 | 2 commits to main since this release

    Connecting a signal to a Python lambda has no QObject receiver, so PySide6
    treats it as a direct connection and runs the lambda on the emitting (worker)
    thread. The scrape dialog connected its results signals to lambdas, so
    _on_results/_on_scraped executed on the worker thread and called
    accept()/done() there -> QThread::wait on itself and GUI widget mutation off
    the GUI thread -> 'QThread: Destroyed while thread is still running' abort.

    Connect to bound methods (queued to the GUI thread) and carry the generation
    on the worker (read via sender().gen). Also replaced the thread.finished
    lambdas in load_library/metadata with bound-method cleanup keyed by a
    thread._worker attribute.

    Downloads