Am 24.05.2011 um 07:42 schrieb Tommaso Cucinotta:
> Il 24/05/2011 06:34, John McCabe-Dansted ha scritto:
>> To reproduce:
>> 1) Open a complex lyx file with many math insets, macros etc. (e.g.
>> http://www.csse.uwa.edu.au/~john/drafts/Thesis_Background.lyx, or just
>> create a new document and fill the screen with "$x$ x", where $x$
>> represents math-mode x)
>> 2) Hold down X (or any other normal key) for a few seconds.
>> 3) Note that LyX cannot keep up with typematic rate, so X's will
>> continue to appear a couple of seconds after release key.
>
> That shows up also without maths: I have put ~3000 chars in a single line
> without breaks. Now when I'm in full-screen mode (1440x900) the cursor moves
> very slowly (only ~10 positions per second), so cursor movements are buffered
> and I can see one of my 2 cores going 100% from the monitor applet.
> When resizing to a smaller window size (800x?) it returns to move quickly as
> usual.
> Anyway, not really a realistic use-case :-).
>
> With your thesis, I can see slowness only when causing a scroll up and down
> of the document (this is already evident [and annoying] with the UserGuide),
> otherwise movements don't seem slow if the cursor simply moves on the visible
> screen without causing any scrolling.
>
> Also disabling on the fly spell-check and instant preview doesn't help.
I tried to scroll through the Math manual... and it crashed. This is SVN trunk.
(gdb) run
Running…
warning: line 537: incompatible stripping characters and condition
warning: line 541: incompatible stripping characters and condition
Program received signal: “EXC_BAD_ACCESS”.
(gdb) bt
#0 0x028f6b60 in QTextEngine::shapeTextMac ()
#1 0x028f6fef in QTextEngine::shapeText ()
#2 0x028f745f in QTextEngine::shape ()
#3 0x028f8da2 in QTextEngine::shapeLine ()
#4 0x0280c1df in QPainter::drawText ()
#5 0x0280c8df in QPainter::drawText ()
#6 0x0072bc8e in QPainter::drawText (this=0xbfffcf38, x=508, y=602,
s=@0xbfffbb8c) at qpainter.h:916
#7 0x0072a7ae in lyx::frontend::GuiPainter::text (this=0xbfffcf2c, x=508,
y=602, s=@0x1b66789c, f=@0xbfffce48) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiPainter.cpp:435
#8 0x002cb0d2 in lyx::PainterInfo::draw (this=0xbfffce44, x=508, y=602,
str=@0x1b66789c) at /Users/stephan/cvs/lyx/lyx-devel/src/MetricsInfo.cpp:83
#9 0x0042557a in lyx::InsetMathSymbol::draw (this=0x1bcf4770, pi=@0xbfffce44,
x=508, y=602) at
/Users/stephan/cvs/lyx/lyx-devel/src/mathed/InsetMathSymbol.cpp:110
#10 0x00433956 in lyx::MathData::draw (this=0x1bcf46e0, pi=@0xbfffce44, x=507,
y=602) at /Users/stephan/cvs/lyx/lyx-devel/src/mathed/MathData.cpp:320
#11 0x003d05fb in lyx::InsetMathGrid::drawWithMargin (this=0x1bcf4290,
pi=@0xbfffce44, x=505, y=602, lmargin=1, rmargin=1) at
/Users/stephan/cvs/lyx/lyx-devel/src/mathed/InsetMathGrid.cpp:516
#12 0x003d0994 in lyx::InsetMathGrid::draw (this=0x1bcf4290, pi=@0xbfffce44,
x=505, y=602) at
/Users/stephan/cvs/lyx/lyx-devel/src/mathed/InsetMathGrid.cpp:504
#13 0x003e96ec in lyx::InsetMathHull::draw (this=0x1bcf4290, pi=@0xbfffce44,
x=504, y=602) at
/Users/stephan/cvs/lyx/lyx-devel/src/mathed/InsetMathHull.cpp:493
#14 0x003154d5 in lyx::RowPainter::paintInset (this=0xbfffc4a8,
inset=0x1bcf4290, pos=0) at
/Users/stephan/cvs/lyx/lyx-devel/src/rowpainter.cpp:140
#15 0x0031635f in lyx::RowPainter::paintText (this=0xbfffc4a8) at
/Users/stephan/cvs/lyx/lyx-devel/src/rowpainter.cpp:938
#16 0x0036572d in lyx::TextMetrics::drawParagraph (this=0x1d4aad74,
pi=@0xbfffce44, pit=0, x=504, y=602) at
/Users/stephan/cvs/lyx/lyx-devel/src/TextMetrics.cpp:2183
#17 0x00365b26 in lyx::TextMetrics::draw (this=0x1d4aad74, pi=@0xbfffce44,
x=504, y=602) at /Users/stephan/cvs/lyx/lyx-devel/src/TextMetrics.cpp:2061
#18 0x005b3bdb in lyx::InsetText::draw (this=0x1bcf6c40, pi=@0xbfffce44, x=500,
y=602) at /Users/stephan/cvs/lyx/lyx-devel/src/insets/InsetText.cpp:230
#19 0x00580a72 in lyx::InsetTabular::draw (this=0x1bcf0220, pi=@0xbfffce44,
x=294, y=610) at
/Users/stephan/cvs/lyx/lyx-devel/src/insets/InsetTabular.cpp:3632
#20 0x003154d5 in lyx::RowPainter::paintInset (this=0xbfffcc38,
inset=0x1bcf0220, pos=1) at
/Users/stephan/cvs/lyx/lyx-devel/src/rowpainter.cpp:140
#21 0x0031635f in lyx::RowPainter::paintText (this=0xbfffcc38) at
/Users/stephan/cvs/lyx/lyx-devel/src/rowpainter.cpp:938
#22 0x0036572d in lyx::TextMetrics::drawParagraph (this=0x1d4a68e4,
pi=@0xbfffce44, pit=393, x=0, y=610) at
/Users/stephan/cvs/lyx/lyx-devel/src/TextMetrics.cpp:2183
#23 0x00365b26 in lyx::TextMetrics::draw (this=0x1d4a68e4, pi=@0xbfffce44, x=0,
y=610) at /Users/stephan/cvs/lyx/lyx-devel/src/TextMetrics.cpp:2061
#24 0x00154dca in lyx::BufferView::draw (this=0x1bb81750, pain=@0xbfffcf2c) at
/Users/stephan/cvs/lyx/lyx-devel/src/BufferView.cpp:2771
#25 0x00828ddc in lyx::frontend::GuiWorkArea::updateScreen (this=0x1bb73630) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiWorkArea.cpp:1113
#26 0x0082c933 in lyx::frontend::GuiWorkArea::redraw (this=0x1bb73630,
update_metrics=true) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiWorkArea.cpp:462
#27 0x005c0fd1 in lyx::frontend::WorkAreaManager::redrawAll (this=0x1b628600,
update_metrics=true) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/WorkAreaManager.cpp:37
#28 0x000d77d8 in lyx::Buffer::changed (this=0x1b629390, update_metrics=true)
at /Users/stephan/cvs/lyx/lyx-devel/src/Buffer.cpp:465
#29 0x0015b60c in lyx::BufferView::dispatch (this=0x1bb81750, cmd=@0xbfffe614,
dr=@0xbfffe4f0) at /Users/stephan/cvs/lyx/lyx-devel/src/BufferView.cpp:1681
#30 0x007f6866 in lyx::frontend::GuiView::dispatchToBufferView (this=0x35e1e70,
cmd=@0xbfffe614, dr=@0xbfffe4f0) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiView.cpp:3061
#31 0x0081074a in lyx::frontend::GuiView::dispatch (this=0x35e1e70,
cmd=@0xbfffe614, dr=@0xbfffe4f0) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiView.cpp:3561
#32 0x005f0892 in lyx::frontend::GuiApplication::dispatch (this=0x3527410,
cmd=@0xbfffe614, dr=@0xbfffe4f0) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiApplication.cpp:1621
#33 0x005f1089 in lyx::frontend::GuiApplication::dispatch (this=0x3527410,
cmd=@0xbfffe614) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiApplication.cpp:1099
#34 0x00285429 in lyx::dispatch (action=@0xbfffe614) at
/Users/stephan/cvs/lyx/lyx-devel/src/LyX.cpp:1272
#35 0x005eaf51 in lyx::frontend::GuiApplication::processFuncRequest
(this=0x3527410, func=@0xbfffe614) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiApplication.cpp:1756
#36 0x005ec14b in lyx::frontend::GuiApplication::processKeySym (this=0x3527410,
keysym=@0xbfffe6cc, state=lyx::NoModifier) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiApplication.cpp:1750
#37 0x0082b36e in lyx::frontend::GuiWorkArea::processKeySym (this=0x1bb73630,
key=@0xbfffe6cc, mod=lyx::NoModifier) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiWorkArea.cpp:492
#38 0x0082b73c in lyx::frontend::GuiWorkArea::keyPressEvent (this=0x1bb73630,
ev=0xbfffedd0) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiWorkArea.cpp:1047
#39 0x027224d2 in QWidget::event ()
#40 0x02a98ed8 in QFrame::event ()
#41 0x02b287bf in QAbstractScrollArea::event ()
#42 0x00829e43 in lyx::frontend::GuiWorkArea::event (this=0x1bb73630,
e=0xbfffedd0) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiWorkArea.cpp:696
#43 0x026caeec in QApplicationPrivate::notify_helper ()
#44 0x026d1ad5 in QApplication::notify ()
#45 0x005e954c in lyx::frontend::GuiApplication::notify (this=0x3527410,
receiver=0x1bb73630, event=0xbfffedd0) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiApplication.cpp:2141
#46 0x0324b78c in QCoreApplication::notifyInternal ()
#47 0x026cb09c in qt_sendSpontaneousEvent ()
#48 0x02743d29 in QKeyMapper::sendKeyEvent ()
#49 0x0274546a in QKeyMapperPrivate::translateKeyEvent ()
#50 0x0267fd2f in qt_dispatchKeyEvent ()
#51 0x026748bf in -[QCocoaView keyDown:] ()
#52 0x97bead38 in -[NSWindow sendEvent:] ()
#53 0x02679f4e in -[QCocoaWindow sendEvent:] ()
#54 0x97b03817 in -[NSApplication sendEvent:] ()
#55 0x97a972a7 in -[NSApplication run] ()
#56 0x02685e3f in QEventDispatcherMac::processEvents ()
#57 0x03325fe1 in QEventLoop::processEvents ()
#58 0x0332631a in QEventLoop::exec ()
#59 0x03327986 in QCoreApplication::exec ()
#60 0x005ea89b in lyx::frontend::GuiApplication::exec (this=0x3527410) at
/Users/stephan/cvs/lyx/lyx-devel/src/frontends/qt4/GuiApplication.cpp:1927
#61 0x0028f6aa in lyx::LyX::exec (this=0xbffff7c8, argc=@0xbffff7e0,
argv=0xbffff800) at /Users/stephan/cvs/lyx/lyx-devel/src/LyX.cpp:395
#62 0x002cb004 in main (argc=1, argv=0xbffff800) at
/Users/stephan/cvs/lyx/lyx-devel/src/main.cpp:42
...
(gdb) up
#6 0x0072bc8e in QPainter::drawText (this=0xbfffcf38, x=508, y=602,
s=@0xbfffbb8c) at qpainter.h:916
916 drawText(QPointF(x, y), s);
(gdb) print s
$6 = (const QString &) @0xbfffbb8c: {
static null = {<No data fields>},
static shared_null = {
ref = {
_q_value = 10652
},
alloc = 0,
size = 0,
data = 0x3440812,
clean = 0,
simpletext = 0,
righttoleft = 0,
asciiCache = 0,
capacity = 0,
reserved = 0,
array = {0}
},
static shared_empty = {
ref = {
_q_value = 4
},
alloc = 0,
size = 0,
data = 0x3440826,
clean = 0,
simpletext = 0,
righttoleft = 0,
asciiCache = 0,
capacity = 0,
reserved = 0,
array = {0}
},
d = 0x1d4b69f0,
static codecForCStrings = 0x0
}
...
(gdb) up
#9 0x0042557a in lyx::InsetMathSymbol::draw (this=0x1bcf4770, pi=@0xbfffce44,
x=508, y=602) at
/Users/stephan/cvs/lyx/lyx-devel/src/mathed/InsetMathSymbol.cpp:110
110 pi.draw(x, y - h_, sym_->draw);
(gdb) print sym_
$3 = (const 'lyx::latexkeys' *) 0x1b667894
(gdb) print sym_->draw
$4 = {
static npos = 4294967295,
_M_dataplus = {
<std::allocator<wchar_t>> = {
<__gnu_cxx::new_allocator<wchar_t>> = {<No data fields>}, <No data
fields>},
members of
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>
>::_Alloc_hider:
_M_p = 0x1b6679ec
}
}
(gdb)