You've already forked CEF4Delphi
mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-06-12 22:07:39 +02:00
Update to CEF 95.7.12
Fix for Windows shutdown issue thanks to petko
This commit is contained in:
16
README.md
16
README.md
@ -3,16 +3,16 @@ CEF4Delphi is an open source project created by Salvador Díaz Fau to embed Chro
|
||||
|
||||
CEF4Delphi is based on DCEF3 and fpCEF3. The original license of those projects still applies to CEF4Delphi. Read the license terms in the first lines of any *.pas file.
|
||||
|
||||
CEF4Delphi uses CEF 95.7.10 which includes Chromium 95.0.4638.54.
|
||||
CEF4Delphi uses CEF 95.7.12 which includes Chromium 95.0.4638.54.
|
||||
|
||||
The CEF binaries used by CEF4Delphi are available for download at Spotify :
|
||||
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.10%2Bg00d4ad5%2Bchromium-95.0.4638.54_windows32.tar.bz2)
|
||||
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.10%2Bg00d4ad5%2Bchromium-95.0.4638.54_windows64.tar.bz2)
|
||||
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.10%2Bg00d4ad5%2Bchromium-95.0.4638.54_linux32.tar.bz2)
|
||||
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.10%2Bg00d4ad5%2Bchromium-95.0.4638.54_linux64.tar.bz2)
|
||||
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.10%2Bg00d4ad5%2Bchromium-95.0.4638.54_linuxarm.tar.bz2)
|
||||
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.10%2Bg00d4ad5%2Bchromium-95.0.4638.54_linuxarm64.tar.bz2)
|
||||
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.10%2Bg00d4ad5%2Bchromium-95.0.4638.54_macosx64.tar.bz2)
|
||||
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.12%2Bg99c4ac0%2Bchromium-95.0.4638.54_windows32.tar.bz2)
|
||||
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.12%2Bg99c4ac0%2Bchromium-95.0.4638.54_windows64.tar.bz2)
|
||||
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.12%2Bg99c4ac0%2Bchromium-95.0.4638.54_linux32.tar.bz2)
|
||||
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.12%2Bg99c4ac0%2Bchromium-95.0.4638.54_linux64.tar.bz2)
|
||||
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.12%2Bg99c4ac0%2Bchromium-95.0.4638.54_linuxarm.tar.bz2)
|
||||
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.12%2Bg99c4ac0%2Bchromium-95.0.4638.54_linuxarm64.tar.bz2)
|
||||
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_95.7.12%2Bg99c4ac0%2Bchromium-95.0.4638.54_macosx64.tar.bz2)
|
||||
|
||||
CEF4Delphi was developed and tested on Delphi 11.0 and it has been tested in Delphi 7, Delphi XE, Delphi 10, Delphi 10.2, Delphi 10.3, Delphi 10.4 and Lazarus 2.2.0RC1/FPC 3.2.2. CEF4Delphi includes VCL, FireMonkey (FMX) and Lazarus components.
|
||||
|
||||
|
@ -216,6 +216,8 @@ type
|
||||
FScreenshotMsgID : integer;
|
||||
FMHTMLMsgID : integer;
|
||||
FDevToolsMsgValue : ustring;
|
||||
FShutdownReason : string;
|
||||
FHasShutdownReason : boolean;
|
||||
|
||||
FResponse : TStringList;
|
||||
FRequest : TStringList;
|
||||
@ -1063,6 +1065,10 @@ begin
|
||||
|
||||
FDevToolsMsgID := 0;
|
||||
|
||||
// Windows may show this text message while shutting down the operating system
|
||||
FShutdownReason := 'MiniBrowser closing...';
|
||||
FHasShutdownReason := ShutdownBlockReasonCreate(Application.Handle, @FShutdownReason[1]);
|
||||
|
||||
// The MultiBrowserMode store all the browser references in TChromium.
|
||||
// The first browser reference is the browser in the main form.
|
||||
// When MiniBrowser allows CEF to create child popup browsers it will also
|
||||
@ -1076,6 +1082,9 @@ end;
|
||||
|
||||
procedure TMiniBrowserFrm.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
if FHasShutdownReason then
|
||||
ShutdownBlockReasonDestroy(Application.Handle);
|
||||
|
||||
FResponse.Free;
|
||||
FRequest.Free;
|
||||
FNavigation.Free;
|
||||
@ -1566,12 +1575,12 @@ end;
|
||||
|
||||
procedure TMiniBrowserFrm.WMQueryEndSession(var aMessage: TWMQueryEndSession);
|
||||
begin
|
||||
// We return False (0) to close the browser correctly while we can.
|
||||
// This is not what Microsoft recommends doing when an application receives
|
||||
// WM_QUERYENDSESSION but at least we avoid TApplication calling HALT when
|
||||
// it receives WM_ENDSESSION.
|
||||
// The CEF subprocesses may receive WM_QUERYENDSESSION and WM_ENDSESSION
|
||||
// before the main process and they may crash before closing the main form.
|
||||
// We return False (0) to close the browser correctly.
|
||||
// Windows may show the FShutdownReason message that we created in
|
||||
// TForm.OnCreate if the shutdown takes too much time.
|
||||
// CEF4Delphi sets the subprocesses to receive the WM_QUERYENDSESSION
|
||||
// message after the main browser process with a
|
||||
// SetProcessShutdownParameters call
|
||||
aMessage.Result := 0;
|
||||
PostMessage(Handle, WM_CLOSE, 0, 0);
|
||||
end;
|
||||
|
@ -246,6 +246,9 @@ type
|
||||
FResponse : TStringList;
|
||||
FRequest : TStringList;
|
||||
FNavigation : TStringList;
|
||||
FShutdownReason : string;
|
||||
FHasShutdownReason : boolean;
|
||||
|
||||
// Variables to control when can we destroy the form safely
|
||||
FCanClose : boolean; // Set to True in TChromium.OnBeforeClose
|
||||
FClosing : boolean; // Set to True in the CloseQuery event.
|
||||
@ -286,6 +289,7 @@ type
|
||||
procedure WMMoving(var aMessage : TMessage); message WM_MOVING;
|
||||
procedure WMEnterMenuLoop(var aMessage: TMessage); message WM_ENTERMENULOOP;
|
||||
procedure WMExitMenuLoop(var aMessage: TMessage); message WM_EXITMENULOOP;
|
||||
procedure WMQueryEndSession(var aMessage: TWMQueryEndSession); message WM_QUERYENDSESSION;
|
||||
|
||||
public
|
||||
procedure ShowStatusText(const aText : string);
|
||||
@ -1062,6 +1066,10 @@ begin
|
||||
|
||||
FDevToolsMsgID := 0;
|
||||
|
||||
// Windows may show this text message while shutting down the operating system
|
||||
FShutdownReason := 'MiniBrowser closing...';
|
||||
FHasShutdownReason := ShutdownBlockReasonCreate(Application.Handle, @FShutdownReason[1]);
|
||||
|
||||
// The MultiBrowserMode store all the browser references in TChromium.
|
||||
// The first browser reference is the browser in the main form.
|
||||
// When MiniBrowser allows CEF to create child popup browsers it will also
|
||||
@ -1075,6 +1083,9 @@ end;
|
||||
|
||||
procedure TMiniBrowserFrm.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
if FHasShutdownReason then
|
||||
ShutdownBlockReasonDestroy(Application.Handle);
|
||||
|
||||
FResponse.Free;
|
||||
FRequest.Free;
|
||||
FNavigation.Free;
|
||||
@ -1608,6 +1619,18 @@ begin
|
||||
if (aMessage.wParam = 0) and (GlobalCEFApp <> nil) then GlobalCEFApp.OsmodalLoop := False;
|
||||
end;
|
||||
|
||||
procedure TMiniBrowserFrm.WMQueryEndSession(var aMessage: TWMQueryEndSession);
|
||||
begin
|
||||
// We return False (0) to close the browser correctly.
|
||||
// Windows may show the FShutdownReason message that we created in
|
||||
// TForm.OnCreate if the shutdown takes too much time.
|
||||
// CEF4Delphi sets the subprocesses to receive the WM_QUERYENDSESSION
|
||||
// message after the main browser process with a
|
||||
// SetProcessShutdownParameters call
|
||||
aMessage.Result := 0;
|
||||
PostMessage(Handle, WM_CLOSE, 0, 0);
|
||||
end;
|
||||
|
||||
procedure TMiniBrowserFrm.Deczoom1Click(Sender: TObject);
|
||||
begin
|
||||
Chromium1.DecZoomStep;
|
||||
|
@ -21,7 +21,7 @@
|
||||
</CompilerOptions>
|
||||
<Description Value="CEF4Delphi is an open source project created by Salvador Díaz Fau to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC."/>
|
||||
<License Value="MPL 1.1"/>
|
||||
<Version Major="95" Minor="7" Release="10"/>
|
||||
<Version Major="95" Minor="7" Release="12"/>
|
||||
<Files Count="202">
|
||||
<Item1>
|
||||
<Filename Value="..\source\uCEFAccessibilityHandler.pas"/>
|
||||
|
@ -66,7 +66,7 @@ uses
|
||||
const
|
||||
CEF_SUPPORTED_VERSION_MAJOR = 95;
|
||||
CEF_SUPPORTED_VERSION_MINOR = 7;
|
||||
CEF_SUPPORTED_VERSION_RELEASE = 10;
|
||||
CEF_SUPPORTED_VERSION_RELEASE = 12;
|
||||
CEF_SUPPORTED_VERSION_BUILD = 0;
|
||||
|
||||
CEF_CHROMEELF_VERSION_MAJOR = 95;
|
||||
@ -774,7 +774,13 @@ begin
|
||||
FLastErrorMessage := '';
|
||||
{$IFDEF MSWINDOWS}
|
||||
if (FProcessType = ptBrowser) then
|
||||
GetDLLVersion(ChromeElfPath, FChromeVersionInfo);
|
||||
GetDLLVersion(ChromeElfPath, FChromeVersionInfo)
|
||||
else
|
||||
// Subprocesses will be the last to be notified about the Windows shutdown.
|
||||
// The main browser process will receive WM_QUERYENDSESSION before the subprocesses
|
||||
// and that allows to close the application in the right order.
|
||||
// See the MiniBrowser demo for all the details.
|
||||
SetProcessShutdownParameters($100, SHUTDOWN_NORETRY);
|
||||
{$ENDIF}
|
||||
|
||||
// Internal filelds
|
||||
|
@ -164,6 +164,8 @@ function PathIsUNCAnsi(pszPath: LPCSTR): BOOL; stdcall; external SHLWAPIDLL name
|
||||
function PathIsUNCUnicode(pszPath: LPCWSTR): BOOL; stdcall; external SHLWAPIDLL name 'PathIsUNCW';
|
||||
function PathIsURLAnsi(pszPath: LPCSTR): BOOL; stdcall; external SHLWAPIDLL name 'PathIsURLA';
|
||||
function PathIsURLUnicode(pszPath: LPCWSTR): BOOL; stdcall; external SHLWAPIDLL name 'PathIsURLW';
|
||||
function ShutdownBlockReasonCreate(hWnd: HWND; Reason: LPCWSTR): Bool; stdcall; external User32DLL;
|
||||
function ShutdownBlockReasonDestroy(hWnd: HWND): Bool; stdcall; external User32DLL;
|
||||
|
||||
{$IFNDEF DELPHI12_UP}
|
||||
const
|
||||
|
@ -2,9 +2,9 @@
|
||||
"UpdateLazPackages" : [
|
||||
{
|
||||
"ForceNotify" : true,
|
||||
"InternalVersion" : 330,
|
||||
"InternalVersion" : 331,
|
||||
"Name" : "cef4delphi_lazarus.lpk",
|
||||
"Version" : "95.7.10.0"
|
||||
"Version" : "95.7.12.0"
|
||||
}
|
||||
],
|
||||
"UpdatePackageData" : {
|
||||
|
Reference in New Issue
Block a user