robert7 / nixnote2

Nixnote - Evernote desktop client for Linux
GNU General Public License v3.0
297 stars 32 forks source link

Fixed two issues #186

Closed boo-yee closed 2 years ago

boo-yee commented 2 years ago

The issues are:

  1. issue 180:Can't search / replace with as replacement.

  2. Nixnote often crashes on my Linux and prints: QObject::~QObject: Timers cannot be stopped from another thread. It looks like issue 164, except the printed messages are different, but I suspect the reasons are probably same.

It is easy to reproduce the second issue. Just add a sleep(10) to the start of Thumbnailer::generateNextThumbnail(), to simulate the situation that the last generateNextThumbnail has not finished(when rendering some large notes, it'll be very slow), but the next call has come. Build and start nixnote, and do nothing. After 10~20 seconds, nixnote will crash. Thumbnailer::generateNextThumbnail() is driven by a timer, but it is not reentrant, so nixnote crashes.

Not only generateNextThumbnail with itself, but also generateNextThumbnail may have conficts with NBrowserwindow::setContent on the GUI thread.

The cost of fixing this issue is losing the periodical thumbnailing, this needs a trade-off. Actually the thumbnailing can be done in some other ways, for example, generate only text, not generate snapshots of the notes, just like Evernote does. If so, it can be done in a separate background thread instead of the GUI thread, and things will get easier.

And I also updated the README.md Windows part and the Windows deployment script.

robert7 commented 2 years ago

OK, looks good, thanks!