summaryrefslogtreecommitdiff
path: root/slideshow
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-05-20 13:11:45 +0100
committerCaolán McNamara <caolanm@redhat.com>2016-05-21 10:04:22 +0100
commit81283a891f274226113f6d136c251c2ba1538b4c (patch)
tree40b6a916a531117f7fd0f1b6696a6f2f898e30df /slideshow
parentb8d163f4334424e78290eae49713e6ba2405b30f (diff)
GLX_EXT_texture_from_pixmap path cannot be called...
slideshow mbHasTFPVisual is always false since commit eccaf91ec9c50d42ce98c90abe2c129bedbbc60e Date: Mon May 19 19:21:29 2014 +0200 use VCL's OpenGLContext for 3D transitions Change-Id: I510518461eb8bc9669d0de2679c34c473f66b175 and GLWindow fbc has always been null since that incarnation of opengl started, so even if mbHasTFPVisual was true it would crash. OpenGLHelper::GetPixmapFBConfig is *almost* the same as the old removed code for setting fbc, but if I use that then for me the transitions still don't work at all. Examining further shows GetPixmapFBConfig lacks the test for GLX_BIND_TO_MIPMAP_TEXTURE_EXT that the old code had. If I add than, then it "works", but examining *that*, reveals it only works because GLX_BIND_TO_MIPMAP_TEXTURE_EXT is unsupported on my rig, so the GLX_EXT_texture_from_pixmap code still doesn't get executed. I apparently can't test the original working configuration, and I'm not particularly interested in getting X working and I just wanted to make sure I didn't break that case, so... this removes the uncallable since 2014 code entirely rather than try to fix it. I suspect this may leave the cairo-canvas CanvasBitmap::getFastPropertyValue "1" branch now also dead Change-Id: I6727576056533fa54a4f82378954fb53891f5873
Diffstat (limited to 'slideshow')
-rw-r--r--slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx208
1 files changed, 9 insertions, 199 deletions
diff --git a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx
index fa4df10f6a80..a185553ea481 100644
--- a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx
+++ b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx
@@ -147,19 +147,6 @@ int calcComponentOrderIndex(const uno::Sequence<sal_Int8>& rTags)
return -1;
}
-#if defined( UNX ) && !defined( MACOSX )
-
-// not thread safe
-static bool errorTriggered;
-int oglErrorHandler( Display* /*dpy*/, XErrorEvent* /*evnt*/ )
-{
- errorTriggered = true;
-
- return 0;
-}
-
-#endif
-
/** This is the Transitioner class for OpenGL 3D transitions in
* slideshow. This class is implicitly
* constructed from XTransitionFactory.
@@ -195,10 +182,6 @@ protected:
}
void createTexture( GLuint* texID,
-#if defined( GLX_EXT_texture_from_pixmap )
- GLXPixmap pixmap,
- bool usePixmap,
-#endif
bool useMipmap,
uno::Sequence<sal_Int8>& data,
const OGLFormat* pFormat );
@@ -244,17 +227,7 @@ private:
*/
uno::Sequence<sal_Int8> maLeavingBytes;
-#if defined( GLX_EXT_texture_from_pixmap )
- GLXPixmap maLeavingPixmapGL;
- GLXPixmap maEnteringPixmapGL;
- Pixmap maLeavingPixmap;
- Pixmap maEnteringPixmap;
- bool mbFreeLeavingPixmap;
- bool mbFreeEnteringPixmap;
-#endif
bool mbRestoreSync;
- bool mbUseLeavingPixmap;
- bool mbUseEnteringPixmap;
/** the form the raw bytes are in for the bitmaps
*/
@@ -282,16 +255,6 @@ public:
*/
bool mbValidOpenGLContext;
- /**
- whether to generate mipmaped textures
- */
- bool mbGenerateMipmap;
-
- /**
- whether we have visual which can be used for texture_from_pixmap extension
- */
- bool mbHasTFPVisual;
-
#if OSL_DEBUG_LEVEL > 0
ptime maUpdateStartTime;
ptime maUpdateEndTime;
@@ -374,8 +337,6 @@ bool OGLTransitionerImpl::initWindowFromSlideShowView( const Reference< presenta
mpContext->setWinPosAndSize(Point(aCanvasArea.X, aCanvasArea.Y), Size(aCanvasArea.Width, aCanvasArea.Height));
SAL_INFO("slideshow.opengl", "canvas area: " << aCanvasArea.X << "," << aCanvasArea.Y << " - " << aCanvasArea.Width << "x" << aCanvasArea.Height);
- mbGenerateMipmap = GLEW_SGIS_generate_mipmap;
-
CHECK_GL_ERROR();
glEnable(GL_CULL_FACE);
CHECK_GL_ERROR();
@@ -427,86 +388,8 @@ void OGLTransitionerImpl::impl_prepareSlides()
mpContext->sync();
CHECK_GL_ERROR();
- mbUseLeavingPixmap = false;
- mbUseEnteringPixmap = false;
-
- const GLWindow& rGLWindow(mpContext->getOpenGLWindow());
-
-#if defined( GLX_EXT_texture_from_pixmap )
- if( GLXEW_EXT_texture_from_pixmap && xLeavingSet.is() && xEnteringSet.is() && mbHasTFPVisual ) {
- Sequence< Any > leaveArgs;
- Sequence< Any > enterArgs;
- if( (xLeavingSet->getFastPropertyValue( 1 ) >>= leaveArgs) &&
- (xEnteringSet->getFastPropertyValue( 1 ) >>= enterArgs) ) {
- SAL_INFO("slideshow.opengl", "pixmaps available");
-
- sal_Int32 depth(0);
-
- 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
- mpContext->sync();
-
- int (*oldHandler)(Display* /*dpy*/, XErrorEvent* /*evnt*/);
-
- // replace error handler temporarily
- oldHandler = XSetErrorHandler( oglErrorHandler );
-
- errorTriggered = false;
- maLeavingPixmapGL = glXCreatePixmap( rGLWindow.dpy, rGLWindow.fbc, maLeavingPixmap, pixmapAttribs );
-
- // sync so that we possibly get an XError
- mpContext->sync();
-
- if( !errorTriggered )
- mbUseLeavingPixmap = true;
- else {
- SAL_INFO("slideshow.opengl", "XError triggered");
- OSL_TRACE("XError triggered");
- if( mbFreeLeavingPixmap ) {
- XFreePixmap( rGLWindow.dpy, maLeavingPixmap );
- mbFreeLeavingPixmap = false;
- }
- errorTriggered = false;
- }
-
- maEnteringPixmapGL = glXCreatePixmap( rGLWindow.dpy, rGLWindow.fbc, maEnteringPixmap, pixmapAttribs );
-
- // sync so that we possibly get an XError
- mpContext->sync();
-
- SAL_INFO("slideshow.opengl", "created glx pixmap " << maLeavingPixmapGL << " and " << maEnteringPixmapGL << " depth: " << depth);
- if( !errorTriggered )
- mbUseEnteringPixmap = true;
- else {
- SAL_INFO("slideshow.opengl", "XError triggered");
- if( mbFreeEnteringPixmap ) {
- XFreePixmap( rGLWindow.dpy, maEnteringPixmap );
- mbFreeEnteringPixmap = false;
- }
- }
-
- // restore the error handler
- XSetErrorHandler( oldHandler );
- }
- }
-#endif
-
- if( !mbUseLeavingPixmap )
- maLeavingBytes = mxLeavingBitmap->getData(maSlideBitmapLayout, aSlideRect);
- if( !mbUseEnteringPixmap )
- maEnteringBytes = mxEnteringBitmap->getData(maSlideBitmapLayout, aSlideRect);
+ maLeavingBytes = mxLeavingBitmap->getData(maSlideBitmapLayout, aSlideRect);
+ maEnteringBytes = mxEnteringBitmap->getData(maSlideBitmapLayout, aSlideRect);
CHECK_GL_ERROR();
GLInitSlides();
@@ -520,6 +403,7 @@ void OGLTransitionerImpl::impl_prepareSlides()
// synchronized X still gives us much smoother play
// I suspect some issues in above code in slideshow
// synchronize whole transition for now
+ const GLWindow& rGLWindow(mpContext->getOpenGLWindow());
mbRestoreSync = rGLWindow.Synchronize(true);
}
@@ -557,10 +441,6 @@ bool OGLTransitionerImpl::setTransition( const std::shared_ptr<OGLTransitionImpl
}
void OGLTransitionerImpl::createTexture( GLuint* texID,
-#if defined( GLX_EXT_texture_from_pixmap )
- GLXPixmap pixmap,
- bool usePixmap,
-#endif
bool useMipmap,
uno::Sequence<sal_Int8>& data,
const OGLFormat* pFormat )
@@ -573,25 +453,8 @@ void OGLTransitionerImpl::createTexture( GLuint* texID,
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER );
CHECK_GL_ERROR();
-#if defined( GLX_EXT_texture_from_pixmap )
- if( usePixmap ) {
- if( mbGenerateMipmap )
- glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, True);
- glXBindTexImageEXT (mpContext->getOpenGLWindow().dpy, pixmap, GLX_FRONT_LEFT_EXT, nullptr);
- if( mbGenerateMipmap && useMipmap ) {
- SAL_INFO("slideshow.opengl", "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 {
- impl_createTexture( useMipmap, data, pFormat );
- }
-#else
impl_createTexture( useMipmap, data, pFormat );
-#endif
+
SAL_WARN_IF(!glIsTexture(*texID), "slideshow.opengl", "Can't generate Leaving slide textures in OpenGL");
CHECK_GL_ERROR();
}
@@ -1151,25 +1014,15 @@ void OGLTransitionerImpl::GLInitSlides()
mpContext->makeCurrent();
- const OGLFormat* pFormat = nullptr;
- if( !mbUseLeavingPixmap || !mbUseEnteringPixmap )
- pFormat = chooseFormats();
+ const OGLFormat* pFormat = chooseFormats();
CHECK_GL_ERROR();
createTexture( &maLeavingSlideGL,
-#if defined( GLX_EXT_texture_from_pixmap )
- maLeavingPixmapGL,
- mbUseLeavingPixmap,
-#endif
mpTransition->getSettings().mbUseMipMapLeaving,
maLeavingBytes,
pFormat );
createTexture( &maEnteringSlideGL,
-#if defined( GLX_EXT_texture_from_pixmap )
- maEnteringPixmapGL,
- mbUseEnteringPixmap,
-#endif
mpTransition->getSettings().mbUseMipMapEntering,
maEnteringBytes,
pFormat );
@@ -1242,42 +1095,11 @@ void OGLTransitionerImpl::disposeTextures()
mpContext->makeCurrent();
CHECK_GL_ERROR();
-#if defined( GLX_EXT_texture_from_pixmap )
- const GLWindow& rGLWindow(mpContext->getOpenGLWindow());
-
- if( mbUseLeavingPixmap ) {
- glXReleaseTexImageEXT( rGLWindow.dpy, maLeavingPixmapGL, GLX_FRONT_LEFT_EXT );
- glXDestroyGLXPixmap( rGLWindow.dpy, maLeavingPixmapGL );
- maLeavingPixmapGL = 0;
- if( mbFreeLeavingPixmap ) {
- XFreePixmap( rGLWindow.dpy, maLeavingPixmap );
- mbFreeLeavingPixmap = false;
- maLeavingPixmap = 0;
- }
- }
- if( mbUseEnteringPixmap ) {
- glXReleaseTexImageEXT( rGLWindow.dpy, maEnteringPixmapGL, GLX_FRONT_LEFT_EXT );
- glXDestroyGLXPixmap( rGLWindow.dpy, maEnteringPixmapGL );
- maEnteringPixmapGL = 0;
- if( mbFreeEnteringPixmap ) {
- XFreePixmap( rGLWindow.dpy, maEnteringPixmap );
- mbFreeEnteringPixmap = false;
- maEnteringPixmap = 0;
- }
- }
-#endif
-
- if( !mbUseLeavingPixmap ) {
- glDeleteTextures(1,&maLeavingSlideGL);
- maLeavingSlideGL = 0;
- }
- if( !mbUseEnteringPixmap ) {
- glDeleteTextures(1,&maEnteringSlideGL);
- maEnteringSlideGL = 0;
- }
+ glDeleteTextures(1,&maLeavingSlideGL);
+ maLeavingSlideGL = 0;
+ glDeleteTextures(1,&maEnteringSlideGL);
+ maEnteringSlideGL = 0;
- mbUseLeavingPixmap = false;
- mbUseEnteringPixmap = false;
CHECK_GL_ERROR();
}
@@ -1339,24 +1161,12 @@ OGLTransitionerImpl::OGLTransitionerImpl()
, mxView()
, maEnteringBytes()
, maLeavingBytes()
-#if defined( GLX_EXT_texture_from_pixmap )
- , maLeavingPixmapGL(0)
- , maEnteringPixmapGL(0)
- , maLeavingPixmap(0)
- , maEnteringPixmap(0)
- , mbFreeLeavingPixmap(false)
- , mbFreeEnteringPixmap(false)
-#endif
, mbRestoreSync(false)
- , mbUseLeavingPixmap(false)
- , mbUseEnteringPixmap(false)
, maSlideBitmapLayout()
, maSlideSize()
, mbBrokenTexturesATI(false)
, mnGLVersion(0)
, mbValidOpenGLContext(false)
- , mbGenerateMipmap(false)
- , mbHasTFPVisual(false)
{
}