Kaydet (Commit) 5fde838b authored tarafından Caolán McNamara's avatar Caolán McNamara

tdf#117628 crash after closing media player with X11 backend

Change-Id: I812da5ddf7343573f93ea64e592442edb31cad2d
Reviewed-on: https://gerrit.libreoffice.org/54910Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 796bee47
...@@ -56,6 +56,7 @@ class VCLPLUG_GEN_PUBLIC X11SalObject : public SalObject ...@@ -56,6 +56,7 @@ class VCLPLUG_GEN_PUBLIC X11SalObject : public SalObject
public: public:
SystemEnvData maSystemChildData; SystemEnvData maSystemChildData;
SalFrame* mpParent; SalFrame* mpParent;
::Window maParentWin;
::Window maPrimary; ::Window maPrimary;
::Window maSecondary; ::Window maSecondary;
Colormap maColormap; Colormap maColormap;
......
...@@ -63,6 +63,7 @@ X11SalObject* X11SalObject::CreateObject( SalFrame* pParent, SystemWindowData* p ...@@ -63,6 +63,7 @@ X11SalObject* X11SalObject::CreateObject( SalFrame* pParent, SystemWindowData* p
const SystemEnvData* pEnv = pParent->GetSystemData(); const SystemEnvData* pEnv = pParent->GetSystemData();
Display* pDisp = pSalDisp->GetDisplay(); Display* pDisp = pSalDisp->GetDisplay();
::Window aObjectParent = static_cast<::Window>(pEnv->aWindow); ::Window aObjectParent = static_cast<::Window>(pEnv->aWindow);
pObject->maParentWin = aObjectParent;
// find out on which screen that window is // find out on which screen that window is
XWindowAttributes aParentAttr; XWindowAttributes aParentAttr;
...@@ -235,8 +236,7 @@ X11SalObject::~X11SalObject() ...@@ -235,8 +236,7 @@ X11SalObject::~X11SalObject()
rObjects.remove( this ); rObjects.remove( this );
GetGenericUnixSalData()->ErrorTrapPush(); GetGenericUnixSalData()->ErrorTrapPush();
const SystemEnvData* pEnv = mpParent->GetSystemData(); ::Window aObjectParent = maParentWin;
::Window aObjectParent = static_cast<::Window>(pEnv->aWindow);
XSetWindowBackgroundPixmap(static_cast<Display*>(maSystemChildData.pDisplay), aObjectParent, None); XSetWindowBackgroundPixmap(static_cast<Display*>(maSystemChildData.pDisplay), aObjectParent, None);
if ( maSecondary ) if ( maSecondary )
XDestroyWindow( static_cast<Display*>(maSystemChildData.pDisplay), maSecondary ); XDestroyWindow( static_cast<Display*>(maSystemChildData.pDisplay), maSecondary );
...@@ -400,12 +400,11 @@ bool X11SalObject::Dispatch( XEvent* pEvent ) ...@@ -400,12 +400,11 @@ bool X11SalObject::Dispatch( XEvent* pEvent )
) )
{ {
SalMouseEvent aEvt; SalMouseEvent aEvt;
const SystemEnvData* pParentData = pObject->mpParent->GetSystemData();
int dest_x, dest_y; int dest_x, dest_y;
::Window aChild = None; ::Window aChild = None;
XTranslateCoordinates( pEvent->xbutton.display, XTranslateCoordinates( pEvent->xbutton.display,
pEvent->xbutton.root, pEvent->xbutton.root,
pParentData->aWindow, pObject->maParentWin,
pEvent->xbutton.x_root, pEvent->xbutton.x_root,
pEvent->xbutton.y_root, pEvent->xbutton.y_root,
&dest_x, &dest_y, &dest_x, &dest_y,
...@@ -466,9 +465,8 @@ bool X11SalObject::Dispatch( XEvent* pEvent ) ...@@ -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) 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()); SalDisplay* pSalDisp = vcl_sal::getSalDisplay(GetGenericUnixSalData());
const SystemEnvData* pEnv = mpParent->GetSystemData();
Display* pDisp = pSalDisp->GetDisplay(); Display* pDisp = pSalDisp->GetDisplay();
::Window aObjectParent = static_cast<::Window>(pEnv->aWindow); ::Window aObjectParent = maParentWin;
bool bFreePixmap = false; bool bFreePixmap = false;
Pixmap aPixmap = None; Pixmap aPixmap = None;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment