summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-12-01 20:35:28 +0000
committerCaolán McNamara <caolanm@redhat.com>2015-12-02 14:43:36 +0000
commit17f6ebef2f3edbb7876524118dfe633025dc289b (patch)
treeb9155cdfb0f717bf292d3b74cccc87cd3a2bb5ad /vcl
parent22c276885e5ebd9c0c1ec06ccb6b021a471a452f (diff)
valgrind: scary warning that the cairo font options were deleted before use
Change-Id: I58427aafb30eca64a67bcf7dd9a7738d8da3e085 (cherry picked from commit 3520b0f82aa2146958fbc1bda1cf7e9b5beb9a5d)
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/salinst.hxx4
-rw-r--r--vcl/inc/unx/gtk/gtkinst.hxx2
-rw-r--r--vcl/source/app/settings.cxx16
-rw-r--r--vcl/unx/generic/gdi/cairotextrender.cxx12
-rw-r--r--vcl/unx/gtk/gtkinst.cxx5
-rw-r--r--vcl/unx/gtk/salnativewidgets-gtk.cxx4
-rw-r--r--vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx3
7 files changed, 17 insertions, 29 deletions
diff --git a/vcl/inc/salinst.hxx b/vcl/inc/salinst.hxx
index b20448f3e7bf..033e739468dc 100644
--- a/vcl/inc/salinst.hxx
+++ b/vcl/inc/salinst.hxx
@@ -62,6 +62,8 @@ enum class SalFrameStyleFlags;
enum SalYieldResult { EVENT, TIMEOUT };
+typedef struct _cairo_font_options cairo_font_options_t;
+
class VCL_PLUGIN_PUBLIC SalInstance
{
private:
@@ -178,6 +180,8 @@ public:
/// get information about underlying versions
virtual OUString getOSVersion() { return OUString("-"); }
+
+ virtual const cairo_font_options_t* GetCairoFontOptions() { return nullptr; }
};
// called from SVMain
diff --git a/vcl/inc/unx/gtk/gtkinst.hxx b/vcl/inc/unx/gtk/gtkinst.hxx
index 002b6549ec17..a7c489b7bf5d 100644
--- a/vcl/inc/unx/gtk/gtkinst.hxx
+++ b/vcl/inc/unx/gtk/gtkinst.hxx
@@ -96,6 +96,8 @@ public:
virtual css::uno::Reference< css::uno::XInterface > CreateClipboard( const css::uno::Sequence< css::uno::Any >& i_rArguments ) override;
#endif
+ virtual const cairo_font_options_t* GetCairoFontOptions() override;
+
void RemoveTimer (SalTimer *pTimer);
std::shared_ptr<vcl::unx::GtkPrintWrapper> getPrintWrapper() const;
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index e910a92db274..70a56a340515 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -194,7 +194,6 @@ struct ImplStyleData
bool mbPrimaryButtonWarpsSlider;
DialogStyle maDialogStyle;
FrameStyle maFrameStyle;
- const void* mpFontOptions;
sal_uInt16 mnEdgeBlending;
Color maEdgeBlendingTopLeftColor;
@@ -549,7 +548,6 @@ ImplStyleData::ImplStyleData() :
mbAutoMnemonic = true;
mnToolbarIconSize = ToolbarIconSize::Unknown;
meUseImagesInMenus = TRISTATE_INDET;
- mpFontOptions = nullptr;
mnEdgeBlending = 35;
maEdgeBlendingTopLeftColor = RGB_COLORDATA(0xC0, 0xC0, 0xC0);
maEdgeBlendingBottomRightColor = RGB_COLORDATA(0x40, 0x40, 0x40);
@@ -670,7 +668,6 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
mnToolbarIconSize = rData.mnToolbarIconSize;
mIconThemeScanner.reset(new vcl::IconThemeScanner(*rData.mIconThemeScanner));
mIconThemeSelector.reset(new vcl::IconThemeSelector(*rData.mIconThemeSelector));
- mpFontOptions = rData.mpFontOptions;
mnEdgeBlending = rData.mnEdgeBlending;
maEdgeBlendingTopLeftColor = rData.maEdgeBlendingTopLeftColor;
maEdgeBlendingBottomRightColor = rData.maEdgeBlendingBottomRightColor;
@@ -1546,19 +1543,6 @@ StyleSettings::GetPrimaryButtonWarpsSlider() const
}
void
-StyleSettings::SetCairoFontOptions( const void *pOptions )
-{
- CopyData();
- mxData->mpFontOptions = pOptions;
-}
-
-const void*
-StyleSettings::GetCairoFontOptions() const
-{
- return mxData->mpFontOptions;
-}
-
-void
StyleSettings::SetAppFont( const vcl::Font& rFont )
{
CopyData();
diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx
index a78e56df167c..38462a16bdef 100644
--- a/vcl/unx/generic/gdi/cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/cairotextrender.cxx
@@ -212,8 +212,9 @@ void CairoTextRender::DrawServerFontLayout( const ServerFontLayout& rLayout )
return;
}
- if (const void *pOptions = Application::GetSettings().GetStyleSettings().GetCairoFontOptions())
- cairo_set_font_options(cr, static_cast<const cairo_font_options_t*>(pOptions));
+ ImplSVData* pSVData = ImplGetSVData();
+ if (const cairo_font_options_t* pFontOptions = pSVData->mpDefInst->GetCairoFontOptions())
+ cairo_set_font_options(cr, pFontOptions);
double nDX, nDY;
getSurfaceOffset(nDX, nDY);
@@ -429,12 +430,11 @@ void CairoTextRender::GetDevFontList( PhysicalFontCollection* pFontCollection )
void cairosubcallback(void* pPattern)
{
- const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
- const void* pFontOptions = rStyleSettings.GetCairoFontOptions();
+ ImplSVData* pSVData = ImplGetSVData();
+ const cairo_font_options_t* pFontOptions = pSVData->mpDefInst->GetCairoFontOptions();
if( !pFontOptions )
return;
- cairo_ft_font_options_substitute(static_cast<const cairo_font_options_t*>(pFontOptions),
- static_cast<FcPattern*>(pPattern));
+ cairo_ft_font_options_substitute(pFontOptions, static_cast<FcPattern*>(pPattern));
}
FontConfigFontOptions* GetFCFontOptions( const ImplFontAttributes& rFontAttributes, int nSize)
diff --git a/vcl/unx/gtk/gtkinst.cxx b/vcl/unx/gtk/gtkinst.cxx
index f7da84f3c9ba..7ae75c43f963 100644
--- a/vcl/unx/gtk/gtkinst.cxx
+++ b/vcl/unx/gtk/gtkinst.cxx
@@ -468,4 +468,9 @@ GtkInstance::getPrintWrapper() const
return m_xPrintWrapper;
}
+const cairo_font_options_t* GtkInstance::GetCairoFontOptions()
+{
+ return gdk_screen_get_font_options(gdk_screen_get_default());
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/gtk/salnativewidgets-gtk.cxx b/vcl/unx/gtk/salnativewidgets-gtk.cxx
index f0bfa7088686..1a104532df2d 100644
--- a/vcl/unx/gtk/salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk/salnativewidgets-gtk.cxx
@@ -3918,7 +3918,6 @@ void GtkSalGraphics::refreshFontconfig( GtkSettings *pSettings )
void GtkSalGraphics::updateSettings( AllSettings& rSettings )
{
- GdkScreen* pScreen = gtk_widget_get_screen( m_pWindow );
gtk_widget_ensure_style( m_pWindow );
GtkStyle* pStyle = gtk_widget_get_style( m_pWindow );
GtkSettings* pSettings = gtk_widget_get_settings( m_pWindow );
@@ -4244,9 +4243,6 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
aStyleSet.SetToolbarIconSize( ToolbarIconSize::Large );
- const cairo_font_options_t* pNewOptions = gdk_screen_get_font_options( pScreen );
- aStyleSet.SetCairoFontOptions( pNewOptions );
-
// finally update the collected settings
rSettings.SetStyleSettings( aStyleSet );
}
diff --git a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
index 3a991e63c715..e0cc8d5121e8 100644
--- a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
@@ -1450,7 +1450,6 @@ static inline ::Color getColorFromColor( const GdkColor& rCol )
void GtkSalGraphics::updateSettings( AllSettings& rSettings )
{
- GdkScreen* pScreen = gtk_widget_get_screen( mpWindow );
GtkStyleContext* pStyle = gtk_widget_get_style_context( mpWindow );
GtkSettings* pSettings = gtk_widget_get_settings( mpWindow );
StyleSettings aStyleSet = rSettings.GetStyleSettings();
@@ -1799,8 +1798,6 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
aStyleSet.SetToolbarIconSize( ToolbarIconSize::Large );
- const cairo_font_options_t* pNewOptions = gdk_screen_get_font_options(pScreen);
- aStyleSet.SetCairoFontOptions( pNewOptions );
// finally update the collected settings
rSettings.SetStyleSettings( aStyleSet );
#if OSL_DEBUG_LEVEL > 1