[ooo-build-commit] .: 5 commits - patches/dev300

Radek Doulík rodo at kemper.freedesktop.org
Thu May 13 05:30:05 PDT 2010


 patches/dev300/apply                                     |    3 
 patches/dev300/transogl-buildfix-pixmap-ext.diff         |  138 -
 patches/dev300/transogl-buildfix.diff                    |   20 
 patches/dev300/transogl-debug-time.diff                  |   92 -
 patches/dev300/transogl-detect-fix.diff                  |  127 -
 patches/dev300/transogl-dispose-fix.diff                 |   42 
 patches/dev300/transogl-fix-dual-head.diff               |  160 -
 patches/dev300/transogl-fix-first-slide.diff             |  566 ------
 patches/dev300/transogl-fix-presenter-view.diff          |  216 --
 patches/dev300/transogl-fix-remote.diff                  |  303 ---
 patches/dev300/transogl-mesa-fallback.diff               |  266 ---
 patches/dev300/transogl-pixmap-to-texture.diff           | 1282 ---------------
 patches/dev300/transogl-shader-transitions-1.diff        |  349 ----
 patches/dev300/transogl-shader-transitions.diff          |  597 ------
 patches/dev300/transogl-sync-fix.diff                    |   49 
 patches/dev300/transogl-transitions-newsflash-pptin.diff |    4 
 patches/dev300/transogl-transitions-newsflash.diff       |   98 -
 patches/dev300/transogl-transitions-slideshow.diff       |  203 --
 18 files changed, 5 insertions(+), 4510 deletions(-)

New commits:
commit 0805a47e85eed011e3bc8fcd24b0a545b2572efd
Author: Radek Doulik <rodo at novell.com>
Date:   Thu May 13 14:29:31 2010 +0200

    remove patch which went upstream
    
    * patches/dev300/transogl-transitions-slideshow.diff:

diff --git a/patches/dev300/transogl-transitions-slideshow.diff b/patches/dev300/transogl-transitions-slideshow.diff
deleted file mode 100644
index d6517f5..0000000
--- a/patches/dev300/transogl-transitions-slideshow.diff
+++ /dev/null
@@ -1,203 +0,0 @@
---- slideshow/source/engine/OGLTrans/makefile.mk.ogltrss~	2008-06-24 14:05:20.000000000 +0200
-+++ slideshow/source/engine/OGLTrans/makefile.mk	2008-07-07 20:21:34.867096734 +0200
-@@ -53,6 +53,7 @@ SLOFILES = \
-         $(SLO)$/OGLTrans_TransitionImpl.obj \
-         $(SLO)$/OGLTrans_TransitionerImpl.obj
-         
-+DLLPRE=
- SHL1TARGET=$(TARGET).uno
- 
- .IF "$(GUI)"=="UNX"
---- slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx.ogltrss~	2008-06-24 14:04:41.000000000 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx	2008-07-07 20:21:34.807096930 +0200
-@@ -42,6 +42,8 @@ void OGLTransitionImpl::clear()
-     for(unsigned int i(0); i < maSceneObjects.size(); ++i)
-         delete maSceneObjects[i];
-     maSceneObjects.clear();
-+
-+    bReflectSlides = false;
- }
- 
- OGLTransitionImpl::~OGLTransitionImpl()
-@@ -63,6 +65,30 @@ void OGLTransitionImpl::finish()
-     }
- }
- 
-+static void blendSlide( double depth )
-+{
-+    double showHeight = -1 + depth*2;
-+    GLfloat reflectionColor[] = {0, 0, 0, 0.25};
-+
-+    glBegin( GL_QUADS );
-+    glColor4fv( reflectionColor );
-+    glVertex3f( -1.01, -1.01, 0.001 );
-+    glColor4f( 0, 0, 0, 1 );
-+    glVertex3f(-1.01,  showHeight, 0.001 );
-+    glVertex3f( 1.01,  showHeight, 0.001 );
-+    glColor4fv( reflectionColor );
-+    glVertex3f( 1.01, -1.01, 0.001 );
-+    glEnd();
-+
-+    glBegin( GL_QUADS );
-+    glColor4f( 0, 0, 0, 1 );
-+    glVertex3f( -1.01, showHeight, 0.001 );
-+    glVertex3f( -1.01,  1.01, 0.001 );
-+    glVertex3f(  1.01,  1.01, 0.001 );
-+    glVertex3f(  1.01, showHeight, 0.001 );
-+    glEnd();
-+}
-+
- void OGLTransitionImpl::display( double nTime, ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex,
-                                  double SlideWidth, double SlideHeight, double DispWidth, double DispHeight )
- {
-@@ -72,30 +98,79 @@ void OGLTransitionImpl::display( double 
-     SlideHeightScale = SlideHeight/DispHeight;
- 
-     glPushMatrix();
--    glEnable(GL_TEXTURE_2D);
--    //TODO change to foreach
-+    if ( bReflectSlides ) {
-+        double reflectionDepth = 0.3;
-+        double surfaceLevel = -0.04;
-+
-+        /* reflected slides */
-+        glPushMatrix();
-+
-+        glScaled( 1, -1, 1 );
-+        glTranslated( 0, 2 - surfaceLevel, 0 );
-+
-+        glCullFace(GL_FRONT);
-+        displaySlides( nTime, glLeavingSlideTex, glEnteringSlideTex, SlideWidthScale, SlideHeightScale );
-+        glCullFace(GL_BACK);
-+
-+        glEnable(GL_BLEND);
-+        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-+        glDisable(GL_LIGHTING);
-+
-+        /* leaving slide reflection blending */
-+        glPushMatrix();
-+        maLeavingSlidePrimitives[0].applyOperations( nTime, SlideWidthScale, SlideHeightScale );
-+        blendSlide( reflectionDepth );
-+        glPopMatrix();
-+
-+        /* entering slide reflection blending */
-+        glPushMatrix();
-+        maEnteringSlidePrimitives[0].applyOperations( nTime, SlideWidthScale, SlideHeightScale );
-+        blendSlide( reflectionDepth );
-+        glPopMatrix();
-+
-+        glDisable(GL_BLEND);
-+        glEnable(GL_LIGHTING);
-+
-+        glPopMatrix();
-+    }
-+
-+    displaySlides( nTime, glLeavingSlideTex, glEnteringSlideTex, SlideWidthScale, SlideHeightScale );
-+    displayScene( nTime, SlideWidth, SlideHeight, DispWidth, DispHeight );
-+    glPopMatrix();
-+}
-+
-+void OGLTransitionImpl::applyOverallOperations( double nTime, double SlideWidthScale, double SlideHeightScale )
-+{
-     for(unsigned int i(0); i < OverallOperations.size(); ++i)
-         OverallOperations[i]->interpolate(nTime,SlideWidthScale,SlideHeightScale);
-+}
-+
-+void OGLTransitionImpl::displaySlides( double nTime, ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex,
-+                                       double SlideWidthScale, double SlideHeightScale )
-+{
-+    applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale );
-+    glEnable(GL_TEXTURE_2D);
-+    //TODO change to foreach
-     glBindTexture(GL_TEXTURE_2D, glLeavingSlideTex);
-     for(unsigned int i(0); i < maLeavingSlidePrimitives.size(); ++i)
-         maLeavingSlidePrimitives[i].display(nTime,SlideWidthScale,SlideHeightScale);
-     glBindTexture(GL_TEXTURE_2D, glEnteringSlideTex);
-     for(unsigned int i(0); i < maEnteringSlidePrimitives.size(); ++i)
-         maEnteringSlidePrimitives[i].display(nTime,SlideWidthScale,SlideHeightScale);
-+}
- 
-+void OGLTransitionImpl::displayScene( double nTime, double SlideWidth, double SlideHeight, double DispWidth, double DispHeight )
-+{
-+    glEnable(GL_TEXTURE_2D);
-     for(unsigned int i(0); i < maSceneObjects.size(); ++i)
-         maSceneObjects[i]->display(nTime, SlideWidth, SlideHeight, DispWidth, DispHeight);
--    
--
--    glPopMatrix();
- }
- 
- void Primitive::display(double nTime, double WidthScale, double HeightScale)
- {
-     glPushMatrix();
--    for(unsigned int i(0); i < Operations.size(); ++i)
--        Operations[i]->interpolate( nTime ,WidthScale,HeightScale);
--    glScaled(WidthScale,HeightScale,1);
-+
-+    applyOperations( nTime, WidthScale, HeightScale );
- 
-     glEnableClientState( GL_VERTEX_ARRAY );
-     if(!Normals.empty())
-@@ -110,6 +185,13 @@ void Primitive::display(double nTime, do
-     glPopMatrix();
- }
- 
-+void Primitive::applyOperations(double nTime, double WidthScale, double HeightScale)
-+{
-+    for(unsigned int i(0); i < Operations.size(); ++i)
-+        Operations[i]->interpolate( nTime ,WidthScale,HeightScale);
-+    glScaled(WidthScale,HeightScale,1);
-+}
-+
- Primitive::~Primitive()
- {
-     for(unsigned int i( 0 ); i < Operations.size(); ++i)
-@@ -222,6 +304,8 @@ void OGLTransitionImpl::makeTurnAround()
- {
-     clear();
-     Primitive Slide;
-+
-+    bReflectSlides = true;
-     
-     Slide.pushTriangle(basegfx::B2DVector(0,0),basegfx::B2DVector(1,0),basegfx::B2DVector(0,1));
-     Slide.pushTriangle(basegfx::B2DVector(1,0),basegfx::B2DVector(0,1),basegfx::B2DVector(1,1));
-@@ -320,10 +404,12 @@ void OGLTransitionImpl::makeRochade()
-     clear();
-     Primitive Slide;
-     
-+    bReflectSlides = true;
-+
-     double w, h;
- 
-     w = 2.2;
--    h = 5;
-+    h = 10;
- 
-     Slide.pushTriangle(basegfx::B2DVector(0,0),basegfx::B2DVector(1,0),basegfx::B2DVector(0,1));
-     Slide.pushTriangle(basegfx::B2DVector(1,0),basegfx::B2DVector(0,1),basegfx::B2DVector(1,1));
---- slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.hxx.ogltrss~	2008-06-24 14:04:52.000000000 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.hxx	2008-07-07 20:23:44.418846399 +0200
-@@ -104,6 +104,15 @@ private:
-     /** All the operations that should be applied to both leaving and entering slide primitives. These operations will be called in the order they were pushed back in. In OpenGL this effectively uses the operations in the opposite order they were pushed back.
- 	*/
- 	vector<Operation*> OverallOperations;
-+
-+	/** Whether to reflect slides, the reflection happens on flat surface beneath the slides.
-+	 ** Now it only works with slides which keep their rectangular shape together.
-+	 */
-+	bool bReflectSlides;
-+
-+	void displaySlides( double nTime, ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale );
-+	void displayScene( double nTime, double SlideWidth, double SlideHeight, double DispWidth, double DispHeight);
-+	void applyOverallOperations( double nTime, double SlideWidthScale, double SlideHeightScale );
- };
- 
- class SceneObject
-@@ -147,6 +156,7 @@ public:
-     Primitive(const Primitive& rvalue);
- 	~Primitive();
- 
-+    void applyOperations(double nTime, double SlideWidthScale, double SlideHeightScale);
-     void display(double nTime, double SlideWidthScale, double SlideHeightScale);
-     const Primitive& operator=(const Primitive& rvalue);
-     
commit 332bb218e1382020e6f820269ff79043e6619f86
Author: Radek Doulik <rodo at novell.com>
Date:   Thu May 13 14:26:48 2010 +0200

    reenabled lost patch, updated to make it apply
    
    * patches/dev300/apply:
    * patches/dev300/transogl-transitions-newsflash-pptin.diff:

diff --git a/patches/dev300/apply b/patches/dev300/apply
index 142b072..91c5066 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -4022,3 +4022,6 @@ svx-ppt-bullet-offset-fix.diff, n#593609, rodo
 
 [ EMFPlus ]
 emf+-canvas-vcl-clear.diff, rodo
+
+[ OpenGLTransitions ]
+transogl-transitions-newsflash-pptin.diff
diff --git a/patches/dev300/transogl-transitions-newsflash-pptin.diff b/patches/dev300/transogl-transitions-newsflash-pptin.diff
index 3a62e71..94f7f14 100644
--- a/patches/dev300/transogl-transitions-newsflash-pptin.diff
+++ b/patches/dev300/transogl-transitions-newsflash-pptin.diff
@@ -1,5 +1,5 @@
---- sd/source/filter/pptin.cxx
-+++ sd/source/filter/pptin.cxx
+--- sd/source/filter/ppt/pptin.cxx
++++ sd/source/filter/ppt/pptin.cxx
 @@ -1796,12 +1796,8 @@ void ImplSdPPTImport::ImportPageEffect( SdPage* pPage, const sal_Bool bNewAnimat
  									break;
  									case PPT_TRANSITION_TYPE_NEWSFLASH :
commit 21e0f16379adb35705c0caabb1008041e9f8fd3d
Author: Radek Doulik <rodo at novell.com>
Date:   Thu May 13 14:24:47 2010 +0200

    remove patches which went upstream
    
    * patches/dev300/transogl-mesa-fallback.diff:
    * patches/dev300/transogl-pixmap-to-texture.diff:
    * patches/dev300/transogl-shader-transitions-1.diff:
    * patches/dev300/transogl-shader-transitions.diff:
    * patches/dev300/transogl-sync-fix.diff:
    * patches/dev300/transogl-transitions-newsflash.diff:

diff --git a/patches/dev300/transogl-mesa-fallback.diff b/patches/dev300/transogl-mesa-fallback.diff
deleted file mode 100644
index b396400..0000000
--- a/patches/dev300/transogl-mesa-fallback.diff
+++ /dev/null
@@ -1,266 +0,0 @@
---- slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx.oglfallback~	2008-07-07 21:07:47.072846349 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx	2008-07-07 21:11:50.175122546 +0200
-@@ -93,6 +93,7 @@ public:
-     explicit OGLTransitionerImpl(OGLTransitionImpl* pOGLTransition);
-     bool initWindowFromSlideShowView( const uno::Reference< presentation::XSlideShowView >& xView, double, double);
-     void setSlides( const uno::Reference< rendering::XBitmap >& xLeavingSlide , const uno::Reference< rendering::XBitmap >& xEnteringSlide );
-+    static void initialize( const uno::Reference< presentation::XSlideShowView >& xView );
- 
-     // XTransition
- 	virtual void SAL_CALL update( double nTime ) throw (uno::RuntimeException);
-@@ -166,14 +167,62 @@ private:    
-     */    
-     OGLTransitionImpl* pTransition;
- 
-+public:
-     /** whether we are running on ATI fglrx with bug related to textures
-      */
--    bool mbBrokenTexturesATI;
-+    static bool cbBrokenTexturesATI;
-+
-+    /** GL version
-+     */
-+    static float cnGLVersion;
- 
--    /* GL version */
--    float mnGLVersion;
-+    /** Whether Mesa is the OpenGL vendor
-+     */
-+    static bool cbMesa;
- };
- 
-+void OGLTransitionerImpl::initialize( const uno::Reference< presentation::XSlideShowView >& xView )
-+{
-+    // not thread safe
-+    static bool initialized = false;
-+
-+    if( !initialized ) {
-+        OGLTransitionerImpl *instance;
-+
-+        instance = new OGLTransitionerImpl( NULL );
-+        instance->initWindowFromSlideShowView( xView, 0, 0 );
-+
-+        if( instance->GLWin.HasGLXExtension("GLX_SGI_swap_control" ) ) {
-+            // enable vsync
-+            typedef GLint (*glXSwapIntervalProc)(GLint);
-+            glXSwapIntervalProc glXSwapInterval = (glXSwapIntervalProc) unx::glXGetProcAddress( (const GLubyte*) "glXSwapIntervalSGI" );
-+            if( glXSwapInterval ) {
-+                glXSwapInterval( 1 );
-+                OSL_TRACE("set swap interval to 1 (enable vsync)");
-+            }
-+        }
-+
-+        const GLubyte* version = glGetString( GL_VERSION );
-+        if( version && version[0] ) {
-+            cnGLVersion = version[0] - '0';
-+            if( version[1] == '.' && version[2] )
-+                cnGLVersion += (version[2] - '0')/10.0;
-+        } else
-+            cnGLVersion = 1.0;
-+        OSL_TRACE("GL version: %s parsed: %f", version, cnGLVersion );
-+
-+        const GLubyte* vendor = glGetString( GL_VENDOR );
-+        cbMesa = ( vendor && strstr( (const char *) vendor, "Mesa" ) );
-+        OSL_TRACE("GL vendor: %s identified as Mesa: %d", vendor, cbMesa );
-+
-+        /* TODO: check for version once the bug in fglrx driver is fixed */
-+        cbBrokenTexturesATI = (strcmp( (const char *) glGetString( GL_VENDOR ), "ATI Technologies Inc." ) == 0 );
-+
-+        delete instance;
-+        initialized = true;
-+    }
-+}
-+
- bool OGLTransitionerImpl::initWindowFromSlideShowView( const uno::Reference< presentation::XSlideShowView >& xView, double, double)
- {
-     osl::MutexGuard const guard( m_aMutex );
-@@ -349,27 +398,6 @@ bool OGLTransitionerImpl::initWindowFrom
- 	wglMakeCurrent(GLWin.hDC,GLWin.hRC);
- #elif defined( UNX )
-     glXMakeCurrent( GLWin.dpy, GLWin.win, GLWin.ctx );
--    if(GLWin.HasGLXExtension("GLX_SGI_swap_control")) {
--	    // enable vsync
--	    typedef GLint (*glXSwapIntervalProc)(GLint);
--	    glXSwapIntervalProc glXSwapInterval = (glXSwapIntervalProc) unx::glXGetProcAddress( (const GLubyte*) "glXSwapIntervalSGI" );
--	    if( glXSwapInterval ) {
--		    glXSwapInterval( 1 );
--		    OSL_TRACE("set swap interval to 1 (enable vsync)");
--	    }
--    }
--
--    const GLubyte* version = glGetString( GL_VERSION );
--    if( version && version[0] ) {
--	    mnGLVersion = version[0] - '0';
--	    if( version[1] == '.' && version[2] )
--		    mnGLVersion += (version[2] - '0')/10.0;
--    } else
--	    mnGLVersion = 1.0;
--    OSL_TRACE("GL version: %s parsed: %f", version, mnGLVersion );
--
--    /* TODO: check for version once the bug in fglrx driver is fixed */
--    mbBrokenTexturesATI = (strcmp( (const char *) glGetString( GL_VENDOR ), "ATI Technologies Inc." ) == 0 );
- #endif
-     glEnable(GL_CULL_FACE);
-     glCullFace(GL_BACK);
-@@ -392,7 +420,7 @@ bool OGLTransitionerImpl::initWindowFrom
-     if( LeavingBytes.hasElements() && EnteringBytes.hasElements())
-        GLInitSlides();//we already have uninitialized slides, let's initialize 
- 
--    if( pTransition && pTransition->mnRequiredGLVersion <= mnGLVersion )
-+    if( pTransition && pTransition->mnRequiredGLVersion <= cnGLVersion )
-         pTransition->prepare( GLleavingSlide, GLenteringSlide );
- 
-     return true;
-@@ -472,7 +500,7 @@ void OGLTransitionerImpl::GLInitSlides()
- {
-     osl::MutexGuard const guard( m_aMutex );
- 
--    if (isDisposed() || pTransition->mnRequiredGLVersion > mnGLVersion)
-+    if (isDisposed() || pTransition->mnRequiredGLVersion > cnGLVersion)
-         return;
- 
-     glMatrixMode(GL_PROJECTION);
-@@ -643,7 +671,7 @@ void OGLTransitionerImpl::GLInitSlides()
-     }
-     else
-     {
--	if( pTransition && !mbBrokenTexturesATI && !pTransition->mbUseMipMapLeaving) {
-+	if( pTransition && !cbBrokenTexturesATI && !pTransition->mbUseMipMapLeaving) {
- 	    glTexImage2D(GL_TEXTURE_2D, 0, pDetectedFormat->nInternalFormat, SlideSize.Width,
- 			 SlideSize.Height, &LeavingBytes[0]);
- 	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
-@@ -699,7 +727,7 @@ void OGLTransitionerImpl::GLInitSlides()
-     }
-     else
-     {
--	if( pTransition && !mbBrokenTexturesATI && !pTransition->mbUseMipMapEntering ) {
-+	if( pTransition && !cbBrokenTexturesATI && !pTransition->mbUseMipMapEntering ) {
- 	    glTexImage2D(GL_TEXTURE_2D, 0, pDetectedFormat->nInternalFormat, SlideSize.Width, SlideSize.Height, 0, Format, GL_UNSIGNED_BYTE, &EnteringBytes[0]);
- 	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
- 	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
-@@ -731,7 +759,7 @@ void SAL_CALL OGLTransitionerImpl::updat
- {
-     osl::MutexGuard const guard( m_aMutex );
- 
--    if (isDisposed() || pTransition->mnRequiredGLVersion > mnGLVersion)
-+    if (isDisposed() || pTransition->mnRequiredGLVersion > cnGLVersion)
-         return;
- 
-     glEnable(GL_DEPTH_TEST);
-@@ -856,6 +884,14 @@ public:
-         if( !hasTransition( transitionType, transitionSubType ) )
-             return uno::Reference< presentation::XTransition >();
- 
-+        OGLTransitionerImpl::initialize( view );
-+
-+        if( OGLTransitionerImpl::cbMesa && (
-+            ( transitionType == animations::TransitionType::FADE && transitionSubType == animations::TransitionSubType::CROSSFADE ) ||
-+            ( transitionType == animations::TransitionType::IRISWIPE && transitionSubType == animations::TransitionSubType::DIAMOND ) ) )
-+            return uno::Reference< presentation::XTransition >();
-+            
-+
-         OGLTransitionImpl* pTransition;
- 
-         if( transitionType == animations::TransitionType::MISCSHAPEWIPE ) {
---- slideshow/source/engine/transitions/slidetransitionfactory.cxx.oglfallback~	2008-06-24 14:14:57.000000000 +0200
-+++ slideshow/source/engine/transitions/slidetransitionfactory.cxx	2008-07-07 21:13:52.386845822 +0200
-@@ -127,7 +127,8 @@ public:
-                          rViewContainer,
-                          rScreenUpdater,
-                          rEventMultiplexer ),
--        maTransitions()
-+        maTransitions(),
-+        mbSuccess( false )
-     {
-         // create one transition per view
-         UnoViewVector::const_iterator aCurrView (rViewContainer.begin());
-@@ -139,19 +140,24 @@ public:
-             const ::basegfx::B2DPoint aOffsetPixel(
-                 aViewTransform * ::basegfx::B2DPoint() );
-         
--            maTransitions.push_back(
--                xFactory->createTransition( 
-+	    uno::Reference<presentation::XTransition> rTransition = xFactory->createTransition(
-                     nTransitionType, 
-                     nTransitionSubType,
-                     (*aCurrView)->getUnoView(),
-                     getLeavingBitmap(ViewEntry(*aCurrView))->getXBitmap(),
-                     getEnteringBitmap(ViewEntry(*aCurrView))->getXBitmap(),
--                    basegfx::unotools::point2DFromB2DPoint(aOffsetPixel) ) );
-+                    basegfx::unotools::point2DFromB2DPoint(aOffsetPixel) );
-+
-+	    if( rTransition.is() )
-+		    maTransitions.push_back( rTransition );
-+	    else
-+		    return;
- 
-             ENSURE_OR_THROW(maTransitions.back().is(),
-                             "Failed to create plugin transition");
-             ++aCurrView;
-         }
-+	mbSuccess = true;
-     }
-         
-     virtual bool operator()( double t )
-@@ -163,9 +169,17 @@ public:
-         return true;
-     }
- 
-+    bool Success()
-+    {
-+        return mbSuccess;
-+    }
-+
- private:
-     // One transition object per view
-     std::vector< uno::Reference<presentation::XTransition> > maTransitions;
-+
-+    // bool
-+    bool mbSuccess;
- };
- 
- 
-@@ -688,7 +702,7 @@ NumberAnimationSharedPtr createPluginTra
-     const SoundPlayerSharedPtr&              pSoundPlayer, 
-     EventMultiplexer&                        rEventMultiplexer)
- {
--    return NumberAnimationSharedPtr( 
-+    PluginSlideChange* pTransition = 
-         new PluginSlideChange(
-             nTransitionType,
-             nTransitionSubType,
-@@ -698,7 +712,14 @@ NumberAnimationSharedPtr createPluginTra
-             rScreenUpdater,
-             xFactory,
-             pSoundPlayer,
--            rEventMultiplexer ));
-+            rEventMultiplexer );
-+
-+    if( pTransition->Success() )
-+        return NumberAnimationSharedPtr( pTransition );
-+    else {
-+        delete pTransition;
-+        return NumberAnimationSharedPtr();
-+    }
- }
- 
- } // anon namespace
-@@ -736,7 +757,7 @@ NumberAnimationSharedPtr TransitionFacto
-         xOptionalFactory->hasTransition(nTransitionType, nTransitionSubType) )
-     {
-         // #i82460# - optional plugin factory claims this transition. delegate.
--        return NumberAnimationSharedPtr(
-+        NumberAnimationSharedPtr pTransition(
-             createPluginTransition(
-                 nTransitionType,
-                 nTransitionSubType,
-@@ -747,6 +768,9 @@ NumberAnimationSharedPtr TransitionFacto
-                 xOptionalFactory,
-                 pSoundPlayer,
-                 rEventMultiplexer ));
-+
-+        if( pTransition.get() )
-+            return pTransition;
-     }
- 
-     const TransitionInfo* pTransitionInfo( 
diff --git a/patches/dev300/transogl-pixmap-to-texture.diff b/patches/dev300/transogl-pixmap-to-texture.diff
deleted file mode 100644
index ad762aa..0000000
--- a/patches/dev300/transogl-pixmap-to-texture.diff
+++ /dev/null
@@ -1,1282 +0,0 @@
-diff -rup slideshow/source/engine/OGLTrans-orig/OGLTrans_TransitionerImpl.cxx slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx
---- slideshow/source/engine/OGLTrans-orig/OGLTrans_TransitionerImpl.cxx	2008-08-27 08:27:25.000000000 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx	2008-08-27 09:03:37.000000000 +0200
-@@ -31,6 +31,7 @@
- #define GLX_GLXEXT_PROTOTYPES 1
- #include "OGLTrans_TransitionImpl.hxx"
- 
-+#include <com/sun/star/beans/XFastPropertySet.hpp>
- #include <com/sun/star/rendering/IntegerBitmapLayout.hpp>
- #include <com/sun/star/rendering/ColorComponentTag.hpp>
- #include <com/sun/star/rendering/ColorSpaceType.hpp>
-@@ -71,18 +72,78 @@
- namespace unx
- {
- #include <X11/keysym.h>
-+#include <X11/X.h>
- #include <GL/glx.h>
- #include <GL/glxext.h>
- }
- #endif
- 
-+#ifdef DEBUG
-+#include <boost/date_time/posix_time/posix_time.hpp>
-+using namespace ::boost::posix_time;
-+
-+static ptime t1;
-+static ptime t2;
-+static ptime t3;
-+static ptime t4;
-+
-+#endif
-+
- using namespace ::com::sun::star;
-+using ::com::sun::star::beans::XFastPropertySet;
-+using ::com::sun::star::uno::Any;
-+using ::com::sun::star::uno::Reference;
-+using ::com::sun::star::uno::Sequence;
-+using ::com::sun::star::uno::UNO_QUERY;
-+using ::com::sun::star::uno::UNO_QUERY_THROW;
- 
- namespace
- {
- 
- typedef cppu::WeakComponentImplHelper1<presentation::XTransition> OGLTransitionerImplBase;
- 
-+namespace
-+{
-+    struct OGLFormat
-+    {
-+        GLint  nInternalFormat;
-+        GLenum eFormat;
-+        GLenum eType;
-+    };
-+
-+    /* channel ordering: (0:rgba, 1:bgra, 2:argb, 3:abgr)  
-+    */
-+    int calcComponentOrderIndex(const uno::Sequence<sal_Int8>& rTags)
-+    {
-+        using namespace rendering::ColorComponentTag;
-+
-+        static const sal_Int8 aOrderTable[] =
-+        {
-+            RGB_RED, RGB_GREEN, RGB_BLUE, ALPHA,
-+            RGB_BLUE, RGB_GREEN, RGB_RED, ALPHA,
-+            ALPHA, RGB_RED, RGB_GREEN, RGB_BLUE,
-+            ALPHA, RGB_BLUE, RGB_GREEN, RGB_RED, 
-+        };
-+
-+        const sal_Int32 nNumComps(rTags.getLength());
-+        const sal_Int8* pLine=aOrderTable;
-+        for(int i=0; i<4; ++i)
-+        {
-+            int j=0;
-+            while( j<4 && j<nNumComps && pLine[j] == rTags[j] )
-+                ++j;
-+
-+            // all of the line passed, this is a match!
-+            if( j==nNumComps )
-+                return i;
-+
-+            pLine+=4;
-+        }
-+
-+        return -1;
-+    }
-+}
-+
- /** This is the Transitioner class for OpenGL 3D transitions in
-  * slideshow. At the moment, it's Linux only. This class is implicitly
-  * constructed from XTransitionFactory.
-@@ -96,7 +157,7 @@ public:
-     static bool initialize( const uno::Reference< presentation::XSlideShowView >& xView );
- 
-     // XTransition
--	virtual void SAL_CALL update( double nTime ) throw (uno::RuntimeException);
-+    virtual void SAL_CALL update( double nTime ) throw (uno::RuntimeException);
-     
- protected:
-     // WeakComponentImplHelperBase
-@@ -107,6 +168,18 @@ protected:
-         return (rBHelper.bDisposed || rBHelper.bInDispose);
-     }
- 
-+    bool createWindow( Window* pPWindow );
-+    void createTexture( unsigned int* texID,
-+#ifdef GLX_VERSION_1_3
-+			unx::GLXPixmap pixmap,
-+#endif
-+			bool usePixmap,
-+			bool useMipmap,
-+			uno::Sequence<sal_Int8>& data,
-+			const OGLFormat* pFormat );
-+    void prepareEnvironment ();
-+    const OGLFormat* chooseFormats();
-+
- private:    
-     /** After the window has been created, and the slides have been set, we'll initialize the slides with OpenGL.
-     */
-@@ -117,23 +190,29 @@ private:
-     struct GLWindow
-     {
- #if defined( WNT ) 
--			HWND					hWnd;
--			HDC						hDC;
--			HGLRC					hRC;
-+	HWND					hWnd;
-+	HDC						hDC;
-+	HGLRC					hRC;
- #elif defined( OS2 )
- #elif defined( QUARTZ )
- #elif defined( UNX )
--    		unx::Display*           dpy;
--    		int						screen;
--    		unx::Window				win;
--    		unx::GLXContext			ctx;
-+	unx::Display*           dpy;
-+	int                     screen;
-+	unx::Window             win;
-+#ifdef GLX_VERSION_1_3
-+	unx::GLXFBConfig        fbc;
-+#endif
-+	unx::XVisualInfo*       vi;
-+	unx::GLXContext         ctx;
- #endif
--    	unsigned int			bpp;
-+    	unsigned int            bpp;
-     	unsigned int            Width;
-     	unsigned int            Height;
-         const char*             GLXExtensions;
-+	const GLubyte*          GLExtensions;
- 
--        bool HasGLXExtension( const char* name ) { return gluCheckExtension( (const GLubyte*) name, (const GLubyte*) GLXExtensions ); };
-+        bool HasGLXExtension( const char* name ) { return gluCheckExtension( (const GLubyte*) name, (const GLubyte*) GLXExtensions ); }
-+	bool HasGLExtension( const char* name ) { return gluCheckExtension( (const GLubyte*) name, GLExtensions ); }
-     } GLWin;
-     
-     /** OpenGL handle to the leaving slide's texture
-@@ -154,6 +233,17 @@ private:
-     /** raw bytes of the leaving bitmap
-     */
-     uno::Sequence<sal_Int8> LeavingBytes;
-+
-+#ifdef GLX_VERSION_1_3
-+    unx::GLXPixmap LeavingPixmap;
-+    unx::GLXPixmap EnteringPixmap;
-+#endif
-+    bool mbUseLeavingPixmap;
-+    bool mbUseEnteringPixmap;
-+    bool mbFreeLeavingPixmap;
-+    bool mbFreeEnteringPixmap;
-+    unx::Pixmap maLeavingPixmap;
-+    unx::Pixmap maEnteringPixmap;
-     
-     /** the form the raw bytes are in for the bitmaps
-     */
-@@ -175,6 +265,7 @@ public:
-     /** GL version
-      */
-     static float cnGLVersion;
-+    float mnGLXVersion;
- 
-     /** Whether Mesa is the OpenGL vendor
-      */
-@@ -184,6 +275,13 @@ public:
-        whether the display has GLX extension
-      */
-     static bool cbGLXPresent;
-+
-+    /**
-+       whether texture from pixmap extension is available
-+    */
-+    bool mbTextureFromPixmap;
-+
-+    bool mbGenerateMipmap;
- };
- 
- // declare the static variables as some gcc versions have problems declaring them automaticaly
-@@ -231,25 +329,8 @@ bool OGLTransitionerImpl::initialize( co
-     return cbGLXPresent;
- }
- 
--bool OGLTransitionerImpl::initWindowFromSlideShowView( const uno::Reference< presentation::XSlideShowView >& xView, double, double)
-+bool OGLTransitionerImpl::createWindow( Window* pPWindow )
- {
--    osl::MutexGuard const guard( m_aMutex );
--
--    if (isDisposed())
--        return false;
--
--    /// take the XSlideShowView and extract the parent window from it. see viewmediashape.cxx
--    uno::Reference< rendering::XCanvas > xCanvas(xView->getCanvas(), uno::UNO_QUERY_THROW);
--	uno::Sequence< uno::Any > aDeviceParams;
--	::canvas::tools::getDeviceInfo( xCanvas, aDeviceParams );
--	::rtl::OUString aImplName;
--	aDeviceParams[ 0 ] >>= aImplName;
--	sal_Int64 aVal = 0;
--	aDeviceParams[1] >>= aVal;
--	Window* pPWindow = reinterpret_cast< Window* >( aVal );
--	GLWin.Width = pPWindow->GetSizePixel().Width();
--	GLWin.Height = pPWindow->GetSizePixel().Height();
--
-     const SystemEnvData* sysData(pPWindow->GetSystemData());
- #if defined( WNT ) 
- 	GLWin.hWnd = sysData->hWnd;
-@@ -260,46 +341,54 @@ bool OGLTransitionerImpl::initWindowFrom
-         return false;
- 
-     GLWin.win = sysData->aWindow;
--    GLWin.screen = unx::XDefaultScreen(GLWin.dpy);
-+
-+    unx::XWindowAttributes xattr;
-+    unx::XGetWindowAttributes( GLWin.dpy, GLWin.win, &xattr );
-+
-+    GLWin.screen = XScreenNumberOfScreen( xattr.screen );
-+
-     unx::XVisualInfo* vi( NULL );
-+#ifdef GLX_VERSION_1_3
-+    unx::XVisualInfo* visinfo;
-+#endif
-     static int attrList3[] =
-         {
--            GLX_RGBA,//only TrueColor or DirectColor
-+	    GLX_RGBA,//only TrueColor or DirectColor
-             //single buffered
--            GLX_RED_SIZE,4,//use the maximum red bits, with a minimum of 4 bits
--            GLX_GREEN_SIZE,4,//use the maximum green bits, with a minimum of 4 bits
--            GLX_BLUE_SIZE,4,//use the maximum blue bits, with a minimum of 4 bits
-+            GLX_RED_SIZE,4,//use the maximum red bits, with a minimum of 4 bits
-+            GLX_GREEN_SIZE,4,//use the maximum green bits, with a minimum of 4 bits
-+            GLX_BLUE_SIZE,4,//use the maximum blue bits, with a minimum of 4 bits
-             GLX_DEPTH_SIZE,0,//no depth buffer
-             None
-         };
-     static int attrList2[] = 
--        {
--            GLX_RGBA,/// only TrueColor or DirectColor
-+	{
-+	    GLX_RGBA,//only TrueColor or DirectColor
-             /// single buffered
--            GLX_RED_SIZE,4,/// use the maximum red bits, with a minimum of 4 bits
--            GLX_GREEN_SIZE,4,/// use the maximum green bits, with a minimum of 4 bits
--            GLX_BLUE_SIZE,4,/// use the maximum blue bits, with a minimum of 4 bits
--            GLX_DEPTH_SIZE,1,/// use the maximum depth bits, making sure there is a depth buffer
-+            GLX_RED_SIZE,4,/// use the maximum red bits, with a minimum of 4 bits
-+            GLX_GREEN_SIZE,4,/// use the maximum green bits, with a minimum of 4 bits
-+            GLX_BLUE_SIZE,4,/// use the maximum blue bits, with a minimum of 4 bits
-+            GLX_DEPTH_SIZE,1,/// use the maximum depth bits, making sure there is a depth buffer
-             None
-         };
-     static int attrList1[] =
-         {
--            GLX_RGBA,/// only TrueColor or DirectColor
-+	    GLX_RGBA,//only TrueColor or DirectColor
-             GLX_DOUBLEBUFFER,/// only double buffer
--            GLX_RED_SIZE,4,/// use the maximum red bits, with a minimum of 4 bits
--            GLX_GREEN_SIZE,4,/// use the maximum green bits, with a minimum of 4 bits
--            GLX_BLUE_SIZE,4,/// use the maximum blue bits, with a minimum of 4 bits
-+            GLX_RED_SIZE,4,/// use the maximum red bits, with a minimum of 4 bits
-+            GLX_GREEN_SIZE,4,/// use the maximum green bits, with a minimum of 4 bits
-+            GLX_BLUE_SIZE,4,/// use the maximum blue bits, with a minimum of 4 bits
-             GLX_DEPTH_SIZE,0,/// no depth buffer
-             None
-         };
-     static int attrList0[] =
-         {
--            GLX_RGBA,/// only TrueColor or DirectColor
-+	    GLX_RGBA,//only TrueColor or DirectColor
-             GLX_DOUBLEBUFFER,/// only double buffer
--            GLX_RED_SIZE,4,/// use the maximum red bits, with a minimum of 4 bits
--            GLX_GREEN_SIZE,4,/// use the maximum green bits, with a minimum of 4 bits
--            GLX_BLUE_SIZE,4,/// use the maximum blue bits, with a minimum of 4 bits
--            GLX_DEPTH_SIZE,1,/// use the maximum depth bits, making sure there is a depth buffer
-+            GLX_RED_SIZE,4,/// use the maximum red bits, with a minimum of 4 bits
-+            GLX_GREEN_SIZE,4,/// use the maximum green bits, with a minimum of 4 bits
-+            GLX_BLUE_SIZE,4,/// use the maximum blue bits, with a minimum of 4 bits
-+            GLX_DEPTH_SIZE,1,/// use the maximum depth bits, making sure there is a depth buffer
-             None
-        }; 
-     static int* attrTable[] = 
-@@ -314,70 +403,147 @@ bool OGLTransitionerImpl::initWindowFrom
-     const SystemEnvData* pChildSysData = NULL;
-     delete pWindow;
-     pWindow=NULL;
-+
-+#ifdef GLX_VERSION_1_3
-+    unx::GLXFBConfig* fbconfigs = NULL;
-+    int nfbconfigs, value, i = 0;
-+#endif
-+
-     while( *pAttributeTable )
-     {
-         // try to find a visual for the current set of attributes
-         vi = unx::glXChooseVisual( GLWin.dpy,
-                                    GLWin.screen,
-                                    *pAttributeTable );
--    
--        if( vi )
--        {
--            SystemWindowData winData;
--            winData.nSize = sizeof(winData);
--            winData.pVisual = (void*)(vi->visual);
--            pWindow=new SystemChildWindow(pPWindow, 0, &winData, FALSE);
--            pChildSysData = pWindow->GetSystemData();
--            if( pChildSysData )
--            {
--                break;
--            }
--            else
--            {
--                delete pWindow, pWindow=NULL;
--            }
--        }
-+
-+#ifdef GLX_VERSION_1_3
-+      if( vi ) {
-+	  OSL_TRACE("OGLTrans: using VisualID %08X", vi->visualid);
-+          fbconfigs = glXGetFBConfigs (GLWin.dpy, GLWin.screen, &nfbconfigs);
-+          for ( ; i < nfbconfigs; i++)
-+          {
-+              visinfo = glXGetVisualFromFBConfig (GLWin.dpy, fbconfigs[i]);
-+              if( !visinfo || visinfo->visualid != vi->visualid )
-+                  continue;
-+
-+              glXGetFBConfigAttrib (GLWin.dpy, fbconfigs[i], GLX_DRAWABLE_TYPE, &value);
-+              if (!(value & GLX_PIXMAP_BIT))
-+                  continue;
-+
-+              glXGetFBConfigAttrib (GLWin.dpy, fbconfigs[i],
-+                                    GLX_BIND_TO_TEXTURE_TARGETS_EXT,
-+                                    &value);
-+              if (!(value & GLX_TEXTURE_2D_BIT_EXT))
-+                  continue;
-+
-+              glXGetFBConfigAttrib (GLWin.dpy, fbconfigs[i],
-+                                    GLX_BIND_TO_TEXTURE_RGB_EXT,
-+                                    &value);
-+              if (value == FALSE)
-+                  continue;
-+
-+              glXGetFBConfigAttrib (GLWin.dpy, fbconfigs[i],
-+                                    GLX_BIND_TO_MIPMAP_TEXTURE_EXT,
-+                                    &value);
-+              if (value == FALSE)
-+                  continue;
-+
-+              /* TODO: handle non Y inverted cases */
-+              break;
-+          }
-+
-+          if( i != nfbconfigs ) {
-+              vi = glXGetVisualFromFBConfig( GLWin.dpy, fbconfigs[i] );
-+#else
-+          if( vi ) {
-+#endif
-+              SystemWindowData winData;
-+              winData.nSize = sizeof(winData);
-+              winData.pVisual = (void*)(vi->visual);
-+              pWindow=new SystemChildWindow(pPWindow, 0, &winData, FALSE);
-+              pChildSysData = pWindow->GetSystemData();
-+              if( pChildSysData ) {
-+                  break;
-+              } else {
-+                  delete pWindow, pWindow=NULL;
-+              }
-+          }
-+#ifdef GLX_VERSION_1_3
-+      }
-+#endif
-+
-         ++pAttributeTable;
--    }
-+      }
- #endif
- 
- #if defined( WNT ) 
--			const SystemEnvData* pChildSysData = NULL;
--			SystemWindowData winData;
--            winData.nSize = sizeof(winData);
--            pWindow=new SystemChildWindow(pPWindow, 0, &winData, FALSE);
--            pChildSysData = pWindow->GetSystemData();
-+      const SystemEnvData* pChildSysData = NULL;
-+      SystemWindowData winData;
-+      winData.nSize = sizeof(winData);
-+      pWindow=new SystemChildWindow(pPWindow, 0, &winData, FALSE);
-+      pChildSysData = pWindow->GetSystemData();
- #endif            
- 
--    if( pWindow )
--    {
--        pWindow->SetMouseTransparent( TRUE );
--        pWindow->SetParentClipMode( PARENTCLIPMODE_NOCLIP );
--        pWindow->EnableEraseBackground( FALSE );
--        pWindow->SetControlForeground();
--        pWindow->SetControlBackground();
--        pWindow->EnablePaint(FALSE);
--        pWindow->SetPosSizePixel(pPWindow->GetPosPixel(),pPWindow->GetSizePixel());
-+      if( pWindow )
-+      {
-+	  pWindow->SetMouseTransparent( TRUE );
-+	  pWindow->SetParentClipMode( PARENTCLIPMODE_NOCLIP );
-+	  pWindow->EnableEraseBackground( FALSE );
-+	  pWindow->SetControlForeground();
-+	  pWindow->SetControlBackground();
-+	  pWindow->EnablePaint(FALSE);
-+	  pWindow->SetPosSizePixel(pPWindow->GetPosPixel(),pPWindow->GetSizePixel());
- 
-+	GLWin.Width = pPWindow->GetSizePixel().Width();
-+	GLWin.Height = pPWindow->GetSizePixel().Height();
- #if defined( WNT ) 
- 		GLWin.hWnd = sysData->hWnd;
- #elif defined( UNX )
-         GLWin.dpy = reinterpret_cast<unx::Display*>(pChildSysData->pDisplay);
-         GLWin.win = pChildSysData->aWindow;
-+#ifdef GLX_VERSION_1_3
-+	GLWin.fbc = fbconfigs[i];
-+#endif
-+	GLWin.vi = vi;
- 	GLWin.GLXExtensions = unx::glXQueryExtensionsString( GLWin.dpy, GLWin.screen );
- 	OSL_TRACE("available GLX extensions: %s", GLWin.GLXExtensions);
- #endif
-+
-+	return true;
-     }
- 
-+    return false;
-+}
-+
-+bool OGLTransitionerImpl::initWindowFromSlideShowView( const uno::Reference< presentation::XSlideShowView >& xView, double, double)
-+{
-+    osl::MutexGuard const guard( m_aMutex );
-+
-+    if (isDisposed())
-+        return false;
-+
-+    /// take the XSlideShowView and extract the parent window from it. see viewmediashape.cxx
-+    uno::Reference< rendering::XCanvas > xCanvas(xView->getCanvas(), uno::UNO_QUERY_THROW);
-+    uno::Sequence< uno::Any > aDeviceParams;
-+    ::canvas::tools::getDeviceInfo( xCanvas, aDeviceParams );
-+
-+    ::rtl::OUString aImplName;
-+    aDeviceParams[ 0 ] >>= aImplName;
-+
-+    sal_Int64 aVal = 0;
-+    aDeviceParams[1] >>= aVal;
-+    if( !createWindow( reinterpret_cast< Window* >( aVal ) ) )
-+	return false;
-+
- #if defined( WNT ) 
- 		GLWin.hDC = GetDC(GLWin.hWnd);
- #elif defined( UNX )
-     GLWin.ctx = glXCreateContext(GLWin.dpy,
--                                 vi,
-+                                 GLWin.vi,
-                                  0,
-                                  GL_TRUE);
-     if( glGetError() != GL_NO_ERROR ) {
--	    OSL_TRACE("glError: %s\n", (char *)gluErrorString(glGetError()));
-+	    OSL_TRACE("glError: %s", (char *)gluErrorString(glGetError()));
- 	    return false;
-     }
- #endif
-@@ -411,10 +577,22 @@ bool OGLTransitionerImpl::initWindowFrom
- #elif defined( UNX )
-     glXMakeCurrent( GLWin.dpy, GLWin.win, GLWin.ctx );
-     if( glGetError() != GL_NO_ERROR ) {
--	    OSL_TRACE("glError: %s\n", (char *)gluErrorString(glGetError()));
-+	    OSL_TRACE("glError: %s", (char *)gluErrorString(glGetError()));
- 	    return false;
-     }
- 
-+    int glxMinor, glxMajor;
-+    mnGLXVersion = 0;
-+    if( glXQueryVersion( GLWin.dpy, &glxMajor, &glxMinor ) )
-+      mnGLXVersion = glxMajor + 0.1*glxMinor;
-+    OSL_TRACE("available GLX version: %f", mnGLXVersion);
-+
-+    GLWin.GLExtensions = glGetString( GL_EXTENSIONS );
-+    OSL_TRACE("available GL  extensions: %s", GLWin.GLExtensions);
-+
-+    mbTextureFromPixmap = GLWin.HasGLXExtension( "GLX_EXT_texture_from_pixmap" );
-+    mbGenerateMipmap = GLWin.HasGLExtension( "GL_SGIS_generate_mipmap" );
-+
-     if( GLWin.HasGLXExtension("GLX_SGI_swap_control" ) ) {
- 	    // enable vsync
- 	    typedef GLint (*glXSwapIntervalProc)(GLint);
-@@ -453,6 +631,15 @@ bool OGLTransitionerImpl::initWindowFrom
-     return true;
- }
- 
-+
-+static bool errorTriggered;
-+int oglErrorHandler( unx::Display* /*dpy*/, unx::XErrorEvent* /*evnt*/ )
-+{
-+    errorTriggered = true;
-+
-+    return 0;
-+}
-+
- void OGLTransitionerImpl::setSlides( const uno::Reference< rendering::XBitmap >& xLeavingSlide, 
-                                      const uno::Reference< rendering::XBitmap >& xEnteringSlide )
- {
-@@ -461,8 +648,10 @@ void OGLTransitionerImpl::setSlides( con
-     if (isDisposed())
-         return;
-         
--    uno::Reference< rendering::XIntegerBitmap > LeavingSlideIntBitmap( xLeavingSlide , uno::UNO_QUERY_THROW );
--    uno::Reference< rendering::XIntegerBitmap > EnteringSlideIntBitmap( xEnteringSlide , uno::UNO_QUERY_THROW );
-+    Reference< rendering::XIntegerBitmap > LeavingSlideIntBitmap( xLeavingSlide , UNO_QUERY_THROW );
-+    Reference< rendering::XIntegerBitmap > EnteringSlideIntBitmap( xEnteringSlide , UNO_QUERY_THROW );
-+    Reference< XFastPropertySet > xLeavingSet( xLeavingSlide , UNO_QUERY );
-+    Reference< XFastPropertySet > xEnteringSet( xEnteringSlide , UNO_QUERY );
- 
-     geometry::IntegerRectangle2D SlideRect;
-     SlideSize = LeavingSlideIntBitmap->getSize();
-@@ -471,65 +660,196 @@ void OGLTransitionerImpl::setSlides( con
-     SlideRect.Y1 = 0;
-     SlideRect.Y2 = SlideSize.Height;
- 
--    LeavingBytes = LeavingSlideIntBitmap->getData(SlideBitmapLayout,SlideRect);
--    EnteringBytes = EnteringSlideIntBitmap->getData(SlideBitmapLayout,SlideRect);
-+#ifdef UNX
-+    unx::glXWaitGL();
-+    XSync(GLWin.dpy, false);
-+#endif
- 
--// TODO    if(GLWin.ctx)//if we have a rendering context, let's init the slides
--        GLInitSlides();
-+#ifdef DEBUG
-+    t1 = microsec_clock::local_time();
-+#endif
- 
--    OSL_ENSURE(SlideBitmapLayout.PlaneStride == 0,"only handle no plane stride now");
--}
-+    mbUseLeavingPixmap = false;
-+    mbUseEnteringPixmap = false;
- 
--namespace
--{
--    struct OGLFormat
--    {
--        GLint  nInternalFormat;
--        GLenum eFormat;
--        GLenum eType;
--    };
-+#ifdef UNX
-+#ifdef GLX_VERSION_1_3
- 
--    /* channel ordering: (0:rgba, 1:bgra, 2:argb, 3:abgr)  
--    */
--    int calcComponentOrderIndex(const uno::Sequence<sal_Int8>& rTags)
--    {
--        using namespace rendering::ColorComponentTag;
-+    if( mnGLXVersion >= 1.2999 && mbTextureFromPixmap && xLeavingSet.is() && xEnteringSet.is() ) {
-+	Sequence< Any > leaveArgs;
-+	Sequence< Any > enterArgs;
-+	if( (xLeavingSet->getFastPropertyValue( 1 ) >>= leaveArgs) &&
-+	    (xEnteringSet->getFastPropertyValue( 1 ) >>= enterArgs) ) {
-+	    OSL_TRACE ("pixmaps available");
-+
-+	    sal_Int32 depth;
-+
-+	    leaveArgs[0] >>= mbFreeLeavingPixmap;
-+	    enterArgs[0] >>= mbFreeEnteringPixmap;
-+	    leaveArgs[1] >>= maLeavingPixmap;
-+	    enterArgs[1] >>= maEnteringPixmap;
-+	    leaveArgs[2] >>= depth;
-+
-+	    int pixmapAttribs[] = { GLX_TEXTURE_TARGET_EXT, GLX_TEXTURE_2D_EXT,
-+				    GLX_TEXTURE_FORMAT_EXT, GLX_TEXTURE_FORMAT_RGB_EXT,
-+				    GLX_MIPMAP_TEXTURE_EXT, True,
-+				    None };
-+
-+
-+	    // sync so that we possibly get an pending XError, before we set our handler.
-+	    // this way we will not miss any error from other code
-+	    unx::glXWaitGL();
-+	    XSync(GLWin.dpy, false);
-+
-+	    int (*oldHandler)(unx::Display* /*dpy*/, unx::XErrorEvent* /*evnt*/);
-+
-+	    // replace error handler temporarily
-+	    oldHandler = unx::XSetErrorHandler( oglErrorHandler );
-+
-+	    errorTriggered = false;
-+	    LeavingPixmap = glXCreatePixmap( GLWin.dpy, GLWin.fbc, maLeavingPixmap, pixmapAttribs );
-+
-+	    // sync so that we possibly get an XError
-+	    unx::glXWaitGL();
-+	    XSync(GLWin.dpy, false);
-+
-+	    if( !errorTriggered )
-+		mbUseLeavingPixmap = true;
-+	    else {
-+		OSL_TRACE("XError triggered");
-+		if( mbFreeLeavingPixmap ) {
-+		    unx::XFreePixmap( GLWin.dpy, maLeavingPixmap );
-+		    mbFreeLeavingPixmap = false;
-+		}
-+		errorTriggered = false;
-+	    }
-+          
-+	    EnteringPixmap = glXCreatePixmap( GLWin.dpy, GLWin.fbc, maEnteringPixmap, pixmapAttribs );
- 
--        static const sal_Int8 aOrderTable[] =
--        {
--            RGB_RED, RGB_GREEN, RGB_BLUE, ALPHA,
--            RGB_BLUE, RGB_GREEN, RGB_RED, ALPHA,
--            ALPHA, RGB_RED, RGB_GREEN, RGB_BLUE,
--            ALPHA, RGB_BLUE, RGB_GREEN, RGB_RED, 
--        };
-+	    // sync so that we possibly get an XError
-+	    unx::glXWaitGL();
-+	    XSync(GLWin.dpy, false);
-+
-+	    OSL_TRACE("created glx pixmap %p and %p depth: %d", LeavingPixmap, EnteringPixmap, depth);
-+	    if( !errorTriggered )
-+		mbUseEnteringPixmap = true;
-+	    else {
-+		OSL_TRACE("XError triggered");
-+		if( mbFreeEnteringPixmap ) {
-+		    unx::XFreePixmap( GLWin.dpy, maEnteringPixmap );
-+		    mbFreeEnteringPixmap = false;
-+		}
-+	    }
- 
--        const sal_Int32 nNumComps(rTags.getLength());
--        const sal_Int8* pLine=aOrderTable;
--        for(int i=0; i<4; ++i)
--        {
--            int j=0;
--            while( j<4 && j<nNumComps && pLine[j] == rTags[j] )
--                ++j;
-+	    // restore the error handler
-+	    unx::XSetErrorHandler( oldHandler );
-+	}
-+    }
- 
--            // all of the line passed, this is a match!
--            if( j==nNumComps )
--                return i;
-+#endif
-+#endif
-+    if( !mbUseLeavingPixmap )
-+	LeavingBytes = LeavingSlideIntBitmap->getData(SlideBitmapLayout,SlideRect);
-+    if( !mbUseEnteringPixmap )
-+	EnteringBytes = EnteringSlideIntBitmap->getData(SlideBitmapLayout,SlideRect);
-+
-+// TODO    
-+#ifdef UNX
-+    if(GLWin.ctx)//if we have a rendering context, let's init the slides
-+#endif
-+	GLInitSlides();
- 
--            pLine+=4;
--        }
-+    OSL_ENSURE(SlideBitmapLayout.PlaneStride == 0,"only handle no plane stride now");
- 
--        return -1;
--    }
--}
-+#ifdef UNX
-+    /* flush & sync */
-+    unx::glXWaitGL();
-+    XSync( GLWin.dpy, false );
- 
-+    // synchronized X still gives us much smoother play
-+    // I suspect some issues in above code in slideshow
-+    // synchronize whole transition for now
-+    XSynchronize( GLWin.dpy, true );
-+#endif
-+}
- 
--void OGLTransitionerImpl::GLInitSlides()
-+void OGLTransitionerImpl::createTexture( unsigned int* texID,
-+#ifdef GLX_VERSION_1_3
-+					 unx::GLXPixmap pixmap,
-+#endif
-+					 bool usePixmap,
-+					 bool useMipmap,
-+					 uno::Sequence<sal_Int8>& data,
-+					 const OGLFormat* pFormat )
- {
--    osl::MutexGuard const guard( m_aMutex );
-+    glDeleteTextures( 1, texID );
-+    glGenTextures( 1, texID );
-+    glBindTexture( GL_TEXTURE_2D, *texID );
-+    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
-+    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
-+
-+#ifdef GLX_VERSION_1_3
-+    unx::PFNGLXBINDTEXIMAGEEXTPROC myglXBindTexImageEXT = (unx::PFNGLXBINDTEXIMAGEEXTPROC) unx::glXGetProcAddress( (const GLubyte*) "glXBindTexImageEXT" );
-+
-+    if( usePixmap ) {
-+      if( mbGenerateMipmap )
-+          glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, True);
-+      myglXBindTexImageEXT (GLWin.dpy, pixmap, GLX_FRONT_LEFT_EXT, NULL);
-+      if( mbGenerateMipmap && useMipmap ) {
-+          OSL_TRACE("use mipmaps");
-+          glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
-+          glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR); //TRILINEAR FILTERING
-+      } else {
-+          glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
-+          glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
-+      }
-+    } else {
-+#endif
-+    if( !pFormat )
-+    {
-+        // force-convert color to ARGB8888 int color space  
-+        uno::Sequence<sal_Int8> tempBytes(
-+            SlideBitmapLayout.ColorSpace->convertToIntegerColorSpace(
-+                data,
-+                canvas::tools::getStdColorSpace()));
-+        gluBuild2DMipmaps(GL_TEXTURE_2D, 
-+                          4, 
-+                          SlideSize.Width, 
-+                          SlideSize.Height, 
-+                          GL_RGBA, 
-+                          GL_UNSIGNED_BYTE,
-+                          &tempBytes[0]);
-+	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
-+	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR); //TRILINEAR FILTERING
- 
--    if (isDisposed() || pTransition->mnRequiredGLVersion > cnGLVersion)
--        return;
-+        //anistropic filtering (to make texturing not suck when looking at polygons from oblique angles)
-+	GLfloat largest_supported_anisotropy;
-+	glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy);
-+	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropy);
-+    } else {
-+	if( pTransition && !cbBrokenTexturesATI && !useMipmap) {
-+	    glTexImage2D( GL_TEXTURE_2D, 0, pFormat->nInternalFormat, SlideSize.Width, SlideSize.Height, 0, pFormat->eFormat, pFormat->eType, &data[0] );
-+	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
-+	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
-+	} else {
-+	    gluBuild2DMipmaps( GL_TEXTURE_2D, pFormat->nInternalFormat, SlideSize.Width, SlideSize.Height, pFormat->eFormat, pFormat->eType, &data[0] );
-+	    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
-+	    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR ); //TRILINEAR FILTERING
-+
-+	    //anistropic filtering (to make texturing not suck when looking at polygons from oblique angles)
-+	    GLfloat largest_supported_anisotropy;
-+	    glGetFloatv( GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy );
-+	    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropy );
-+	}
-+    }
-+#ifdef GLX_VERSION_1_3
-+    }
-+#endif
-+    OSL_ENSURE(glIsTexture(*texID), "Can't generate Leaving slide textures in OpenGL");
-+}
- 
-+void OGLTransitionerImpl::prepareEnvironment()
-+{
-     glMatrixMode(GL_PROJECTION);
-     glLoadIdentity();
-     double EyePos(10.0);
-@@ -549,11 +869,14 @@ void OGLTransitionerImpl::GLInitSlides()
-     glScaled( 1.0 / ( ( ( RealR * 2.0 * ClipN ) / ( EyePos * ( ClipR - ClipL ) ) ) - ( ( ClipR + ClipL ) / ( ClipR - ClipL ) ) ),
-               1.0 / ( ( ( RealT * 2.0 * ClipN ) / ( EyePos * ( ClipT - ClipB ) ) ) - ( ( ClipT + ClipB ) / ( ClipT - ClipB ) ) ),
-               1.0 );
--	glFrustum(ClipL,ClipR,ClipB,ClipT,ClipN,ClipF);
-+    glFrustum(ClipL,ClipR,ClipB,ClipT,ClipN,ClipF);
-     glMatrixMode(GL_MODELVIEW);
-     glLoadIdentity();
-     glTranslated(0,0,-EyePos);
-+}
- 
-+const OGLFormat* OGLTransitionerImpl::chooseFormats()
-+{
-     const OGLFormat* pDetectedFormat=NULL;
-     uno::Reference<rendering::XIntegerBitmapColorSpace> xIntColorSpace(
-         SlideBitmapLayout.ColorSpace);
-@@ -667,119 +990,50 @@ void OGLTransitionerImpl::GLInitSlides()
-         }
- #endif
-     }
--	
--    glDeleteTextures(1,&GLleavingSlide);
--    
--    glGenTextures(1, &GLleavingSlide);
--	glBindTexture(GL_TEXTURE_2D, GLleavingSlide);
- 
--    if( !pDetectedFormat )
--    {
--        // force-convert color to ARGB8888 int color space  
--        uno::Sequence<sal_Int8> tempBytes(
--            SlideBitmapLayout.ColorSpace->convertToIntegerColorSpace(
--                LeavingBytes,
--                canvas::tools::getStdColorSpace()));
--        gluBuild2DMipmaps(GL_TEXTURE_2D, 
--                          4, 
--                          SlideSize.Width, 
--                          SlideSize.Height, 
--                          GL_RGBA, 
--                          GL_UNSIGNED_BYTE,
--                          &tempBytes[0]);
--        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
--	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
--	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
--	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);//TRILINEAR FILTERING
--	GLfloat largest_supported_anisotropy;
--	glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy);
--	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropy);//anistropic filtering (to make texturing not suck when looking at polygons from oblique angles)
--	
--    }
--    else
--    {
--	if( pTransition && !cbBrokenTexturesATI && !pTransition->mbUseMipMapLeaving) {
--	    glTexImage2D(GL_TEXTURE_2D, 0, pDetectedFormat->nInternalFormat, SlideSize.Width,
--			 SlideSize.Height, 0, pDetectedFormat->eFormat, GL_UNSIGNED_BYTE, &LeavingBytes[0]);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
--	} else {
--            gluBuild2DMipmaps(GL_TEXTURE_2D, 
--                              pDetectedFormat->nInternalFormat, 
--                              SlideSize.Width, 
--                              SlideSize.Height, 
--                              pDetectedFormat->eFormat, 
--                              pDetectedFormat->eType, 
--                              &LeavingBytes[0]);
--            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);//TRILINEAR FILTERING
--	    //anistropic filtering (to make texturing not suck when looking at polygons from oblique angles)
--	    GLfloat largest_supported_anisotropy;
--	    glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy);
--	    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropy);
--	}
--    }
--	OSL_ENSURE(glIsTexture(GLleavingSlide), "Can't generate Leaving slide textures in OpenGL");
--	
--	glDeleteTextures(1,&GLenteringSlide);
--	
--	glGenTextures(1, &GLenteringSlide);
--	glBindTexture(GL_TEXTURE_2D, GLenteringSlide);
--    if( !pDetectedFormat )
--    {
--        // force-convert color to ARGB8888 int color space  
--        uno::Sequence<sal_Int8> tempBytes(
--            SlideBitmapLayout.ColorSpace->convertToIntegerColorSpace(
--                EnteringBytes,
--                canvas::tools::getStdColorSpace()));
--        gluBuild2DMipmaps(GL_TEXTURE_2D, 
--                          4, 
--                          SlideSize.Width, 
--                          SlideSize.Height, 
--                          GL_RGBA, 
--                          GL_UNSIGNED_BYTE,
--                          &tempBytes[0]);
--        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
--	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
--	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
--	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);//TRILINEAR FILTERING
--	GLfloat largest_supported_anisotropy;
--	glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy);
--	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropy);//anistropic filtering (to make texturing not suck when looking at polygons from oblique angles)
--	
--    }
--    else
--    {
--	if( pTransition && !cbBrokenTexturesATI && !pTransition->mbUseMipMapEntering ) {
--	    glTexImage2D(GL_TEXTURE_2D, 0, pDetectedFormat->nInternalFormat, SlideSize.Width, SlideSize.Height, 0, pDetectedFormat->eFormat, GL_UNSIGNED_BYTE, &EnteringBytes[0]);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
--	} else {
--            gluBuild2DMipmaps(GL_TEXTURE_2D, 
--                              pDetectedFormat->nInternalFormat, 
--                              SlideSize.Width, 
--                              SlideSize.Height, 
--                              pDetectedFormat->eFormat, 
--                              pDetectedFormat->eType, 
--                              &EnteringBytes[0]);
--            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
--	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);//TRILINEAR FILTERING
--	    //anistropic filtering (to make texturing not suck when looking at polygons from oblique angles)
--	    GLfloat largest_supported_anisotropy;
--	    glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy);
--	    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropy);
--	
--	}
--    }
--	OSL_ENSURE( glIsTexture(GLenteringSlide), "Can't generate entering slide textures in OpenGL" );
-+    return pDetectedFormat;
-+}
-+
-+void OGLTransitionerImpl::GLInitSlides()
-+{
-+    osl::MutexGuard const guard( m_aMutex );
-+
-+    if (isDisposed() || pTransition->mnRequiredGLVersion > cnGLVersion)
-+        return;
-+
-+    prepareEnvironment();
-+
-+    const OGLFormat* pFormat = NULL;
-+    if( !mbUseLeavingPixmap || !mbUseEnteringPixmap )
-+	pFormat = chooseFormats();
-+
-+    createTexture( &GLleavingSlide,
-+#ifdef GLX_VERSION_1_3
-+		   LeavingPixmap,
-+#endif
-+		   mbUseLeavingPixmap,
-+		   pTransition->mbUseMipMapLeaving,
-+		   LeavingBytes,
-+		   pFormat );
-+
-+    createTexture( &GLenteringSlide,
-+#ifdef GLX_VERSION_1_3
-+		   EnteringPixmap,
-+#endif
-+		   mbUseEnteringPixmap,
-+		   pTransition->mbUseMipMapEntering,
-+		   EnteringBytes,
-+		   pFormat );
-+
-+#ifdef UNX
-+    unx::glXWaitGL();
-+    XSync(GLWin.dpy, false);
-+#endif
-+
-+#ifdef DEBUG
-+    t2 = microsec_clock::local_time();
-+    OSL_TRACE("textures created in: %s", to_simple_string( t2 - t1 ).c_str());
-+#endif
- }
- 
- void SAL_CALL OGLTransitionerImpl::update( double nTime ) throw (uno::RuntimeException)
-@@ -789,38 +1043,80 @@ void SAL_CALL OGLTransitionerImpl::updat
-     if (isDisposed() || !cbGLXPresent || pTransition->mnRequiredGLVersion > cnGLVersion)
-         return;
- 
-+#ifdef DEBUG
-+    t3 = microsec_clock::local_time();
-+#endif
-+
-     glEnable(GL_DEPTH_TEST);
--	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- 
--	if(pTransition)
--	    pTransition->display( nTime, GLleavingSlide, GLenteringSlide, 
-+    if(pTransition)
-+	pTransition->display( nTime, GLleavingSlide, GLenteringSlide, 
-                               SlideSize.Width, SlideSize.Height,
-                               static_cast<double>(GLWin.Width),
-                               static_cast<double>(GLWin.Height) );
- 
- #if defined( WNT ) 
--	SwapBuffers(GLWin.hDC);
-+    SwapBuffers(GLWin.hDC);
- #elif defined( UNX )
-     unx::glXSwapBuffers(GLWin.dpy, GLWin.win);
- #endif
--	if( pWindow )
-+    if( pWindow )
-         pWindow->Show();
- 
-+#ifdef UNX
-     /* flush & sync */
--    glFlush();
-+    unx::glXWaitGL();
-     XSync( GLWin.dpy, false );
-+#endif
-+
-+#ifdef DEBUG
-+    t4 = microsec_clock::local_time();
-+
-+    OSL_TRACE("update time: %f", nTime);
-+    OSL_TRACE("update took: %s", to_simple_string( t4 - t3 ).c_str());
-+#endif
- }
- 
- // we are about to be disposed (someone call dispose() on us)
- void OGLTransitionerImpl::disposing()
- {
-     osl::MutexGuard const guard( m_aMutex );
--    glDeleteTextures(1,&GLleavingSlide);
--    glDeleteTextures(1,&GLenteringSlide);
-+
-+#ifdef GLX_VERSION_1_3
-+    unx::PFNGLXRELEASETEXIMAGEEXTPROC myglXReleaseTexImageEXT = (unx::PFNGLXRELEASETEXIMAGEEXTPROC) unx::glXGetProcAddress( (const GLubyte*) "glXReleaseTexImageEXT" );
-+    if( mbUseLeavingPixmap ) {
-+
-+	myglXReleaseTexImageEXT( GLWin.dpy, LeavingPixmap, GLX_FRONT_LEFT_EXT );
-+	glXDestroyGLXPixmap( GLWin.dpy, LeavingPixmap );
-+	if( mbFreeLeavingPixmap ) {
-+	    unx::XFreePixmap( GLWin.dpy, maLeavingPixmap );
-+	    mbFreeLeavingPixmap = false;
-+	}
-+    }
-+    if( mbUseEnteringPixmap ) {
-+	myglXReleaseTexImageEXT( GLWin.dpy, EnteringPixmap, GLX_FRONT_LEFT_EXT );
-+	glXDestroyGLXPixmap( GLWin.dpy, EnteringPixmap );
-+	if( mbFreeLeavingPixmap ) {
-+	    unx::XFreePixmap( GLWin.dpy, maLeavingPixmap );
-+	    mbFreeLeavingPixmap = false;
-+	}
-+    }
-+#endif
-+
-+    if( !mbUseLeavingPixmap )
-+	glDeleteTextures(1,&GLleavingSlide);
-+    if( !mbUseEnteringPixmap )
-+	glDeleteTextures(1,&GLenteringSlide);
- 
-     if (pTransition)
-         pTransition->finish();
- 
-+#ifdef UNX
-+    // try to reestablish synchronize state
-+    char* sal_synchronize = getenv("SAL_SYNCHRONIZE");
-+    XSynchronize( GLWin.dpy, sal_synchronize && *sal_synchronize == '1' );
-+#endif
- 
- #if defined( WNT )
- 	if (GLWin.hRC)
-@@ -834,7 +1130,7 @@ void OGLTransitionerImpl::disposing()
- 	{
-         glXMakeCurrent(GLWin.dpy, None, NULL);
-         if( glGetError() != GL_NO_ERROR ) {
--            OSL_TRACE("glError: %s\n", (char *)gluErrorString(glGetError()));
-+            OSL_TRACE("glError: %s", (char *)gluErrorString(glGetError()));
-         }
- 		glXDestroyContext(GLWin.dpy, GLWin.ctx);
- 		GLWin.ctx = NULL;
-@@ -854,6 +1150,8 @@ OGLTransitionerImpl::OGLTransitionerImpl
-     pWindow( NULL ), 
-     EnteringBytes(),
-     LeavingBytes(),
-+    mbUseLeavingPixmap( false ),
-+    mbUseEnteringPixmap( false ),
-     SlideBitmapLayout(),
-     SlideSize(),
-     pTransition(pOGLTransition)
-@@ -901,6 +1199,8 @@ public:
-                 }
-         } else if( transitionType == animations::TransitionType::FADE && transitionSubType == animations::TransitionSubType::CROSSFADE ) {
-             return sal_True;
-+        } else if( transitionType == animations::TransitionType::FADE && transitionSubType == animations::TransitionSubType::FADEOVERCOLOR ) {
-+            return sal_True;
-         } else if( transitionType == animations::TransitionType::IRISWIPE && transitionSubType == animations::TransitionSubType::DIAMOND ) {
-             return sal_True;
-         } else if( transitionType == animations::TransitionType::ZOOM && transitionSubType == animations::TransitionSubType::ROTATEIN ) {
-@@ -924,6 +1224,7 @@ public:
- 
-         if( OGLTransitionerImpl::cbMesa && (
-             ( transitionType == animations::TransitionType::FADE && transitionSubType == animations::TransitionSubType::CROSSFADE ) ||
-+            ( transitionType == animations::TransitionType::FADE && transitionSubType == animations::TransitionSubType::FADEOVERCOLOR ) ||
-             ( transitionType == animations::TransitionType::IRISWIPE && transitionSubType == animations::TransitionSubType::DIAMOND ) ) )
-             return uno::Reference< presentation::XTransition >();
-             
-@@ -980,6 +1281,9 @@ public:
-         } else if( transitionType == animations::TransitionType::FADE && transitionSubType == animations::TransitionSubType::CROSSFADE ) {
-             pTransition = new OGLTransitionImpl();
-             pTransition->makeFadeSmoothly();
-+        } else if( transitionType == animations::TransitionType::FADE && transitionSubType == animations::TransitionSubType::FADEOVERCOLOR ) {
-+            pTransition = new OGLTransitionImpl();
-+            pTransition->makeFadeThroughBlack();
-         } else if( transitionType == animations::TransitionType::IRISWIPE && transitionSubType == animations::TransitionSubType::DIAMOND ) {
-             pTransition = new OGLTransitionImpl();
-             pTransition->makeDiamond();
-diff -rup slideshow/source/engine/OGLTrans-orig/OGLTrans_TransitionImpl.cxx slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx
---- slideshow/source/engine/OGLTrans-orig/OGLTrans_TransitionImpl.cxx	2008-08-26 18:06:46.000000000 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx	2008-08-26 18:07:43.000000000 +0200
-@@ -121,6 +121,23 @@ static void blendSlide( double depth )
-     glEnable( GL_DEPTH_TEST );
- }
- 
-+static void slideShadow( double nTime, Primitive& primitive, double sw, double sh )
-+{
-+    double reflectionDepth = 0.3;
-+
-+    glEnable(GL_BLEND);
-+    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-+    glDisable(GL_LIGHTING);
-+
-+    glPushMatrix();
-+    primitive.applyOperations( nTime, sw, sh );
-+    blendSlide( reflectionDepth );
-+    glPopMatrix();
-+
-+    glDisable(GL_BLEND);
-+    glEnable(GL_LIGHTING);
-+}
-+
- void OGLTransitionImpl::display( double nTime, ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex,
-                                  double SlideWidth, double SlideHeight, double DispWidth, double DispHeight )
- {
-@@ -135,42 +152,6 @@ void OGLTransitionImpl::display( double
-     }
- 
-     glPushMatrix();
--    if ( mbReflectSlides ) {
--        double reflectionDepth = 0.3;
--        double surfaceLevel = -0.04;
--
--        /* reflected slides */
--        glPushMatrix();
--
--        glScaled( 1, -1, 1 );
--        glTranslated( 0, 2 - surfaceLevel, 0 );
--
--        glCullFace(GL_FRONT);
--        displaySlides( nTime, glLeavingSlideTex, glEnteringSlideTex, SlideWidthScale, SlideHeightScale );
--        glCullFace(GL_BACK);
--
--        glEnable(GL_BLEND);
--        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
--        glDisable(GL_LIGHTING);
--
--        /* leaving slide reflection blending */
--        glPushMatrix();
--        maLeavingSlidePrimitives[0].applyOperations( nTime, SlideWidthScale, SlideHeightScale );
--        blendSlide( reflectionDepth );
--        glPopMatrix();
--
--        /* entering slide reflection blending */
--        glPushMatrix();
--        maEnteringSlidePrimitives[0].applyOperations( nTime, SlideWidthScale, SlideHeightScale );
--        blendSlide( reflectionDepth );
--        glPopMatrix();
--
--        glDisable(GL_BLEND);
--        glEnable(GL_LIGHTING);
--
--        glPopMatrix();
--    }
--
-     displaySlides( nTime, glLeavingSlideTex, glEnteringSlideTex, SlideWidthScale, SlideHeightScale );
-     displayScene( nTime, SlideWidth, SlideHeight, DispWidth, DispHeight );
-     glPopMatrix();
-@@ -188,6 +169,28 @@ void OGLTransitionImpl::displaySlide( do
-    //TODO change to foreach
-     glBindTexture(GL_TEXTURE_2D, glSlideTex);
- 
-+    // display slide reflection
-+    // note that depth test is turned off while blending the shadow
-+    // so the slides has to be rendered in right order, see rochade as example
-+    if( mbReflectSlides ) {
-+        double surfaceLevel = -0.04;
-+
-+        /* reflected slides */
-+        glPushMatrix();
-+
-+        glScaled( 1, -1, 1 );
-+        glTranslated( 0, 2 - surfaceLevel, 0 );
-+
-+        glCullFace(GL_FRONT);
-+	for(unsigned int i(0); i < primitives.size(); ++i)
-+	    primitives[i].display(nTime, SlideWidthScale, SlideHeightScale);
-+        glCullFace(GL_BACK);
-+
-+	slideShadow( nTime, primitives[0], SlideWidthScale, SlideHeightScale );
-+
-+        glPopMatrix();
-+    }
-+
-     for(unsigned int i(0); i < primitives.size(); ++i)
-         primitives[i].display(nTime, SlideWidthScale, SlideHeightScale);
- }
-@@ -452,12 +455,29 @@ void OGLTransitionImpl::makeIris()
-     mbUseMipMapLeaving = mbUseMipMapEntering = false;
- }
- 
-+void OGLTransitionImpl::displaySlidesRochade( double nTime, ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex,
-+					      double SlideWidthScale, double SlideHeightScale )
-+{
-+    applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale );
-+
-+    glEnable(GL_TEXTURE_2D);
-+
-+    if( nTime > .5) {
-+	displaySlide( nTime, glLeavingSlideTex, maLeavingSlidePrimitives, SlideWidthScale, SlideHeightScale );
-+	displaySlide( nTime, glEnteringSlideTex, maEnteringSlidePrimitives, SlideWidthScale, SlideHeightScale );
-+    } else {
-+	displaySlide( nTime, glEnteringSlideTex, maEnteringSlidePrimitives, SlideWidthScale, SlideHeightScale );
-+	displaySlide( nTime, glLeavingSlideTex, maLeavingSlidePrimitives, SlideWidthScale, SlideHeightScale );
-+    }
-+}
-+
- void OGLTransitionImpl::makeRochade()
- {
-     clear();
-     Primitive Slide;
-     
-     mbReflectSlides = true;
-+    mmDisplaySlides = &OGLTransitionImpl::displaySlidesRochade;
- 
-     double w, h;
- 
-@@ -1016,6 +1036,43 @@ void OGLTransitionImpl::makeFadeSmoothly
-     mbUseMipMapLeaving = mbUseMipMapEntering = false;
- }
- 
-+void OGLTransitionImpl::displaySlidesFadeThroughBlack( double nTime, ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale )
-+{
-+    applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale );
-+
-+    glDisable(GL_DEPTH_TEST);
-+
-+    glDisable(GL_LIGHTING);
-+    glEnable(GL_BLEND);
-+    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-+    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-+    if( nTime < 0.5 ) {
-+	glColor4f( 1, 1, 1, 1 - nTime*2 );
-+	displaySlide( nTime, glLeavingSlideTex, maLeavingSlidePrimitives, SlideWidthScale, SlideHeightScale );
-+    } else {
-+	glColor4f( 1, 1, 1, (nTime - 0.5)*2 );
-+	displaySlide( nTime, glEnteringSlideTex, maEnteringSlidePrimitives, SlideWidthScale, SlideHeightScale );
-+    }
-+    glDisable(GL_BLEND);
-+    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-+    glEnable(GL_LIGHTING);
-+
-+    glEnable(GL_DEPTH_TEST);
-+}
-+
-+void OGLTransitionImpl::makeFadeThroughBlack()
-+{ 
-+    Primitive Slide;
-+
-+    Slide.pushTriangle (basegfx::B2DVector (0,0), basegfx::B2DVector (1,0), basegfx::B2DVector (0,1));
-+    Slide.pushTriangle (basegfx::B2DVector (1,0), basegfx::B2DVector (0,1), basegfx::B2DVector (1,1));
-+    maLeavingSlidePrimitives.push_back (Slide);
-+    maEnteringSlidePrimitives.push_back (Slide);
-+
-+    mmDisplaySlides = &OGLTransitionImpl::displaySlidesFadeThroughBlack;
-+    mbUseMipMapLeaving = mbUseMipMapEntering = false;
-+}
-+
- static const char* basicVertexShader = "\n\
- varying vec2 v_texturePosition;\n\
- \n\
-diff -rup slideshow/source/engine/OGLTrans-orig/OGLTrans_TransitionImpl.hxx slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.hxx
---- slideshow/source/engine/OGLTrans-orig/OGLTrans_TransitionImpl.hxx	2008-08-26 18:06:46.000000000 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.hxx	2008-08-26 18:10:02.000000000 +0200
-@@ -104,6 +104,7 @@ public:
-      */
-     void makeDiamond();
-     void makeFadeSmoothly();
-+    void makeFadeThroughBlack();
- 
-     /** Whether to use mipmaping for slides textures
-      */
-@@ -176,6 +177,8 @@ private:
- 	 */
- 	void prepareDiamond( double nTime, double SlideWidth, double SlideHeight,double DispWidth, double DispHeight );
- 	void displaySlidesFadeSmoothly( double nTime, ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale );
-+        void displaySlidesFadeThroughBlack( double nTime, ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale );
-+        void displaySlidesRochade( double nTime, ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale );
- 	void displaySlidesShaders( double nTime, ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale );
- 	void prepareStatic( ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex );
- 	void prepareDissolve( ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex );
diff --git a/patches/dev300/transogl-shader-transitions-1.diff b/patches/dev300/transogl-shader-transitions-1.diff
deleted file mode 100644
index 1787f5e..0000000
--- a/patches/dev300/transogl-shader-transitions-1.diff
+++ /dev/null
@@ -1,349 +0,0 @@
---- slideshow/source/engine/OGLTrans/makefile.mk.toglst1~	2008-07-07 21:07:47.067846691 +0200
-+++ slideshow/source/engine/OGLTrans/makefile.mk	2008-07-07 21:17:07.477845168 +0200
-@@ -51,6 +51,7 @@ ENABLE_EXCEPTIONS=TRUE
- 
- SLOFILES = \
-         $(SLO)$/OGLTrans_TransitionImpl.obj \
-+        $(SLO)$/OGLTrans_Shaders.obj \
-         $(SLO)$/OGLTrans_TransitionerImpl.obj
- 
- DLLPRE=
---- slideshow/source/engine/OGLTrans/OGLTrans_Shaders.cxx.toglst1~	2008-07-07 21:17:07.478845854 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_Shaders.cxx	2008-07-07 21:17:07.478845854 +0200
-@@ -0,0 +1,113 @@
-+#include <osl/diagnose.hxx>
-+
-+#include "OGLTrans_Shaders.hxx"
-+
-+namespace unx
-+{
-+#include <GL/glx.h>
-+#include <GL/glxext.h>
-+}
-+
-+bool OGLShaders::cbInitialized = false;
-+
-+#ifdef GL_VERSION_2_0
-+
-+PFNGLCREATESHADERPROC OGLShaders::glCreateShader = NULL;
-+PFNGLSHADERSOURCEPROC OGLShaders::glShaderSource = NULL;
-+PFNGLCOMPILESHADERPROC OGLShaders::glCompileShader = NULL;
-+PFNGLGETSHADERIVPROC OGLShaders::glGetShaderiv = NULL;
-+PFNGLGETSHADERINFOLOGPROC OGLShaders::glGetShaderInfoLog = NULL;
-+PFNGLDELETESHADERPROC OGLShaders::glDeleteShader = NULL;
-+PFNGLCREATEPROGRAMPROC OGLShaders::glCreateProgram = NULL;
-+PFNGLATTACHSHADERPROC OGLShaders::glAttachShader = NULL;
-+PFNGLLINKPROGRAMPROC OGLShaders::glLinkProgram = NULL;
-+PFNGLGETPROGRAMIVPROC OGLShaders::glGetProgramiv = NULL;
-+PFNGLGETPROGRAMINFOLOGPROC OGLShaders::glGetProgramInfoLog = NULL;
-+PFNGLUSEPROGRAMPROC OGLShaders::glUseProgram = NULL;
-+PFNGLDELETEPROGRAMPROC OGLShaders::glDeleteProgram = NULL;
-+PFNGLGETUNIFORMLOCATIONPROC OGLShaders::glGetUniformLocation = NULL;
-+PFNGLUNIFORM1IPROC OGLShaders::glUniform1i = NULL;
-+PFNGLUNIFORM1FPROC OGLShaders::glUniform1f = NULL;
-+#endif
-+
-+bool OGLShaders::Initialize()
-+{
-+#ifdef GL_VERSION_2_0
-+    if( !cbInitialized ) {
-+        glCreateShader = (PFNGLCREATESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glCreateShader" );
-+        glShaderSource = (PFNGLSHADERSOURCEPROC) unx::glXGetProcAddress( (unsigned char *) "glShaderSource" );
-+        glCompileShader = (PFNGLCOMPILESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glCompileShader" );
-+        glGetShaderiv = (PFNGLGETSHADERIVPROC) unx::glXGetProcAddress( (unsigned char *) "glGetShaderiv" );
-+        glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) unx::glXGetProcAddress( (unsigned char *) "glGetShaderInfoLog" );
-+        glDeleteShader = (PFNGLDELETESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glDeleteShader" );
-+        glCreateProgram = (PFNGLCREATEPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glCreateProgram" );
-+        glAttachShader = (PFNGLATTACHSHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glAttachShader" );
-+        glLinkProgram = (PFNGLLINKPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glLinkProgram" );
-+        glGetProgramiv = (PFNGLGETPROGRAMIVPROC) unx::glXGetProcAddress( (unsigned char *) "glGetProgramiv" );
-+        glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) unx::glXGetProcAddress( (unsigned char *) "glGetProgramInfoLog" );
-+        glUseProgram = (PFNGLUSEPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glUseProgram" );
-+        glDeleteProgram = (PFNGLDELETEPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glDeleteProgram" );
-+        glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) unx::glXGetProcAddress( (unsigned char *) "glGetUniformLocation" );
-+        glUniform1i = (PFNGLUNIFORM1IPROC) unx::glXGetProcAddress( (unsigned char *) "glUniform1i" );
-+        glUniform1f = (PFNGLUNIFORM1FPROC) unx::glXGetProcAddress( (unsigned char *) "glUniform1f" );
-+        cbInitialized = true;
-+    }
-+
-+    return glCreateShader != NULL;
-+#else
-+    return false;
-+#endif
-+}
-+
-+GLuint OGLShaders::LinkProgram( const char *vertexShader, const char *fragmentShader )
-+{
-+#ifdef GL_VERSION_2_0
-+    if( !Initialize() )
-+        return 0;
-+
-+    GLhandleARB vertexObject, fragmentObject, programObject;
-+    GLint vertexCompiled, fragmentCompiled, programLinked;
-+    char log[1024];
-+
-+    vertexObject = glCreateShader( GL_VERTEX_SHADER );
-+    fragmentObject = glCreateShader( GL_FRAGMENT_SHADER );
-+    OSL_TRACE("checkpoint 1: shaders created (%d) vertex: %d fragment: %d", glGetError() == GL_NO_ERROR, vertexObject, fragmentObject );
-+
-+
-+    glShaderSource( vertexObject, 1, &vertexShader, NULL );
-+    glShaderSource( fragmentObject, 1, &fragmentShader, NULL );
-+
-+    glCompileShader( vertexObject );
-+    glGetShaderInfoLog( vertexObject, sizeof( log ), NULL, log );
-+    OSL_TRACE("vertex compile log: %s", log);
-+    glGetShaderiv( vertexObject, GL_COMPILE_STATUS, &vertexCompiled );
-+    glCompileShader( fragmentObject );
-+    glGetShaderInfoLog( fragmentObject, sizeof( log ), NULL, log );
-+    OSL_TRACE("fragment compile log: %s", log);
-+    glGetShaderiv( fragmentObject, GL_COMPILE_STATUS, &fragmentCompiled );
-+
-+    if( !vertexCompiled || !fragmentCompiled )
-+        return 0;
-+
-+    OSL_TRACE("checkpoint 2: shaders compiled (%d)", glGetError() == GL_NO_ERROR);
-+
-+    programObject = glCreateProgram();
-+    glAttachShader( programObject, vertexObject );
-+    glAttachShader( programObject, fragmentObject );
-+
-+    glLinkProgram( programObject );
-+    glGetProgramInfoLog( programObject, sizeof( log ), NULL, log );
-+    OSL_TRACE("program link log: %s", log);
-+    glGetProgramiv( programObject, GL_LINK_STATUS, &programLinked );
-+
-+    if( !programLinked )
-+        return 0;
-+
-+    OSL_TRACE("checkpoint 3: program linked (%d)", glGetError() == GL_NO_ERROR);
-+
-+    return programObject;
-+#else
-+    return 0;
-+#endif
-+}
-+
---- slideshow/source/engine/OGLTrans/OGLTrans_Shaders.hxx.toglst1~	2008-07-07 21:17:07.479845702 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_Shaders.hxx	2008-07-07 21:17:07.479845702 +0200
-@@ -0,0 +1,41 @@
-+#ifndef INCLUDED_OGLTRANS_SHADERS_HXX_
-+#define INCLUDED_OGLTRANS_SHADERS_HXX_
-+
-+#define GL_GLEXT_PROTOTYPES 1
-+#include <GL/gl.h>
-+#include <GL/glext.h>
-+
-+class OGLShaders {
-+    static bool Initialize();
-+    static bool cbInitialized;
-+
-+public:    
-+
-+    static GLuint LinkProgram( const char *vertexShader, const char *fragmentShader );
-+
-+    /** GL shader functions
-+     */
-+#ifdef GL_VERSION_2_0
-+
-+    static PFNGLCREATESHADERPROC glCreateShader;
-+    static PFNGLSHADERSOURCEPROC glShaderSource;
-+    static PFNGLCOMPILESHADERPROC glCompileShader;
-+    static PFNGLGETSHADERIVPROC glGetShaderiv;
-+    static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
-+    static PFNGLDELETESHADERPROC glDeleteShader;
-+
-+    static PFNGLCREATEPROGRAMPROC glCreateProgram;
-+    static PFNGLATTACHSHADERPROC glAttachShader;
-+    static PFNGLLINKPROGRAMPROC glLinkProgram;
-+    static PFNGLGETPROGRAMIVPROC glGetProgramiv;
-+    static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
-+    static PFNGLUSEPROGRAMPROC glUseProgram;
-+    static PFNGLDELETEPROGRAMPROC glDeleteProgram;
-+
-+    static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
-+    static PFNGLUNIFORM1IPROC glUniform1i;
-+    static PFNGLUNIFORM1FPROC glUniform1f;
-+#endif
-+};
-+
-+#endif
---- slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx.toglst1~	2008-07-07 21:16:28.811846488 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx	2008-07-07 21:17:07.481845328 +0200
-@@ -181,6 +181,11 @@ public:
-     static bool cbMesa;
- };
- 
-+// declare the static variables as some gcc versions have problems declaring them automaticaly
-+bool OGLTransitionerImpl::cbBrokenTexturesATI;
-+float OGLTransitionerImpl::cnGLVersion;
-+bool OGLTransitionerImpl::cbMesa;
-+
- void OGLTransitionerImpl::initialize( const uno::Reference< presentation::XSlideShowView >& xView )
- {
-     // not thread safe
---- slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx.toglst1~	2008-07-07 21:07:47.090846542 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx	2008-07-07 21:18:00.043847201 +0200
-@@ -27,11 +27,10 @@
-  * for a copy of the LGPLv3 License.
-  *
-  ************************************************************************/
--#define GL_GLEXT_PROTOTYPES 1
--#include "OGLTrans_TransitionImpl.hxx"
- 
-+#include "OGLTrans_TransitionImpl.hxx"
-+#include "OGLTrans_Shaders.hxx"
- #include <GL/gl.h>
--#include <GL/glext.h>
- #include <math.h>
- 
- 
-@@ -50,17 +49,17 @@ void OGLTransitionImpl::clear()
- 
- #ifdef GL_VERSION_2_0
-     if( mProgramObject ) {
--        glDeleteProgram( mProgramObject );
-+        OGLShaders::glDeleteProgram( mProgramObject );
-         mProgramObject = 0;
-     }
- 
-     if( mVertexObject ) {
--        glDeleteShader( mVertexObject );
-+        OGLShaders::glDeleteShader( mVertexObject );
-         mVertexObject = 0;
-     }
- 
-     if( mFragmentObject ) {
--        glDeleteShader( mFragmentObject );
-+        OGLShaders::glDeleteShader( mFragmentObject );
-         mFragmentObject = 0;
-     }
- #endif
-@@ -1015,55 +1014,6 @@ void OGLTransitionImpl::makeFadeSmoothly
-     mbUseMipMapLeaving = mbUseMipMapEntering = false;
- }
- 
--static GLuint linkProgram( const char *vertexShader, const char *fragmentShader )
--{
--#ifdef GL_VERSION_2_0
--    GLhandleARB vertexObject, fragmentObject, programObject;
--    GLint vertexCompiled, fragmentCompiled, programLinked;
--    char log[1024];
--
--    vertexObject = glCreateShaderObjectARB( GL_VERTEX_SHADER_ARB );
--    fragmentObject = glCreateShader( GL_FRAGMENT_SHADER );
--    OSL_TRACE("checkpoint 1: shaders created (%d) vertex: %d fragment: %d", glGetError() == GL_NO_ERROR, vertexObject, fragmentObject );
--
--
--    glShaderSourceARB( vertexObject, 1, &vertexShader, NULL );
--    glShaderSourceARB( fragmentObject, 1, &fragmentShader, NULL );
--
--    glCompileShader( vertexObject );
--    glGetInfoLogARB( vertexObject, sizeof( log ), NULL, log );
--    OSL_TRACE("vertex compile log: %s", log);
--    glGetShaderiv( vertexObject, GL_COMPILE_STATUS, &vertexCompiled );
--    glCompileShader( fragmentObject );
--    glGetInfoLogARB( fragmentObject, sizeof( log ), NULL, log );
--    OSL_TRACE("fragment compile log: %s", log);
--    glGetShaderiv( fragmentObject, GL_COMPILE_STATUS, &fragmentCompiled );
--
--    if( !vertexCompiled || !fragmentCompiled )
--        return 0;
--
--    OSL_TRACE("checkpoint 2: shaders compiled (%d)", glGetError() == GL_NO_ERROR);
--
--    programObject = glCreateProgram();
--    glAttachShader( programObject, vertexObject );
--    glAttachShader( programObject, fragmentObject );
--
--    glLinkProgram( programObject );
--    glGetInfoLogARB( programObject, sizeof( log ), NULL, log );
--    OSL_TRACE("program link log: %s", log);
--    glGetProgramiv( programObject, GL_LINK_STATUS, &programLinked );
--
--    if( !programLinked )
--        return 0;
--
--    OSL_TRACE("checkpoint 3: program linked (%d)", glGetError() == GL_NO_ERROR);
--
--    return programObject;
--#else
--    return 0;
--#endif
--}
--
- static const char* basicVertexShader = "\n\
- varying vec2 v_texturePosition;\n\
- \n\
-@@ -1193,11 +1143,11 @@ void OGLTransitionImpl::preparePermShade
- {
- #ifdef GL_VERSION_2_0
-     if( mProgramObject ) {
--        glUseProgram( mProgramObject );
-+        OGLShaders::glUseProgram( mProgramObject );
- 
--        GLint location = glGetUniformLocation( mProgramObject, "leavingSlideTexture" );
-+        GLint location = OGLShaders::glGetUniformLocation( mProgramObject, "leavingSlideTexture" );
-         if( location != -1 ) {
--            glUniform1i( location, 0 );  // texture unit 0
-+            OGLShaders::glUniform1i( location, 0 );  // texture unit 0
-         }
- 
-         glActiveTexture(GL_TEXTURE1);
-@@ -1205,14 +1155,14 @@ void OGLTransitionImpl::preparePermShade
-             initPermTexture( &maHelperTexture );
-         glActiveTexture(GL_TEXTURE0);
- 
--        location = glGetUniformLocation( mProgramObject, "permTexture" );
-+        location = OGLShaders::glGetUniformLocation( mProgramObject, "permTexture" );
-         if( location != -1 ) {
--            glUniform1i( location, 1 );  // texture unit 1
-+            OGLShaders::glUniform1i( location, 1 );  // texture unit 1
-         }
- 
--        location = glGetUniformLocation( mProgramObject, "enteringSlideTexture" );
-+        location = OGLShaders::glGetUniformLocation( mProgramObject, "enteringSlideTexture" );
-         if( location != -1 ) {
--            glUniform1i( location, 2 );  // texture unit 2
-+            OGLShaders::glUniform1i( location, 2 );  // texture unit 2
-         }
-     }
- #endif
-@@ -1220,7 +1170,7 @@ void OGLTransitionImpl::preparePermShade
- 
- void OGLTransitionImpl::prepareStatic( ::sal_Int32 /* glLeavingSlideTex */, ::sal_Int32 /* glEnteringSlideTex */ )
- {
--    mProgramObject = linkProgram( basicVertexShader, staticFragmentShader );
-+    mProgramObject = OGLShaders::LinkProgram( basicVertexShader, staticFragmentShader );
- 
-     preparePermShader();
- }
-@@ -1232,16 +1182,16 @@ void OGLTransitionImpl::displaySlidesSha
- 
- #ifdef GL_VERSION_2_0
-     if( mProgramObject ) {
--        GLint location = glGetUniformLocation( mProgramObject, "time" );
-+        GLint location = OGLShaders::glGetUniformLocation( mProgramObject, "time" );
-         if( location != -1 ) {
--            glUniform1f( location, nTime );
-+            OGLShaders::glUniform1f( location, nTime );
-         }
-     }
--#endif
- 
-     glActiveTexture( GL_TEXTURE2 );
-     glBindTexture( GL_TEXTURE_2D, glEnteringSlideTex );
-     glActiveTexture( GL_TEXTURE0 );
-+#endif
- 
-     displaySlide( nTime, glLeavingSlideTex, maLeavingSlidePrimitives, SlideWidthScale, SlideHeightScale );
- }
-@@ -1264,7 +1214,7 @@ void OGLTransitionImpl::makeStatic()
- 
- void OGLTransitionImpl::prepareDissolve( ::sal_Int32 /* glLeavingSlideTex */, ::sal_Int32 /* glEnteringSlideTex */ )
- {
--    mProgramObject = linkProgram( basicVertexShader, dissolveFragmentShader );
-+    mProgramObject = OGLShaders::LinkProgram( basicVertexShader, dissolveFragmentShader );
- 
-     preparePermShader();
- }
diff --git a/patches/dev300/transogl-shader-transitions.diff b/patches/dev300/transogl-shader-transitions.diff
deleted file mode 100644
index 546e29b..0000000
--- a/patches/dev300/transogl-shader-transitions.diff
+++ /dev/null
@@ -1,597 +0,0 @@
---- slideshow/source/engine/OGLTrans/makefile.mk.oglshtrans~	2008-07-07 20:27:31.849846010 +0200
-+++ slideshow/source/engine/OGLTrans/makefile.mk	2008-07-07 20:58:47.309096487 +0200
-@@ -52,7 +52,7 @@ ENABLE_EXCEPTIONS=TRUE
- SLOFILES = \
-         $(SLO)$/OGLTrans_TransitionImpl.obj \
-         $(SLO)$/OGLTrans_TransitionerImpl.obj
--        
-+
- DLLPRE=
- SHL1TARGET=$(TARGET).uno
- 
---- slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx.oglshtrans~	2008-07-07 20:56:19.994847050 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx	2008-07-07 21:05:13.163096087 +0200
-@@ -91,7 +91,7 @@ class OGLTransitionerImpl : private cppu
- {
- public:
-     explicit OGLTransitionerImpl(OGLTransitionImpl* pOGLTransition);
--    void initWindowFromSlideShowView( const uno::Reference< presentation::XSlideShowView >& xView, double, double);
-+    bool initWindowFromSlideShowView( const uno::Reference< presentation::XSlideShowView >& xView, double, double);
-     void setSlides( const uno::Reference< rendering::XBitmap >& xLeavingSlide , const uno::Reference< rendering::XBitmap >& xEnteringSlide );
- 
-     // XTransition
-@@ -168,15 +168,18 @@ private:    
- 
-     /** whether we are running on ATI fglrx with bug related to textures
-      */
--    bool bBrokenTexturesATI;
-+    bool mbBrokenTexturesATI;
-+
-+    /* GL version */
-+    float mnGLVersion;
- };
- 
--void OGLTransitionerImpl::initWindowFromSlideShowView( const uno::Reference< presentation::XSlideShowView >& xView, double, double)
-+bool OGLTransitionerImpl::initWindowFromSlideShowView( const uno::Reference< presentation::XSlideShowView >& xView, double, double)
- {
-     osl::MutexGuard const guard( m_aMutex );
- 
-     if (isDisposed())
--        return;
-+        return false;
- 
-     /// take the XSlideShowView and extract the parent window from it. see viewmediashape.cxx
-     uno::Reference< rendering::XCanvas > xCanvas(xView->getCanvas(), uno::UNO_QUERY_THROW);
-@@ -312,6 +315,10 @@ void OGLTransitionerImpl::initWindowFrom
-                                  vi,
-                                  0,
-                                  GL_TRUE);
-+    if( glGetError() != GL_NO_ERROR ) {
-+	    OSL_TRACE("glError: %s\n", (char *)gluErrorString(glGetError()));
-+	    return false;
-+    }
- #endif
- 
- #if defined( WNT ) 
-@@ -351,8 +358,18 @@ void OGLTransitionerImpl::initWindowFrom
- 		    OSL_TRACE("set swap interval to 1 (enable vsync)");
- 	    }
-     }
-+
-+    const GLubyte* version = glGetString( GL_VERSION );
-+    if( version && version[0] ) {
-+	    mnGLVersion = version[0] - '0';
-+	    if( version[1] == '.' && version[2] )
-+		    mnGLVersion += (version[2] - '0')/10.0;
-+    } else
-+	    mnGLVersion = 1.0;
-+    OSL_TRACE("GL version: %s parsed: %f", version, mnGLVersion );
-+
-     /* TODO: check for version once the bug in fglrx driver is fixed */
--    bBrokenTexturesATI = (strcmp( (const char *) glGetString( GL_VENDOR ), "ATI Technologies Inc." ) == 0 );
-+    mbBrokenTexturesATI = (strcmp( (const char *) glGetString( GL_VENDOR ), "ATI Technologies Inc." ) == 0 );
- #endif
-     glEnable(GL_CULL_FACE);
-     glCullFace(GL_BACK);
-@@ -375,8 +392,10 @@ void OGLTransitionerImpl::initWindowFrom
-     if( LeavingBytes.hasElements() && EnteringBytes.hasElements())
-        GLInitSlides();//we already have uninitialized slides, let's initialize 
- 
--    if (pTransition)
--        pTransition->prepare ();
-+    if( pTransition && pTransition->mnRequiredGLVersion <= mnGLVersion )
-+        pTransition->prepare( GLleavingSlide, GLenteringSlide );
-+
-+    return true;
- }
- 
- void OGLTransitionerImpl::setSlides( const uno::Reference< rendering::XBitmap >& xLeavingSlide, 
-@@ -453,7 +472,7 @@ void OGLTransitionerImpl::GLInitSlides()
- {
-     osl::MutexGuard const guard( m_aMutex );
- 
--    if (isDisposed())
-+    if (isDisposed() || pTransition->mnRequiredGLVersion > mnGLVersion)
-         return;
- 
-     glMatrixMode(GL_PROJECTION);
-@@ -624,7 +643,7 @@ void OGLTransitionerImpl::GLInitSlides()
-     }
-     else
-     {
--	if( pTransition && !bBrokenTexturesATI && !pTransition->mbUseMipMapLeaving) {
-+	if( pTransition && !mbBrokenTexturesATI && !pTransition->mbUseMipMapLeaving) {
- 	    glTexImage2D(GL_TEXTURE_2D, 0, pDetectedFormat->nInternalFormat, SlideSize.Width,
- 			 SlideSize.Height, &LeavingBytes[0]);
- 	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
-@@ -680,7 +699,7 @@ void OGLTransitionerImpl::GLInitSlides()
-     }
-     else
-     {
--	if( pTransition && !bBrokenTexturesATI && !pTransition->mbUseMipMapEntering ) {
-+	if( pTransition && !mbBrokenTexturesATI && !pTransition->mbUseMipMapEntering ) {
- 	    glTexImage2D(GL_TEXTURE_2D, 0, pDetectedFormat->nInternalFormat, SlideSize.Width, SlideSize.Height, 0, Format, GL_UNSIGNED_BYTE, &EnteringBytes[0]);
- 	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
- 	    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
-@@ -712,14 +731,14 @@ void SAL_CALL OGLTransitionerImpl::updat
- {
-     osl::MutexGuard const guard( m_aMutex );
- 
--    if (isDisposed())
-+    if (isDisposed() || pTransition->mnRequiredGLVersion > mnGLVersion)
-         return;
--        
-+
-     glEnable(GL_DEPTH_TEST);
- 	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- 
- 	if(pTransition)
--	    pTransition->display( nTime , GLleavingSlide , GLenteringSlide , 
-+	    pTransition->display( nTime, GLleavingSlide, GLenteringSlide, 
-                               SlideSize.Width, SlideSize.Height,
-                               static_cast<double>(GLWin.Width),
-                               static_cast<double>(GLWin.Height) );
-@@ -811,6 +830,8 @@ public:
-                 case animations::TransitionSubType::BOTTOMRIGHT:
-                 case animations::TransitionSubType::BOTTOMLEFT:
-                 case animations::TransitionSubType::TOPCENTER:
-+                case animations::TransitionSubType::RIGHTCENTER:
-+                case animations::TransitionSubType::BOTTOMCENTER:
-                     return sal_True;
- 
-                 default:
-@@ -832,6 +853,9 @@ public:
-         const uno::Reference< rendering::XBitmap >&           enteringBitmap, 
-         const geometry::RealPoint2D&                          slideOffset ) throw (uno::RuntimeException)
-     {
-+        if( !hasTransition( transitionType, transitionSubType ) )
-+            return uno::Reference< presentation::XTransition >();
-+
-         OGLTransitionImpl* pTransition;
- 
-         if( transitionType == animations::TransitionType::MISCSHAPEWIPE ) {
-@@ -874,8 +898,12 @@ public:
-                 case animations::TransitionSubType::TOPCENTER:
-                     pTransition->makeVenetianBlinds( false, 6 );
-                     break;
--                default:
--                    return uno::Reference< presentation::XTransition >();
-+                case animations::TransitionSubType::RIGHTCENTER:
-+                    pTransition->makeStatic();
-+                    break;
-+                case animations::TransitionSubType::BOTTOMCENTER:
-+                    pTransition->makeDissolve();
-+                    break;
-                 }
-         } else if( transitionType == animations::TransitionType::FADE && transitionSubType == animations::TransitionSubType::CROSSFADE ) {
-             pTransition = new OGLTransitionImpl();
-@@ -883,13 +911,12 @@ public:
-         } else if( transitionType == animations::TransitionType::IRISWIPE && transitionSubType == animations::TransitionSubType::DIAMOND ) {
-             pTransition = new OGLTransitionImpl();
-             pTransition->makeDiamond();
--        } else {
--            return uno::Reference< presentation::XTransition >();
-         }
- 
-         rtl::Reference<OGLTransitionerImpl> xRes(
-             new OGLTransitionerImpl(pTransition) );
--        xRes->initWindowFromSlideShowView(view,slideOffset.X,slideOffset.Y);
-+        if(!xRes->initWindowFromSlideShowView(view,slideOffset.X,slideOffset.Y))
-+            return uno::Reference< presentation::XTransition >();
-         xRes->setSlides(leavingBitmap,enteringBitmap);
- 
-         return uno::Reference<presentation::XTransition>(xRes.get());
---- slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx.oglshtrans~	2008-07-07 20:49:22.350096529 +0200
-+++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx	2008-07-07 20:59:53.626846367 +0200
-@@ -27,9 +27,11 @@
-  * for a copy of the LGPLv3 License.
-  *
-  ************************************************************************/
-+#define GL_GLEXT_PROTOTYPES 1
- #include "OGLTrans_TransitionImpl.hxx"
- 
- #include <GL/gl.h>
-+#include <GL/glext.h>
- #include <math.h>
- 
- 
-@@ -45,6 +47,31 @@ void OGLTransitionImpl::clear()
-     maSceneObjects.clear();
- 
-     mbReflectSlides = false;
-+
-+#ifdef GL_VERSION_2_0
-+    if( mProgramObject ) {
-+        glDeleteProgram( mProgramObject );
-+        mProgramObject = 0;
-+    }
-+
-+    if( mVertexObject ) {
-+        glDeleteShader( mVertexObject );
-+        mVertexObject = 0;
-+    }
-+
-+    if( mFragmentObject ) {
-+        glDeleteShader( mFragmentObject );
-+        mFragmentObject = 0;
-+    }
-+#endif
-+
-+    if( maHelperTexture ) {
-+        glDeleteTextures( 1, &maHelperTexture );
-+        maHelperTexture = 0;
-+    }
-+
-+    if( mmClearTransition )
-+        (this->*mmClearTransition)();
- }
- 
- OGLTransitionImpl::~OGLTransitionImpl()
-@@ -52,11 +79,14 @@ OGLTransitionImpl::~OGLTransitionImpl()
-     clear();
- }
- 
--void OGLTransitionImpl::prepare()
-+void OGLTransitionImpl::prepare( ::sal_Int32 glLeavingSlideTex, ::sal_Int32 glEnteringSlideTex )
- {
-     for(unsigned int i(0); i < maSceneObjects.size(); ++i) {
-         maSceneObjects[i]->prepare();
-     }
-+
-+    if( mmPrepareTransition )
-+        (this->*mmPrepareTransition)( glLeavingSlideTex, glEnteringSlideTex );
- }
- 
- void OGLTransitionImpl::finish()
-@@ -984,3 +1014,273 @@ void OGLTransitionImpl::makeFadeSmoothly
-     mmDisplaySlides = &OGLTransitionImpl::displaySlidesFadeSmoothly;
-     mbUseMipMapLeaving = mbUseMipMapEntering = false;
- }
-+
-+static GLuint linkProgram( const char *vertexShader, const char *fragmentShader )
-+{
-+#ifdef GL_VERSION_2_0
-+    GLhandleARB vertexObject, fragmentObject, programObject;
-+    GLint vertexCompiled, fragmentCompiled, programLinked;
-+    char log[1024];
-+
-+    vertexObject = glCreateShaderObjectARB( GL_VERTEX_SHADER_ARB );
-+    fragmentObject = glCreateShader( GL_FRAGMENT_SHADER );
-+    OSL_TRACE("checkpoint 1: shaders created (%d) vertex: %d fragment: %d", glGetError() == GL_NO_ERROR, vertexObject, fragmentObject );
-+
-+
-+    glShaderSourceARB( vertexObject, 1, &vertexShader, NULL );
-+    glShaderSourceARB( fragmentObject, 1, &fragmentShader, NULL );
-+
-+    glCompileShader( vertexObject );
-+    glGetInfoLogARB( vertexObject, sizeof( log ), NULL, log );
-+    OSL_TRACE("vertex compile log: %s", log);
-+    glGetShaderiv( vertexObject, GL_COMPILE_STATUS, &vertexCompiled );
-+    glCompileShader( fragmentObject );
-+    glGetInfoLogARB( fragmentObject, sizeof( log ), NULL, log );
-+    OSL_TRACE("fragment compile log: %s", log);
-+    glGetShaderiv( fragmentObject, GL_COMPILE_STATUS, &fragmentCompiled );
-+
-+    if( !vertexCompiled || !fragmentCompiled )
-+        return 0;
-+
-+    OSL_TRACE("checkpoint 2: shaders compiled (%d)", glGetError() == GL_NO_ERROR);
-+
-+    programObject = glCreateProgram();
-+    glAttachShader( programObject, vertexObject );
-+    glAttachShader( programObject, fragmentObject );
-+
-+    glLinkProgram( programObject );
-+    glGetInfoLogARB( programObject, sizeof( log ), NULL, log );
-+    OSL_TRACE("program link log: %s", log);
-+    glGetProgramiv( programObject, GL_LINK_STATUS, &programLinked );
-+
-+    if( !programLinked )
-+        return 0;
-+
-+    OSL_TRACE("checkpoint 3: program linked (%d)", glGetError() == GL_NO_ERROR);
-+
-+    return programObject;
-+#else
-+    return 0;
-+#endif
-+}
-+
-+static const char* basicVertexShader = "\n\
-+varying vec2 v_texturePosition;\n\
-+\n\
-+void main( void )\n\
-+{\n\
-+	gl_Position = ftransform();\n\
-+	v_texturePosition = gl_MultiTexCoord0.xy;\n\
-+}\n\
-+";
-+
-+static const char* staticFragmentShader = "\n\
-+uniform sampler2D leavingSlideTexture;\n\
-+uniform sampler2D enteringSlideTexture;\n\
-+uniform sampler2D permTexture;\n\
-+uniform float time;\n\
-+varying vec2 v_texturePosition;\n\
-+\n\
-+float snoise(vec2 P) {\n\
-+\n\
-+  return texture2D(permTexture, P).r;\n\
-+}\n\
-+\n\
-+\n\
-+#define PART 0.5\n\
-+#define START 0.4\n\
-+#define END 0.9\n\
-+\n\
-+void main() {\n\
-+    float sn = snoise(10.0*v_texturePosition+time*0.07);\n\
-+    if( time < PART ) {\n\
-+        float sn1 = snoise(vec2(time*15.0, 20.0*v_texturePosition.y));\n\
-+        float sn2 = snoise(v_texturePosition);\n\
-+        if (sn1 > 1.0 - time*time && sn2 < 2.0*time+0.1)\n\
-+	        gl_FragColor = vec4(sn, sn, sn, 1.0);\n\
-+        else if (time > START )\n\
-+            gl_FragColor = ((time-START)/(PART - START))*vec4(sn, sn, sn, 1.0) + (1.0 - (time - START)/(PART - START))*texture2D(leavingSlideTexture, v_texturePosition);\n\
-+        else\n\
-+            gl_FragColor = texture2D(leavingSlideTexture, v_texturePosition);\n\
-+    } else if ( time < PART ) {\n\
-+            gl_FragColor = texture2D(leavingSlideTexture, v_texturePosition);\n\
-+    } else if ( time > END ) {\n\

... etc. - the rest is truncated


More information about the ooo-build-commit mailing list