2021-01-19 19:14:25 +01:00
|
|
|
program FMXExternalPumpBrowser2;
|
|
|
|
|
|
|
|
uses
|
2022-06-26 17:53:54 +02:00
|
|
|
// FMUX.Config.pas belongs to the FMXLinux project but we need to override it.
|
|
|
|
// Read the comments in that unit for more details.
|
|
|
|
FMUX.Config in 'FMUX.Config.pas',
|
2021-01-19 19:14:25 +01:00
|
|
|
// FMX initializes GTK in the initialization section of some of its units and
|
|
|
|
// that means that GTK is already initialized when the code in the DPR is
|
|
|
|
// executed.
|
|
|
|
// Chromium has to be initialized in a process with only one thread but GTK
|
|
|
|
// creates several threads during its initialization. To avoid this problem
|
|
|
|
// we have to initialize CEF before GTK.
|
|
|
|
// uCEFLoader *MUST* be the first unit in the DPR file to make sure Chromium
|
|
|
|
// is initialized before GTK.
|
|
|
|
// uCEFLoader *MUST NOT* make any reference to any FMX unit to keep the right
|
|
|
|
// initalization order.
|
|
|
|
// Read the answer to this question for more more information :
|
|
|
|
// https://stackoverflow.com/questions/52103407/changing-the-initialization-order-of-the-unit-in-delphi
|
|
|
|
uCEFLoader in 'uCEFLoader.pas',
|
|
|
|
System.StartUpCopy,
|
|
|
|
FMX.Forms,
|
|
|
|
uFMXExternalPumpBrowser2 in 'uFMXExternalPumpBrowser2.pas' {FMXExternalPumpBrowserFrm};
|
|
|
|
|
|
|
|
{$R *.res}
|
|
|
|
|
|
|
|
begin
|
2022-06-26 17:53:54 +02:00
|
|
|
// At this point it's safe to initialize GTK
|
|
|
|
InitializeGTK;
|
2021-01-19 19:14:25 +01:00
|
|
|
Application.Initialize;
|
|
|
|
Application.CreateForm(TFMXExternalPumpBrowserFrm, FMXExternalPumpBrowserFrm);
|
|
|
|
Application.Run;
|
|
|
|
|
|
|
|
// The form needs to be destroyed *BEFORE* stopping the work scheduler.
|
|
|
|
FMXExternalPumpBrowserFrm.Free;
|
|
|
|
end.
|