From 17f6ebef2f3edbb7876524118dfe633025dc289b Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Tue, 1 Dec 2015 20:35:28 +0000 Subject: valgrind: scary warning that the cairo font options were deleted before use Change-Id: I58427aafb30eca64a67bcf7dd9a7738d8da3e085 (cherry picked from commit 3520b0f82aa2146958fbc1bda1cf7e9b5beb9a5d) --- vcl/inc/salinst.hxx | 4 ++++ vcl/inc/unx/gtk/gtkinst.hxx | 2 ++ vcl/source/app/settings.cxx | 16 ---------------- vcl/unx/generic/gdi/cairotextrender.cxx | 12 ++++++------ vcl/unx/gtk/gtkinst.cxx | 5 +++++ vcl/unx/gtk/salnativewidgets-gtk.cxx | 4 ---- vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx | 3 --- 7 files changed, 17 insertions(+), 29 deletions(-) (limited to 'vcl') 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 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; @@ -1545,19 +1542,6 @@ StyleSettings::GetPrimaryButtonWarpsSlider() const return mxData->mbPrimaryButtonWarpsSlider; } -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 ) { 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(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(pFontOptions), - static_cast(pPattern)); + cairo_ft_font_options_substitute(pFontOptions, static_cast(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 -- cgit v1.2.3