[Libreoffice-commits] core.git: Branch 'feature/opengl-vcl' - 4 commits - vcl/inc vcl/Library_vcl.mk vcl/source vcl/unx
Markus Mohrhard
markus.mohrhard at collabora.co.uk
Mon Oct 27 12:37:52 PDT 2014
vcl/Library_vcl.mk | 1 +
vcl/inc/unx/salframe.h | 5 ++++-
vcl/source/opengl/OpenGLContext.cxx | 2 +-
vcl/unx/generic/gdi/salgdi.cxx | 10 ++++++----
vcl/unx/generic/window/salframe.cxx | 5 +++++
5 files changed, 17 insertions(+), 6 deletions(-)
New commits:
commit 3b497a3080ea090978824321f99779a10b8df6e9
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Oct 27 20:38:46 2014 +0100
better way to access the X11 window
Now any plugin that implements this class will automatically work.
Change-Id: I7b00ef3e76dfd24e497a31fe4d3c468eb5b4b654
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index c680634..8580701 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -554,6 +554,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
vcl/unx/generic/plugadapt/salplug \
vcl/unx/generic/printer/jobdata \
vcl/unx/generic/printer/ppdparser \
+ vcl/unx/generic/gdi/x11windowprovider \
$(if $(filter TRUE,$(ENABLE_CUPS)),\
vcl/unx/generic/printer/cupsmgr \
vcl/unx/generic/printer/printerinfomanager \
diff --git a/vcl/inc/unx/salframe.h b/vcl/inc/unx/salframe.h
index 637ef67..9b737f9 100644
--- a/vcl/inc/unx/salframe.h
+++ b/vcl/inc/unx/salframe.h
@@ -26,6 +26,7 @@
#include <unx/salunx.h>
#include <unx/saltype.h>
#include <unx/saldisp.hxx>
+#include <unx/x11windowprovider.hxx>
#include <salframe.hxx>
#include <salwtype.hxx>
#include <salinst.hxx>
@@ -48,7 +49,7 @@ namespace vcl_sal { class WMAdaptor; class NetWMAdaptor; class GnomeWMAdaptor; }
#define SHOWSTATE_NORMAL 1
#define SHOWSTATE_HIDDEN 2
-class VCLPLUG_GEN_PUBLIC X11SalFrame : public SalFrame
+class VCLPLUG_GEN_PUBLIC X11SalFrame : public SalFrame, public X11WindowProvider
{
friend class vcl_sal::WMAdaptor;
friend class vcl_sal::NetWMAdaptor;
@@ -270,6 +271,8 @@ public:
// done setting up the clipregion
virtual void EndSetClipRegion() SAL_OVERRIDE;
+ virtual Window GetX11Window() SAL_OVERRIDE;
+
static Bool checkKeyReleaseForRepeat( Display*, XEvent*, XPointer pX11SalFrame );
/// @internal
diff --git a/vcl/unx/generic/gdi/salgdi.cxx b/vcl/unx/generic/gdi/salgdi.cxx
index d51d24f..9b23a64 100644
--- a/vcl/unx/generic/gdi/salgdi.cxx
+++ b/vcl/unx/generic/gdi/salgdi.cxx
@@ -51,6 +51,7 @@
#include <unx/x11/xlimits.hxx>
#include "salgdiimpl.hxx"
+#include "unx/x11windowprovider.hxx"
#include "gdiimpl.hxx"
#include "openglgdiimpl.hxx"
@@ -154,14 +155,11 @@ void X11SalGraphics::SetDrawable( Drawable aDrawable, SalX11Screen nXScreen )
else
{
OpenGLSalGraphicsImpl* pOpenGLImpl = dynamic_cast<OpenGLSalGraphicsImpl*>(mpImpl.get());
- if (pOpenGLImpl && m_pFrame)
+ if (pOpenGLImpl && m_pFrame && dynamic_cast<X11WindowProvider*>(m_pFrame))
{
- if( dynamic_cast<X11SalFrame*>(m_pFrame))
- {
- Window aWin = dynamic_cast<X11SalFrame*>(m_pFrame)->GetDrawable();
+ Window aWin = dynamic_cast<X12WindowProvider*>(m_pFrame)->GetX11Window();
pOpenGLImpl->GetOpenGLContext().init(GetXDisplay(),
aWin, m_nXScreen.getXScreen());
- }
}
}
nTextPixel_ = GetPixel( nTextColor_ );
diff --git a/vcl/unx/generic/window/salframe.cxx b/vcl/unx/generic/window/salframe.cxx
index 0bda729..6c98968 100644
--- a/vcl/unx/generic/window/salframe.cxx
+++ b/vcl/unx/generic/window/salframe.cxx
@@ -4268,4 +4268,9 @@ void X11SalFrame::EndSetClipRegion()
}
+Window X11SalFrame::GetX11Window()
+{
+ return mhWindow;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit b5b81f8a6588b0eb2dd1cd19f73606220621c1b2
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Oct 27 20:02:10 2014 +0100
handle the OpenGL context for the x11 backend
Change-Id: If3f5f879cc4fc0b78c325908c3358d09194144c6
diff --git a/vcl/unx/generic/gdi/salgdi.cxx b/vcl/unx/generic/gdi/salgdi.cxx
index 7e4100b..d51d24f 100644
--- a/vcl/unx/generic/gdi/salgdi.cxx
+++ b/vcl/unx/generic/gdi/salgdi.cxx
@@ -154,10 +154,14 @@ void X11SalGraphics::SetDrawable( Drawable aDrawable, SalX11Screen nXScreen )
else
{
OpenGLSalGraphicsImpl* pOpenGLImpl = dynamic_cast<OpenGLSalGraphicsImpl*>(mpImpl.get());
- if (pOpenGLImpl)
+ if (pOpenGLImpl && m_pFrame)
{
- pOpenGLImpl->GetOpenGLContext().init(GetXDisplay(),
- GetDisplay()->GetDrawable(m_nXScreen), m_nXScreen.getXScreen());
+ if( dynamic_cast<X11SalFrame*>(m_pFrame))
+ {
+ Window aWin = dynamic_cast<X11SalFrame*>(m_pFrame)->GetDrawable();
+ pOpenGLImpl->GetOpenGLContext().init(GetXDisplay(),
+ aWin, m_nXScreen.getXScreen());
+ }
}
}
nTextPixel_ = GetPixel( nTextColor_ );
commit c017d8d7ad6676aab167abaa358e33b9c349b3f2
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Oct 27 20:00:25 2014 +0100
make sure that the frame is set when we need it
Change-Id: I1a7a346a53a6ffe409a69e7678b000f2ecafd199
diff --git a/vcl/unx/generic/gdi/salgdi.cxx b/vcl/unx/generic/gdi/salgdi.cxx
index 94d03a9..7e4100b 100644
--- a/vcl/unx/generic/gdi/salgdi.cxx
+++ b/vcl/unx/generic/gdi/salgdi.cxx
@@ -169,10 +169,10 @@ void X11SalGraphics::Init( SalFrame *pFrame, Drawable aTarget,
{
m_pColormap = &GetGenericData()->GetSalDisplay()->GetColormap(nXScreen);
m_nXScreen = nXScreen;
+ m_pFrame = pFrame;
SetDrawable( aTarget, nXScreen );
bWindow_ = true;
- m_pFrame = pFrame;
m_pVDev = NULL;
}
commit 0c4414a204f517a920fd8323d3b3ca3204925f00
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sat Oct 25 12:39:04 2014 +0200
fix misleading log message
Change-Id: I8ae574a5eb1c4685abe64e6694d9a71359d6a4d1
diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
index cd69fc7..e5b5c6f 100644
--- a/vcl/source/opengl/OpenGLContext.cxx
+++ b/vcl/source/opengl/OpenGLContext.cxx
@@ -374,7 +374,7 @@ GLXFBConfig* getFBConfig(Display* dpy, Window win, int& nBestFBC)
if( dpy == 0 || !glXQueryExtension( dpy, NULL, NULL ) )
return NULL;
- SAL_INFO("vcl.opengl", "parent window: " << win);
+ SAL_INFO("vcl.opengl", "window: " << win);
XWindowAttributes xattr;
XGetWindowAttributes( dpy, win, &xattr );
More information about the Libreoffice-commits
mailing list