mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 05:54:15 +02:00
[fix][ui] using the sleep function wrongly within the Qt threads
This commit is contained in:
@@ -42,6 +42,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
- not calling initial required tasks after enabling a new package type on settings
|
||||
- not updating the type filters if only one type is available after refreshing the table
|
||||
- displaying the type filters on the search results when there is only one type available after some actions finish
|
||||
- using the sleep function wrongly within the Qt threads (causes random crashes)
|
||||
- minor fixes
|
||||
- Tray
|
||||
- update notifications not working on Ubuntu 18.04
|
||||
|
||||
@@ -27,7 +27,7 @@ class DatabaseUpdater(Thread):
|
||||
self.http_client = http_client
|
||||
self.logger = logger
|
||||
self.db_locks = db_locks
|
||||
self.sleep = interval
|
||||
self.sleep_time = interval
|
||||
self.i18n = i18n
|
||||
self.task_man = task_man
|
||||
self.task_id = 'appim_db'
|
||||
@@ -103,7 +103,7 @@ class DatabaseUpdater(Thread):
|
||||
while True:
|
||||
self.download_databases()
|
||||
self.logger.info('Sleeping')
|
||||
time.sleep(self.sleep)
|
||||
time.sleep(self.sleep_time)
|
||||
|
||||
|
||||
class SymlinksVerifier(Thread):
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import os
|
||||
import time
|
||||
import traceback
|
||||
from pathlib import Path
|
||||
from threading import Thread
|
||||
from typing import Tuple, Dict, Optional, Set
|
||||
|
||||
from PyQt5.QtCore import Qt, QSize
|
||||
from PyQt5.QtCore import Qt, QSize, QTimer
|
||||
from PyQt5.QtGui import QIcon, QPixmap, QIntValidator, QCursor
|
||||
from PyQt5.QtWidgets import QRadioButton, QGroupBox, QCheckBox, QComboBox, QGridLayout, QWidget, \
|
||||
QLabel, QSizePolicy, QLineEdit, QToolButton, QHBoxLayout, QFormLayout, QFileDialog, QTabWidget, QVBoxLayout, \
|
||||
@@ -600,26 +598,23 @@ class InputFilter(QLineEdit):
|
||||
super(InputFilter, self).__init__()
|
||||
self.on_key_press = on_key_press
|
||||
self.last_text = ''
|
||||
self.typing = None
|
||||
self.typing = QTimer()
|
||||
self.typing.timeout.connect(self.notify_text_change)
|
||||
|
||||
def notify_text_change(self):
|
||||
time.sleep(2)
|
||||
text = self.text().strip()
|
||||
|
||||
if text != self.last_text:
|
||||
self.last_text = text
|
||||
self.on_key_press()
|
||||
|
||||
self.typing = None
|
||||
|
||||
def keyPressEvent(self, event):
|
||||
super(InputFilter, self).keyPressEvent(event)
|
||||
|
||||
if self.typing:
|
||||
if self.typing.isActive():
|
||||
return
|
||||
|
||||
self.typing = Thread(target=self.notify_text_change, daemon=True)
|
||||
self.typing.start()
|
||||
self.typing.start(2000)
|
||||
|
||||
def get_text(self):
|
||||
return self.last_text
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import datetime
|
||||
import operator
|
||||
import time
|
||||
from functools import reduce
|
||||
from typing import Tuple
|
||||
|
||||
@@ -42,7 +41,7 @@ class Prepare(QThread, TaskManager):
|
||||
self.signal_ask_password.emit()
|
||||
|
||||
while self.waiting_password:
|
||||
time.sleep(0.1) # waiting for user input
|
||||
self.msleep(100) # waiting for user input
|
||||
|
||||
return self.password_response
|
||||
|
||||
@@ -83,12 +82,12 @@ class CheckFinished(QThread):
|
||||
self.finished = None
|
||||
|
||||
def run(self):
|
||||
time.sleep(3)
|
||||
self.sleep(3)
|
||||
while True:
|
||||
if self.total == self.finished:
|
||||
break
|
||||
|
||||
time.sleep(0.01)
|
||||
self.msleep(10)
|
||||
|
||||
self.signal_finished.emit()
|
||||
|
||||
@@ -112,7 +111,7 @@ class EnableSkip(QThread):
|
||||
self.signal_timeout.emit()
|
||||
break
|
||||
|
||||
time.sleep(0.1)
|
||||
self.msleep(100)
|
||||
|
||||
|
||||
class PreparePanel(QWidget, TaskManager):
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import os
|
||||
import re
|
||||
import requests
|
||||
import time
|
||||
import traceback
|
||||
from PyQt5.QtCore import QThread, pyqtSignal
|
||||
from datetime import datetime, timedelta
|
||||
from io import StringIO
|
||||
from pathlib import Path
|
||||
from typing import List, Type, Set, Tuple
|
||||
|
||||
import requests
|
||||
from PyQt5.QtCore import QThread, pyqtSignal
|
||||
|
||||
from bauh import LOGS_PATH
|
||||
from bauh.api.abstract.cache import MemoryCache
|
||||
from bauh.api.abstract.controller import SoftwareManager, UpgradeRequirement, UpgradeRequirements
|
||||
@@ -73,7 +74,7 @@ class AsyncAction(QThread, ProcessWatcher):
|
||||
|
||||
def wait_user(self):
|
||||
while self.wait_confirmation:
|
||||
time.sleep(0.01)
|
||||
self.msleep(10)
|
||||
|
||||
def print(self, msg: str):
|
||||
if msg:
|
||||
@@ -670,7 +671,7 @@ class AnimateProgress(QThread):
|
||||
self.increment = 5
|
||||
self.stop = False
|
||||
self.limit = 100
|
||||
self.sleep = 0.05
|
||||
self.wait_time = 50
|
||||
self.last_progress = 0
|
||||
self.manual = False
|
||||
self.paused = False
|
||||
@@ -680,7 +681,7 @@ class AnimateProgress(QThread):
|
||||
self.increment = 5
|
||||
self.stop = False
|
||||
self.limit = 100
|
||||
self.sleep = 0.05
|
||||
self.wait_time = 50
|
||||
self.last_progress = 0
|
||||
self.manual = False
|
||||
self.paused = False
|
||||
@@ -724,7 +725,7 @@ class AnimateProgress(QThread):
|
||||
|
||||
self.progress_value += current_increment
|
||||
|
||||
time.sleep(self.sleep)
|
||||
super(AnimateProgress, self).msleep(self.wait_time)
|
||||
|
||||
self.signal_change.emit(100)
|
||||
self._reset()
|
||||
@@ -766,7 +767,7 @@ class NotifyPackagesReady(QThread):
|
||||
if not to_verify:
|
||||
break
|
||||
|
||||
time.sleep(0.1)
|
||||
self.msleep(100)
|
||||
|
||||
self.pkgs = None
|
||||
self.work = True
|
||||
@@ -787,7 +788,7 @@ class NotifyInstalledLoaded(QThread):
|
||||
self.loaded = True
|
||||
|
||||
def run(self):
|
||||
time.sleep(0.1)
|
||||
self.msleep(100)
|
||||
self.signal_loaded.emit()
|
||||
|
||||
|
||||
@@ -828,7 +829,7 @@ class LaunchPackage(AsyncAction):
|
||||
def run(self):
|
||||
if self.pkg:
|
||||
try:
|
||||
time.sleep(0.25)
|
||||
super(LaunchPackage, self).msleep(250)
|
||||
self.manager.launch(self.pkg.model)
|
||||
self.notify_finished(True)
|
||||
except:
|
||||
@@ -911,7 +912,7 @@ class ApplyFilters(AsyncAction):
|
||||
self.signal_table.emit(pkgs_info)
|
||||
|
||||
while self.wait_table_update:
|
||||
time.sleep(0.005)
|
||||
super(ApplyFilters, self).msleep(5)
|
||||
|
||||
self.notify_finished()
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import datetime
|
||||
import logging
|
||||
import logging
|
||||
import operator
|
||||
import time
|
||||
@@ -507,11 +507,7 @@ class ManageWindow(QWidget):
|
||||
def stop_notifying_package_states(self):
|
||||
if self.thread_notify_pkgs_ready.isRunning():
|
||||
self.signal_stop_notifying.emit()
|
||||
|
||||
expires_at = datetime.datetime.now() + datetime.timedelta(seconds=5)
|
||||
|
||||
while datetime.datetime.now() < expires_at and self.thread_notify_pkgs_ready.isRunning():
|
||||
time.sleep(0.1)
|
||||
self.thread_notify_pkgs_ready.wait(1000)
|
||||
|
||||
def _update_table_and_upgrades(self, pkgs_info: dict):
|
||||
self._update_table(pkgs_info=pkgs_info, signal=True)
|
||||
|
||||
Reference in New Issue
Block a user