ooo-build r13927 - in trunk: . patches/dev300



Author: thorstenb
Date: Wed Sep 17 21:06:14 2008
New Revision: 13927
URL: http://svn.gnome.org/viewvc/ooo-build?rev=13927&view=rev

Log:
    * patches/dev300/apply: 
    * patches/dev300/timely-canvas-disposing.diff: fix for crash
    during slideshow exit (on multi-head setups), i#94007



Added:
   trunk/patches/dev300/timely-canvas-disposing.diff
Modified:
   trunk/ChangeLog
   trunk/patches/dev300/apply

Modified: trunk/patches/dev300/apply
==============================================================================
--- trunk/patches/dev300/apply	(original)
+++ trunk/patches/dev300/apply	Wed Sep 17 21:06:14 2008
@@ -2642,6 +2642,7 @@
 sdext-presenterview-thread-suicide.diff, n#425072, thorsten
 vcl-fix-screen-number.diff, n#426521, i#93986, thorsten
 vcl-fix-gtk-fullscreen-crash.diff, i#93805, dtardon
+timely-canvas-disposing.diff, i#94007, thorsten
 
 [ ImpressFontSize ]
 [ Fixes <= dev300-m30 <= ooo300-m3 ]

Added: trunk/patches/dev300/timely-canvas-disposing.diff
==============================================================================
--- (empty file)
+++ trunk/patches/dev300/timely-canvas-disposing.diff	Wed Sep 17 21:06:14 2008
@@ -0,0 +1,64 @@
+ sd/source/ui/slideshow/slideshow.cxx |    9 +++++++--
+ vcl/source/window/wrkwin.cxx         |   14 ++++++++++++++
+ 2 files changed, 21 insertions(+), 2 deletions(-)
+
+
+diff --git sd/source/ui/slideshow/slideshow.cxx sd/source/ui/slideshow/slideshow.cxx
+index 7c2b2d7..7b66db0 100644
+--- sd/source/ui/slideshow/slideshow.cxx
++++ sd/source/ui/slideshow/slideshow.cxx
+@@ -701,6 +701,13 @@ void SAL_CALL SlideShow::end() throw(RuntimeException)
+ 		ViewShellBase* pFullScreenViewShellBase = mpFullScreenViewShellBase;
+ 		mpFullScreenViewShellBase = 0;
+ 
++        // dispose before fullscreen window changes screens
++        // (potentially). If this needs to be moved behind
++        // pWorkWindow->StartPresentationMode() again, read issue
++        // pWorkWindow->i94007 & implement the solution outlined
++        // there.
++		xController->dispose();
++
+ 		if( pFullScreenViewShellBase )
+ 		{
+ 			PresentationViewShell* pShell = dynamic_cast<PresentationViewShell*>(pFullScreenViewShellBase->GetMainViewShell().get());
+@@ -715,8 +722,6 @@ void SAL_CALL SlideShow::end() throw(RuntimeException)
+ 			}
+ 		}
+ 
+-		xController->dispose();
+-
+ 		if( pFullScreenViewShellBase )
+ 		{
+ 			PresentationViewShell* pShell = NULL;
+diff --git vcl/source/window/wrkwin.cxx vcl/source/window/wrkwin.cxx
+index 09f236c..fb5d901 100644
+--- vcl/source/window/wrkwin.cxx
++++ vcl/source/window/wrkwin.cxx
+@@ -47,6 +47,8 @@
+ #include <vcl/wrkwin.hxx>
+ #include <vcl/opengl.hxx>
+ #include <vcl/sysdata.hxx>
++#include <com/sun/star/lang/XComponent.hpp>
++#include <com/sun/star/rendering/XCanvas.hpp>
+ 
+ // =======================================================================
+ 
+@@ -204,6 +206,18 @@ void WorkWindow::ShowFullScreenMode( BOOL bFullScreenMode, sal_Int32 nDisplay )
+     mbFullScreenMode = bFullScreenMode != 0;
+     if ( !mbSysChild )
+     {
++        // Dispose of the canvas implementation, which might rely on
++        // screen-specific system data.
++        com::sun::star::uno::Reference< com::sun::star::rendering::XCanvas > xCanvas( mpWindowImpl->mxCanvas );
++        if( xCanvas.is() )
++        {
++            com::sun::star::uno::Reference< com::sun::star::lang::XComponent > 
++                xCanvasComponent( xCanvas,
++                                  com::sun::star::uno::UNO_QUERY );
++            if( xCanvasComponent.is() )
++                xCanvasComponent->dispose();
++        }
++        
+         mpWindowImpl->mpFrameWindow->mpWindowImpl->mbWaitSystemResize = TRUE;
+         ImplGetFrame()->ShowFullScreen( bFullScreenMode, nDisplay );
+     }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]