From ed7f2f38b0e9d85959465f6685d5613ccf66cd0b Mon Sep 17 00:00:00 2001 From: Mark van Renswoude Date: Sun, 11 Jun 2017 20:06:55 +0200 Subject: [PATCH] Fixed SimConnect reference not being held causing immediate disconnects Fixed allRunning / partiallyRunning being swapped in engines.lua --- G940LEDControl/Scripts/FSX/engines.lua | 4 ++-- G940LEDControl/Units/FSXLEDFunctionProvider.pas | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/G940LEDControl/Scripts/FSX/engines.lua b/G940LEDControl/Scripts/FSX/engines.lua index a534efe..0a540df 100644 --- a/G940LEDControl/Scripts/FSX/engines.lua +++ b/G940LEDControl/Scripts/FSX/engines.lua @@ -112,9 +112,9 @@ RegisterFunction( elseif runningCount == 0 then SetState(context, 'allOff') elseif runningCount == data.engineCount then - SetState(context, 'partiallyRunning') - else SetState(context, 'allRunning') + else + SetState(context, 'partiallyRunning') end else SetState(context, 'noEngines') diff --git a/G940LEDControl/Units/FSXLEDFunctionProvider.pas b/G940LEDControl/Units/FSXLEDFunctionProvider.pas index 64ec9d3..d0306ef 100644 --- a/G940LEDControl/Units/FSXLEDFunctionProvider.pas +++ b/G940LEDControl/Units/FSXLEDFunctionProvider.pas @@ -71,9 +71,11 @@ type TFSXLEDFunctionWorker = class(TCustomLuaLEDFunctionWorker) private FDefinitions: TList; + FSimConnect: IFSXSimConnect; protected property Definitions: TList read FDefinitions; protected + function GetSimConnect: IFSXSimConnect; procedure AddDefinition(ADefinition: IFSXSimConnectDefinition; ADataHandler: IFSXSimConnectDataHandler); procedure HandleData(AData: Pointer); virtual; abstract; @@ -434,13 +436,22 @@ begin end; +function TFSXLEDFunctionWorker.GetSimConnect: IFSXSimConnect; +begin + if not Assigned(FSimConnect) then + FSimConnect := (Provider as TFSXLEDFunctionProvider).GetSimConnect; + + Result := FSimConnect; +end; + + procedure TFSXLEDFunctionWorker.AddDefinition(ADefinition: IFSXSimConnectDefinition; ADataHandler: IFSXSimConnectDataHandler); var definition: TFSXDefinition; begin definition.DataHandler := ADataHandler; - definition.ID := (Provider as TFSXLEDFunctionProvider).GetSimConnect.AddDefinition(ADefinition, ADataHandler); + definition.ID := GetSimConnect.AddDefinition(ADefinition, ADataHandler); Definitions.Add(definition); end;