Skip to content

Commit 6b542ba

Browse files
committed
Pass BrowserId to OnAfterBrowserCreated action as a param - in rare case user was getting nullptr exception
1 parent a8c64a8 commit 6b542ba

File tree

4 files changed

+10
-12
lines changed

4 files changed

+10
-12
lines changed

CefSharp.Core/Internals/ClientAdapter.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,11 @@ namespace CefSharp
4141
{
4242
_browserHwnd = browser->GetHost()->GetWindowHandle();
4343
_cefBrowser = browser;
44+
auto browserId = browser->GetIdentifier();
4445

45-
if (static_cast<Action^>(_onAfterBrowserCreated) != nullptr)
46+
if (static_cast<Action<int>^>(_onAfterBrowserCreated) != nullptr)
4647
{
47-
_onAfterBrowserCreated->Invoke();
48+
_onAfterBrowserCreated->Invoke(browserId);
4849
}
4950
}
5051
}

CefSharp.Core/Internals/ClientAdapter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ namespace CefSharp
3030
{
3131
private:
3232
gcroot<IWebBrowserInternal^> _browserControl;
33-
gcroot<Action^> _onAfterBrowserCreated;
33+
gcroot<Action<int>^> _onAfterBrowserCreated;
3434
HWND _browserHwnd;
3535
CefRefPtr<CefBrowser> _cefBrowser;
3636

3737
gcroot<String^> _tooltip;
3838

3939
public:
40-
ClientAdapter(IWebBrowserInternal^ browserControl, Action^ onAfterBrowserCreated) :
40+
ClientAdapter(IWebBrowserInternal^ browserControl, Action<int>^ onAfterBrowserCreated) :
4141
_browserControl(browserControl),
4242
_onAfterBrowserCreated(onAfterBrowserCreated)
4343
{

CefSharp.Core/Internals/RenderClientAdapter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ namespace CefSharp
2525
gcroot<BitmapInfo^> MainBitmapInfo;
2626
gcroot<BitmapInfo^> PopupBitmapInfo;
2727

28-
RenderClientAdapter(IWebBrowserInternal^ webBrowserInternal, Action^ onBrowserCreated):
29-
ClientAdapter(webBrowserInternal, onBrowserCreated),
28+
RenderClientAdapter(IWebBrowserInternal^ webBrowserInternal, Action<int>^ onAfterBrowserCreated):
29+
ClientAdapter(webBrowserInternal, onAfterBrowserCreated),
3030
_webBrowserInternal(webBrowserInternal)
3131
{
3232
MainBitmapInfo = gcnew BitmapInfo();

CefSharp.Core/ManagedCefBrowserAdapter.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ namespace CefSharp
6767

6868
ManagedCefBrowserAdapter(IWebBrowserInternal^ webBrowserInternal)
6969
{
70-
_renderClientAdapter = new RenderClientAdapter(webBrowserInternal, gcnew Action(this, &ManagedCefBrowserAdapter::OnAfterBrowserCreated));
70+
_renderClientAdapter = new RenderClientAdapter(webBrowserInternal, gcnew Action<int>(this, &ManagedCefBrowserAdapter::OnAfterBrowserCreated));
7171
_webBrowserInternal = webBrowserInternal;
7272

7373
Initialize();
@@ -108,12 +108,9 @@ namespace CefSharp
108108
cefFrame->LoadURL(StringUtils::ToNative(address));
109109
}
110110
}
111-
112-
113-
void OnAfterBrowserCreated()
111+
112+
void OnAfterBrowserCreated(int browserId)
114113
{
115-
auto browserId = _renderClientAdapter->GetCefBrowser()->GetIdentifier();
116-
117114
_browserProcessServiceHost = gcnew BrowserProcessServiceHost(_javaScriptObjectRepository, Process::GetCurrentProcess()->Id, browserId);
118115
_browserProcessServiceHost->Open();
119116

0 commit comments

Comments
 (0)