[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