Bugzilla – Attachment 117372 Details for
Bug 91574
SLIDESHOW: presenter console background and buttons not shown during slideshow
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
my random code-reading notes on some of the oddness here.
slideshow-norender.txt (text/plain), 61.24 KB, created by
Michael Meeks
on 2015-07-21 21:15:38 UTC
(
hide
)
Description:
my random code-reading notes on some of the oddness here.
Filename:
MIME Type:
Creator:
Michael Meeks
Created:
2015-07-21 21:15:38 UTC
Size:
61.24 KB
patch
obsolete
>Clock updates only when clicking on it at the bottom. > >https://bugs.documentfoundation.org/show_bug.cgi?id=91574 > >$ SAL_LOG=+INFO.sdext.presenter+INFO.canvas ./soffice file:///c:/temp/slides.odp >canvas/source/directx/dx_spritecanvas.cxx:71: SpriteCanvas::initialize called >info:sdext.presenter:2748:2740:sdext/source/presenter/PresenterScreen.cxx:478: Display number is 0 >info:sdext.presenter:2748:2740:sdext/source/presenter/PresenterScreen.cxx:523: Get presenter screen for screen 1 > > External display showing ... > >slideshow/source/engine/eventqueue.cxx:172: EventQueue: heartbeat >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05184638 at position (1400.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05184638 at position (9576.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05184638 at position (20076.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05184638 at position (1400.000000,837.000000) > > these guys never rendered again (?) > >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 051847F0 at position (1400.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05184798 at position (9576.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05184740 at position (20076.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 051846E8 at position (1400.000000,837.000000) >slideshow/source/engine/activitiesqueue.cxx:89: ActivitiesQueue: outer loop heartbeat >canvas/source/vcl/spritecanvas.cxx:80: VCLSpriteCanvas::initialize called > > + the above guys render again ... > + only just initialized the display ! ;-) > >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183DF8 at position (1400.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183DA0 at position (9576.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183D48 at position (20076.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183CF0 at position (1400.000000,837.000000) >slideshow/source/engine/eventqueue.cxx:172: EventQueue: heartbeat >canvas/source/directx/dx_spritehelper.cxx:128: SpriteHelper::redraw(): output pos is (10.000000, 874.000000) > > + now done some setup. > >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183400 at position (1400.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183400 at position (9576.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183400 at position (20076.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183400 at position (1400.000000,837.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183400 at position (13838.000000,10206.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183400 at position (13838.000000,10206.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183400 at position (13838.000000,10206.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183400 at position (13838.000000,10206.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 051847F0 at position (1400.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183DF8 at position (1400.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05184798 at position (9576.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183DA0 at position (9576.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05184740 at position (20076.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183D48 at position (20076.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 051846E8 at position (1400.000000,837.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183CF0 at position (1400.000000,837.000000) >slideshow/source/engine/activitiesqueue.cxx:89: ActivitiesQueue: outer loop heartbeat >slideshow/source/engine/eventqueue.cxx:172: EventQueue: heartbeat > > Still nothing much visible apparently (?) > >... >slideshow/source/engine/activitiesqueue.cxx:89: ActivitiesQueue: outer loop heartbeat >slideshow/source/engine/eventqueue.cxx:172: EventQueue: heartbeat >slideshow/source/engine/activitiesqueue.cxx:89: ActivitiesQueue: outer loop heartbeat >slideshow/source/engine/eventqueue.cxx:172: EventQueue: heartbeat > >canvas/source/directx/dx_spritehelper.cxx:128: SpriteHelper::redraw(): output pos is (10.000000, 874.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183DA0 at position (1400.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183DA0 at position (9576.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183DA0 at position (20076.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05183DA0 at position (1400.000000,837.000000) >slideshow/source/engine/activitiesqueue.cxx:89: ActivitiesQueue: outer loop heartbeat >slideshow/source/engine/eventqueue.cxx:172: EventQueue: heartbeat >canvas/source/directx/dx_spritehelper.cxx:128: SpriteHelper::redraw(): output pos is (10.000000, 874.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05182430 at position (1400.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05182430 at position (9576.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05182430 at position (20076.000000,19131.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05182430 at position (1400.000000,837.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05182430 at position (13838.000000,10206.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05182430 at position (13838.000000,10206.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05182430 at position (13838.000000,10206.000000) >slideshow/source/engine/shapes/viewshape.cxx:555: ViewShape::render(): rendering shape 05182430 at position (13838.000000,10206.000000) >slideshow/source/engine/activitiesqueue.cxx:89: ActivitiesQueue: outer loop heartbeat >slideshow/source/engine/eventqueue.cxx:172: EventQueue: heartbeat >slideshow/source/engine/activitiesqueue.cxx:89: ActivitiesQueue: outer loop heartbeat >... > >void PresenterSlideSorter::Paint (const awt::Rectangle& rUpdateBox) >{ > ... fun [!] ... > >void SAL_CALL PresenterHelpView::windowPaint (const css::awt::PaintEvent& rEvent) > throw (RuntimeException, std::exception) >{ > Paint(rEvent.UpdateRect); >} > > >* could it be rendered into some back-buffer we're not pushing to > the screen ? and the slidey bit inside some sytem window> > + possibly - but there is a black hairline border around 'Baa' > + and an odd rectangle top-left of screen > + There is a window there - but with nothing rendered into it. > >PresenterButton.hxx:91: // XPaintListener >PresenterButton.hxx:93: virtual void SAL_CALL windowPaint (const css::awt:: > > mxWindow->addWindowListener(this); > mxWindow->addPaintListener(this); > > * we should ask the mxWindow what to paint onto (?) ... > + fun. > >void SAL_CALL PresenterNotesView::windowPaint (const awt::PaintEvent& rEvent) > throw (RuntimeException, std::exception) > * etc. [!] ... > > * what fun [!] =) > > >** Clock at bottom not painting / re-rendering properly ... > >** Awful: > >void PresenterClockTimer::AddListener (const SharedListener& rListener) >{ > osl::MutexGuard aGuard (maMutex); > > maListeners.push_back(rListener); > > // Create a timer task when the first listener is added. > if (mnTimerTaskId==PresenterTimer::NotAValidTaskId) > { > mnTimerTaskId = PresenterTimer::ScheduleRepeatedTask( > ::boost::bind(&PresenterClockTimer::CheckCurrentTime, this, _1), > 0, > 250000000 /*ns*/); > } >} > >void CurrentTimeLabel::TimeHasChanged (const oslDateTime& rCurrentTime) >{ > SetText(maTimeFormatter.FormatTime(rCurrentTime)); > Invalidate(false); >} > >... > >void PresenterButton::Invalidate() >{ > mpPresenterController->GetPaintManager()->Invalidate(mxWindow); >} > >void PresenterPaintManager::Invalidate ( > const css::uno::Reference<css::awt::XWindow>& rxWindow, > const bool bSynchronous) > >void Element::Invalidate (const bool bSynchronous) >{ > OSL_ASSERT(mpToolBar.is()); > mpToolBar->InvalidateArea(GetBoundingBox(), bSynchronous); >} > >* Looks like a synchronous render is what refreshes the screen ... ;-) > + fun [!] - why !? > >... > > if ((nInvalidateFlags & awt::InvalidateStyle::TRANSPARENT) != 0) > { > // Window is transparent and parent window(s) have to be painted as > // well. Invalidate the parent explicitly. > if (mxPresenterHelper.is() && mxParentWindowPeer.is()) > { > const awt::Rectangle aBBox ( > mxPresenterHelper->getWindowExtentsRelative(rxWindow, mxParentWindow)); > mxParentWindowPeer->invalidateRect(aBBox, nInvalidateFlags); > } > } > else > { > Reference<awt::XWindowPeer> xPeer (rxWindow, UNO_QUERY); > if (xPeer.is()) > xPeer->invalidate(nInvalidateFlags); > } > > if (bSynchronous) > nInvalidateMode |= awt::InvalidateStyle::UPDATE; > ... > >void VCLXWindow::invalidateRect( const ::com::sun::star::awt::Rectangle& rRect, sal_Int16 nInvalidateFlags ) throw(::com::sun::star::uno::RuntimeException, std::exception) >{ > SolarMutexGuard aGuard; > > if ( GetWindow() ) > GetWindow()->Invalidate( VCLRectangle(rRect), static_cast<InvalidateFlags>(nInvalidateFlags) ); >} > >void Window::ImplInvalidate( const vcl::Region* pRegion, InvalidateFlags nFlags ) >{ >... > if ( nFlags & InvalidateFlags::Update ) > pOpaqueWindow->Update(); // start painting at the opaque parent > > ** When we do synchronous rendering all is well ... otherwise not. > > > > case VCLEVENT_WINDOW_PAINT: > { > if ( mpImpl->getPaintListeners().getLength() ) > { > ::com::sun::star::awt::PaintEvent aEvent; > aEvent.Source = static_cast<cppu::OWeakObject*>(this); > aEvent.UpdateRect = AWTRectangle( *static_cast<Rectangle*>(rVclWindowEvent.GetData()) ); > aEvent.Count = 0; > mpImpl->getPaintListeners().windowPaint( aEvent ); > } > } > >* Should this have something different ? ... > + hmm ... > >void VCLXWindow::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) > > >* VclWindowEvent [!] -> 531 hits ... urgh ... > + VCLEVENT_WINDOW_PAINT > + 3x real hits ;-) > >toolkit/source/awt/vclxwindow.cxx- } >toolkit/source/awt/vclxwindow.cxx- break; >toolkit/source/awt/vclxwindow.cxx- >toolkit/source/awt/vclxwindow.cxx: case VCLEVENT_WINDOW_PAINT: >toolkit/source/awt/vclxwindow.cxx- { >toolkit/source/awt/vclxwindow.cxx- if ( mpImpl->getPaintListeners().getLength() ) >toolkit/source/awt/vclxwindow.cxx- { >-- >vcl/osx/a11yfocustracker.cxx- VclSimpleEvent const *pEvent = static_cast<VclSimpleEvent const *>(pCaller); >vcl/osx/a11yfocustracker.cxx- switch (pEvent->GetId()) >vcl/osx/a11yfocustracker.cxx- { >vcl/osx/a11yfocustracker.cxx: case VCLEVENT_WINDOW_PAINT: >vcl/osx/a11yfocustracker.cxx- pFocusTracker-> toolbox_open_floater( getWindow(pEvent) ); >vcl/osx/a11yfocustracker.cxx- break; >vcl/osx/a11yfocustracker.cxx- case VCLEVENT_WINDOW_GETFOCUS: >-- >vcl/source/window/paint.cxx- >vcl/source/window/paint.cxx-void Window::Paint(vcl::RenderContext& /*rRenderContext*/, const Rectangle& rRect) >vcl/source/window/paint.cxx-{ >vcl/source/window/paint.cxx: CallEventListeners(VCLEVENT_WINDOW_PAINT, const_cast<Rectangle *>(&rRect)); >vcl/source/window/paint.cxx-} >vcl/source/window/paint.cxx- >vcl/source/window/paint.cxx-void Window::SetPaintTransparent( bool bTransparent ) > > >* Fun ? ... > > CallEventListeners(VCLEVENT_WINDOW_PAINT, const_cast<Rectangle *>(&rRect)); > > >vcl/event.hxx: /// RenderContext to which we should draw - can be a VirtualDevice or anything. >vcl/event.hxx: VclPtr<vcl::RenderContext> mpRenderContext; >vcl/event.hxx: UserDrawEvent(vcl::Window* pWindow, vcl::RenderContext* pRenderContext, >vcl/event.hxx: vcl::RenderContext* GetRenderContext() const { return mpRenderContext; } >vcl/event.hxx: , mpRenderContext(nullptr) >vcl/event.hxx:inline UserDrawEvent::UserDrawEvent(vcl::Window* pWindow, vcl::RenderContext* pRenderContext, >vcl/event.hxx: , mpRenderContext(pRenderContext) > > >IMPL_LINK_NOARG_TYPED(Window, ImplHandlePaintHdl, Idle *, void) >... > else if ( mpWindowImpl->mbReallyVisible ) > { > ImplCallOverlapPaint(); > } > >... > OutputDevice *pOutDev = GetOutDev(); > pOutDev->BeginPaint(); > ImplCallPaint(NULL, NULL, mpWindowImpl->mnPaintFlags /*| IMPL_PAINT_CHECKRTL */); > pOutDev->EndPaint(); >... > > nPaintFlags = mpWindowImpl->mnPaintFlags & ~(IMPL_PAINT_PAINT); > > PaintHelper aHelper(this, rBuffer, nPaintFlags); > > if (mpWindowImpl->mnPaintFlags & IMPL_PAINT_PAINT) > aHelper.DoPaint(pRegion); > else > mpWindowImpl->mnPaintFlags = 0; > > PostPaint(*this); > >... fun ... [!?] ... > > Urgh - ... > > >** finding the parent window (!?) ... > + what is that ... - where does it come from !? ... > + > >void SAL_CALL PresenterPaneBase::initialize (const Sequence<Any>& rArguments) > throw (Exception, RuntimeException, std::exception) > > + urgh ... - > > if ( ! (rArguments[1] >>= mxParentWindow)) > { > throw lang::IllegalArgumentException( > "PresenterPane: invalid parent window", > static_cast<XWeak*>(this), > 1); > } > >Reference<XResource> PresenterPaneFactory::CreatePane ( > const Reference<XResourceId>& rxPaneId, > const OUString& rsTitle, > const Reference<drawing::framework::XPane>& rxParentPane, > const bool bIsSpritePane) >{ > Reference<XComponentContext> xContext (mxComponentContextWeak); > Reference<lang::XMultiComponentFactory> xFactory ( > xContext->getServiceManager(), UNO_QUERY_THROW); > > // Create a border window and canvas and store it in the pane > // container. > > // Create the pane. > ::rtl::Reference<PresenterPaneBase> xPane; > if (bIsSpritePane) > { > xPane = ::rtl::Reference<PresenterPaneBase>( > new PresenterSpritePane(xContext, mpPresenterController)); > } > else > { > xPane = ::rtl::Reference<PresenterPaneBase>( > new PresenterPane(xContext, mpPresenterController)); > } > > // Supply arguments. > Sequence<Any> aArguments (6); > aArguments[0] <<= rxPaneId; > aArguments[1] <<= rxParentPane->getWindow(); > aArguments[2] <<= rxParentPane->getCanvas(); > aArguments[3] <<= rsTitle; > aArguments[4] <<= Reference<drawing::framework::XPaneBorderPainter>( > static_cast<XWeak*>(mpPresenterController->GetPaneBorderPainter().get()), > UNO_QUERY); > aArguments[5] <<= !bIsSpritePane; > xPane->initialize(aArguments); > > >We get this pane from: > > Reference<XPane> xParentPane (xCC->getResource(rxPaneId->getAnchor()), UNO_QUERY); > if ( ! xParentPane.is()) > return NULL; > > >** We have a getWindow' method in sd::framework::Pane > this is called as we start ... > > + returns a 0x0 size FocusForwardingWindow (it seems) > + hmm ... > * And another FocusForwardingWindow [hmm] > > > >sd/source/ui/factories/Pane.cxx: > >Reference<awt::XWindow> SAL_CALL Pane::getWindow() > throw (RuntimeException, std::exception) >{ > return mxWindow; >} > >... > > >Pane::Pane ( > const Reference<XResourceId>& rxPaneId, > vcl::Window* pWindow) > throw () > : PaneInterfaceBase(MutexOwner::maMutex), > mxPaneId(rxPaneId), > mpWindow(pWindow), > mxWindow(VCLUnoHelper::GetInterface(pWindow)) >{ >} > > * so where does 'pWindow' come from ? ... > >sd/source/ui/framework/factories/FullScreenPane.cxx:FullScreenPane::~FullScreenPane() throw() > + is that it ? > >sd/source/ui/framework/factories/FrameWindowPane.hxx >sd/source/ui/framework/factories/FrameWindowPane.cxx > >/** This subclass is not necessary anymore. We can remove it if that > remains so. >*/ >class FrameWindowPane > : public Pane >{ >public: > FrameWindowPane ( > const ::com::sun::star::uno::Reference< > com::sun::star::drawing::framework::XResourceId>& rxPaneId, > vcl::Window* pWindow); > virtual ~FrameWindowPane() throw(); > > >sd/source/ui/framework/factories/BasicPaneFactory.cxx: xPane = new FrameWindowPane(rxPaneId, mpViewShellBase->GetViewWindow()); > > >FullScreenPane::FullScreenPane ( > const Reference<XComponentContext>& rxComponentContext, > const Reference<XResourceId>& rxPaneId, > const vcl::Window* pViewShellWindow) > : FrameWindowPane(rxPaneId,NULL), > mxComponentContext(rxComponentContext) >{ > vcl::Window* pParent = NULL; > mpWorkWindow.reset(VclPtr<WorkWindow>::Create( > > pParent, > 0)); // For debugging (non-fullscreen) use WB_BORDER | WB_MOVEABLE | WB_SIZEABLE)); > > ** Probably this is our baby !? ... > > > > >Argh -> a nightmare ... > > >* What is all this junk: > > Paint(rEvent.UpdateRect, aViewState); > > // Make the back buffer visible. > Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY); > if (xSpriteCanvas.is()) > xSpriteCanvas->updateScreen(sal_False); > >... > > sal_Bool SAL_CALL SpriteCanvas::updateScreen( sal_Bool bUpdateAll ) throw (uno::RuntimeException, std::exception) > { > SolarMutexGuard aGuard; > > // avoid repaints on hidden window (hidden: not mapped to > // screen). Return failure, since the screen really has _not_ > // been updated (caller should try again later) > return mbIsVisible && maCanvasHelper.updateScreen(bUpdateAll, > mbSurfaceDirty); > } > > >** Debugging fun in: > > + SpriteCanvasHelper::updateScreen -> whoop ;-) > + why such a long delay ? ... > > > > >** Single threaded - and the 1st render comes from: > > >Thread 1 (Thread 0x7ffff7e719c0 (LWP 1403)): >#0 vclcanvas::SpriteCanvasHelper::updateScreen (this=0x7fffc01af938, bUpdateAll=false, io_bSurfaceDirty=@0x7fffc01af9c8: true) at /data/opt/libreoffice/master/canvas/source/vcl/spritecanvashelper.cxx:254 >#1 0x00007fffa71bc5a3 in vclcanvas::SpriteCanvas::updateScreen (this=0x7fffc01af808, bUpdateAll=0 '\000') at /data/opt/libreoffice/master/canvas/source/vcl/spritecanvas.cxx:153 >#2 0x00007fffc25cc359 in sd::presenter::CanvasUpdateRequester::Callback (this=0x207d1a0) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:95 >#3 0x00007fffc25cc2ff in sd::presenter::CanvasUpdateRequester::LinkStubCallback (instance=0x207d1a0, data=0x0) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:90 > >IMPL_LINK_NOARG(CanvasUpdateRequester, Callback) >{ > mnUserEventId = 0; > if (mxCanvas.is()) > { > mxCanvas->updateScreen(mbUpdateFlag); > mbUpdateFlag = false; > } > return 0; >} > >#4 0x00007ffff0754b0f in Link<void*, long>::Call (this=0x1b16e50, data=0x0) at /data/opt/libreoffice/master/include/tools/link.hxx:127 >#5 0x00007ffff09142da in ImplHandleUserEvent (pSVEvent=0x20ebb10) at /data/opt/libreoffice/master/vcl/source/window/winproc.cxx:2024 > > Interesting ... > >#6 0x00007ffff0915898 in ImplWindowFrameProc (_pWindow=0x11bf530, nEvent=22, pEvent=0x20ebb10) at /data/opt/libreoffice/master/vcl/source/window/winproc.cxx:2585 >#7 0x00007ffff0ddd182 in SalFrame::CallCallback (this=0x11bff20, nEvent=22, pEvent=0x20ebb10) at /data/opt/libreoffice/master/vcl/inc/salframe.hxx:246 >#8 0x00007ffff0ddcd47 in SalGenericDisplay::DispatchInternalEvent (this=0xffb880) at /data/opt/libreoffice/master/vcl/generic/app/gendisp.cxx:90 >#9 0x00007fffe2f620fb in GtkData::userEventFn (data=0x622cf0) at /data/opt/libreoffice/master/vcl/unx/gtk/app/gtkdata.cxx:942 >#10 0x00007fffe2f62156 in call_userEventFn (data=0x622cf0) at /data/opt/libreoffice/master/vcl/unx/gtk/app/gtkdata.cxx:952 >#11 0x00007fffec21c316 in g_main_dispatch (context=0xfa3110) at gmain.c:3066 >#12 g_main_context_dispatch (context=context@entry=0xfa3110) at gmain.c:3642 >#13 0x00007fffec21c668 in g_main_context_iterate (context=context@entry=0xfa3110, block=block@entry=0, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3713 >#14 0x00007fffec21c70c in g_main_context_iteration (context=0xfa3110, may_block=0) at gmain.c:3774 >#15 0x00007fffe2f61045 in GtkData::Yield (this=0x622cf0, bWait=false, bHandleAllCurrentEvents=true) at /data/opt/libreoffice/master/vcl/unx/gtk/app/gtkdata.cxx:577 >#16 0x00007fffe2f65359 in GtkInstance::DoYield (this=0x622c10, bWait=false, bHandleAllCurrentEvents=true, nReleased=0) at /data/opt/libreoffice/master/vcl/unx/gtk/app/gtkinst.cxx:406 >#17 0x00007ffff0d21ec8 in ImplYield (i_bWait=false, i_bAllEvents=true, nReleased=0) at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:361 >#18 0x00007ffff0d1e5b4 in Application::Reschedule (i_bAllEvents=true) at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:385 > >* Hmm - are we wedged here somehow ? ... waiting for a user-event ? ... > >#19 0x00007fffc26335a4 in sd::SlideshowImpl::PostYieldListener (this=0x7fffae61fa90) at /data/opt/libreoffice/master/sd/source/ui/slideshow/slideshowimpl.cxx:1804 >#20 0x00007fffc2633527 in sd::SlideshowImpl::LinkStubPostYieldListener (instance=0x7fffae61fa90, data=0x0) at /data/opt/libreoffice/master/sd/source/ui/slideshow/slideshowimpl.cxx:1792 >#21 0x00007ffff0754b0f in Link<void*, long>::Call (this=0x2039060, data=0x0) at /data/opt/libreoffice/master/include/tools/link.hxx:127 >#22 0x00007ffff0d2b7e7 in VclEventListeners2::callListeners (this=0x2031760, i_pEvent=0x0) at /data/opt/libreoffice/master/vcl/source/app/vclevent.cxx:152 >#23 0x00007ffff0d21f46 in ImplYield (i_bWait=true, i_bAllEvents=false, nReleased=0) at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:380 >#24 0x00007ffff0d1e5ce in Application::Yield () at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:390 >#25 0x00007ffff0d1e573 in Application::Execute () at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:336 >#26 0x00007ffff77ef935 in desktop::Desktop::Main (this=0x7fffffffd980) at /data/opt/libreoffice/master/desktop/source/app/app.cxx:1589 >#27 0x00007ffff0d268f5 in ImplSVMain () at /data/opt/libreoffice/master/vcl/source/app/svmain.cxx:162 >#28 0x00007ffff0d26a11 in SVMain () at /data/opt/libreoffice/master/vcl/source/app/svmain.cxx:196 >#29 0x00007ffff78361d0 in soffice_main () at /data/opt/libreoffice/master/desktop/source/app/sofficemain.cxx:96 >#30 0x0000000000400954 in sal_main () at /data/opt/libreoffice/master/desktop/source/app/main.c:48 >#31 0x000000000040093a in main (argc=2, argv=0x7fffffffdc78) at /data/opt/libreoffice/master/desktop/source/app/main.c:47 > > >void CanvasUpdateRequester::RequestUpdate (const bool bUpdateAll) >{ > if (mnUserEventId == 0) > { > mbUpdateFlag = bUpdateAll; > mnUserEventId = Application::PostUserEvent(LINK(this, CanvasUpdateRequester, Callback)); > } > else > { > mbUpdateFlag |= bUpdateAll; > } >} > >** Fun [!] ... > + interesting ... > > * where is that guy called from ? > * fun [!] ... > >sd/source/ui/presenter/PresenterCanvas.cxx: mpUpdateRequester = CanvasUpdateRequester::Instance(mxUpdateCanvas); >sd/source/ui/presenter/PresenterCanvas.cxx: mpUpdateRequester = CanvasUpdateRequester::Instance(mxUpdateCanvas); >sd/source/ui/presenter/PresenterCanvas.hxx:#include "CanvasUpdateRequester.hxx" >sd/source/ui/presenter/PresenterCanvas.hxx: ::boost::shared_ptr<CanvasUpdateRequester> mpUpdateRequester; >sd/source/ui/presenter/PresenterHelper.cxx:#include "CanvasUpdateRequester.hxx" > > >PresenterCanvas::PresenterCanvas ( >... > if (mxUpdateCanvas.is()) > mpUpdateRequester = CanvasUpdateRequester::Instance(mxUpdateCanvas); > > mpUpdateRequester = CanvasUpdateRequester::Instance(mxUpdateCanvas); > >sal_Bool SAL_CALL PresenterCanvas::updateScreen (sal_Bool bUpdateAll) > throw (css::uno::RuntimeException, std::exception) >{ > ThrowIfDisposed(); > > mbOffsetUpdatePending = true; > if (mpUpdateRequester.get() != NULL) > { > mpUpdateRequester->RequestUpdate(bUpdateAll); > return sal_True; > } > else > { > return sal_False; > } >} > >... > >** Complete and utter mess ! ** > >** Where does the RequestUpdate get queued from ? > + this looks like the slideshow canvas update but ... > >#0 sd::presenter::CanvasUpdateRequester::RequestUpdate (this=<error reading variable: can't compute CFA for this frame>, bUpdateAll=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:81 >#1 0x00007fffc25d0bcb in sd::presenter::PresenterCanvas::updateScreen (this=<error reading variable: can't compute CFA for this frame>, bUpdateAll=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/presenter/PresenterCanvas.cxx:562 >#2 0x00007fffe86a875d in cppcanvas::internal::ImplSpriteCanvas::updateScreen (this=0x166a6d0, bUpdateAll=false) at /data/opt/libreoffice/master/cppcanvas/source/wrapper/implspritecanvas.cxx:86 >#3 0x00007fffa7bedae4 in slideshow::internal::(anonymous namespace)::SlideView::updateScreen (this=0x7fffc0216e58) at /data/opt/libreoffice/master/slideshow/source/engine/slideview.cxx:859 >#4 0x00007fffa7b14cc0 in boost::_mfi::cmf0<bool, slideshow::internal::View>::call<boost::shared_ptr<slideshow::internal::UnoView> const> (this=0x7fffffffc090, u=boost::shared_ptr {<slideshow::internal::View> = {<slideshow::internal::ViewLayer> = {_vptr.ViewLayer = 0x7fffa7ffa320 <vtable for slideshow::internal::(anonymous namespace)::SlideView+544>}, <No data fields>}, <No data fields>}) at /data/opt/libreoffice/master/workdir/UnpackedTarball/boost/boost/bind/mem_fn_template.hpp:105 >#5 0x00007fffa7b12bad in boost::_mfi::cmf0<bool, slideshow::internal::View>::operator()<boost::shared_ptr<slideshow::internal::UnoView> > (this=0x7fffffffc090, u=boost::shared_ptr {<slideshow::internal::View> = {<slideshow::internal::ViewLayer> = {_vptr.ViewLayer = 0x7fffa7ffa320 <vtable for slideshow::internal::(anonymous namespace)::SlideView+544>}, <No data fields>}, <No data fields>}) at /data/opt/libreoffice/master/workdir/UnpackedTarball/boost/boost/bind/mem_fn_template.hpp:115 >#6 0x00007fffa7b11bf3 in std::for_each<__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<boost::shared_ptr<slideshow::internal::UnoView> const*, std::__cxx1998::vector<boost::shared_ptr<slideshow::internal::UnoView>, std::allocator<boost::shared_ptr<slideshow::internal::UnoView> > > >, std::__debug::vector<boost::shared_ptr<slideshow::internal::UnoView>, std::allocator<boost::shared_ptr<slideshow::internal::UnoView> > > >, boost::_mfi::cmf0<bool, slideshow::internal::View> > (__first=boost::shared_ptr {<slideshow::internal::View> = {<slideshow::internal::ViewLayer> = {_vptr.ViewLayer = 0x7fffa7ffa320 <vtable for slideshow::internal::(anonymous namespace)::SlideView+544>}, <No data fields>}, <No data fields>}, __last=empty boost::shared_ptr, __f=...) at /usr/include/c++/4.8/bits/stl_algo.h:4440 >#7 0x00007fffa7b10d8a in slideshow::internal::ScreenUpdater::requestImmediateUpdate (this=0x7fffdf53d9e8) at /data/opt/libreoffice/master/slideshow/source/engine/screenupdater.cxx:200 >#8 0x00007fffa7c465a1 in slideshow::internal::WaitSymbol::setVisible (this=0x203e040, bVisible=true) at /data/opt/libreoffice/master/slideshow/source/engine/waitsymbol.cxx:100 >#9 0x00007fffa7bc43b5 in slideshow::internal::WaitSymbol::show (this=0x203e040) at /data/opt/libreoffice/master/slideshow/source/engine/waitsymbol.hxx:55 >#10 0x00007fffa7bb97ae in (anonymous namespace)::SlideShowImpl::requestWaitSymbol (this=0x7fffdf53d808) at /data/opt/libreoffice/master/slideshow/source/engine/slideshowimpl.cxx:959 >#11 0x00007fffa7bb6c56 in (anonymous namespace)::SlideShowImpl::WaitSymbolLock::WaitSymbolLock (this=0x7fffffffc560, rSlideShowImpl=...) at /data/opt/libreoffice/master/slideshow/source/engine/slideshowimpl.cxx:411 >#12 0x00007fffa7bbf9b8 in (anonymous namespace)::SlideShowImpl::notifySlideAnimationsEnded (this=0x7fffdf53d808) at /data/opt/libreoffice/master/slideshow/source/engine/slideshowimpl.cxx:2313 >#13 0x00007fffa7bc2d07 in boost::_mfi::mf0<void, (anonymous namespace)::SlideShowImpl>::operator() (this=0x20e72b0, t=...) at /data/opt/libreoffice/master/workdir/UnpackedTarball/boost/boost/bind/mem_fn_template.hpp:70 >#14 0x00007fffa7bc211e in boost::_bi::list1<boost::reference_wrapper<(anonymous namespace)::SlideShowImpl> >::operator()<boost::_mfi::mf0<void, (anonymous namespace)::SlideShowImpl>, boost::_bi::list0> (this=0x20e72c0, f=..., a=...) at /data/opt/libreoffice/master/workdir/UnpackedTarball/boost/boost/bind/bind.hpp:253 >#15 0x00007fffa7bc1d15 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, (anonymous namespace)::SlideShowImpl>, boost::_bi::list1<boost::reference_wrapper<(anonymous namespace)::SlideShowImpl> > >::operator() (this=0x20e72b0) at /data/opt/libreoffice/master/workdir/UnpackedTarball/boost/boost/bind/bind_template.hpp:20 >#16 0x00007fffa7bc181e in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, (anonymous namespace)::SlideShowImpl>, boost::_bi::list1<boost::reference_wrapper<(anonymous namespace)::SlideShowImpl> > >, void>::invoke (function_obj_ptr=...) at /data/opt/libreoffice/master/workdir/UnpackedTarball/boost/boost/function/function_template.hpp:153 >#17 0x00007fffa7a9b294 in boost::function0<void>::operator() (this=0x20e72a8) at /data/opt/libreoffice/master/workdir/UnpackedTarball/boost/boost/function/function_template.hpp:767 >#18 0x00007fffa7a9abbe in slideshow::internal::Delay::fire (this=0x20e7290) at /data/opt/libreoffice/master/slideshow/source/engine/delayevent.cxx:32 >#19 0x00007fffa7afc23c in slideshow::internal::EventQueue::process_ (this=0x7fffdf53d9f0, bFireAllEvents=false) at /data/opt/libreoffice/master/slideshow/source/engine/eventqueue.cxx:225 >#20 0x00007fffa7afbd99 in slideshow::internal::EventQueue::process (this=0x7fffdf53d9f0) at /data/opt/libreoffice/master/slideshow/source/engine/eventqueue.cxx:167 >#21 0x00007fffa7bbee0c in (anonymous namespace)::SlideShowImpl::update (this=0x7fffdf53d808, nNextTimeout=@0x7fffffffcd48: 0) at /data/opt/libreoffice/master/slideshow/source/engine/slideshowimpl.cxx:2040 >#22 0x00007fffc2633969 in sd::SlideshowImpl::updateSlideShow (this=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/slideshow/slideshowimpl.cxx:1829 >#23 0x00007fffc263374a in sd::SlideshowImpl::updateHdl (this=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/slideshow/slideshowimpl.cxx:1789 >#24 0x00007fffc263372b in sd::SlideshowImpl::LinkStubupdateHdl (instance=<error reading variable: can't compute CFA for this frame>, data=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/slideshow/slideshowimpl.cxx:1787 >#25 0x00007ffff0d29ad3 in Link<Timer*, void>::Call (this=0x7fffae633618, data=0x7fffae6335f8) at /data/opt/libreoffice/master/include/tools/link.hxx:127 >#26 0x00007ffff0d29843 in Timer::Invoke (this=0x7fffae6335f8) at /data/opt/libreoffice/master/vcl/source/app/timer.cxx:117 >#27 0x00007ffff0cff84c in ImplSchedulerData::Invoke (this=0x20f2a30) at /data/opt/libreoffice/master/vcl/source/app/scheduler.cxx:38 >#28 0x00007ffff0cffb11 in Scheduler::ProcessTaskScheduling (bTimer=false) at /data/opt/libreoffice/master/vcl/source/app/scheduler.cxx:127 >#29 0x00007ffff0d21e4c in ImplYield (i_bWait=false, i_bAllEvents=true, nReleased=0) at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:347 >#30 0x00007ffff0d1e5b4 in Application::Reschedule (i_bAllEvents=true) at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:385 >#31 0x00007fffc263383b in sd::SlideshowImpl::PostYieldListener (this=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/slideshow/slideshowimpl.cxx:1805 >#32 0x00007fffc263376f in sd::SlideshowImpl::LinkStubPostYieldListener (instance=<error reading variable: can't compute CFA for this frame>, data=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/slideshow/slideshowimpl.cxx:1792 >#33 0x00007ffff0754b0f in Link<void*, long>::Call (this=0x20d8690, data=0x0) at /data/opt/libreoffice/master/include/tools/link.hxx:127 >#34 0x00007ffff0d2b7e7 in VclEventListeners2::callListeners (this=0x202d590, i_pEvent=0x0) at /data/opt/libreoffice/master/vcl/source/app/vclevent.cxx:152 >#35 0x00007ffff0d21f46 in ImplYield (i_bWait=true, i_bAllEvents=false, nReleased=0) at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:380 >#36 0x00007ffff0d1e5ce in Application::Yield () at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:390 >#37 0x00007ffff0d1e573 in Application::Execute () at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:336 >#38 0x00007ffff77ef935 in desktop::Desktop::Main (this=0x7fffffffd980) at /data/opt/libreoffice/master/desktop/source/app/app.cxx:1589 >#39 0x00007ffff0d268f5 in ImplSVMain () at /data/opt/libreoffice/master/vcl/source/app/svmain.cxx:162 >#40 0x00007ffff0d26a11 in SVMain () at /data/opt/libreoffice/master/vcl/source/app/svmain.cxx:196 >#41 0x00007ffff78361d0 in soffice_main () at /data/opt/libreoffice/master/desktop/source/app/sofficemain.cxx:96 >#42 0x0000000000400954 in sal_main () at /data/opt/libreoffice/master/desktop/source/app/main.c:48 >#43 0x000000000040093a in main (argc=2, argv=0x7fffffffdc78) at /data/opt/libreoffice/master/desktop/source/app/main.c:47 >(gdb) > >... next is ... > >Breakpoint 3, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=<error reading variable: can't compute CFA for this frame>, bUpdateAll=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:81 >81 SAL_DEBUG("request update - post new user event " << bUpdateAll); >(gdb) bt >#0 sd::presenter::CanvasUpdateRequester::RequestUpdate (this=<error reading variable: can't compute CFA for this frame>, bUpdateAll=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:81 >#1 0x00007fffc25d0bcb in sd::presenter::PresenterCanvas::updateScreen (this=<error reading variable: can't compute CFA for this frame>, bUpdateAll=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/presenter/PresenterCanvas.cxx:562 >#2 0x00007fffad103911 in sdext::presenter::PresenterPaneBorderPainter::Renderer::PaintBorder (this=0x213e710, rsTitle="Current Slide (1 of 2)", rBBox=..., rUpdateBox=..., rsPaneURL="private:resource/pane/Presenter/Pane1") at /data/opt/libreoffice/master/sdext/source/presenter/PresenterPaneBorderPainter.cxx:503 >#3 0x00007fffad1023a4 in sdext::presenter::PresenterPaneBorderPainter::paintBorder (this=0x7fffc01b3798, rsPaneBorderStyleName="private:resource/pane/Presenter/Pane1", rxCanvas=uno::Reference to (sd::presenter::PresenterCanvas *) 0x7fffdc09b928, rOuterBorderRectangle=..., rRepaintArea=..., rsTitle="Current Slide (1 of 2)") at /data/opt/libreoffice/master/sdext/source/presenter/PresenterPaneBorderPainter.cxx:229 >#4 0x00007fffad10149f in sdext::presenter::PresenterPaneBase::PaintBorder (this=0x7fffc01b16c8, rUpdateBox=...) at /data/opt/libreoffice/master/sdext/source/presenter/PresenterPaneBase.cxx:410 >#5 0x00007fffad0fef09 in sdext::presenter::PresenterPane::windowPaint (this=0x7fffc01b16c8, rEvent=...) at /data/opt/libreoffice/master/sdext/source/presenter/PresenterPane.cxx:139 >#6 0x00007ffff247b192 in PaintListenerMultiplexer::windowPaint (this=0x1ffcfe8, evt=...) at /data/opt/libreoffice/master/toolkit/source/helper/listenermultiplexer.cxx:122 >#7 0x00007ffff22fca86 in VCLXWindow::ProcessWindowEvent (this=0x7fffdc3b6498, rVclWindowEvent=...) at /data/opt/libreoffice/master/toolkit/source/awt/vclxwindow.cxx:470 >#8 0x00007ffff22fc753 in VCLXWindow::WindowEventListener (this=0x7fffdc3b6498, pEvent=0x7fffffffc9d0) at /data/opt/libreoffice/master/toolkit/source/awt/vclxwindow.cxx:417 >#9 0x00007ffff22fc5bf in VCLXWindow::LinkStubWindowEventListener (instance=0x7fffdc3b6498, data=0x7fffffffc9d0) at /data/opt/libreoffice/master/toolkit/source/awt/vclxwindow.cxx:408 >#10 0x00007ffff0754b0f in Link<void*, long>::Call (this=0x156ffa0, data=0x7fffffffc9d0) at /data/opt/libreoffice/master/include/tools/link.hxx:127 >#11 0x00007ffff0d2aeb4 in VclEventListeners::Call (this=0x1ffca00, pEvent=0x7fffffffc9d0) at /data/opt/libreoffice/master/vcl/source/app/vclevent.cxx:63 >#12 0x00007ffff0803e6e in vcl::Window::CallEventListeners (this=0x1ffd1a0, nEvent=1000, pData=0x7fffffffcca8) at /data/opt/libreoffice/master/vcl/source/window/event.cxx:214 >#13 0x00007ffff074b733 in vcl::Window::Paint (this=0x1ffd1a0, rRect=Rectangle = {...}) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:994 >#14 0x00007ffff074891f in PaintHelper::DoPaint (this=0x7fffffffcc70, pRegion=0x1ffc800) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:268 >#15 0x00007ffff0749b80 in vcl::Window::ImplCallPaint (this=0x1ffd1a0, rBuffer=..., pRegion=0x1ffc800, nPaintFlags=62) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:566 >#16 0x00007ffff07496b2 in PaintHelper::~PaintHelper (this=0x7fffffffcdb0, __in_chrg=<optimized out>) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:505 >#17 0x00007ffff0749bd1 in vcl::Window::ImplCallPaint (this=0x166bd70, rBuffer=..., pRegion=0x21071d0, nPaintFlags=60) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:570 >#18 0x00007ffff07496b2 in PaintHelper::~PaintHelper (this=0x7fffffffcef0, __in_chrg=<optimized out>) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:505 >#19 0x00007ffff0749bd1 in vcl::Window::ImplCallPaint (this=0x2003a90, rBuffer=..., pRegion=0x1fd4570, nPaintFlags=60) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:570 >#20 0x00007ffff07496b2 in PaintHelper::~PaintHelper (this=0x7fffffffd030, __in_chrg=<optimized out>) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:505 >#21 0x00007ffff0749bd1 in vcl::Window::ImplCallPaint (this=0x166b380, rBuffer=..., pRegion=0x0, nPaintFlags=60) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:570 >#22 0x00007ffff0749cea in vcl::Window::ImplCallOverlapPaint (this=0x166b380) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:591 >#23 0x00007ffff0749ec1 in vcl::Window::ImplHandlePaintHdl (this=0x166b380) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:620 >#24 0x00007ffff0749da9 in vcl::Window::LinkStubImplHandlePaintHdl (instance=0x166b380, data=0x2040350) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:602 >#25 0x00007ffff074f6df in Link<Idle*, void>::Call (this=0x2040370, data=0x2040350) at /data/opt/libreoffice/master/include/tools/link.hxx:127 >#26 0x00007ffff0cf8eb1 in Idle::Invoke (this=0x2040350) at /data/opt/libreoffice/master/vcl/source/app/idle.cxx:26 >#27 0x00007ffff0cff84c in ImplSchedulerData::Invoke (this=0x1568e40) at /data/opt/libreoffice/master/vcl/source/app/scheduler.cxx:38 >#28 0x00007ffff0cffb11 in Scheduler::ProcessTaskScheduling (bTimer=false) at /data/opt/libreoffice/master/vcl/source/app/scheduler.cxx:127 >#29 0x00007ffff0d21e4c in ImplYield (i_bWait=true, i_bAllEvents=false, nReleased=0) at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:347 >#30 0x00007ffff0d1e5ce in Application::Yield () at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:390 >#31 0x00007ffff0d1e573 in Application::Execute () at /data/opt/libreoffice/master/vcl/source/app/svapp.cxx:336 >#32 0x00007ffff77ef935 in desktop::Desktop::Main (this=0x7fffffffd980) at /data/opt/libreoffice/master/desktop/source/app/app.cxx:1589 >#33 0x00007ffff0d268f5 in ImplSVMain () at /data/opt/libreoffice/master/vcl/source/app/svmain.cxx:162 >#34 0x00007ffff0d26a11 in SVMain () at /data/opt/libreoffice/master/vcl/source/app/svmain.cxx:196 >#35 0x00007ffff78361d0 in soffice_main () at /data/opt/libreoffice/master/desktop/source/app/sofficemain.cxx:96 >#36 0x0000000000400954 in sal_main () at /data/opt/libreoffice/master/desktop/source/app/main.c:48 >#37 0x000000000040093a in main (argc=2, argv=0x7fffffffdc78) at /data/opt/libreoffice/master/desktop/source/app/main.c:47 > > >... > > >Breakpoint 2, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=false) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:79 >79 if (mnUserEventId == 0) >(gdb) c >Continuing. > >Breakpoint 3, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=false) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:81 >81 SAL_DEBUG("request update - post new user event " << bUpdateAll); >(gdb) c >Continuing. >debug:11219:1: request update - post new user event 0 >debug:11219:1: PresenterCanvas::updateScreen > >Breakpoint 2, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=false) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:79 >79 if (mnUserEventId == 0) >(gdb) c >Continuing. >debug:11219:1: request update - waiting for new user event 0 >debug:11219:1: CanvasUpdateRequester triggered 0 >debug:11219:1: PresenterCanvas::updateScreen > >Breakpoint 2, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=false) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:79 >79 if (mnUserEventId == 0) >(gdb) c >Continuing. > >Breakpoint 3, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=false) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:81 >81 SAL_DEBUG("request update - post new user event " << bUpdateAll); >(gdb) c >Continuing. >debug:11219:1: request update - post new user event 0 >debug:11219:1: PresenterCanvas::updateScreen > >Breakpoint 2, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=true) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:79 >79 if (mnUserEventId == 0) >(gdb) c >Continuing. >debug:11219:1: request update - waiting for new user event 1 >debug:11219:1: PresenterCanvas::updateScreen > >Breakpoint 2, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=false) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:79 >79 if (mnUserEventId == 0) >(gdb) c >Continuing. >debug:11219:1: request update - waiting for new user event 0 >debug:11219:1: PresenterCanvas::updateScreen > >Breakpoint 2, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=false) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:79 >79 if (mnUserEventId == 0) >(gdb) TO HERE WE GOT NO PRETTY OUTPUT AT ALL ...^CQuit >(gdb) c >Continuing. >debug:11219:1: request update - waiting for new user event 0 >debug:11219:1: PresenterCanvas::updateScreen > >Breakpoint 2, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=false) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:79 >79 if (mnUserEventId == 0) >(gdb) c >Continuing. >debug:11219:1: request update - waiting for new user event 0 >debug:11219:1: Toolbar::windowPaint >debug:11219:1: Toolbar::actually paint >debug:11219:1: PresenterCanvas::updateScreen > >Breakpoint 2, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=false) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:79 >79 if (mnUserEventId == 0) >(gdb) c >Continuing. >debug:11219:1: request update - waiting for new user event 0 >debug:11219:1: CanvasUpdateRequester triggered 1 >debug:11219:1: done reschedule >debug:11219:1: PresenterCanvas::updateScreen > >Breakpoint 2, sd::presenter::CanvasUpdateRequester::RequestUpdate (this=0x207b150, bUpdateAll=true) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:79 >79 if (mnUserEventId == 0) >(gdb) AND BY HERE IT WAS ALL RENDERED (I guess the above did it) > > >** WOw ... > + the CanvasUpdateRequester was not triggered despite > all these requests for updates ... > + fun [!] ... > >* When this guy happens: we get some output: > + debug:11219:1: CanvasUpdateRequester triggered 1 > > >bool WinSalFrame::PostEvent( void* pData ) >{ > return (bool)PostMessageW( mhWnd, SAL_MSG_USEREVENT, 0, (LPARAM)pData ); >} > >Are these not getting through on windows right ? or ... > -what- is going on ? > >... fun ... [ !urgh! ] ... fun ... > > >* Linux: > + we want to get the update request ASAP. > >* Wow - on Windows -> it is dire ... > + we get no update request ... > + that is odd =) > + why not !? > > > > >* This looks hideous: > > >diff --git a/sd/source/ui/framework/configuration/ConfigurationUpdater.cxx b/sd/source/ui/framework/configuration/ConfigurationUpdater.cxx >index 42b2eb7..10ea920 100644 >--- a/sd/source/ui/framework/configuration/ConfigurationUpdater.cxx >+++ b/sd/source/ui/framework/configuration/ConfigurationUpdater.cxx >@@ -36,7 +36,11 @@ using ::sd::framework::FrameworkHelper; > using ::std::vector; > > namespace { >+static const sal_Int32 snShortTimeout (100); >+static const sal_Int32 snNormalTimeout (1000); >+static const sal_Int32 snLongTimeout (10000); > static const sal_Int32 snShortTimeoutCountThreshold (1); >+static const sal_Int32 snNormalTimeoutCountThreshold (5); > > * what is going on there ? ... > >* Why don't we get an invalidate in here ? ... > + what is going on [!] ? ... > >* Perhaps it used to come from some paint method or ? ... > + do we not 'Show' something and get an invalidate ? > + or ... ? > > > >/** Synchronize painting of windows and canvases. At the moment there is > just some processing of invalidate calls. > This could be extended to process incoming windowPaint() calls. >*/ >class PresenterPaintManager >{ > huh -> nasty ... > >* we are not getting an invalidate on our window ... otherwise > We would get a RequestUpdate ... > + hmm. > > >** Where are the invaldiates coming from ? > + I would expect them when we add a VCLXWindow to another (?) > + are these missing ? ... > + or do they happen too early ? ... (somehow) ... > > > >--------- Invalidates after the FullScreenFoo creation ---------- > > >sdext/source/presenter/PresenterWindowManager.cxx:183 > + NotifyViewCreation ... > + from PresenterController ... > + from framework -> "Activate Resource" > + queues an invalidate ... > >All this from sd/source/framework/configuration/ChangeRequestQueueProcessor.cxx:164 > + etc. > >* Click: > + Time change / tick-tock invalidate: > >(gdb) bt 10 >#0 vcl::Window::ImplInvalidate (this=0x2038200, pRegion=0x7fffffffc420, nFlags=(Children | Transparent)) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:731 >#1 0x00007ffff0739733 in vcl::Window::Invalidate (this=0x2038200, rRect=Rectangle = {...}, nFlags=(Children | Transparent)) at /data/opt/libreoffice/master/vcl/source/window/paint.cxx:1182 >#2 0x00007ffff22edbf2 in VCLXWindow::invalidateRect (this=0x7fffc0176e68, rRect=..., nInvalidateFlags=17) at /data/opt/libreoffice/master/toolkit/source/awt/vclxwindow.cxx:1167 >#3 0x00007fffad0c3a05 in sdext::presenter::PresenterPaintManager::Invalidate (this=0x1feb160, rxWindow=uno::Reference to (VCLXContainer *) 0x7fffae600a38, rRepaintBox=..., nInvalidateFlags=17) at /data/opt/libreoffice/master/sdext/source/presenter/PresenterPaintManager.cxx:138 >#4 0x00007fffad0c38c4 in sdext::presenter::PresenterPaintManager::Invalidate (this=0x1feb160, rxWindow=uno::Reference to (VCLXContainer *) 0x7fffae600a38, rRepaintBox=..., bSynchronous=false) at /data/opt/libreoffice/master/sdext/source/presenter/PresenterPaintManager.cxx:116 >#5 0x00007fffad13ced7 in sdext::presenter::PresenterToolBar::InvalidateArea (this=0x7fffc01734c0, rRepaintBox=..., bSynchronous=false) at /data/opt/libreoffice/master/sdext/source/presenter/PresenterToolBar.cxx:466 >#6 0x00007fffad142a41 in sdext::presenter::(anonymous namespace)::Element::Invalidate (this=0x7fffc01725b8, bSynchronous=false) at /data/opt/libreoffice/master/sdext/source/presenter/PresenterToolBar.cxx:1331 >#7 0x00007fffad144c58 in sdext::presenter::(anonymous namespace)::Label::SetText (this=0x7fffc01725b8, rsText="21:22:52") at /data/opt/libreoffice/master/sdext/source/presenter/PresenterToolBar.cxx:1674 >#8 0x00007fffad145d08 in sdext::presenter::(anonymous namespace)::CurrentTimeLabel::TimeHasChanged (this=0x7fffc01725b8, rCurrentTime=...) at /data/opt/libreoffice/master/sdext/source/presenter/PresenterToolBar.cxx:1887 >#9 0x00007fffad13c117 in sdext::presenter::(anonymous namespace)::TimeLabel::Listener::TimeHasChanged (this=0x1ffc5a0, rCurrentTime=...) at /data/opt/libreoffice/master/sdext/source/presenter/PresenterToolBar.cxx:288 > > >Difference between VCL plugin and Direct X ... > > >@@ -29,6 +21,12 @@ > debug:5664:7716: PresenterCanvas::updateScreen > debug:5664:7716: Canvas Update Requested queue new0 > debug:5664:7716: PresenterCanvas::updateScreen >+debug:5664:7716: Canvas Update Requested 0 >+debug:5664:7716: CanvasUpdateRequester triggered 0 >+debug:5664:7716: ** Updated ? ** 1 > > *** This is what we're missing ? *** > >+debug:5664:7716: PresenterCanvas::updateScreen >+debug:5664:7716: Canvas Update Requested queue new0 >+debug:5664:7716: PresenterCanvas::updateScreen > debug:5664:7716: Canvas Update Requested 1 > debug:5664:7716: PresenterCanvas::updateScreen > debug:5664:7716: Canvas Update Requested 1 >@@ -63,32 +61,16 @@ > debug:5664:7716: PresenterCanvas::updateScreen > debug:5664:7716: Canvas Update Requested queue new0 > debug:5664:7716: PresenterCanvas::updateScreen >-debug:5664:7716: Canvas Update Requested queue new0 >-debug:5664:7716: CanvasUpdateRequester triggered 0 > ********** this is what we're missing ************* >-debug:5664:7716: ** Updated ? ** 1 >-debug:5664:7716: CanvasUpdateRequester triggered 0 >-debug:5664:7716: PresenterCanvas::updateScreen >-debug:5664:7716: Canvas Update Requested queue new0 >-debug:5664:7716: ** Updated ? ** 1 >+debug:5664:7716: Canvas Update Requested 0 > debug:5664:7716: CanvasUpdateRequester triggered 0 > debug:5664:7716: ** Updated ? ** 1 > debug:5664:7716: PresenterCanvas::updateScreen > >* Where does CanvasUpdateRequester get called from !? ... > + fun. > + the canvas ? or a window or ... ? > > > > >#0 sd::presenter::CanvasUpdateRequester::RequestUpdate (this=<error reading variable: can't compute CFA for this frame>, bUpdateAll=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/presenter/CanvasUpdateRequester.cxx:81 > >#1 0x00007fffc25d0bcb in sd::presenter::PresenterCanvas::updateScreen (this=<error reading variable: can't compute CFA for this frame>, bUpdateAll=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/presenter/PresenterCanvas.cxx:562 >#2 0x00007fffe86a875d in cppcanvas::internal::ImplSpriteCanvas::updateScreen (this=0x166a6d0, bUpdateAll=false) at /data/opt/libreoffice/master/cppcanvas/source/wrapper/implspritecanvas.cxx:86 >#3 0x00007fffa7bedae4 in slideshow::internal::(anonymous namespace)::SlideView::updateScreen (this=0x7fffc0216e58) at /data/opt/libreoffice/master/slideshow/source/engine/slideview.cxx:859 > > >*** SO - to chase on Windows ... > > + add breakpoint to CanvasUpdateRequester's Callback > + work out why it is called with VCL canvas > + but not with DirectX canvas > + fun ! ... > > > >* The callback comes from: > + ImplSalYield ... > + ImplSalDispatchMessage ... > + WinSalInstance: ... > > + Application::Reschedule > + etc. > > sd::SlideshowImpl::PostYieldListener > + Wow -> crazy; a callback after 'Yield' > + that does another yield [ what ! ] ... > > >sal_Int32 SlideshowImpl::updateSlideShow() >{ > // prevent me from deletion when recursing (App::EnableYieldMode does) > const rtl::Reference<SlideshowImpl> this_(this); > > + horrors ... [!] ... > > if (::basegfx::fTools::equalZero(fUpdate)) > { > // Use post yield listener for short update intervalls. > Application::EnableNoYieldMode(); > Application::AddPostYieldListener(LINK(this, SlideshowImpl, PostYieldListener)); > } > > + vs. > > { > // Avoid busy loop when the previous call to update() > // returns a small positive number but not 0 (which is > // handled above). Also, make sure that calls to update() > // have a minimum frequency. > // => Allow up to 60 frames per second. Call at least once > // every 4 seconds. > const static sal_Int32 mnMaximumFrameCount (60); > const static double mnMinimumTimeout (1.0 / mnMaximumFrameCount); > const static double mnMaximumTimeout (4.0); > fUpdate = ::basegfx::clamp(fUpdate, mnMinimumTimeout, mnMaximumTimeout); > > * wow ... > + This is truly busted [!] ... > + wow. > > > * On Windows -> we have a post yield mode ? ... > + but do we have no events ? > > >* Windows: > + Timer -> to > >SlideshowImpl::SlideshowImpl( const Reference< XPresentation2 >& xPresentation, ViewShell* pViewSh, ::sd::View* pView, SdDrawDocument* pDoc, vcl::Window* pParentWindow ) >{ > maUpdateTimer.SetTimeoutHdl(LINK(this, SlideshowImpl, updateHdl)); > + this should update the screen [etc.] > ... >} > > This timer is triggered ... > > * calls updateSlideShow > > * calls AddPostYieldListener > > * PostYieldListener is ~immediately triggered > > => so far apparently no presenter-console / screen setup etc. > => no invalidates processed yet (?) ... > > * Then immediately go around the next loop > + fUpdate is this time -1 > => so no re-rendering is queued > > >* So - we hit the PostYieldListener > >** Fun > + what is different about the canvas ? ... > > >/** called only by the slideshow view when the first paint event occurs. > This actually starts the slideshow. */ >void SlideshowImpl::onFirstPaint() >{ > SolarMutexGuard aSolarGuard; > maUpdateTimer.SetTimeout( (sal_uLong)100 ); > maUpdateTimer.Start(); > ... >} > > Hmm ... > >* Debugging there - stops things starting ... > + most odd ... > >svapp.cxx: > // the system timer events will not necessarily come in non waiting mode > // e.g. on OS X; need to trigger timer checks manually > if( pSVData->maAppData.mbNoYield ) > { > //Process all timers > Scheduler::ProcessTaskScheduling(true); > } > > >** This is all really messed up ... > + fun. > > >** In the failing case: > > updateSlideShow 0 > updateSlideShow -1 - fun - quicker ? ... delays longer ? > CreateWindows > CreateWindows > CreateWindows > CreateWindows > updateSlideShow -1 > updateSlideShow -1 > etc. ... > >** In the succeeding case: > updateSlideShow 0 > CreateWindows > CreateWindows > PresenterCanvas::updateScreen > Canvas Updated Requeeted queue new0 > PresenterCanvas::updateScreen > updateSlideShow -1 > CanvasUpdateRequester triggered 0 > ** Update ? ** 1 -> this renders it ... > > >** Fun: > + Timing related ... > + with breakpoints in there: > behavior changes ... > > >** When updateSlideshow returns -1 ... > + then everything is 'done' ... > >** Looks like we don't get a PresenterCanvas::updateScreen > + why not !? ... > > >** So where does the above updateScreen come from ? ... > >#1 0x00007fffc25d0bcb in sd::presenter::PresenterCanvas::updateScreen (this=<error reading variable: can't compute CFA for this frame>, bUpdateAll=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/presenter/PresenterCanvas.cxx:562 >#2 0x00007fffe86a875d in cppcanvas::internal::ImplSpriteCanvas::updateScreen (this=0x166a6d0, bUpdateAll=false) at /data/opt/libreoffice/master/cppcanvas/source/wrapper/implspritecanvas.cxx:86 >#3 0x00007fffa7bedae4 in slideshow::internal::(anonymous namespace)::SlideView::updateScreen (this=0x7fffc0216e58) at /data/opt/libreoffice/master/slideshow/source/engine/slideview.cxx:859 >... foreach ... >#7 0x00007fffa7b10d8a in slideshow::internal::ScreenUpdater::requestImmediateUpdate (this=0x7fffdf53d9e8) at /data/opt/libreoffice/master/slideshow/source/engine/screenupdater.cxx:200 >#8 0x00007fffa7c465a1 in slideshow::internal::WaitSymbol::setVisible (this=0x203e040, bVisible=true) at /data/opt/libreoffice/master/slideshow/source/engine/waitsymbol.cxx:100 >#9 0x00007fffa7bc43b5 in slideshow::internal::WaitSymbol::show (this=0x203e040) at /data/opt/libreoffice/master/slideshow/source/engine/waitsymbol.hxx:55 >#10 0x00007fffa7bb97ae in (anonymous namespace)::SlideShowImpl::requestWaitSymbol (this=0x7fffdf53d808) at /data/opt/libreoffice/master/slideshow/source/engine/slideshowimpl.cxx:959 >#11 0x00007fffa7bb6c56 in (anonymous namespace)::SlideShowImpl::WaitSymbolLock::WaitSymbolLock (this=0x7fffffffc560, rSlideShowImpl=...) at /data/opt/libreoffice/master/slideshow/source/engine/slideshowimpl.cxx:411 >#12 0x00007fffa7bbf9b8 in (anonymous namespace)::SlideShowImpl::notifySlideAnimationsEnded (this=0x7fffdf53d808) at /data/opt/libreoffice/master/slideshow/source/engine/slideshowimpl.cxx:2313 >... >#18 0x00007fffa7a9abbe in slideshow::internal::Delay::fire (this=0x20e7290) at /data/opt/libreoffice/master/slideshow/source/engine/delayevent.cxx:32 >#19 0x00007fffa7afc23c in slideshow::internal::EventQueue::process_ (this=0x7fffdf53d9f0, bFireAllEvents=false) at /data/opt/libreoffice/master/slideshow/source/engine/eventqueue.cxx:225 >#20 0x00007fffa7afbd99 in slideshow::internal::EventQueue::process (this=0x7fffdf53d9f0) at /data/opt/libreoffice/master/slideshow/source/engine/eventqueue.cxx:167 >#21 0x00007fffa7bbee0c in (anonymous namespace)::SlideShowImpl::update (this=0x7fffdf53d808, nNextTimeout=@0x7fffffffcd48: 0) at /data/opt/libreoffice/master/slideshow/source/engine/slideshowimpl.cxx:2040 >#22 0x00007fffc2633969 in sd::SlideshowImpl::updateSlideShow (this=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/slideshow/slideshowimpl.cxx:1829 >#23 0x00007fffc263374a in sd::SlideshowImpl::updateHdl (this=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/slideshow/slideshowimpl.cxx:1789 >#24 0x00007fffc263372b in sd::SlideshowImpl::LinkStubupdateHdl (instance=<error reading variable: can't compute CFA for this frame>, data=<error reading variable: can't compute CFA for this frame>) at /data/opt/libreoffice/master/sd/source/ui/slideshow/slideshowimpl.cxx:1787 >#25 0x00007ffff0d29ad3 in Link<Timer*, void>::Call (this=0x7fffae633618, data=0x7fffae6335f8) at /data/opt/libreoffice/master/include/tools/link.hxx:127 >#26 0x00007ffff0d29843 in Timer::Invoke (this=0x7fffae6335f8) at /data/opt/libreoffice/master/vcl/source/app/timer.cxx:117 >#27 0x00007ffff0cff84c in ImplSchedulerData::Invoke (this=0x20f2a30) at /data/opt/libreoffice/ >#28 0x00007ffff0cffb11 in Scheduler::ProcessTaskScheduling (bTimer=false) at /data/opt/libreoffice/master/vcl/source/app/scheduler.cxx:127 > > >void SlideShowImpl::notifySlideAnimationsEnded() > + looks interesting ... > > >** Another question: > + why is the clock / tick invalidation not working !? > (at least initially) > > > >** Fails: > updateSlideShow 0 > < what happens here ? ... no CreateWindows in time ? ... > > notifySlideAnimationsEnded > notifySlideAnimationsEnded - broadcast to screens ... > updateSlideShow -1 > CreateWindows > ... > >* Succeeds: > updateSlideShow 0 > CreateWindows > CreateWindows > CreateWindows > CreateWindows > notifySlideAnimationsEnded -> ... > PresenterCanvas::updateScreen > Canvas Updated Requeeted queue new0 > PresenterCanvas::updateScreen > updateSlideShow -1 > CanvasUpdateRequester triggered 0 > ** Update ? ** 1 -> this renders it ... > >... [ wow ] ... > + it really is -this- bad =) > >* Race condition between slideshow/ and sd/ and/or sdext/ > + fun. > > >* In a nutshell (I guess) we just don't have this thing setup yet > for the presenter console; there is some sort of race there: > > maListenerContainer.forEach<presentation::XSlideShowListener>( > boost::mem_fn( &presentation::XSlideShowListener::slideAnimationsEnded ) ); > >* The update seems to come from here: > > WaitSymbolLock aLock (*this); > + hmm ... > >* Is there really some deferred magic / foo here ? > >* WaitSymbol: > > void show() { setVisible(true); } > > * the 'wait symbols' - forces an immediate update of the screens ... > + which is what first shows the presenter console ? > ** Can that really be true ? > + what if there is no next slide ? > + is my 1x slide example particularly odd ? > > >* this is all a horrible hole ! =) > + how -can- it be -this- bad =) > + what are they thinking about ? ... > + try with an animation or two ... > > > >** With the VCL foo working nicely and giving > invalidates and paint requests etc. > + we do get a: > + CanvasUpdateRequester::RequestUpdate > + we get from a windowPaint event from > an invalidate on the presenter console. > + so that works [!] .. > + but ? ... > > + with the other canvas ... > + we don't get this at all > + no RequestUpdate > > + I (guess) no invalidate from VCL etc. to drive that > + why not ?. > >** Just a total mess ... > + events coming in left & right; and a complete mess of > ordering them. >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 91574
:
116259
|
116769
|
117054
|
117064
| 117372 |
117470