[Libreoffice-commits] core.git: 5 commits - cui/uiconfig drawinglayer/source include/vcl svtools/source vcl/inc vcl/source
Zolnai Tamás
tamas.zolnai at collabora.com
Fri Nov 21 03:16:18 PST 2014
cui/uiconfig/ui/optmemorypage.ui | 9 +
drawinglayer/source/processor2d/vclpixelprocessor2d.cxx | 10 -
include/vcl/graph.hxx | 6
svtools/source/graphic/grfcache.cxx | 3
svtools/source/graphic/grfmgr2.cxx | 11 -
vcl/inc/impgraph.hxx | 7
vcl/source/gdi/graph.cxx | 15 --
vcl/source/gdi/impgraph.cxx | 119 +++++-----------
vcl/source/opengl/OpenGLContext.cxx | 28 ++-
9 files changed, 76 insertions(+), 132 deletions(-)
New commits:
commit a87b1b07b91960601c7f39e2b40eba8ad50b1667
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Fri Nov 21 11:08:13 2014 +0100
Don't use a hard coded limit for size based auto swap out.
Now the graphic cache settings shows the real memory usage for
the users, so we can bequeth the decision of the limit to them.
Default is 200 MB.
See also:
dbdacc73ae154237314d599194cc686bd738a9bf
Change-Id: I463d31254f6f1836e1584d5acd692f38a97bfe39
diff --git a/svtools/source/graphic/grfmgr2.cxx b/svtools/source/graphic/grfmgr2.cxx
index 3b6a738..f469623 100644
--- a/svtools/source/graphic/grfmgr2.cxx
+++ b/svtools/source/graphic/grfmgr2.cxx
@@ -200,15 +200,8 @@ namespace
void GraphicManager::ImplCheckSizeOfSwappedInGraphics(const GraphicObject* pGraphicToIgnore)
{
// detect maximum allowed memory footprint. Use the user-settings of MaxCacheSize (defaulted
- // to 200MB). Limit to a useful maximum for 32Bit address space
-
- // max at 500MB; I experimented with 800 for debug and 750 for non-debug settings (pics start
- // missing when office reaches a mem footprint of 1.5GB) but some secure left over space for
- // app activity is needed
- static sal_uLong aMaxSize32Bit(500 * 1024 * 1024);
-
- // calc max allowed cache size
- const sal_uLong nMaxCacheSize(::std::min(GetMaxCacheSize(), aMaxSize32Bit));
+ // to 200MB).
+ const sal_uLong nMaxCacheSize(GetMaxCacheSize());
if(mnUsedSize > nMaxCacheSize)
{
commit 356006b4967fad26c7edd2126860abf01206fdbd
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Fri Nov 21 11:04:37 2014 +0100
Do not limit graphic cache size setting to 256 MB.
Change-Id: I62835721225cc39dd9fd5131843d57497794be95
diff --git a/cui/uiconfig/ui/optmemorypage.ui b/cui/uiconfig/ui/optmemorypage.ui
index 4646cda..d17f5ea 100644
--- a/cui/uiconfig/ui/optmemorypage.ui
+++ b/cui/uiconfig/ui/optmemorypage.ui
@@ -23,6 +23,13 @@
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
+ <object class="GtkAdjustment" id="adjustment4">
+ <property name="lower">1</property>
+ <property name="upper">4096</property>
+ <property name="value">1</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
<object class="GtkBox" id="OptMemoryPage">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -182,7 +189,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">•</property>
- <property name="adjustment">adjustment2</property>
+ <property name="adjustment">adjustment4</property>
</object>
<packing>
<property name="left_attach">1</property>
commit c35fae3f6b15221701cadfca3132803695607660
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Thu Nov 20 12:25:16 2014 +0100
fdo#81643: Regression in rendering of borders
Regerssion from:
6a3fb868b2b8af21f7b6140424b6f8377599a786
The new tryDrawBorderLinePrimitive2DDirect() draws rectangles, but
borders are assumed to be trapezoids. So simple comment this
out and use the original drawing method.
Change-Id: I755d5f0b3621bfc4c999ee994a375d4e5ebbcdf0
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index d287739..3ad7aba 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -275,7 +275,7 @@ namespace drawinglayer
return bTryWorked;
}
-
+/*
bool VclPixelProcessor2D::tryDrawBorderLinePrimitive2DDirect(
const drawinglayer::primitive2d::BorderLinePrimitive2D& rSource)
{
@@ -610,7 +610,7 @@ namespace drawinglayer
}
return false;
}
-
+*/
void VclPixelProcessor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate)
{
switch(rCandidate.getPrimitive2DID())
@@ -1226,10 +1226,10 @@ namespace drawinglayer
sal_uInt16 nAntiAliasing = mpOutputDevice->GetAntialiasing();
mpOutputDevice->SetAntialiasing(nAntiAliasing & ~ANTIALIASING_ENABLE_B2DDRAW);
- const drawinglayer::primitive2d::BorderLinePrimitive2D& rBorder =
- static_cast<const drawinglayer::primitive2d::BorderLinePrimitive2D&>(rCandidate);
+ //const drawinglayer::primitive2d::BorderLinePrimitive2D& rBorder =
+ //static_cast<const drawinglayer::primitive2d::BorderLinePrimitive2D&>(rCandidate);
- if (!tryDrawBorderLinePrimitive2DDirect(rBorder))
+ //if (!tryDrawBorderLinePrimitive2DDirect(rBorder))
process(rCandidate.get2DDecomposition(getViewInformation2D()));
mpOutputDevice->SetAntialiasing(nAntiAliasing);
commit d85b975667dfba755b9c952a2b8030a7f33bba66
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Thu Nov 20 12:07:10 2014 +0100
OpenGLContext stopped to support multisampling under linux.
glTF rendering needs to have a context with multisampling
so it also became broken.
Regresssion from:
07c0396ab9c94be5af392827f56f0d91551f3e25
This breaker change was made assuming getVisual{Info}() is always
called after the SystemChildWindow is already created, but
generateWinData() is run as part of the new child window creation.
It's aim to choose the best visual / FBConfig which potentially support
multisampling.
Change-Id: Ic881c6769260b5eaa9fed2552eca882191f6c56d
diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
index d1c1b72..dac3b5c 100644
--- a/vcl/source/opengl/OpenGLContext.cxx
+++ b/vcl/source/opengl/OpenGLContext.cxx
@@ -463,8 +463,7 @@ GLXFBConfig* getFBConfigForPixmap(Display* dpy, int& nBestFBC, bool bUseDoubleBu
return pFBC;
}
-#ifdef DBG_UTIL
-GLXFBConfig* getFBConfig(Display* dpy, Window win, int& nBestFBC, bool bUseDoubleBufferedRendering)
+GLXFBConfig* getFBConfig(Display* dpy, Window win, int& nBestFBC, bool bUseDoubleBufferedRendering, bool bWithSameVisualID)
{
if( dpy == 0 || !glXQueryExtension( dpy, NULL, NULL ) )
return NULL;
@@ -513,7 +512,7 @@ GLXFBConfig* getFBConfig(Display* dpy, Window win, int& nBestFBC, bool bUseDoubl
for(int i = 0; i < fbCount; ++i)
{
XVisualInfo* pVi = glXGetVisualFromFBConfig( dpy, pFBC[i] );
- if(pVi && pVi->visualid == xattr.visual->visualid)
+ if(pVi && (!bWithSameVisualID || pVi->visualid == xattr.visual->visualid) )
{
// pick the one with the most samples per pixel
int nSampleBuf = 0;
@@ -532,7 +531,6 @@ GLXFBConfig* getFBConfig(Display* dpy, Window win, int& nBestFBC, bool bUseDoubl
return pFBC;
}
-#endif
// we need them before glew can initialize them
// glew needs an OpenGL context so we need to get the address manually
@@ -662,7 +660,7 @@ bool OpenGLContext::ImplInit()
if (!mbPixmap && glXCreateContextAttribsARB && !mbRequestLegacyContext)
{
int best_fbc = -1;
- GLXFBConfig* pFBC = getFBConfig(m_aGLWin.dpy, m_aGLWin.win, best_fbc, mbUseDoubleBufferedRendering);
+ GLXFBConfig* pFBC = getFBConfig(m_aGLWin.dpy, m_aGLWin.win, best_fbc, mbUseDoubleBufferedRendering, true);
if (!pFBC)
return false;
@@ -1140,7 +1138,25 @@ SystemWindowData OpenGLContext::generateWinData(vcl::Window* pParent, bool)
if( dpy == 0 || !glXQueryExtension( dpy, NULL, NULL ) )
return aWinData;
- aWinData.pVisual = getVisual(dpy, win);
+ initOpenGLFunctionPointers();
+
+ int best_fbc = -1;
+ GLXFBConfig* pFBC = getFBConfig(dpy, win, best_fbc, true, false);
+
+ if (!pFBC)
+ return aWinData;
+
+ XVisualInfo* vi = 0;
+ if( best_fbc != -1 )
+ vi = glXGetVisualFromFBConfig( dpy, pFBC[best_fbc] );
+
+ XFree(pFBC);
+
+ if( vi )
+ {
+ SAL_INFO("vcl.opengl", "using VisualID " << vi->visualid);
+ aWinData.pVisual = (void*)(vi->visual);
+ }
return aWinData;
}
commit 577bfd169c0eb031aabcbb7c93f28a5c92366502
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Wed Nov 19 14:24:57 2014 +0100
maDocFileURLStr is always empty
Change-Id: I34c4a44d4fbe8d721a3a0bda5dbe35c68fe15c13
diff --git a/include/vcl/graph.hxx b/include/vcl/graph.hxx
index 8727b9c..1111dd4 100644
--- a/include/vcl/graph.hxx
+++ b/include/vcl/graph.hxx
@@ -170,12 +170,6 @@ public:
GraphicReader* GetContext();
void SetContext( GraphicReader* pReader );
-public:
-
- void SetDocFileName( const OUString& rName, sal_uLong nFilePos );
- const OUString& GetDocFileName() const;
- sal_uLong GetDocFilePos() const;
-
private:
friend class GraphicObject;
bool SwapOut();
diff --git a/svtools/source/graphic/grfcache.cxx b/svtools/source/graphic/grfcache.cxx
index ca4347e..ef025e3 100644
--- a/svtools/source/graphic/grfcache.cxx
+++ b/svtools/source/graphic/grfcache.cxx
@@ -265,8 +265,6 @@ void GraphicCacheEntry::ImplFillSubstitute( Graphic& rSubstitute )
const Size aPrefSize( rSubstitute.GetPrefSize() );
const MapMode aPrefMapMode( rSubstitute.GetPrefMapMode() );
const Link aAnimationNotifyHdl( rSubstitute.GetAnimationNotifyHdl() );
- const OUString aDocFileName( rSubstitute.GetDocFileName() );
- const sal_uLong nDocFilePos = rSubstitute.GetDocFilePos();
const GraphicType eOldType = rSubstitute.GetType();
const bool bDefaultType = ( rSubstitute.GetType() == GRAPHIC_DEFAULT );
@@ -299,7 +297,6 @@ void GraphicCacheEntry::ImplFillSubstitute( Graphic& rSubstitute )
rSubstitute.SetPrefSize( aPrefSize );
rSubstitute.SetPrefMapMode( aPrefMapMode );
rSubstitute.SetAnimationNotifyHdl( aAnimationNotifyHdl );
- rSubstitute.SetDocFileName( aDocFileName, nDocFilePos );
}
if( GFX_LINK_TYPE_NONE != maGfxLink.GetType() )
diff --git a/vcl/inc/impgraph.hxx b/vcl/inc/impgraph.hxx
index f376603..29a53c5 100644
--- a/vcl/inc/impgraph.hxx
+++ b/vcl/inc/impgraph.hxx
@@ -56,8 +56,6 @@ private:
ImpSwapFile* mpSwapFile;
GfxLink* mpGfxLink;
GraphicType meType;
- OUString maDocFileURLStr;
- sal_uLong mnDocFilePos;
mutable sal_uLong mnSizeBytes;
sal_uLong mnRefCount;
bool mbSwapOut;
@@ -131,11 +129,6 @@ private:
void ImplSetContext( GraphicReader* pReader );
private:
-
- void ImplSetDocFileName( const OUString& rName, sal_uLong nFilePos );
- const OUString& ImplGetDocFileName() const;
- sal_uLong ImplGetDocFilePos() const { return mnDocFilePos;}
-
bool ImplReadEmbedded( SvStream& rIStream );
bool ImplWriteEmbedded( SvStream& rOStream );
diff --git a/vcl/source/gdi/graph.cxx b/vcl/source/gdi/graph.cxx
index 2e39e5e..80522e7 100644
--- a/vcl/source/gdi/graph.cxx
+++ b/vcl/source/gdi/graph.cxx
@@ -501,21 +501,6 @@ void Graphic::SetContext( GraphicReader* pReader )
mpImpGraphic->ImplSetContext( pReader );
}
-void Graphic::SetDocFileName( const OUString& rName, sal_uLong nFilePos )
-{
- mpImpGraphic->ImplSetDocFileName( rName, nFilePos );
-}
-
-const OUString& Graphic::GetDocFileName() const
-{
- return mpImpGraphic->ImplGetDocFileName();
-}
-
-sal_uLong Graphic::GetDocFilePos() const
-{
- return mpImpGraphic->ImplGetDocFilePos();
-}
-
bool Graphic::SwapOut()
{
ImplTestRefCount();
diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx
index 27bd0b9..bb31b81 100644
--- a/vcl/source/gdi/impgraph.cxx
+++ b/vcl/source/gdi/impgraph.cxx
@@ -95,7 +95,6 @@ ImpGraphic::ImpGraphic() :
mpSwapFile ( NULL ),
mpGfxLink ( NULL ),
meType ( GRAPHIC_NONE ),
- mnDocFilePos ( 0UL ),
mnSizeBytes ( 0UL ),
mnRefCount ( 1UL ),
mbSwapOut ( false ),
@@ -109,8 +108,6 @@ ImpGraphic::ImpGraphic( const ImpGraphic& rImpGraphic ) :
mpContext ( NULL ),
mpSwapFile ( rImpGraphic.mpSwapFile ),
meType ( rImpGraphic.meType ),
- maDocFileURLStr ( rImpGraphic.maDocFileURLStr ),
- mnDocFilePos ( rImpGraphic.mnDocFilePos ),
mnSizeBytes ( rImpGraphic.mnSizeBytes ),
mnRefCount ( 1UL ),
mbSwapOut ( rImpGraphic.mbSwapOut ),
@@ -142,7 +139,6 @@ ImpGraphic::ImpGraphic( const Bitmap& rBitmap ) :
mpSwapFile ( NULL ),
mpGfxLink ( NULL ),
meType ( GRAPHIC_BITMAP ),
- mnDocFilePos ( 0UL ),
mnSizeBytes ( 0UL ),
mnRefCount ( 1UL ),
mbSwapOut ( false ),
@@ -157,7 +153,6 @@ ImpGraphic::ImpGraphic( const BitmapEx& rBitmapEx ) :
mpSwapFile ( NULL ),
mpGfxLink ( NULL ),
meType ( GRAPHIC_BITMAP ),
- mnDocFilePos ( 0UL ),
mnSizeBytes ( 0UL ),
mnRefCount ( 1UL ),
mbSwapOut ( false ),
@@ -171,7 +166,6 @@ ImpGraphic::ImpGraphic(const SvgDataPtr& rSvgDataPtr)
mpSwapFile( NULL ),
mpGfxLink( NULL ),
meType( rSvgDataPtr.get() ? GRAPHIC_BITMAP : GRAPHIC_NONE ),
- mnDocFilePos( 0UL ),
mnSizeBytes( 0UL ),
mnRefCount( 1UL ),
mbSwapOut( false ),
@@ -187,7 +181,6 @@ ImpGraphic::ImpGraphic( const Animation& rAnimation ) :
mpSwapFile ( NULL ),
mpGfxLink ( NULL ),
meType ( GRAPHIC_BITMAP ),
- mnDocFilePos ( 0UL ),
mnSizeBytes ( 0UL ),
mnRefCount ( 1UL ),
mbSwapOut ( false ),
@@ -202,7 +195,6 @@ ImpGraphic::ImpGraphic( const GDIMetaFile& rMtf ) :
mpSwapFile ( NULL ),
mpGfxLink ( NULL ),
meType ( GRAPHIC_GDIMETAFILE ),
- mnDocFilePos ( 0UL ),
mnSizeBytes ( 0UL ),
mnRefCount ( 1UL ),
mbSwapOut ( false ),
@@ -244,8 +236,6 @@ ImpGraphic& ImpGraphic::operator=( const ImpGraphic& rImpGraphic )
if( !mbSwapUnderway )
{
- maDocFileURLStr = rImpGraphic.maDocFileURLStr;
- mnDocFilePos = rImpGraphic.mnDocFilePos;
mbSwapOut = rImpGraphic.mbSwapOut;
mpSwapFile = rImpGraphic.mpSwapFile;
@@ -393,8 +383,6 @@ void ImpGraphic::ImplClear()
}
mbSwapOut = false;
- mnDocFilePos = 0UL;
- maDocFileURLStr.clear();
// cleanup
ImplClearGraphics( false );
@@ -953,22 +941,6 @@ void ImpGraphic::ImplSetContext( GraphicReader* pReader )
mpContext = pReader;
}
-void ImpGraphic::ImplSetDocFileName( const OUString& rName, sal_uLong nFilePos )
-{
- const INetURLObject aURL( rName );
-
- DBG_ASSERT( rName.isEmpty() || ( aURL.GetProtocol() != INET_PROT_NOT_VALID ), "Graphic::SetDocFileName(...): invalid URL" );
-
- maDocFileURLStr = aURL.GetMainURL( INetURLObject::NO_DECODE );
- mnDocFilePos = nFilePos;
-}
-
-const OUString& ImpGraphic::ImplGetDocFileName() const
-{
- return maDocFileURLStr;
-}
-
-
bool ImpGraphic::ImplReadEmbedded( SvStream& rIStm )
{
MapMode aMapMode;
@@ -1184,66 +1156,58 @@ bool ImpGraphic::ImplSwapOut()
if( !ImplIsSwapOut() )
{
- if (maDocFileURLStr.isEmpty())
- {
- ::utl::TempFile aTempFile;
- const INetURLObject aTmpURL( aTempFile.GetURL() );
+ ::utl::TempFile aTempFile;
+ const INetURLObject aTmpURL( aTempFile.GetURL() );
- if( !aTmpURL.GetMainURL( INetURLObject::NO_DECODE ).isEmpty() )
+ if( !aTmpURL.GetMainURL( INetURLObject::NO_DECODE ).isEmpty() )
+ {
+ boost::scoped_ptr<SvStream> pOStm;
+ try
{
- boost::scoped_ptr<SvStream> pOStm;
- try
- {
- pOStm.reset(::utl::UcbStreamHelper::CreateStream( aTmpURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_READWRITE | STREAM_SHARE_DENYWRITE ));
- }
- catch( const ::com::sun::star::uno::Exception& )
+ pOStm.reset(::utl::UcbStreamHelper::CreateStream( aTmpURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_READWRITE | STREAM_SHARE_DENYWRITE ));
+ }
+ catch( const ::com::sun::star::uno::Exception& )
+ {
+ }
+ if( pOStm )
+ {
+ pOStm->SetVersion( SOFFICE_FILEFORMAT_50 );
+ pOStm->SetCompressMode( COMPRESSMODE_NATIVE );
+
+ if( ( bRet = ImplSwapOut( pOStm.get() ) ) )
{
+ mpSwapFile = new ImpSwapFile;
+ mpSwapFile->nRefCount = 1;
+ mpSwapFile->aSwapURL = aTmpURL;
}
- if( pOStm )
+ else
{
- pOStm->SetVersion( SOFFICE_FILEFORMAT_50 );
- pOStm->SetCompressMode( COMPRESSMODE_NATIVE );
+ pOStm.reset();
- if( ( bRet = ImplSwapOut( pOStm.get() ) ) )
+ try
{
- mpSwapFile = new ImpSwapFile;
- mpSwapFile->nRefCount = 1;
- mpSwapFile->aSwapURL = aTmpURL;
+ ::ucbhelper::Content aCnt( aTmpURL.GetMainURL( INetURLObject::NO_DECODE ),
+ ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >(),
+ comphelper::getProcessComponentContext() );
+
+ aCnt.executeCommand( OUString("delete"),
+ ::com::sun::star::uno::makeAny( true ) );
}
- else
+ catch( const ::com::sun::star::ucb::ContentCreationException& )
+ {
+ }
+ catch( const ::com::sun::star::uno::RuntimeException& )
+ {
+ }
+ catch( const ::com::sun::star::ucb::CommandAbortedException& )
+ {
+ }
+ catch( const ::com::sun::star::uno::Exception& )
{
- pOStm.reset();
-
- try
- {
- ::ucbhelper::Content aCnt( aTmpURL.GetMainURL( INetURLObject::NO_DECODE ),
- ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >(),
- comphelper::getProcessComponentContext() );
-
- aCnt.executeCommand( OUString("delete"),
- ::com::sun::star::uno::makeAny( true ) );
- }
- catch( const ::com::sun::star::ucb::ContentCreationException& )
- {
- }
- catch( const ::com::sun::star::uno::RuntimeException& )
- {
- }
- catch( const ::com::sun::star::ucb::CommandAbortedException& )
- {
- }
- catch( const ::com::sun::star::uno::Exception& )
- {
- }
}
}
}
}
- else
- {
- ImplClearGraphics( true );
- bRet = mbSwapOut = true;
- }
}
return bRet;
@@ -1292,8 +1256,6 @@ bool ImpGraphic::ImplSwapIn()
if( mpSwapFile )
aSwapURL = mpSwapFile->aSwapURL.GetMainURL( INetURLObject::NO_DECODE );
- else
- aSwapURL = maDocFileURLStr;
if( !aSwapURL.isEmpty() )
{
@@ -1311,9 +1273,6 @@ bool ImpGraphic::ImplSwapIn()
pIStm->SetVersion( SOFFICE_FILEFORMAT_50 );
pIStm->SetCompressMode( COMPRESSMODE_NATIVE );
- if( !mpSwapFile )
- pIStm->Seek( mnDocFilePos );
-
bRet = ImplSwapIn( pIStm.get() );
pIStm.reset();
More information about the Libreoffice-commits
mailing list