[Libreoffice-commits] core.git: vcl/inc vcl/unx

Caolán McNamara caolanm at redhat.com
Mon May 28 14:13:56 UTC 2018


 vcl/inc/unx/salobj.h              |    1 +
 vcl/unx/generic/window/salobj.cxx |   10 ++++------
 2 files changed, 5 insertions(+), 6 deletions(-)

New commits:
commit 5fde838b561924208dacd4a3f4ce5df6c7ea4661
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon May 28 10:48:32 2018 +0100

    tdf#117628 crash after closing media player with X11 backend
    
    Change-Id: I812da5ddf7343573f93ea64e592442edb31cad2d
    Reviewed-on: https://gerrit.libreoffice.org/54910
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/vcl/inc/unx/salobj.h b/vcl/inc/unx/salobj.h
index 8eb91b917efe..4a0535507dc2 100644
--- a/vcl/inc/unx/salobj.h
+++ b/vcl/inc/unx/salobj.h
@@ -56,6 +56,7 @@ class VCLPLUG_GEN_PUBLIC X11SalObject : public SalObject
 public:
     SystemEnvData maSystemChildData;
     SalFrame*       mpParent;
+    ::Window        maParentWin;
     ::Window        maPrimary;
     ::Window        maSecondary;
     Colormap        maColormap;
diff --git a/vcl/unx/generic/window/salobj.cxx b/vcl/unx/generic/window/salobj.cxx
index 203c1d3bb794..76fe2311514c 100644
--- a/vcl/unx/generic/window/salobj.cxx
+++ b/vcl/unx/generic/window/salobj.cxx
@@ -63,6 +63,7 @@ X11SalObject* X11SalObject::CreateObject( SalFrame* pParent, SystemWindowData* p
     const SystemEnvData* pEnv   = pParent->GetSystemData();
     Display* pDisp              = pSalDisp->GetDisplay();
     ::Window aObjectParent      = static_cast<::Window>(pEnv->aWindow);
+    pObject->maParentWin = aObjectParent;
 
     // find out on which screen that window is
     XWindowAttributes aParentAttr;
@@ -235,8 +236,7 @@ X11SalObject::~X11SalObject()
     rObjects.remove( this );
 
     GetGenericUnixSalData()->ErrorTrapPush();
-    const SystemEnvData* pEnv   = mpParent->GetSystemData();
-    ::Window aObjectParent      = static_cast<::Window>(pEnv->aWindow);
+    ::Window aObjectParent = maParentWin;
     XSetWindowBackgroundPixmap(static_cast<Display*>(maSystemChildData.pDisplay), aObjectParent, None);
     if ( maSecondary )
         XDestroyWindow( static_cast<Display*>(maSystemChildData.pDisplay), maSecondary );
@@ -400,12 +400,11 @@ bool X11SalObject::Dispatch( XEvent* pEvent )
                )
             {
                 SalMouseEvent aEvt;
-                const SystemEnvData* pParentData = pObject->mpParent->GetSystemData();
                 int dest_x, dest_y;
                 ::Window aChild = None;
                 XTranslateCoordinates( pEvent->xbutton.display,
                                        pEvent->xbutton.root,
-                                       pParentData->aWindow,
+                                       pObject->maParentWin,
                                        pEvent->xbutton.x_root,
                                        pEvent->xbutton.y_root,
                                        &dest_x, &dest_y,
@@ -466,9 +465,8 @@ bool X11SalObject::Dispatch( XEvent* pEvent )
 void X11SalObject::SetLeaveEnterBackgrounds(const css::uno::Sequence<css::uno::Any>& rLeaveArgs, const css::uno::Sequence<css::uno::Any>& rEnterArgs)
 {
     SalDisplay* pSalDisp        = vcl_sal::getSalDisplay(GetGenericUnixSalData());
-    const SystemEnvData* pEnv   = mpParent->GetSystemData();
     Display* pDisp              = pSalDisp->GetDisplay();
-    ::Window aObjectParent      = static_cast<::Window>(pEnv->aWindow);
+    ::Window aObjectParent      = maParentWin;
 
     bool bFreePixmap = false;
     Pixmap aPixmap = None;


More information about the Libreoffice-commits mailing list