
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1371 8e941d3f-bd1b-0410-a28a-d453659cc2b4
59 lines
1.0 KiB
ObjectPascal
59 lines
1.0 KiB
ObjectPascal
unit GeckoInit;
|
|
|
|
interface
|
|
|
|
procedure GeckoComponentsStartup(XPComPath: string = '');
|
|
procedure GeckoComponentsShutdown;
|
|
|
|
implementation
|
|
|
|
uses
|
|
nsXPCOM, nsInit, nsGeckoStrings, nsTypes, nsConsts, nsErrorUtils, nsError,
|
|
nsXPCOMGlue, nsXRE {$IFDEF MSWINDOWS}, Windows {$ENDIF};
|
|
|
|
var
|
|
sInitCount: Integer = 0;
|
|
|
|
procedure GeckoComponentsStartup(XPComPath: string = '');
|
|
var
|
|
rv: nsresult;
|
|
|
|
errorStr: AnsiString;
|
|
begin
|
|
if sInitCount>0 then
|
|
begin
|
|
Inc(sInitCount);
|
|
Exit;
|
|
end;
|
|
|
|
rv := XRE_Startup('1.9', True, '2.0', False, XPComPath);
|
|
|
|
if NS_FAILED(rv) then
|
|
begin
|
|
errorStr := NS_GetErrorStringBundleKey(rv);
|
|
XPCOMGlueShutdown;
|
|
raise EGeckoError.Create(string(errorStr));
|
|
end;
|
|
|
|
Inc(sInitCount);
|
|
end;
|
|
|
|
procedure GeckoComponentsShutdown();
|
|
begin
|
|
if sInitCount = 0 then
|
|
begin
|
|
raise EGeckoError.Create(
|
|
'ERROR: Too many calls for GeckoComponentsShutdown then GeckoComponentsStartup');
|
|
end;
|
|
|
|
Dec(sInitCount);
|
|
|
|
if sInitCount = 0 then
|
|
begin
|
|
XRE_Shutdown();
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|