[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - include/vcl offapi/com toolkit/Library_tk.mk toolkit/source vcl/inc vcl/Library_vcl.mk vcl/osx vcl/source
Tor Lillqvist
tml at collabora.com
Mon Feb 8 14:15:16 UTC 2016
include/vcl/opengl/OpenGLWrapper.hxx | 6 +++++
offapi/com/sun/star/awt/XToolkitExperimental.idl | 5 ++++
toolkit/Library_tk.mk | 5 +++-
toolkit/source/awt/vclxtoolkit.cxx | 12 ++++++++++
vcl/Library_vcl.mk | 4 ---
vcl/inc/OpenGLWrapper.hxx | 20 -----------------
vcl/osx/OpenGLWrapper.cxx | 27 -----------------------
vcl/source/opengl/OpenGLContext.cxx | 23 ++++++++++++++-----
8 files changed, 44 insertions(+), 58 deletions(-)
New commits:
commit 59ebd032b834f31f2b3069395f7e7962a0adfea2
Author: Tor Lillqvist <tml at collabora.com>
Date: Tue Jan 26 11:17:57 2016 +0200
tdf#97633 Add API to get the number of OpenGL buffer swaps, including ...
... through UNO
(cherry picked from commits dff18c2be9c72aa05940982f506804eb41d3d79a,
2c55288357c9d5410afae58c1fbb97cdfabf0360,
32d98b2551644dea50e58f99ae921a82a0f69753 and
4cd058f3f6568724c65ac88769f17fcc6078da23)
Change-Id: Iff29ac615ad4b6516790b1cbbde0215a3cd0efe6
Reviewed-on: https://gerrit.libreoffice.org/22209
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>
diff --git a/include/vcl/opengl/OpenGLWrapper.hxx b/include/vcl/opengl/OpenGLWrapper.hxx
index e73aa08..3b7f6a7 100644
--- a/include/vcl/opengl/OpenGLWrapper.hxx
+++ b/include/vcl/opengl/OpenGLWrapper.hxx
@@ -23,6 +23,12 @@ struct VCL_DLLPUBLIC OpenGLWrapper
* Returns true if VCL has OpenGL rendering enabled
*/
static bool isVCLOpenGLEnabled();
+
+
+ /**
+ * Returns the number of times OpenGL buffers have been swapped.
+ */
+ static sal_Int64 getBufferSwapCounter();
};
#endif // INCLUDED_VCL_OPENGL_OPENGLWRAPPER_HXX
diff --git a/offapi/com/sun/star/awt/XToolkitExperimental.idl b/offapi/com/sun/star/awt/XToolkitExperimental.idl
index 3b73057..7c5d363 100644
--- a/offapi/com/sun/star/awt/XToolkitExperimental.idl
+++ b/offapi/com/sun/star/awt/XToolkitExperimental.idl
@@ -22,6 +22,11 @@ interface XToolkitExperimental : XToolkit2
/** Process all pending idle events
*/
void processEventsToIdle();
+
+
+ /** Get the number of OpenGL buffer swaps.
+ */
+ hyper getOpenGLBufferSwapCounter();
};
}; }; }; };
diff --git a/toolkit/Library_tk.mk b/toolkit/Library_tk.mk
index e5aaad5..1136e2e 100644
--- a/toolkit/Library_tk.mk
+++ b/toolkit/Library_tk.mk
@@ -21,7 +21,10 @@ $(eval $(call gb_Library_Library,tk))
$(eval $(call gb_Library_set_componentfile,tk,toolkit/util/tk))
-$(eval $(call gb_Library_use_external,tk,boost_headers))
+$(eval $(call gb_Library_use_externals,tk,\
+ boost_headers \
+ glew \
+))
$(eval $(call gb_Library_set_include,tk,\
$$(INCLUDE) \
diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx
index 32aa182..3b5548b 100644
--- a/toolkit/source/awt/vclxtoolkit.cxx
+++ b/toolkit/source/awt/vclxtoolkit.cxx
@@ -113,6 +113,7 @@
#include <vcl/window.hxx>
#include <vcl/wrkwin.hxx>
#include <vcl/throbber.hxx>
+#include <vcl/opengl/OpenGLWrapper.hxx>
#include "toolkit/awt/vclxspinbutton.hxx"
#include <tools/debug.hxx>
#include <comphelper/processfactory.hxx>
@@ -195,6 +196,9 @@ public:
virtual void SAL_CALL processEventsToIdle()
throw (css::uno::RuntimeException, std::exception) override;
+ virtual sal_Int64 SAL_CALL getOpenGLBufferSwapCounter()
+ throw (css::uno::RuntimeException, std::exception) override;
+
// css::awt::XToolkit
css::uno::Reference< css::awt::XWindowPeer > SAL_CALL getDesktopWindow( ) throw(css::uno::RuntimeException, std::exception) override;
css::awt::Rectangle SAL_CALL getWorkArea( ) throw(css::uno::RuntimeException, std::exception) override;
@@ -1906,6 +1910,8 @@ void SAL_CALL VCLXToolkit::reschedule()
Application::Reschedule(true);
}
+// css::awt::XToolkitExperimental
+
void SAL_CALL VCLXToolkit::processEventsToIdle()
throw (css::uno::RuntimeException, std::exception)
{
@@ -1913,6 +1919,12 @@ void SAL_CALL VCLXToolkit::processEventsToIdle()
Scheduler::ProcessEventsToIdle();
}
+sal_Int64 SAL_CALL VCLXToolkit::getOpenGLBufferSwapCounter()
+ throw (css::uno::RuntimeException, std::exception)
+{
+ return OpenGLWrapper::getBufferSwapCounter();
+}
+
// css:awt:XToolkitRobot
void SAL_CALL VCLXToolkit::keyPress( const css::awt::KeyEvent & aKeyEvent )
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index b0804a0..a9fe72f 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -106,10 +106,6 @@ $(eval $(call gb_Library_add_cxxflags,vcl,\
$(gb_OBJCXXFLAGS) \
))
-$(eval $(call gb_Library_add_exception_objects,vcl,\
- vcl/osx/OpenGLWrapper \
-))
-
endif
ifeq ($(ENABLE_JAVA),TRUE)
diff --git a/vcl/inc/OpenGLWrapper.hxx b/vcl/inc/OpenGLWrapper.hxx
deleted file mode 100644
index 9134801..0000000
--- a/vcl/inc/OpenGLWrapper.hxx
+++ /dev/null
@@ -1,20 +0,0 @@
-/* -*- 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/.
- */
-
-#include "AppKit/NSOpenGLView.h"
-#include "AppKit/NSOpenGL.h"
-
-namespace OpenGLWrapper
-{
- void swapBuffers(NSOpenGLView* pView);
- void makeCurrent(NSOpenGLView* pView);
- void resetCurrent();
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/osx/OpenGLWrapper.cxx b/vcl/osx/OpenGLWrapper.cxx
deleted file mode 100644
index fc008f4..0000000
--- a/vcl/osx/OpenGLWrapper.cxx
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -*- 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/.
- */
-
-#include "OpenGLWrapper.hxx"
-
-void OpenGLWrapper::swapBuffers(NSOpenGLView* pView)
-{
- [[pView openGLContext] flushBuffer];
-}
-
-void OpenGLWrapper::makeCurrent(NSOpenGLView* pView)
-{
- [[pView openGLContext] makeCurrentContext];
-}
-
-void OpenGLWrapper::resetCurrent()
-{
- [NSOpenGLContext clearCurrentContext];
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
index 82d987d..bdd6a4e 100644
--- a/vcl/source/opengl/OpenGLContext.cxx
+++ b/vcl/source/opengl/OpenGLContext.cxx
@@ -11,6 +11,7 @@
#include <vcl/opengl/OpenGLContext.hxx>
#include <vcl/opengl/OpenGLHelper.hxx>
+#include <vcl/opengl/OpenGLWrapper.hxx>
#include <vcl/syschild.hxx>
#include <vcl/sysdata.hxx>
@@ -22,7 +23,8 @@
#if defined(MACOSX)
#include <premac.h>
-#include "OpenGLWrapper.hxx"
+#include <AppKit/NSOpenGLView.h>
+#include <AppKit/NSOpenGL.h>
#include <postmac.h>
#endif
@@ -49,6 +51,8 @@ static std::vector<GLXContext> g_vShareList;
static std::vector<HGLRC> g_vShareList;
#endif
+static sal_Int64 nBufferSwapCounter = 0;
+
GLWindow::~GLWindow()
{
#if defined( UNX ) && !defined MACOSX && !defined IOS && !defined ANDROID && !defined(LIBO_HEADLESS)
@@ -991,7 +995,7 @@ bool OpenGLContext::ImplInit()
VCL_GL_INFO("OpenGLContext::ImplInit----start");
NSOpenGLView* pView = getOpenGLView();
- OpenGLWrapper::makeCurrent(pView);
+ [[pView openGLContext] makeCurrentContext];
bool bRet = InitGLEW();
InitGLEWDebugging();
@@ -1265,7 +1269,7 @@ void OpenGLContext::reset()
m_aGLWin.hRC = 0;
}
#elif defined( MACOSX )
- OpenGLWrapper::resetCurrent();
+ [NSOpenGLContext clearCurrentContext];
#elif defined( IOS ) || defined( ANDROID ) || defined(LIBO_HEADLESS)
// nothing
#elif defined( UNX )
@@ -1421,7 +1425,7 @@ void OpenGLContext::makeCurrent()
}
#elif defined( MACOSX )
NSOpenGLView* pView = getOpenGLView();
- OpenGLWrapper::makeCurrent(pView);
+ [[pView openGLContext] makeCurrentContext];
#elif defined( IOS ) || defined( ANDROID ) || defined(LIBO_HEADLESS)
// nothing
#elif defined( UNX )
@@ -1512,7 +1516,7 @@ void OpenGLContext::resetCurrent()
wglMakeCurrent(NULL, NULL);
#elif defined( MACOSX )
(void) this; // loplugin:staticmethods
- OpenGLWrapper::resetCurrent();
+ [NSOpenGLContext clearCurrentContext];
#elif defined( IOS ) || defined( ANDROID ) || defined(LIBO_HEADLESS)
// nothing
#elif defined( UNX )
@@ -1529,13 +1533,15 @@ void OpenGLContext::swapBuffers()
SwapBuffers(m_aGLWin.hDC);
#elif defined( MACOSX )
NSOpenGLView* pView = getOpenGLView();
- OpenGLWrapper::swapBuffers(pView);
+ [[pView openGLContext] flushBuffer];
#elif defined( IOS ) || defined( ANDROID ) || defined(LIBO_HEADLESS)
// nothing
#elif defined( UNX )
glXSwapBuffers(m_aGLWin.dpy, m_aGLWin.win);
#endif
+ nBufferSwapCounter++;
+
static bool bSleep = getenv("SAL_GL_SLEEP_ON_SWAP");
if (bSleep)
{
@@ -1545,6 +1551,11 @@ void OpenGLContext::swapBuffers()
}
}
+sal_Int64 OpenGLWrapper::getBufferSwapCounter()
+{
+ return nBufferSwapCounter;
+}
+
void OpenGLContext::sync()
{
OpenGLZone aZone;
More information about the Libreoffice-commits
mailing list