Some (most?) of the time we look at something like:

#0  0x403185a7 in memcpy () from /lib/libc.so.6
#1  0x08489d5e in stringbuf::overflow (this=0xbfffe3b8, c=32)
    at /usr/include/g++/sstream:111
#2  0x4030dc16 in __overflow () from /lib/libc.so.6
#3  0x40309e41 in putc () from /lib/libc.so.6
#4  0x4024bcb8 in ostream::operator<< () from
/usr/lib/libstdc++-libc6.2-2.so.3
#5  0x0822260b in TextPainter::show (this=0xbfffe35c, os=@0xbfffe3b4,
offset=3)
    at ../../../lyx-devel/src/mathed/textpainter.C:64
#6  0x081de80f in InsetFormula::ascii (this=0x8abc680, os=@0xbfffe3b4)
    at ../../../lyx-devel/src/mathed/formula.C:150
#7  0x0817aec9 in Paragraph::asString (this=0x8abbc40, buffer=0x892f520, 
    beg=47, end=48, label=true) at ../../lyx-devel/src/paragraph.C:1771
#8  0x081ab01e in LyXText::selectionAsString (this=0x8c398f0, 
    buffer=0x892f520, label=true) at ../../lyx-devel/src/text2.C:930
#9  0x081b020c in LyXText::cutSelection (this=0x8c398f0, bview=0x882e1e8, 
    doclear=true, realcut=true) at ../../lyx-devel/src/text2.C:1442
#10 0x081b78a7 in LyXText::dispatch (this=0x8c398f0, cmd=@0xbfffe7f4)
    at ../../lyx-devel/src/text3.C:1046
#11 0x0805f6e3 in BufferView::Pimpl::dispatch (this=0x882e1f8,
ev=@0xbfffe9d4)
    at ../../lyx-devel/src/BufferView_pimpl.C:1262
#12 0x08051779 in BufferView::dispatch (this=0x882e1e8, ev=@0xbfffe9d4)
    at ../../lyx-devel/src/BufferView.C:257

Now, the time is spend in TextPainter, so it is "matheds fault"
as it tries to come up with a nice ASCII art drawing of the formula.

However, I fail to see the reason why we call asString at all:

Well:


void LyXText::cutSelection(BufferView * bview, bool doclear, bool realcut)
{
        // Stuff what we got on the clipboard. Even if there is no selection.

        // There is a problem with having the stuffing here in that the
        // larger the selection the slower LyX will get. This can be
        // solved by running the line below only when the selection has
        // finished. The solution used currently just works, to make it
        // faster we need to be more clever and probably also have more
        // calls to stuffClipboard. (Lgb)
        bview->stuffClipboard(selectionAsString(bview->buffer(), true));

And indeed, it gets _slow_. Up to a few minutes freeze when cutting a few
pages full of formula.

Why do we have to _stuff_ the clipboard?
And which clipboard?

Andre'


-- 
Those who desire to give up Freedom in order to gain Security,
will not have, nor do they deserve, either one. (T. Jefferson)

Reply via email to