--- vcl/source/window/window.cxx	2006-03-13 20:04:53.000000000 +0000
+++ vcl/source/window/window.cxx	2006-03-13 20:04:47.000000000 +0000
@@ -176,6 +176,9 @@
 #ifndef _COM_SUN_STAR_ACCESSIBILITY_ACCESSIBLEROLE_HPP_
 #include <com/sun/star/accessibility/AccessibleRole.hpp>
 #endif
+#ifndef _COM_SUN_STAR_TASK_XSTATUSINDICATOR_HPP_
+#include <com/sun/star/task/XStatusIndicator.hpp>
+#endif
 
 #include <unowrap.hxx>
 #include <dndlcon.hxx>
@@ -6433,7 +6436,21 @@ void Window::Show( BOOL bVisible, USHORT
             ImplSVData* pSVData = ImplGetSVData();
             // #106431#, hide SplashScreen
             if( pSVData->mpIntroWindow && !ImplIsWindowOrChild( pSVData->mpIntroWindow ) )
+            {
                 pSVData->mpIntroWindow->Hide();
+
+                bVisible = sal_True;
+                Sequence< Any > aSeq( 1 );
+                aSeq[0] <<= bVisible;
+                Reference<com::sun::star::task::XStatusIndicator> rSplashScreen =
+                    Reference<com::sun::star::task::XStatusIndicator>(
+                        comphelper::getProcessServiceFactory()->createInstanceWithArguments(
+                            OUString::createFromAscii( "com.sun.star.office.SplashScreen" ),
+                            aSeq ), UNO_QUERY);
+
+                if ( rSplashScreen.is() )
+                    rSplashScreen->end();
+            }
 
             //DBG_ASSERT( !mpWindowImpl->mbSuppressAccessibilityEvents, "Window::Show() - Frame reactivated");
             mpWindowImpl->mbSuppressAccessibilityEvents = FALSE;
--- desktop/source/splash/splash.cxx	2006-03-14 17:39:48.000000000 +0000
+++ desktop/source/splash/splash.cxx	2006-03-14 17:42:02.000000000 +0000
@@ -171,6 +171,12 @@ SplashScreen::~SplashScreen()
 		LINK( this, SplashScreen, AppEventListenerHdl ) );
 	if (_bVisible) Hide();
 
+#ifdef UNX
+	if (!doRender()) {
+		fclose (_outFd);
+		_outFd = NULL;
+	}
+#endif
 }
 
 void SAL_CALL SplashScreen::start(const OUString& aText, sal_Int32 nRange)
@@ -194,8 +200,6 @@ void SAL_CALL SplashScreen::end()
 /*		fprintf (stderr, "SplashScreen::end()\n"); */
 		fprintf (_outFd, "end\n");
 		fflush (_outFd);
-		fclose (_outFd);
-		_outFd = NULL;
 	}
 #endif
 }
