simply running the model will hang at 99% and Krita will have to be force closed.
Is this a problem with an incorrect install? In this case I will wait for that blog update. At the moment I can’t comment on any results because it just hangs.
This time I had another issue, too. When I tried to run the plugin, I got this error:
This was caused by a stale path in my kritarc file’s model_folder entry in plugin’s config section. I think you need to add a check for whether the model path exists and fall back to the default if something is wrong.
Additional feedback so far:
It would be nice to add titles to the four preview windows, or maybe number them to give a hint these show consecutive stages of processing.
For preview panning, if we can’t show the image, maybe replace it with checkers or anything else that would hint that the move is happening? (unless it’s pain in the back to implement, but I’d at least prototype it to see if it looks better).
Regarding HyperThreading, I tested it and you’re right. At least based on how long the CPU is occupied, it gives zero benefit, or even has a slight negative scaling. I agree in this case it’s best to not expose this option at all. Unexpected, but it is what it is. Sorry for the fuss (I was able to verify it, because it hangs at 99% for me )
In DebugView, there’s a suspicious spam related to the timers, probably this could be the reason for the hang (mixing up the threads):
QObject::startTimer: Timers cannot be started from another thread
Full DebugView log
00000001 0.00000000 [6788] No "haiku" available.
00000002 0.00002600 [6788] No "macintosh" available.
00000003 0.00004770 [6788] No "breeze" available.
00000004 0.00011330 [6788] Set style "fusion"
00000005 1.55145156 [6788] QObject::startTimer: Timers cannot have negative intervals
00000006 2.96358299 [5384] No "haiku" available.
00000007 2.96360445 [5384] No "macintosh" available.
00000008 2.96362591 [5384] No "breeze" available.
00000009 2.96369004 [5384] Set style "fusion"
00000010 4.36250782 [6788] Warning: requested data for unknown action "path-break-at-selection"
00000011 25.99798584 [6788] QObject::startTimer: Timers cannot be started from another thread
00000012 124.18965912 [13052] qt.qpa.mime: Retrying to obtain clipboard.
00000013 124.24171448 [13052] qt.qpa.mime: Retrying to obtain clipboard.
00000014 124.29344177 [13052] qt.qpa.mime: Unable to obtain clipboard.
00000015 140.77555847 [4120] Suspending
00000016 308.57980347 [6788] QObject::startTimer: Timers cannot be started from another thread
00000017 308.57983398 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000018 308.57986450 [6788] QObject::startTimer: Timers cannot be started from another thread
00000019 308.57989502 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000020 308.57989502 [6788] QObject::startTimer: Timers cannot be started from another thread
00000021 308.57992554 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000022 308.57995605 [6788] QObject::startTimer: Timers cannot be started from another thread
00000023 308.57995605 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000024 308.57998657 [6788] QObject::startTimer: Timers cannot be started from another thread
00000025 308.58001709 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000026 308.58001709 [6788] QObject::startTimer: Timers cannot be started from another thread
00000027 308.58004761 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000028 308.58007813 [6788] QObject::startTimer: Timers cannot be started from another thread
00000029 308.58010864 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000030 308.58010864 [6788] QObject::startTimer: Timers cannot be started from another thread
00000031 308.58010864 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000032 308.58013916 [6788] QObject::startTimer: Timers cannot be started from another thread
00000033 308.58016968 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000034 308.58016968 [6788] QObject::startTimer: Timers cannot be started from another thread
00000035 308.58020020 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000036 308.58023071 [6788] QObject::startTimer: Timers cannot be started from another thread
00000037 308.58026123 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000038 308.58026123 [6788] QObject::startTimer: Timers cannot be started from another thread
00000039 308.58026123 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000040 308.58029175 [6788] QObject::startTimer: Timers cannot be started from another thread
00000041 308.58032227 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000042 308.58032227 [6788] QObject::startTimer: Timers cannot be started from another thread
00000043 308.58035278 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000044 308.58038330 [6788] QObject::startTimer: Timers cannot be started from another thread
00000045 308.58041382 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000046 308.58041382 [6788] QObject::startTimer: Timers cannot be started from another thread
00000047 308.58041382 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000048 308.58044434 [6788] QObject::startTimer: Timers cannot be started from another thread
00000049 308.58047485 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000050 308.58047485 [6788] QObject::startTimer: Timers cannot be started from another thread
00000051 308.58053589 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000052 308.58053589 [6788] QObject::startTimer: Timers cannot be started from another thread
00000053 308.58056641 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000054 308.58059692 [6788] QObject::startTimer: Timers cannot be started from another thread
00000055 308.58059692 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000056 308.58062744 [6788] QObject::startTimer: Timers cannot be started from another thread
00000057 308.58062744 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000058 308.58065796 [6788] QObject::startTimer: Timers cannot be started from another thread
00000059 308.58068848 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000060 308.58071899 [6788] QObject::startTimer: Timers cannot be started from another thread
00000061 308.58071899 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000062 308.58074951 [6788] QObject::startTimer: Timers cannot be started from another thread
00000063 308.58074951 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000064 308.58078003 [6788] QObject::startTimer: Timers cannot be started from another thread
00000065 308.58078003 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000066 308.58081055 [6788] QObject::startTimer: Timers cannot be started from another thread
00000067 308.58084106 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000068 308.58087158 [6788] QObject::startTimer: Timers cannot be started from another thread
00000069 308.58090210 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000070 308.58090210 [6788] QObject::startTimer: Timers cannot be started from another thread
00000071 308.58093262 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000072 308.58096313 [6788] QObject::startTimer: Timers cannot be started from another thread
00000073 308.58099365 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000074 308.58102417 [6788] QObject::startTimer: Timers cannot be started from another thread
00000075 308.58102417 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000076 308.58105469 [6788] QObject::startTimer: Timers cannot be started from another thread
00000077 308.58105469 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000078 308.58108521 [6788] QObject::startTimer: Timers cannot be started from another thread
00000079 308.58111572 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000080 308.58111572 [6788] QObject::startTimer: Timers cannot be started from another thread
00000081 308.58114624 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000082 308.58117676 [6788] QObject::startTimer: Timers cannot be started from another thread
00000083 308.58117676 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000084 308.58120728 [6788] QObject::startTimer: Timers cannot be started from another thread
00000085 308.58120728 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000086 308.58123779 [6788] QObject::startTimer: Timers cannot be started from another thread
00000087 308.58126831 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000088 308.58126831 [6788] QObject::startTimer: Timers cannot be started from another thread
00000089 308.58129883 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000090 308.58132935 [6788] QObject::startTimer: Timers cannot be started from another thread
00000091 308.58139038 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000092 308.58139038 [6788] QObject::startTimer: Timers cannot be started from another thread
00000093 308.58139038 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000094 308.58142090 [6788] QObject::startTimer: Timers cannot be started from another thread
00000095 308.58145142 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000096 308.58145142 [6788] QObject::startTimer: Timers cannot be started from another thread
00000097 308.58148193 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000098 308.58151245 [6788] QObject::startTimer: Timers cannot be started from another thread
00000099 308.58154297 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000100 308.58154297 [6788] QObject::startTimer: Timers cannot be started from another thread
00000101 308.58154297 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000102 308.58157349 [6788] QObject::startTimer: Timers cannot be started from another thread
00000103 308.58160400 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000104 308.58163452 [6788] QObject::startTimer: Timers cannot be started from another thread
00000105 308.58166504 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000106 308.58166504 [6788] QObject::startTimer: Timers cannot be started from another thread
00000107 308.58169556 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000108 308.58169556 [6788] QObject::startTimer: Timers cannot be started from another thread
00000109 308.58172607 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000110 308.58172607 [6788] QObject::startTimer: Timers cannot be started from another thread
00000111 308.58175659 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000112 308.58178711 [6788] QObject::startTimer: Timers cannot be started from another thread
00000113 308.58181763 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000114 308.58181763 [6788] QObject::startTimer: Timers cannot be started from another thread
00000115 308.58184814 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000116 308.58184814 [6788] QObject::startTimer: Timers cannot be started from another thread
00000117 308.58187866 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000118 308.58187866 [6788] QObject::startTimer: Timers cannot be started from another thread
00000119 308.58190918 [6788] QObject::killTimer: Timers cannot be stopped from another thread
00000120 308.58193970 [6788] QObject::startTimer: Timers cannot be started from another thread
00000121 371.53219604 [12892] ????,???????. RetCode:404
(gdb) bt
#0 0x00007ffff52daeb2 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) ()
from /tmp/.mount_krita.PMaKal/usr/bin/../lib/libQt5Core.so.5
#1 0x00007ffff616bd32 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
() from /tmp/.mount_krita.PMaKal/usr/bin/../lib/libQt5Widgets.so.5
#2 0x00007ffff7ae864e in KisApplication::notify(QObject*, QEvent*) ()
from /tmp/.mount_krita.PMaKal/usr/bin/../lib/libkritaui.so.20
#3 0x00007ffff52db198 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
() from /tmp/.mount_krita.PMaKal/usr/bin/../lib/libQt5Core.so.5
#4 0x00007ffff5336289 in QTimerInfoList::activateTimers() ()
from /tmp/.mount_krita.PMaKal/usr/bin/../lib/libQt5Core.so.5
#5 0x00007ffff5336b8c in ?? ()
from /tmp/.mount_krita.PMaKal/usr/bin/../lib/libQt5Core.so.5
#6 0x00007ffff2b0dd3b in g_main_dispatch (context=0x555555e92910)
at ../../../glib/gmain.c:3419
#7 g_main_context_dispatch (context=0x555555e92910)
at ../../../glib/gmain.c:4137
#8 0x00007ffff2b632b8 in g_main_context_iterate.constprop.0 (
context=context@entry=0x555555e92910, block=block@entry=1,
dispatch=dispatch@entry=1, self=<optimized out>)
at ../../../glib/gmain.c:4213
#9 0x00007ffff2b0b3e3 in g_main_context_iteration (context=0x555555e92910,
may_block=1) at ../../../glib/gmain.c:4278
--Type <RET> for more, q to quit, c to continue without paging--
#10 0x00007ffff5336f0a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
from /tmp/.mount_krita.PMaKal/usr/bin/../lib/libQt5Core.so.5
#11 0x00007ffff52d9b3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
from /tmp/.mount_krita.PMaKal/usr/bin/../lib/libQt5Core.so.5
#12 0x00007ffff52e22f4 in QCoreApplication::exec() () from /tmp/.mount_krita.PMaKal/usr/bin/../lib/libQt5Core.so.5
#13 0x000055555555dab3 in main ()
Hey, I also tested the Linux build linked above. This was on Ubuntu 24.04 running XOrg.
As far as I can tell it works OK. I didn’t get any crashes. The UI is responsive, I can even move the window while it’s processing, it does not hang like on Windows. It’s much faster too, like by a mile faster!
I’m still seeing the same “wrong thread” log messages in gdb, so I think the same problem exists, it just doesn’t crash the UI like on Windows.
Another pain point for me is the UI. I’m on a 4K monitor, and even though it’s 32 inch, it’s not comfortable to use at 100% scale. Which means I’m forced to use it at 200% scale. Krita does not support fractional scaling (and neither does the OS to be honest). This means the UI is as if on 1080p screen and when I open a few collapsed sections, they get pushed outside the screen. I think you need to add a top level scrollbar in the window to deal with this problem. I happen to have a vertical monitor as well, so I was able to move the window there and use it no problem, but people on laptops or otherwise using 1080p resolution will be cooked.