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) 

Reply via email to