Skip to content

Commit 13042da

Browse files
Merge branch 'master' into fix-server-name-validation
2 parents 14adf87 + 792d9aa commit 13042da

File tree

13 files changed

+273
-216
lines changed

13 files changed

+273
-216
lines changed

Client/cefweb/CWebApp.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ CefRefPtr<CefResourceHandler> CWebApp::HandleError(const SString& strError, unsi
2121

2222
void CWebApp::OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr<CefCommandLine> command_line)
2323
{
24+
CWebCore* pWebCore = static_cast<CWebCore*>(g_pCore->GetWebCore());
25+
26+
if (!pWebCore->GetGPUEnabled())
27+
command_line->AppendSwitch("disable-gpu");
28+
29+
command_line->AppendSwitch("disable-gpu-compositing"); // always disable this, causes issues with official builds
30+
2431
// command_line->AppendSwitch("disable-d3d11");
2532
command_line->AppendSwitch("enable-begin-frame-scheduling");
2633

Client/cefweb/CWebCore.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,13 @@ CWebCore::~CWebCore()
4949
delete m_pXmlConfig;
5050
}
5151

52-
bool CWebCore::Initialise()
52+
bool CWebCore::Initialise(bool gpuEnabled)
5353
{
5454
CefMainArgs mainArgs;
5555
void* sandboxInfo = nullptr;
56+
57+
m_bGPUEnabled = gpuEnabled;
58+
5659
CefRefPtr<CWebApp> app(new CWebApp);
5760

5861
#ifdef CEF_ENABLE_SANDBOX
@@ -869,3 +872,8 @@ void CWebCore::StaticFetchBlacklistFinished(const SHttpDownloadResult& result)
869872
OutputDebugLine("Updated browser blacklist!");
870873
#endif
871874
}
875+
876+
bool CWebCore::GetGPUEnabled() const noexcept
877+
{
878+
return m_bGPUEnabled;
879+
}

Client/cefweb/CWebCore.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class CWebCore : public CWebCoreInterface
5454
public:
5555
CWebCore();
5656
~CWebCore();
57-
bool Initialise() override;
57+
bool Initialise(bool gpuEnabled) override;
5858

5959
CWebViewInterface* CreateWebView(unsigned int uiWidth, unsigned int uiHeight, bool bIsLocal, CWebBrowserItem* pWebBrowserRenderItem, bool bTransparent);
6060
void DestroyWebView(CWebViewInterface* pWebViewInterface);
@@ -108,6 +108,8 @@ class CWebCore : public CWebCoreInterface
108108
static void StaticFetchWhitelistFinished(const SHttpDownloadResult& result);
109109
static void StaticFetchBlacklistFinished(const SHttpDownloadResult& result);
110110

111+
bool GetGPUEnabled() const noexcept;
112+
111113
private:
112114
typedef std::pair<bool, eWebFilterType> WebFilterPair;
113115

@@ -129,4 +131,7 @@ class CWebCore : public CWebCoreInterface
129131
CXMLFile* m_pXmlConfig;
130132
int m_iWhitelistRevision;
131133
int m_iBlacklistRevision;
134+
135+
// Shouldn't be changed after init
136+
bool m_bGPUEnabled;
132137
};

Client/core/CClientVariables.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ void CClientVariables::LoadDefaults()
358358
DEFAULT("discord_rpc_share_data", false); // Consistent Rich Presence data sharing
359359
DEFAULT("discord_rpc_share_data_firsttime", false); // Display the user data sharing consent dialog box - for the first time
360360
DEFAULT("_beta_qc_rightclick_command", _S("reconnect")); // Command to run when right clicking quick connect (beta - can be removed at any time)
361+
DEFAULT("browser_enable_gpu", true); // Enable GPU in CEF? (allows stuff like WebGL to function)
361362

362363
if (!Exists("locale"))
363364
{

Client/core/CCore.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1155,8 +1155,12 @@ CWebCoreInterface* CCore::GetWebCore()
11551155
{
11561156
if (m_pWebCore == nullptr)
11571157
{
1158+
bool gpuEnabled;
1159+
auto cvars = g_pCore->GetCVars();
1160+
cvars->Get("browser_enable_gpu", gpuEnabled);
1161+
11581162
m_pWebCore = CreateModule<CWebCoreInterface>(m_WebCoreModule, "CefWeb", "cefweb", "InitWebCoreInterface", this);
1159-
m_pWebCore->Initialise();
1163+
m_pWebCore->Initialise(gpuEnabled);
11601164
}
11611165
return m_pWebCore;
11621166
}

Client/core/CSettings.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -917,6 +917,10 @@ void CSettings::CreateGUI()
917917
m_pCheckBoxRemoteJavascript->GetPosition(vecTemp);
918918
m_pCheckBoxRemoteJavascript->AutoSize(NULL, 20.0f);
919919

920+
m_pCheckBoxBrowserGPUEnabled = reinterpret_cast<CGUICheckBox*>(pManager->CreateCheckBox(m_pTabBrowser, _("Enable GPU rendering"), true));
921+
m_pCheckBoxBrowserGPUEnabled->SetPosition(CVector2D(vecTemp.fX + 300.0f, vecTemp.fY - 25.0f));
922+
m_pCheckBoxBrowserGPUEnabled->AutoSize(NULL, 20.0f);
923+
920924
m_pLabelBrowserCustomBlacklist = reinterpret_cast<CGUILabel*>(pManager->CreateLabel(m_pTabBrowser, _("Custom blacklist")));
921925
m_pLabelBrowserCustomBlacklist->SetPosition(CVector2D(vecTemp.fX, vecTemp.fY + 30.0f));
922926
m_pLabelBrowserCustomBlacklist->GetPosition(vecTemp);
@@ -3287,6 +3291,8 @@ void CSettings::LoadData()
32873291
m_pCheckBoxRemoteBrowser->SetSelected(bVar);
32883292
CVARS_GET("browser_remote_javascript", bVar);
32893293
m_pCheckBoxRemoteJavascript->SetSelected(bVar);
3294+
CVARS_GET("browser_enable_gpu", bVar);
3295+
m_pCheckBoxBrowserGPUEnabled->SetSelected(bVar);
32903296

32913297
ReloadBrowserLists();
32923298
}
@@ -3711,6 +3717,13 @@ void CSettings::SaveData()
37113717
bBrowserSettingChanged = true;
37123718
}
37133719

3720+
bool bBrowserGPUEnabled = false;
3721+
CVARS_GET("browser_enable_gpu", bBrowserGPUEnabled);
3722+
3723+
bool bBrowserGPUSetting = m_pCheckBoxBrowserGPUEnabled->GetSelected();
3724+
bool bBrowserGPUSettingChanged = (bBrowserGPUSetting != bBrowserGPUEnabled);
3725+
CVARS_SET("browser_enable_gpu", bBrowserGPUSetting);
3726+
37143727
// Ensure CVARS ranges ok
37153728
CClientVariables::GetSingleton().ValidateValues();
37163729

@@ -3720,7 +3733,7 @@ void CSettings::SaveData()
37203733
gameSettings->Save();
37213734

37223735
// Ask to restart?
3723-
if (bIsVideoModeChanged || bIsAntiAliasingChanged || bIsCustomizedSAFilesChanged || processsDPIAwareChanged)
3736+
if (bIsVideoModeChanged || bIsAntiAliasingChanged || bIsCustomizedSAFilesChanged || processsDPIAwareChanged || bBrowserGPUSettingChanged)
37243737
ShowRestartQuestion();
37253738
else if (CModManager::GetSingleton().IsLoaded() && bBrowserSettingChanged)
37263739
ShowDisconnectQuestion();

Client/core/CSettings.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ class CSettings
338338
CGUIButton* m_pButtonBrowserWhitelistAdd;
339339
CGUIGridList* m_pGridBrowserWhitelist;
340340
CGUIButton* m_pButtonBrowserWhitelistRemove;
341+
CGUICheckBox* m_pCheckBoxBrowserGPUEnabled;
341342
bool m_bBrowserListsChanged;
342343
bool m_bBrowserListsLoadEnabled;
343344

Client/game_sa/CVehicleSA.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,16 +1345,20 @@ void CVehicleSA::RecalculateHandling()
13451345
continue;
13461346

13471347
// If NOS is installed we need set the flag
1348-
if ((upgradeID >= 1008 && upgradeID <= 1010) && !(uiHandlingFlags & HANDLING_NOS_Flag))
1348+
if ((upgradeID >= 1008 && upgradeID <= 1010))
13491349
{
1350-
uiHandlingFlags |= HANDLING_NOS_Flag;
1350+
if (!(uiHandlingFlags & HANDLING_NOS_Flag))
1351+
uiHandlingFlags |= HANDLING_NOS_Flag;
1352+
13511353
nitroInstalled = true;
13521354
}
13531355

13541356
// If hydraulics is installed we need set the flag
1355-
if ((upgradeID == 1087) && !(uiHandlingFlags & HANDLING_Hydraulics_Flag))
1357+
if ((upgradeID == 1087))
13561358
{
1357-
uiHandlingFlags |= HANDLING_Hydraulics_Flag;
1359+
if (!(uiHandlingFlags & HANDLING_Hydraulics_Flag))
1360+
uiHandlingFlags |= HANDLING_Hydraulics_Flag;
1361+
13581362
hydralicsInstalled = true;
13591363
}
13601364
}

Client/mods/deathmatch/logic/luadefs/CLuaBrowserDefs.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ void CLuaBrowserDefs::LoadFunctions()
4949
{"resizeBrowser", ResizeBrowser},
5050
{"guiCreateBrowser", GUICreateBrowser},
5151
{"guiGetBrowser", GUIGetBrowser},
52+
{"isBrowserGPUEnabled", ArgumentParser<IsBrowserGPUEnabled>},
5253
};
5354

5455
// Add browser functions
@@ -97,6 +98,7 @@ void CLuaBrowserDefs::AddClass(lua_State* luaVM)
9798
lua_classvariable(luaVM, "renderingPaused", "setBrowserRenderingPaused", "isBrowserRenderingPaused");
9899
lua_classvariable(luaVM, "volume", "setBrowserVolume", "getBrowserVolume");
99100
lua_classvariable(luaVM, "devTools", "toggleBrowserDevTools", nullptr);
101+
lua_classvariable(luaVM, "gpuEnabled", nullptr, "isBrowserGPUEnabled");
100102

101103
lua_registerclass(luaVM, "Browser", "DxTexture");
102104

@@ -1054,3 +1056,8 @@ int CLuaBrowserDefs::SetBrowserAjaxHandler(lua_State* luaVM)
10541056
lua_pushboolean(luaVM, false);
10551057
return 1;
10561058
}
1059+
1060+
bool CLuaBrowserDefs::IsBrowserGPUEnabled() noexcept
1061+
{
1062+
return g_pCore->GetWebCore()->GetGPUEnabled();
1063+
}

Client/mods/deathmatch/logic/luadefs/CLuaBrowserDefs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,5 @@ class CLuaBrowserDefs : public CLuaDefs
5151
LUA_DECLARE(ResizeBrowser);
5252
LUA_DECLARE(GUICreateBrowser);
5353
LUA_DECLARE(GUIGetBrowser);
54+
static bool IsBrowserGPUEnabled() noexcept;
5455
};

0 commit comments

Comments
 (0)