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 @@
class SalDisplay;
class X11OpenGLSalGraphics;
class X11SalGraphics;
class X11OpenGLSalVirtualDevice : public SalVirtualDevice
{
......
......@@ -26,12 +26,13 @@
#include <gdk/gdkkeysyms.h>
#include <postx.h>
#include <unx/gtk/gtkframe.hxx>
#if GTK_CHECK_VERSION(3,0,0)
#include <headless/svpgdi.hxx>
#include "textrender.hxx"
class GtkSalFrame;
class GtkSalGraphics : public SvpSalGraphics
{
GtkSalFrame *mpFrame;
......
......@@ -34,6 +34,8 @@ namespace com { namespace sun { namespace star { namespace datatransfer {
} } } }
class SalXLib;
class X11SalGraphics;
class VCLPLUG_GEN_PUBLIC X11SalInstance : public SalGenericInstance
{
private:
......@@ -53,6 +55,10 @@ public:
virtual SalObject* CreateObject( SalFrame* pParent, SystemWindowData* pWindowData, bool bShow = true ) 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,
long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData = NULL ) SAL_OVERRIDE;
......
......@@ -44,10 +44,9 @@ class X11SalVirtualDevice : public SalVirtualDevice
bool bExternPixmap_;
public:
X11SalVirtualDevice( SalGraphics *pGraphics,
long &nDX, long &nDY,
sal_uInt16 nBitCount,
const SystemGraphicsData *pData );
X11SalVirtualDevice(SalGraphics *pGraphics, long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData, X11SalGraphics* pNewGraphics);
virtual ~X11SalVirtualDevice();
Display *GetXDisplay() const
......
......@@ -35,14 +35,20 @@
#include <vcl/opengl/OpenGLHelper.hxx>
#include <opengl/x11/salvd.hxx>
SalVirtualDevice* X11SalInstance::CreateVirtualDevice( SalGraphics* pGraphics,
long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData )
SalVirtualDevice* X11SalInstance::CreateX11VirtualDevice(SalGraphics* pGraphics,
long &nDX, long &nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData,
X11SalGraphics* pNewGraphics)
{
if (OpenGLHelper::isVCLOpenGLEnabled())
return new X11OpenGLSalVirtualDevice( pGraphics, nDX, nDY, nBitCount, pData );
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,
......@@ -81,12 +87,12 @@ void X11SalGraphics::Init( X11SalVirtualDevice *pDevice, SalColormap* pColormap,
mxImpl->Init();
}
X11SalVirtualDevice::X11SalVirtualDevice( SalGraphics* pGraphics,
long &nDX, long &nDY,
sal_uInt16 nBitCount,
const SystemGraphicsData *pData ) :
m_nXScreen( 0 ),
bGraphics_( false )
X11SalVirtualDevice::X11SalVirtualDevice(SalGraphics* pGraphics, long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData,
X11SalGraphics* pNewGraphics) :
pGraphics_(pNewGraphics),
m_nXScreen(0),
bGraphics_(false)
{
SalColormap* pColormap = NULL;
bool bDeleteColormap = false;
......@@ -95,7 +101,6 @@ X11SalVirtualDevice::X11SalVirtualDevice( SalGraphics* pGraphics,
nBitCount = pGraphics->GetBitCount();
pDisplay_ = vcl_sal::getSalDisplay(GetGenericData());
pGraphics_ = new X11SalGraphics();
nDepth_ = nBitCount;
if( pData && pData->hDrawable != None )
......
......@@ -23,6 +23,7 @@
#include <unx/gtk/gtkdata.hxx>
#include <unx/gtk/gtkinst.hxx>
#include <unx/salobj.h>
#include <unx/gtk/gtkgdi.hxx>
#include <unx/gtk/gtkframe.hxx>
#include <unx/gtk/gtkobject.hxx>
#include <unx/gtk/atkbridge.hxx>
......@@ -320,7 +321,10 @@ SalVirtualDevice* GtkInstance::CreateVirtualDevice( SalGraphics *pG,
pNew->SetSize( nDX, nDY );
return pNew;
#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
}
......
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