[Libreoffice-commits] core.git: cui/source

Miklos Vajna vmiklos at collabora.co.uk
Tue Apr 24 20:29:29 UTC 2018


 cui/source/options/personalization.cxx |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

New commits:
commit 336d91a6f2bc12ff0342f984cdbb2cf64abd0b56
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Apr 24 17:44:54 2018 +0200

    tdf#113377 cui personalization: fix calling into VCL without necessary locking
    
    We assume the SolarMutex is always taken when doing GL calls, but
    putting DBG_TESTSOLARMUTEX() into WinOpenGLContext::makeCurrent()
    pointed out two places in the persona code where this invariant wasn't
    hold, fix those.
    
    Opening the dialog and downloading previews of one category, then
    clicking on an other button to download previews of an other category no
    longer results in a crash while calling glBindFramebuffer() with this.
    
    Change-Id: Ib8148a709f89c2dc44da102e2023cc61ba890744
    Reviewed-on: https://gerrit.libreoffice.org/53414
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/cui/source/options/personalization.cxx b/cui/source/options/personalization.cxx
index 3ff422289f37..d05775e93a53 100644
--- a/cui/source/options/personalization.cxx
+++ b/cui/source/options/personalization.cxx
@@ -252,6 +252,8 @@ void SelectPersonaDialog::AddPersonaSetting( OUString const & rPersonaSetting )
 
 void SelectPersonaDialog::ClearSearchResults()
 {
+    // for VCL to be able to destroy bitmaps
+    SolarMutexGuard aGuard;
     m_vPersonaSettings.clear();
     m_aSelectedPersona.clear();
     for(VclPtr<PushButton> & nIndex : m_vResultList)
@@ -776,14 +778,14 @@ void SearchAndParseThread::execute()
                 continue;
             }
             INetURLObject aURLObj( sPreviewFile );
+            // for VCL to be able to create bitmaps / do visual changes in the thread
+            SolarMutexGuard aGuard;
             aFilter.ImportGraphic( aGraphic, aURLObj );
             Bitmap aBmp = aGraphic.GetBitmap();
 
             if( !m_bExecute )
                 return;
 
-            // for VCL to be able to do visual changes in the thread
-            SolarMutexGuard aGuard;
             m_pPersonaDialog->SetImages( Image( aBmp ), nIndex++ );
             m_pPersonaDialog->setOptimalLayoutSize();
             m_pPersonaDialog->AddPersonaSetting( aPersonaSetting );


More information about the Libreoffice-commits mailing list