When downloading a bunch (7 or 8) of files I noticed qutebrowser was using a lot
of CPU (>60%).
I did some looking, and in the `downloadProgress` callback qutebrower emits the
updated signal which causes everything to be updated. We don't really need this,
since _update_speed() calls it every 500ms anyway.
I tested by downloading 3 copies of the 1GB file [on this
page]( http://www.thinkbroadband.com/download.html ) qutebrowser consistently
pulls about 25% CPU on my system.
When removing this call, the system pulls about 17% CPU. Not a great amount, but
still significant enough to warrant a pull request ;-)
Some other notes:
- wget uses about 1.5%-2% for each process when downloading.
- When not doing any UI updates & speed calculations qutebrowser uses about 15%.
- Doing some quick profiling and strategic commenting seems to indicate there
isn't any other low hanging fruit to be improved on here.
This hopefully fixes this warning on Windows:
QWindowsWindow::setGeometryDp: Unable to set geometry 113x16+192+124 on
QWidgetWindow/'ProgressClassWindow'. Resulting geometry: 124x16+192+124
(frame: 8, 31, 8, 8, custom margin: 0, 0, 0, 0, minimum size: 0x0, maximum
size: 16777215x16777215).
Upstream changelog:
- Messages sent by qDebug, qWarning, qCritical are captured and displayed when
tests fail, similar to pytest-catchlog. Also, tests can be configured to
automatically fail if an unexpected message is generated. (See docs).
- New method waitSignals: will block untill all signals given are triggered, see
docs (thanks @The-Compiler for idea and complete PR).
- New parameter raising to waitSignals and waitSignals: when True (defaults to
False) will raise a qtbot.SignalTimeoutError exception when timeout is reached,
see docs (thanks again to @The-Compiler for idea and complete PR).
- pytest-qt now requires pytest version >= 2.7.
Internal changes to improve memory management
- QApplication.exit() is no longer called at the end of the test session and
the QApplication instance is not garbage collected anymore;
- QtBot no longer receives a QApplication as a parameter in the constructor,
always referencing QApplication.instance() now; this avoids keeping an extra
reference in the qtbot instances.
- deleteLater is called on widgets added in QtBot.addWidget at the end of each
test;
- QApplication.processEvents() is called at the end of each test to make sure
widgets are cleaned up;
Error messages for validate() are more specific.
Return of standarddir.conf() is explicitly tested for None to avoid ambiguity
with other falsey values.
Upstream changelog:
- Fix issue #6 - support PEP263 for source file encoding.
- Clarified license to be MIT like pytest-pep8 from which this is derived.
This fixes#716, which sufficiently annoyed me to make this quick fix. It's not
a great fix, but it's not worse than what we had already, and the current
behaviour is very surprising IMHO.
Before, the completion was shrinked every time any item was removed/added to
the completion (rowsRemoved/rowsInserted signals), which was >3000 times when
completing history.
Also, the signals got connected multiple times if setting the same model, which
made the situation worse.
Fixes#734.