https://bugs.freedesktop.org/show_bug.cgi?id=58613

          Priority: medium
            Bug ID: 58613
          Assignee: [email protected]
           Summary: synchronous, no-progress-bar word-count on load before
                    rendering ...
          Severity: major
    Classification: Unclassified
                OS: All
          Reporter: [email protected]
          Hardware: Other
            Status: UNCONFIRMED
           Version: 4.0.0.0.beta2
         Component: Writer
           Product: LibreOffice

It seems that a chunk of our apparent performance regression on loading
documents: .doc, .rtf, .docx and even some .odt I guess is down to the
status-bar widget doing a synchronous word-count after load:

(gdb) bt
#0  SwDoc::UpdateDocStat (this=0x8ba2270) at
/ssd/opt/libreoffice/master/sw/source/core/doc/doc.cxx:1689
#1  0xb0a495ce in SwDoc::GetUpdatedDocStat (this=0x8ba2270) at
/ssd/opt/libreoffice/master/sw/source/core/doc/doc.cxx:1162
#2  0xb0f132af in SwView::StateStatusLine (this=0x92b0820, rSet=...) at
/ssd/opt/libreoffice/master/sw/source/ui/uiview/view2.cxx:1244
#3  0xb0f0fa52 in SfxStubSwViewStateStatusLine (pShell=0x92b0820, rSet=...)
    at
/ssd/opt/libreoffice/master/workdir/unxlngi6.pro/SdiTarget/sw/sdi/swslots.hxx:12007
#4  0xb7800a8b in CallState (rSet=..., pFunc=<optimized out>, this=0x92b0820)
at /ssd/opt/libreoffice/master/sfx2/inc/sfx2/shell.hxx:190
#5  SfxShell::GetSlotState (this=0x92b0820, nSlotId=21189, pIF=<optimized out>,
pStateSet=0x0)
    at /ssd/opt/libreoffice/master/sfx2/source/control/shell.cxx:920
#6  0xb7944612 in SfxDispatcher::QueryState (this=0x92acb98, nSID=21189,
rAny=empty uno::Any)
    at /ssd/opt/libreoffice/master/sfx2/source/control/dispatch.cxx:2247
Python Exception <class 'gdb.error'> base class
'com::sun::star::uno::XInterface' is ambiguous in type
'svt::StatusbarController': 
#7  0xb7813de9 in SfxDispatchController_Impl::addStatusListener
(this=0x95f83d0, aListener=, aURL=...)
    at /ssd/opt/libreoffice/master/sfx2/source/control/unoctitm.cxx:812
#8  0xb7537096 in svt::StatusbarController::bindListener (this=0x95ead68)
    at
/ssd/opt/libreoffice/master/svtools/source/uno/statusbarcontroller.cxx:477
#9  0xb75373ce in svt::StatusbarController::update (this=0x95ead68) at
/ssd/opt/libreoffice/master/svtools/source/uno/statusbarcontroller.cxx:175
#10 0xb1521396 in framework::StatusBarManager::UpdateControllers
(this=0x95c87a8)
    at
/ssd/opt/libreoffice/master/framework/source/uielement/statusbarmanager.cxx:283
Python Exception <class 'gdb.error'> base class
'com::sun::star::uno::XInterface' is ambiguous in type
'framework::ConstItemContainer': 
#11 0xb15237ea in framework::StatusBarManager::FillStatusBar (this=0x95c87a8,
rItemContainer=)
    at
/ssd/opt/libreoffice/master/framework/source/uielement/statusbarmanager.cxx:513
Python Exception <class 'gdb.error'> There is no member named _pSequence.: 
Python Exception <class 'gdb.error'> There is no member named _pSequence.: 
#12 0xb15244e2 in framework::StatusBarWrapper::initialize (this=0x95c8388,
aArguments=)
    at
/ssd/opt/libreoffice/master/framework/source/uielement/statusbarwrapper.cxx:129
#13 0xb153b9dc in framework::MenuBarFactory::CreateUIElement
(ResourceURL="private:resource/statusbar/statusbar", 
...
#20 0xb77e3f28 in SfxWorkWindow::UpdateStatusBar_Impl (this=0x92ade60) at
/ssd/opt/libreoffice/master/sfx2/source/appl/workwin.cxx:1645
#21 0xb77e521f in SfxWorkWindow::UpdateObjectBars_Impl (this=0x92ade60) at
/ssd/opt/libreoffice/master/sfx2/source/appl/workwin.cxx:1401
#22 0xb77e5374 in UpdateObjectBars_Impl (this=0x92ade60) at
/ssd/opt/libreoffice/master/sfx2/source/appl/workwin.cxx:1233
#23 SfxFrameWorkWin_Impl::UpdateObjectBars_Impl (this=0x92ade60) at
/ssd/opt/libreoffice/master/sfx2/source/appl/workwin.cxx:1221
#24 0xb7942497 in SfxDispatcher::Update_Impl (this=0x92acb98, bForce=0 '\000')
    at /ssd/opt/libreoffice/master/sfx2/source/control/dispatch.cxx:1375
#25 0xb79250e6 in SfxBaseController::ConnectSfxFrame_Impl (this=0x92b4bb8,
i_eConnect=SfxBaseController::E_CONNECT)
---Type <return> to continue, or q <return> to quit---
    at /ssd/opt/libreoffice/master/sfx2/source/view/sfxbasecontroller.cxx:1330
Python Exception <class 'gdb.error'> base class
'com::sun::star::uno::XInterface' is ambiguous in type 'framework::Frame': 
#26 0xb7928468 in SfxBaseController::attachFrame (this=0x92b4bb8, xFrame=)
    at /ssd/opt/libreoffice/master/sfx2/source/view/sfxbasecontroller.cxx:587
Python Exception <class 'gdb.error'> base class
'com::sun::star::uno::XInterface' is ambiguous in type 'SwXTextDocument': 
Python Exception <class 'gdb.error'> base class
'com::sun::star::uno::XInterface' is ambiguous in type 'framework::Frame': 
#27 0xb791d656 in SfxFrameLoader_Impl::impl_createDocumentView (this=0x8b356c8,
i_rModel=, i_rFrame=, i_rViewFactoryArgs=..., 
    i_rViewName="Default") at
/ssd/opt/libreoffice/master/sfx2/source/view/frmload.cxx:503
Python Exception <class 'gdb.error'> base class
'com::sun::star::uno::XInterface' is ambiguous in type 'framework::Frame': 
#28 0xb791e049 in SfxFrameLoader_Impl::load (this=0x8b356c8,
rArgs=uno::Sequence of length 11 = {...}, _rTargetFrame=)
    at /ssd/opt/libreoffice/master/sfx2/source/view/frmload.cxx:620
#29 0xb14a033f in framework::LoadEnv::impl_loadContent (this=0x89c915c) at
/ssd/opt/libreoffice/master/framework/source/loadenv/loadenv.cxx:1150
#30 0xb14a114d in framework::LoadEnv::startLoading (this=0x89c915c) at
/ssd/opt/libreoffice/master/framework/source/loadenv/loadenv.cxx:398
#31 0xb145c330 in framework::LoadDispatcher::impl_dispatch (this=0x89c9110,
rURL=..., lArguments=uno::Sequence of length 4 = {...}, 
    xListener=empty uno::Reference) at
/ssd/opt/libreoffice/master/framework/source/dispatch/loaddispatcher.cxx:119
#32 0xb145c69b in framework::LoadDispatcher::dispatchWithReturnValue
(this=0x89c9110, rURL=..., lArguments=uno::Sequence of length 4 = {...})
    at
/ssd/opt/libreoffice/master/framework/source/dispatch/loaddispatcher.cxx:65
...

Which is really rather non-ideal.

I guess it would almost certainly be better to do the word-count at idle in
chunks of thousand nodes or whatever. All the mechanisms for doing that should
(presumably) exist somewhere. Perhaps I'll look into that.

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Libreoffice-bugs mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs

Reply via email to