|
 |
f325b2 |
From 23ee72212d5df5fd11a36b6b1b45b02ef23dcaf1 Mon Sep 17 00:00:00 2001
|
|
 |
f325b2 |
From: rpmbuild <rpmbuild@fedoraproject.org>
|
|
 |
f325b2 |
Date: Fri, 16 Jun 2017 15:53:41 +0100
|
|
 |
f325b2 |
Subject: [PATCH] Resolves: rhbz#1454693 segv on interrupting tiled rendering
|
|
 |
f325b2 |
|
|
 |
f325b2 |
---
|
|
 |
f325b2 |
libreofficekit/source/gtk/lokdocview.cxx | 15 +++++++++++++++
|
|
 |
f325b2 |
1 file changed, 15 insertions(+)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
|
|
 |
f325b2 |
index b6f34ac..584ab57 100644
|
|
 |
f325b2 |
--- a/libreofficekit/source/gtk/lokdocview.cxx
|
|
 |
f325b2 |
+++ b/libreofficekit/source/gtk/lokdocview.cxx
|
|
 |
f325b2 |
@@ -942,6 +942,14 @@ callback (gpointer pData)
|
|
 |
f325b2 |
LOKDocView* pDocView = LOK_DOC_VIEW (pCallback->m_pDocView);
|
|
 |
f325b2 |
LOKDocViewPrivate& priv = getPrivate(pDocView);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+ //callback registered before the widget was destroyed.
|
|
 |
f325b2 |
+ //Use existance of lokThreadPool as flag it was torn down
|
|
 |
f325b2 |
+ if (!priv->lokThreadPool)
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ delete pCallback;
|
|
 |
f325b2 |
+ return G_SOURCE_REMOVE;
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
switch (pCallback->m_nType)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
case LOK_CALLBACK_INVALIDATE_TILES:
|
|
 |
f325b2 |
@@ -2061,11 +2069,18 @@ static void lok_doc_view_destroy (GtkWidget* widget)
|
|
 |
f325b2 |
LOKDocView* pDocView = LOK_DOC_VIEW (widget);
|
|
 |
f325b2 |
LOKDocViewPrivate& priv = getPrivate(pDocView);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+ if (priv->lokThreadPool)
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ g_thread_pool_free(priv->lokThreadPool, true, true);
|
|
 |
f325b2 |
+ priv->lokThreadPool = nullptr;
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
if (priv->m_pDocument)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
priv->m_pDocument->pClass->destroy (priv->m_pDocument);
|
|
 |
f325b2 |
priv->m_pDocument = nullptr;
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
if (priv->m_pOffice)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
priv->m_pOffice->pClass->destroy (priv->m_pOffice);
|
|
 |
f325b2 |
--
|
|
 |
f325b2 |
1.8.3.1
|
|
 |
f325b2 |
|