Kaydet (Commit) 822b0bf9 authored tarafından Jan Holesovsky's avatar Jan Holesovsky Kaydeden (comit) Andras Timar

rendercontext: Initialize X11SalVirtualDevice with appropriate SalGraphics.

Change-Id: I4230412ccc389b8ba6768229b569d7075e7ac466
Reviewed-on: https://gerrit.libreoffice.org/15979Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarAdolfo Jayme Barrientos <fitojb@ubuntu.com>
üst 67b2edc2
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
class SalDisplay; class SalDisplay;
class X11OpenGLSalGraphics; class X11OpenGLSalGraphics;
class X11SalGraphics;
class X11OpenGLSalVirtualDevice : public SalVirtualDevice class X11OpenGLSalVirtualDevice : public SalVirtualDevice
{ {
......
...@@ -26,12 +26,13 @@ ...@@ -26,12 +26,13 @@
#include <gdk/gdkkeysyms.h> #include <gdk/gdkkeysyms.h>
#include <postx.h> #include <postx.h>
#include <unx/gtk/gtkframe.hxx>
#if GTK_CHECK_VERSION(3,0,0) #if GTK_CHECK_VERSION(3,0,0)
#include <headless/svpgdi.hxx> #include <headless/svpgdi.hxx>
#include "textrender.hxx" #include "textrender.hxx"
class GtkSalFrame;
class GtkSalGraphics : public SvpSalGraphics class GtkSalGraphics : public SvpSalGraphics
{ {
GtkSalFrame *mpFrame; GtkSalFrame *mpFrame;
......
...@@ -34,6 +34,8 @@ namespace com { namespace sun { namespace star { namespace datatransfer { ...@@ -34,6 +34,8 @@ namespace com { namespace sun { namespace star { namespace datatransfer {
} } } } } } } }
class SalXLib; class SalXLib;
class X11SalGraphics;
class VCLPLUG_GEN_PUBLIC X11SalInstance : public SalGenericInstance class VCLPLUG_GEN_PUBLIC X11SalInstance : public SalGenericInstance
{ {
private: private:
...@@ -53,6 +55,10 @@ public: ...@@ -53,6 +55,10 @@ public:
virtual SalObject* CreateObject( SalFrame* pParent, SystemWindowData* pWindowData, bool bShow = true ) SAL_OVERRIDE; virtual SalObject* CreateObject( SalFrame* pParent, SystemWindowData* pWindowData, bool bShow = true ) SAL_OVERRIDE;
virtual void DestroyObject( SalObject* pObject ) SAL_OVERRIDE; virtual void DestroyObject( SalObject* pObject ) SAL_OVERRIDE;
/// Gtk vclplug needs to pass GtkSalGraphics to X11SalVirtualDevice, so create it, and pass as pNewGraphics.
virtual SalVirtualDevice* CreateX11VirtualDevice(SalGraphics* pGraphics, long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData* pData, X11SalGraphics* pNewGraphics);
virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics, virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics,
long &nDX, long &nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData = NULL ) SAL_OVERRIDE; sal_uInt16 nBitCount, const SystemGraphicsData *pData = NULL ) SAL_OVERRIDE;
......
...@@ -44,10 +44,9 @@ class X11SalVirtualDevice : public SalVirtualDevice ...@@ -44,10 +44,9 @@ class X11SalVirtualDevice : public SalVirtualDevice
bool bExternPixmap_; bool bExternPixmap_;
public: public:
X11SalVirtualDevice( SalGraphics *pGraphics, X11SalVirtualDevice(SalGraphics *pGraphics, long &nDX, long &nDY,
long &nDX, long &nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData, X11SalGraphics* pNewGraphics);
sal_uInt16 nBitCount,
const SystemGraphicsData *pData );
virtual ~X11SalVirtualDevice(); virtual ~X11SalVirtualDevice();
Display *GetXDisplay() const Display *GetXDisplay() const
......
...@@ -35,14 +35,20 @@ ...@@ -35,14 +35,20 @@
#include <vcl/opengl/OpenGLHelper.hxx> #include <vcl/opengl/OpenGLHelper.hxx>
#include <opengl/x11/salvd.hxx> #include <opengl/x11/salvd.hxx>
SalVirtualDevice* X11SalInstance::CreateVirtualDevice( SalGraphics* pGraphics, SalVirtualDevice* X11SalInstance::CreateX11VirtualDevice(SalGraphics* pGraphics,
long &nDX, long &nDY, long &nDX, long &nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData,
sal_uInt16 nBitCount, const SystemGraphicsData *pData ) X11SalGraphics* pNewGraphics)
{ {
if (OpenGLHelper::isVCLOpenGLEnabled()) if (OpenGLHelper::isVCLOpenGLEnabled())
return new X11OpenGLSalVirtualDevice( pGraphics, nDX, nDY, nBitCount, pData ); return new X11OpenGLSalVirtualDevice( pGraphics, nDX, nDY, nBitCount, pData );
else else
return new X11SalVirtualDevice( pGraphics, nDX, nDY, nBitCount, pData ); return new X11SalVirtualDevice(pGraphics, nDX, nDY, nBitCount, pData, pNewGraphics);
}
SalVirtualDevice* X11SalInstance::CreateVirtualDevice(SalGraphics* pGraphics,
long &nDX, long &nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData)
{
return CreateX11VirtualDevice(pGraphics, nDX, nDY, nBitCount, pData, new X11SalGraphics());
} }
void X11SalGraphics::Init( X11SalVirtualDevice *pDevice, SalColormap* pColormap, void X11SalGraphics::Init( X11SalVirtualDevice *pDevice, SalColormap* pColormap,
...@@ -81,12 +87,12 @@ void X11SalGraphics::Init( X11SalVirtualDevice *pDevice, SalColormap* pColormap, ...@@ -81,12 +87,12 @@ void X11SalGraphics::Init( X11SalVirtualDevice *pDevice, SalColormap* pColormap,
mxImpl->Init(); mxImpl->Init();
} }
X11SalVirtualDevice::X11SalVirtualDevice( SalGraphics* pGraphics, X11SalVirtualDevice::X11SalVirtualDevice(SalGraphics* pGraphics, long &nDX, long &nDY,
long &nDX, long &nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData,
sal_uInt16 nBitCount, X11SalGraphics* pNewGraphics) :
const SystemGraphicsData *pData ) : pGraphics_(pNewGraphics),
m_nXScreen( 0 ), m_nXScreen(0),
bGraphics_( false ) bGraphics_(false)
{ {
SalColormap* pColormap = NULL; SalColormap* pColormap = NULL;
bool bDeleteColormap = false; bool bDeleteColormap = false;
...@@ -95,7 +101,6 @@ X11SalVirtualDevice::X11SalVirtualDevice( SalGraphics* pGraphics, ...@@ -95,7 +101,6 @@ X11SalVirtualDevice::X11SalVirtualDevice( SalGraphics* pGraphics,
nBitCount = pGraphics->GetBitCount(); nBitCount = pGraphics->GetBitCount();
pDisplay_ = vcl_sal::getSalDisplay(GetGenericData()); pDisplay_ = vcl_sal::getSalDisplay(GetGenericData());
pGraphics_ = new X11SalGraphics();
nDepth_ = nBitCount; nDepth_ = nBitCount;
if( pData && pData->hDrawable != None ) if( pData && pData->hDrawable != None )
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <unx/gtk/gtkdata.hxx> #include <unx/gtk/gtkdata.hxx>
#include <unx/gtk/gtkinst.hxx> #include <unx/gtk/gtkinst.hxx>
#include <unx/salobj.h> #include <unx/salobj.h>
#include <unx/gtk/gtkgdi.hxx>
#include <unx/gtk/gtkframe.hxx> #include <unx/gtk/gtkframe.hxx>
#include <unx/gtk/gtkobject.hxx> #include <unx/gtk/gtkobject.hxx>
#include <unx/gtk/atkbridge.hxx> #include <unx/gtk/atkbridge.hxx>
...@@ -320,7 +321,10 @@ SalVirtualDevice* GtkInstance::CreateVirtualDevice( SalGraphics *pG, ...@@ -320,7 +321,10 @@ SalVirtualDevice* GtkInstance::CreateVirtualDevice( SalGraphics *pG,
pNew->SetSize( nDX, nDY ); pNew->SetSize( nDX, nDY );
return pNew; return pNew;
#else #else
return X11SalInstance::CreateVirtualDevice( pG, nDX, nDY, nBitCount, pGd ); GtkSalGraphics *pGtkSalGraphics = dynamic_cast<GtkSalGraphics*>(pG);
assert(pGtkSalGraphics);
return CreateX11VirtualDevice(pG, nDX, nDY, nBitCount, pGd,
new GtkSalGraphics(pGtkSalGraphics->GetGtkFrame(), pGtkSalGraphics->GetGtkWidget()));
#endif #endif
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment