Preliminary testing of the strokes framework

Silvio Heinrich plassy at web.de
Wed Jul 6 20:23:36 CEST 2011


On 07/06/2011 06:14 PM, Dmitry Kazakov wrote:
> 1) Responsiveness of the brush became higher, because the number of 
> threads is optimal now.
> 2) The brush does not hang up in the end of every stroke.
> 3) You can start a new stroke even when the previous one has not 
> finished processing yet! This has never been possible before!

Yes, that is really great! It's much more responsive. You don't need to 
wait till a stroke is finished :D

> If you try to paint with a big brush, you can see that the tip of the 
> stroke is a bit blocky while painting. This happens because the 
> painting and updating the image is done in parallel. Is this 
> "blockyness" ok, or I should avoid this?

I actually didn't notice any "blockyness", so I think it's okay with me :D
But I had a few crashes all with the same back-trace:

Application: Krita (krita), signal: Segmentation fault

[Current thread is 1 (Thread 0x7faef41517a0 (LWP 7956))]

Thread 8 (Thread 0x7faece68b700 (LWP 7965)):

#0 0x00007faeeb11d2c3 in select () at ../sysdeps/unix/syscall-template.S:82

#1 0x00007faef3a7a76e in qt_safe_select(int, fd_set*, fd_set*, fd_set*, 
timeval const*) () from /usr/lib/libQtCore.so.4

#2 0x00007faef3a7fbeb in 
QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, 
timeval*) () from /usr/lib/libQtCore.so.4

#3 0x00007faef3a8081b in 
QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 
() from /usr/lib/libQtCore.so.4

#4 0x00007faef3a4fa02 in 
QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from 
/usr/lib/libQtCore.so.4

#5 0x00007faef3a4fdec in 
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from 
/usr/lib/libQtCore.so.4

#6 0x00007faef395a2fd in QThread::exec() () from /usr/lib/libQtCore.so.4

#7 0x00007faef3a2f5f8 in ?? () from /usr/lib/libQtCore.so.4

#8 0x00007faef395d27e in ?? () from /usr/lib/libQtCore.so.4

#9 0x00007faef1b55953 in ?? () from /usr/lib/nvidia-current/libGL.so.1

#10 0x00007faef36d2971 in start_thread (arg=<value optimized out>) at 
pthread_create.c:304

#11 0x00007faeeb12492d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112

#12 0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7faebb99a700 (LWP 7972)):

#0 pthread_cond_wait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162

#1 0x00007faef395de3b in QWaitCondition::wait(QMutex*, unsigned long) () 
from /usr/lib/libQtCore.so.4

#2 0x00007faeecf1c10e in ?? () from /usr/lib/libQtGui.so.4

#3 0x00007faef395d27e in ?? () from /usr/lib/libQtCore.so.4

#4 0x00007faef1b55953 in ?? () from /usr/lib/nvidia-current/libGL.so.1

#5 0x00007faef36d2971 in start_thread (arg=<value optimized out>) at 
pthread_create.c:304

#6 0x00007faeeb12492d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112

#7 0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7faebc19b700 (LWP 7973)):

#0 0x00007faeeb11d2c3 in select () at ../sysdeps/unix/syscall-template.S:82

#1 0x00007faef3a7a76e in qt_safe_select(int, fd_set*, fd_set*, fd_set*, 
timeval const*) () from /usr/lib/libQtCore.so.4

#2 0x00007faef3a7fbeb in 
QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, 
timeval*) () from /usr/lib/libQtCore.so.4

#3 0x00007faef3a8081b in 
QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 
() from /usr/lib/libQtCore.so.4

#4 0x00007faef3a4fa02 in 
QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from 
/usr/lib/libQtCore.so.4

#5 0x00007faef3a4fdec in 
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from 
/usr/lib/libQtCore.so.4

#6 0x00007faef395a2fd in QThread::exec() () from /usr/lib/libQtCore.so.4

#7 0x00007faef3a2f5f8 in ?? () from /usr/lib/libQtCore.so.4

#8 0x00007faef395d27e in ?? () from /usr/lib/libQtCore.so.4

#9 0x00007faef1b55953 in ?? () from /usr/lib/nvidia-current/libGL.so.1

#10 0x00007faef36d2971 in start_thread (arg=<value optimized out>) at 
pthread_create.c:304

#11 0x00007faeeb12492d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112

#12 0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7faebb199700 (LWP 8016)):

[KCrash Handler]

#6 size (this=0x40) at /usr/include/qt4/QtCore/qlist.h:94

#7 size (this=0x40) at /usr/include/qt4/QtCore/qlist.h:124

#8 KisStroke::numJobs (this=0x40) at 
/home/silvio/kde4/src/calligra/krita/image/kis_stroke.cpp:78

#9 0x00007faef271a2bc in KisStrokesQueue::sizeMetric 
(this=0x7faec0148890) at 
/home/silvio/kde4/src/calligra/krita/image/kis_strokes_queue.cpp:103

#10 0x00007faef271d6f5 in KisUpdateScheduler::processQueues 
(this=0x7faec00ae3d0) at 
/home/silvio/kde4/src/calligra/krita/image/kis_update_scheduler.cpp:160

#11 0x00007faef26726a1 in KisUpdateScheduler::qt_metacall 
(this=0x7faec00ae3d0, _c=QMetaObject::InvokeMetaMethod, _id=<value 
optimized out>, _a=<value optimized out>) at 
/home/silvio/kde4/build/calligra/krita/image/moc_kis_update_scheduler.cpp:75

#12 0x00007faef3a68b27 in QMetaObject::activate(QObject*, QMetaObject 
const*, int, void**) () from /usr/lib/libQtCore.so.4

#13 0x00007faef2672446 in KisUpdaterContext::qt_metacall 
(this=0x7faec007cb00, _c=QMetaObject::InvokeMetaMethod, _id=<value 
optimized out>, _a=0x7faebb198c70) at 
/home/silvio/kde4/build/calligra/krita/image/moc_kis_updater_context.cpp:82

#14 0x00007faef3a68b27 in QMetaObject::activate(QObject*, QMetaObject 
const*, int, void**) () from /usr/lib/libQtCore.so.4

#15 0x00007faef2675848 in KisUpdateJobItem::run (this=0x7faec01573f0) at 
/home/silvio/kde4/build/calligra/krita/image/../../../../src/calligra/krita/image/kis_update_job_item.h:66

#16 0x00007faef3952d02 in ?? () from /usr/lib/libQtCore.so.4

#17 0x00007faef395d27e in ?? () from /usr/lib/libQtCore.so.4

#18 0x00007faef1b55953 in ?? () from /usr/lib/nvidia-current/libGL.so.1

#19 0x00007faef36d2971 in start_thread (arg=<value optimized out>) at 
pthread_create.c:304

#20 0x00007faeeb12492d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112

#21 0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7faeb9df1700 (LWP 8017)):

#0 pthread_cond_wait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162

#1 0x00007faef395c533 in ?? () from /usr/lib/libQtCore.so.4

#2 0x00007faef3957f05 in QMutex::lock() () from /usr/lib/libQtCore.so.4

#3 0x00007faef271a211 in KisStrokesQueue::processQueue 
(this=0x7faec0148890, updaterContext=...) at 
/home/silvio/kde4/src/calligra/krita/image/kis_strokes_queue.cpp:83

#4 0x00007faef26726a1 in KisUpdateScheduler::qt_metacall 
(this=0x7faec00ae3d0, _c=QMetaObject::InvokeMetaMethod, _id=<value 
optimized out>, _a=<value optimized out>) at 
/home/silvio/kde4/build/calligra/krita/image/moc_kis_update_scheduler.cpp:75

#5 0x00007faef3a68b27 in QMetaObject::activate(QObject*, QMetaObject 
const*, int, void**) () from /usr/lib/libQtCore.so.4

#6 0x00007faef2672446 in KisUpdaterContext::qt_metacall 
(this=0x7faec007cb00, _c=QMetaObject::InvokeMetaMethod, _id=<value 
optimized out>, _a=0x7faeb9df0c70) at 
/home/silvio/kde4/build/calligra/krita/image/moc_kis_updater_context.cpp:82

#7 0x00007faef3a68b27 in QMetaObject::activate(QObject*, QMetaObject 
const*, int, void**) () from /usr/lib/libQtCore.so.4

#8 0x00007faef2675848 in KisUpdateJobItem::run (this=0x7faec01427a0) at 
/home/silvio/kde4/build/calligra/krita/image/../../../../src/calligra/krita/image/kis_update_job_item.h:66

#9 0x00007faef3952d02 in ?? () from /usr/lib/libQtCore.so.4

#10 0x00007faef395d27e in ?? () from /usr/lib/libQtCore.so.4

#11 0x00007faef1b55953 in ?? () from /usr/lib/nvidia-current/libGL.so.1

#12 0x00007faef36d2971 in start_thread (arg=<value optimized out>) at 
pthread_create.c:304

#13 0x00007faeeb12492d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112

#14 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7faeb29cf700 (LWP 8018)):

#0 pthread_cond_timedwait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:212

#1 0x00007faef395dda2 in QWaitCondition::wait(QMutex*, unsigned long) () 
from /usr/lib/libQtCore.so.4

#2 0x00007faef3952da2 in ?? () from /usr/lib/libQtCore.so.4

#3 0x00007faef395d27e in ?? () from /usr/lib/libQtCore.so.4

#4 0x00007faef1b55953 in ?? () from /usr/lib/nvidia-current/libGL.so.1

#5 0x00007faef36d2971 in start_thread (arg=<value optimized out>) at 
pthread_create.c:304

#6 0x00007faeeb12492d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112

#7 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7faeb21ce700 (LWP 8019)):

#0 pthread_cond_timedwait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:212

#1 0x00007faef395dda2 in QWaitCondition::wait(QMutex*, unsigned long) () 
from /usr/lib/libQtCore.so.4

#2 0x00007faef3952da2 in ?? () from /usr/lib/libQtCore.so.4

#3 0x00007faef395d27e in ?? () from /usr/lib/libQtCore.so.4

#4 0x00007faef1b55953 in ?? () from /usr/lib/nvidia-current/libGL.so.1

#5 0x00007faef36d2971 in start_thread (arg=<value optimized out>) at 
pthread_create.c:304

#6 0x00007faeeb12492d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112

#7 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7faef41517a0 (LWP 7956)):

#0 0x00007faeeb0f3497 in sched_yield () at 
../sysdeps/unix/syscall-template.S:82

#1 0x00007faee6a04c9a in ?? () from 
/usr/lib/nvidia-current/libnvidia-glcore.so.260.19.06

#2 0x00007faee6a04ddb in ?? () from 
/usr/lib/nvidia-current/libnvidia-glcore.so.260.19.06

#3 0x00007faee69ab875 in ?? () from 
/usr/lib/nvidia-current/libnvidia-glcore.so.260.19.06

#4 0x00007faee6944018 in ?? () from 
/usr/lib/nvidia-current/libnvidia-glcore.so.260.19.06

#5 0x00007faee6925e8d in ?? () from 
/usr/lib/nvidia-current/libnvidia-glcore.so.260.19.06

#6 0x00007faee6925d41 in ?? () from 
/usr/lib/nvidia-current/libnvidia-glcore.so.260.19.06

#7 0x00007faef1b36c25 in ?? () from /usr/lib/nvidia-current/libGL.so.1

#8 0x00007faef3f9979c in _dl_fini () at dl-fini.c:248

#9 0x00007faeeb0774f2 in __run_exit_handlers (status=1) at exit.c:78

#10 exit (status=1) at exit.c:100

#11 0x00007faeeca60678 in ?? () from /usr/lib/libQtGui.so.4

#12 0x00007faeed73be98 in KApplication::xioErrhandler(_XDisplay*) () 
from /usr/lib/libkdeui.so.5

#13 0x00007faef13a486e in _XIOError () from /usr/lib/libX11.so.6

#14 0x00007faef13ac415 in ?? () from /usr/lib/libX11.so.6

#15 0x00007faef13acd07 in _XEventsQueued () from /usr/lib/libX11.so.6

#16 0x00007faef139547f in XEventsQueued () from /usr/lib/libX11.so.6

#17 0x00007faeeca9cbe8 in ?? () from /usr/lib/libQtGui.so.4

#18 0x00007faef3a4fa02 in 
QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from 
/usr/lib/libQtCore.so.4

#19 0x00007faef3a4fdec in 
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from 
/usr/lib/libQtCore.so.4

#20 0x00007faef3a53ebb in QCoreApplication::exec() () from 
/usr/lib/libQtCore.so.4

#21 0x00007faef3d873d5 in kdemain (argc=<value optimized out>, 
argv=<value optimized out>) at 
/home/silvio/kde4/src/calligra/krita/main.cc:49

#22 0x00007faeeb05cd8e in __libc_start_main (main=<value optimized out>, 
argc=<value optimized out>, ubp_av=<value optimized out>, init=<value 
optimized out>, fini=<value optimized out>, rtld_fini=<value optimized 
out>, stack_end=0x7fff44be43b8) at libc-start.c:226

#23 0x00000000004008d9 in _start ()



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/kimageshop/attachments/20110706/6faa7204/attachment-0001.htm 


More information about the kimageshop mailing list