[Libreoffice-commits] core.git: canvas/Library_canvasfactory.mk canvas/source cui/source include/vcl vcl/source

Michael Meeks michael.meeks at collabora.com
Thu Sep 3 02:37:55 PDT 2015


 canvas/Library_canvasfactory.mk      |    1 +
 canvas/source/cairo/cairo_canvas.cxx |    4 ++++
 canvas/source/directx/dx_canvas.cxx  |    4 ++++
 canvas/source/factory/cf_service.cxx |    5 +++++
 cui/source/dialogs/about.cxx         |    4 ++--
 cui/source/options/optgdlg.cxx       |    6 +++++-
 include/vcl/opengl/OpenGLWrapper.hxx |   26 ++++++++++++++++++++++++++
 vcl/source/opengl/OpenGLHelper.cxx   |    6 ++++++
 8 files changed, 53 insertions(+), 3 deletions(-)

New commits:
commit 055f76b8f1897b79cc5f153da55e38b95ca551a2
Author: Michael Meeks <michael.meeks at collabora.com>
Date:   Thu Sep 3 00:30:28 2015 +0100

    tdf#93870 - GL accel. via VCL canvas for presentations when GL enabled.
    
    Change-Id: Ia31a88cb3d9e6baa987b22f77f407a3f592031f1
    Reviewed-on: https://gerrit.libreoffice.org/18285
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
    Tested-by: Michael Meeks <michael.meeks at collabora.com>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/canvas/Library_canvasfactory.mk b/canvas/Library_canvasfactory.mk
index dec3175..d3992fc 100644
--- a/canvas/Library_canvasfactory.mk
+++ b/canvas/Library_canvasfactory.mk
@@ -29,6 +29,7 @@ $(eval $(call gb_Library_use_libraries,canvasfactory,\
 	cppu \
 	cppuhelper \
 	sal \
+	vcl \
 	$(gb_UWINAPI) \
 ))
 
diff --git a/canvas/source/cairo/cairo_canvas.cxx b/canvas/source/cairo/cairo_canvas.cxx
index 6b46438..589d585 100644
--- a/canvas/source/cairo/cairo_canvas.cxx
+++ b/canvas/source/cairo/cairo_canvas.cxx
@@ -31,6 +31,7 @@
 #include <toolkit/helper/vclunohelper.hxx>
 #include <tools/diagnose_ex.h>
 #include <vcl/sysdata.hxx>
+#include <vcl/opengl/OpenGLWrapper.hxx>
 
 #include <canvas/canvastools.hxx>
 
@@ -54,6 +55,9 @@ namespace cairocanvas
         if( maArguments.getLength() == 0 )
             return;
 
+        // tdf#93870 - force VCL canvas in OpenGL mode for now.
+        assert( !OpenGLWrapper::isVCLOpenGLEnabled() );
+
         /* maArguments:
            0: ptr to creating instance (Window or VirtualDevice)
            1: SystemEnvData as a streamed Any (or empty for VirtualDevice)
diff --git a/canvas/source/directx/dx_canvas.cxx b/canvas/source/directx/dx_canvas.cxx
index f857831..f9e6ee1 100644
--- a/canvas/source/directx/dx_canvas.cxx
+++ b/canvas/source/directx/dx_canvas.cxx
@@ -38,6 +38,7 @@
 #include <toolkit/helper/vclunohelper.hxx>
 #include <tools/diagnose_ex.h>
 #include <vcl/sysdata.hxx>
+#include <vcl/opengl/OpenGLWrapper.hxx>
 
 #include <canvas/canvastools.hxx>
 
@@ -78,6 +79,9 @@ namespace dxcanvas
         if( maArguments.getLength() == 0 )
             return;
 
+        // tdf#93870 - force VCL canvas in OpenGL mode for now.
+        assert( !OpenGLWrapper::isVCLOpenGLEnabled() );
+
         SAL_INFO("canvas.directx", "Canvas::initialize called" );
 
         // At index 1, we expect a HWND handle here, containing a
diff --git a/canvas/source/factory/cf_service.cxx b/canvas/source/factory/cf_service.cxx
index 3a8130d..bc88538 100644
--- a/canvas/source/factory/cf_service.cxx
+++ b/canvas/source/factory/cf_service.cxx
@@ -39,6 +39,7 @@
 #include <osl/mutex.hxx>
 #include <osl/process.h>
 #include <o3tl/functional.hxx>
+#include <vcl/opengl/OpenGLWrapper.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
@@ -308,6 +309,10 @@ Reference<XInterface> CanvasFactory::lookupAndUse(
                      m_bCacheHasForcedLastImpl,
                      OUString("ForceSafeServiceImpl") );
 
+    // tdf#93870 - force VCL canvas in OpenGL mode for now.
+    if( OpenGLWrapper::isVCLOpenGLEnabled() )
+        bForceLastEntry = true;
+
     // use anti-aliasing canvas, if config flag set (or not existing)
     bool bUseAAEntry(true);
     checkConfigFlag( bUseAAEntry,
diff --git a/cui/source/dialogs/about.cxx b/cui/source/dialogs/about.cxx
index 8f5caf6..7dec293 100644
--- a/cui/source/dialogs/about.cxx
+++ b/cui/source/dialogs/about.cxx
@@ -48,7 +48,7 @@
 #include <rtl/ustrbuf.hxx>
 #include <vcl/bitmap.hxx>
 #include <officecfg/Office/Common.hxx>
-#include <vcl/opengl/OpenGLHelper.hxx>
+#include <vcl/opengl/OpenGLWrapper.hxx>
 
 using namespace ::com::sun::star::uno;
 using namespace ::com::sun::star::beans;
@@ -295,7 +295,7 @@ OUString AboutDialog::GetVersionString()
         sVersion += m_sBuildStr.replaceAll("$BUILDID", sBuildId);
     }
 
-    if (OpenGLHelper::isVCLOpenGLEnabled())
+    if (OpenGLWrapper::isVCLOpenGLEnabled())
     {
         sVersion += "-GL";
     }
diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx
index 1a29276..e869664e 100644
--- a/cui/source/options/optgdlg.cxx
+++ b/cui/source/options/optgdlg.cxx
@@ -89,6 +89,7 @@
 #include <vcl/svapp.hxx>
 #include <vcl/settings.hxx>
 #include <vcl/IconThemeInfo.hxx>
+#include <vcl/opengl/OpenGLWrapper.hxx>
 
 #include "optgdlg.hxx"
 #include <svx/ofaitem.hxx>
@@ -522,7 +523,10 @@ CanvasSettings::CanvasSettings() :
 
 bool CanvasSettings::IsHardwareAccelerationAvailable() const
 {
-    if( !mbHWAccelChecked )
+    if( OpenGLWrapper::isVCLOpenGLEnabled() )
+        mbHWAccelAvailable = false;
+
+    else if( !mbHWAccelChecked )
     {
         mbHWAccelChecked = true;
 
diff --git a/include/vcl/opengl/OpenGLWrapper.hxx b/include/vcl/opengl/OpenGLWrapper.hxx
new file mode 100644
index 0000000..c2f44c0
--- /dev/null
+++ b/include/vcl/opengl/OpenGLWrapper.hxx
@@ -0,0 +1,26 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+// Fully wrapped methods that have no exotic GL / GLEW header deps.
+
+#ifndef INCLUDED_VCL_OPENGL_OPENGLWRAPPER_HXX
+#define INCLUDED_VCL_OPENGL_OPENGLWRAPPER_HXX
+
+#include <vcl/dllapi.h>
+
+class VCL_DLLPUBLIC OpenGLWrapper
+{
+public:
+    /**
+     * Returns true if VCL has OpenGL rendering enabled
+     */
+    static bool isVCLOpenGLEnabled();
+};
+
+#endif // INCLUDED_VCL_OPENGL_OPENGLWRAPPER_HXX
diff --git a/vcl/source/opengl/OpenGLHelper.cxx b/vcl/source/opengl/OpenGLHelper.cxx
index 62cb918..014a5ad 100644
--- a/vcl/source/opengl/OpenGLHelper.cxx
+++ b/vcl/source/opengl/OpenGLHelper.cxx
@@ -32,6 +32,7 @@
 #include "opengl/zone.hxx"
 #include "opengl/watchdog.hxx"
 #include <osl/conditn.h>
+#include <vcl/opengl/OpenGLWrapper.hxx>
 #include <vcl/opengl/OpenGLContext.hxx>
 
 #if defined UNX && !defined MACOSX && !defined IOS && !defined ANDROID
@@ -677,6 +678,11 @@ bool OpenGLHelper::isVCLOpenGLEnabled()
     return bRet;
 }
 
+bool OpenGLWrapper::isVCLOpenGLEnabled()
+{
+    return OpenGLHelper::isVCLOpenGLEnabled();
+}
+
 void OpenGLHelper::debugMsgStream(const char *pArea, std::ostringstream const &pStream)
 {
     debugMsgPrint(pArea, "%s", pStream.str().c_str());


More information about the Libreoffice-commits mailing list