change code to help analyzer trace ownership properly

This commit is contained in:
Stefan Csomor
2017-06-07 23:00:28 +02:00
parent 249b76baef
commit d28dd3333b
2 changed files with 17 additions and 12 deletions

View File

@@ -108,6 +108,10 @@ private:
OSXWebViewPtr m_webView; OSXWebViewPtr m_webView;
WX_NSObject m_frameLoadMonitor;
WX_NSObject m_policyDelegate;
WX_NSObject m_UIDelegate;
// we may use this later to setup our own mouse events, // we may use this later to setup our own mouse events,
// so leave it in for now. // so leave it in for now.
void* m_webKitCtrlEventHandler; void* m_webKitCtrlEventHandler;

View File

@@ -206,16 +206,20 @@ bool wxWebKitCtrl::Create(wxWindow *parent,
// Register event listener interfaces // Register event listener interfaces
MyFrameLoadMonitor* myFrameLoadMonitor = [[MyFrameLoadMonitor alloc] initWithWxWindow: this]; MyFrameLoadMonitor* myFrameLoadMonitor = [[MyFrameLoadMonitor alloc] initWithWxWindow: this];
[m_webView setFrameLoadDelegate:myFrameLoadMonitor]; [m_webView setFrameLoadDelegate:myFrameLoadMonitor];
m_frameLoadMonitor = myFrameLoadMonitor;
// this is used to veto page loads, etc. // this is used to veto page loads, etc.
MyPolicyDelegate* myPolicyDelegate = [[MyPolicyDelegate alloc] initWithWxWindow: this]; MyPolicyDelegate* myPolicyDelegate = [[MyPolicyDelegate alloc] initWithWxWindow: this];
[m_webView setPolicyDelegate:myPolicyDelegate]; [m_webView setPolicyDelegate:myPolicyDelegate];
m_policyDelegate = myPolicyDelegate;
// this is used to provide printing support for JavaScript // this is used to provide printing support for JavaScript
MyUIDelegate* myUIDelegate = [[MyUIDelegate alloc] initWithWxWindow: this]; MyUIDelegate* myUIDelegate = [[MyUIDelegate alloc] initWithWxWindow: this];
[m_webView setUIDelegate:myUIDelegate]; [m_webView setUIDelegate:myUIDelegate];
m_UIDelegate = myUIDelegate;
LoadURL(m_currentURL); LoadURL(m_currentURL);
return true; return true;
@@ -223,21 +227,18 @@ bool wxWebKitCtrl::Create(wxWindow *parent,
wxWebKitCtrl::~wxWebKitCtrl() wxWebKitCtrl::~wxWebKitCtrl()
{ {
MyFrameLoadMonitor* myFrameLoadMonitor = [m_webView frameLoadDelegate];
MyPolicyDelegate* myPolicyDelegate = [m_webView policyDelegate];
MyUIDelegate* myUIDelegate = [m_webView UIDelegate];
[m_webView setFrameLoadDelegate: nil]; [m_webView setFrameLoadDelegate: nil];
[m_webView setPolicyDelegate: nil]; [m_webView setPolicyDelegate: nil];
[m_webView setUIDelegate: nil]; [m_webView setUIDelegate: nil];
if (myFrameLoadMonitor) if (m_frameLoadMonitor)
[myFrameLoadMonitor release]; [m_frameLoadMonitor release];
if (myPolicyDelegate) if (m_policyDelegate)
[myPolicyDelegate release]; [m_policyDelegate release];
if (myUIDelegate) if (m_UIDelegate)
[myUIDelegate release]; [m_UIDelegate release];
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------