diff --git a/G940LEDControl/G940LEDControl.dproj b/G940LEDControl/G940LEDControl.dproj
index df155fb..4e9058b 100644
--- a/G940LEDControl/G940LEDControl.dproj
+++ b/G940LEDControl/G940LEDControl.dproj
@@ -8,7 +8,7 @@
VCL
13.4
True
- Debug
+ Release
Win32
1
Application
@@ -82,9 +82,10 @@
RELEASE;$(DCC_Define)
+ 1
1
0
- CompanyName=X²Software;FileDescription=G940 LED Control;FileVersion=1.0.0.0;InternalName=;LegalCopyright=© 2011 X²Software;LegalTrademarks=;OriginalFilename=G940LEDControl.exe;ProductName=G940 LED Control;ProductVersion=1.0;Comments=
+ CompanyName=X²Software;FileDescription=G940 LED Control;FileVersion=1.0.1.0;InternalName=;LegalCopyright=© 2011 X²Software;LegalTrademarks=;OriginalFilename=G940LEDControl.exe;ProductName=G940 LED Control;ProductVersion=1.0;Comments=
1033
$(BDS)\bin\default_app.manifest
@@ -146,25 +147,6 @@
- ExpressCoreLibrary by Developer Express Inc.
- Express Cross Platform Library by Developer Express Inc.
- ExpressPageControl by Developer Express Inc.
- ExpressEditors Library by Developer Express Inc.
- ExpressBars by Developer Express Inc.
- ExpressBars Ribbon controls by Developer Express Inc.
- ExpressScheduler by Developer Express Inc.
- ExpressSkins Library by Developer Express Inc.
- ExpressPrinting System by Developer Express Inc.
- ExpressPivotGrid by Developer Express Inc.
- ExpressOrgChart by Developer Express Inc.
- ExpressSkins Library Uses Clause Auto Fill Helper by Developer Express Inc.
- ExpressSkins Library Painter for PageControl by Developer Express Inc.
- ExpressSkins Library Painter for Scheduler by Developer Express Inc.
- ExpressSkins Library Painter for Bars by Developer Express Inc.
- ExpressSkins Library Painter for NavBar by Developer Express Inc.
- ExpressSkins Library Painter for Ribbon by Developer Express Inc.
- ExpressSkins Library Painter for Docking Library by Developer Express Inc.
- ExpressPrinting System ReportLink for ExpressLayoutControl by Developer Express Inc.
ExpressEditors FieldLink by Developer Express Inc.
ExpressBars DBNavigator by Developer Express Inc.
ExpressBars extended DB items by Developer Express Inc.
diff --git a/G940LEDControl/G940LEDControl.res b/G940LEDControl/G940LEDControl.res
index b2c5061..b7f720a 100644
Binary files a/G940LEDControl/G940LEDControl.res and b/G940LEDControl/G940LEDControl.res differ
diff --git a/G940LEDControl/Units/FSXSimConnectClient.pas b/G940LEDControl/Units/FSXSimConnectClient.pas
index 25043a0..c919b38 100644
--- a/G940LEDControl/Units/FSXSimConnectClient.pas
+++ b/G940LEDControl/Units/FSXSimConnectClient.pas
@@ -51,10 +51,13 @@ const
TM_ADDDEFINITION = 3001;
TM_REMOVEDEFINITION = 3002;
TM_TRYSIMCONNECT = 3003;
+ TM_PROCESSMESSAGES = 3004;
TIMER_TRYSIMCONNECT = 201;
+ TIMER_PROCESSMESSAGES = 202;
INTERVAL_TRYSIMCONNECT = 5000;
+ INTERVAL_PROCESSMESSAGES = 50;
type
@@ -87,11 +90,12 @@ type
FDefinitions: TFSXSimConnectDefinitionMap;
FLastDefinitionID: Cardinal;
FSimConnectHandle: THandle;
- FSimConnectDataEvent: TEvent;
+// FSimConnectDataEvent: TEvent;
protected
procedure TMAddDefinition(var Msg: TOmniMessage); message TM_ADDDEFINITION;
procedure TMRemoveDefinition(var Msg: TOmniMessage); message TM_REMOVEDEFINITION;
procedure TMTrySimConnect(var Msg: TOmniMessage); message TM_TRYSIMCONNECT;
+ procedure TMProcessMessages(var Msg: TOmniMessage); message TM_PROCESSMESSAGES;
procedure HandleSimConnectDataEvent;
protected
@@ -110,7 +114,7 @@ type
property Definitions: TFSXSimConnectDefinitionMap read FDefinitions;
property LastDefinitionID: Cardinal read FLastDefinitionID;
property SimConnectHandle: THandle read FSimConnectHandle;
- property SimConnectDataEvent: TEvent read FSimConnectDataEvent;
+// property SimConnectDataEvent: TEvent read FSimConnectDataEvent;
end;
@@ -302,9 +306,9 @@ begin
exit;
FDefinitions := TFSXSimConnectDefinitionMap.Create;
- FSimConnectDataEvent := TEvent.Create(nil, False, False, '');
- Task.RegisterWaitObject(SimConnectDataEvent.Handle, HandleSimConnectDataEvent);
+// FSimConnectDataEvent := TEvent.Create(nil, False, False, '');
+// Task.RegisterWaitObject(SimConnectDataEvent.Handle, HandleSimConnectDataEvent);
TrySimConnect;
end;
@@ -312,7 +316,7 @@ end;
procedure TFSXSimConnectClient.Cleanup;
begin
- FreeAndNil(FSimConnectDataEvent);
+// FreeAndNil(FSimConnectDataEvent);
FreeAndNil(FDefinitions);
if SimConnectHandle <> 0 then
@@ -331,12 +335,14 @@ begin
if InitSimConnect then
begin
- if SimConnect_Open(FSimConnectHandle, FSXSimConnectAppName, 0, 0, SimConnectDataEvent.Handle, 0) = S_OK then
+ if SimConnect_Open(FSimConnectHandle, FSXSimConnectAppName, 0, 0, 0 (*SimConnectDataEvent.Handle*), 0) = S_OK then
begin
TFSXSimConnectStateMonitor.SetCurrentState(scsConnected);
Task.ClearTimer(TIMER_TRYSIMCONNECT);
RegisterDefinitions;
+
+ Task.SetTimer(TIMER_PROCESSMESSAGES, INTERVAL_PROCESSMESSAGES, TM_PROCESSMESSAGES);
end;
end;
@@ -345,6 +351,7 @@ begin
TFSXSimConnectStateMonitor.SetCurrentState(scsFailed);
Task.SetTimer(TIMER_TRYSIMCONNECT, INTERVAL_TRYSIMCONNECT, TM_TRYSIMCONNECT);
+ Task.ClearTimer(TIMER_PROCESSMESSAGES);
end;
end;
@@ -375,6 +382,7 @@ begin
SIMCONNECT_RECV_ID_QUIT:
begin
FSimConnectHandle := 0;
+ Task.ClearTimer(TIMER_PROCESSMESSAGES);
Task.SetTimer(TIMER_TRYSIMCONNECT, INTERVAL_TRYSIMCONNECT, TM_TRYSIMCONNECT);
TFSXSimConnectStateMonitor.SetCurrentState(scsDisconnected);
@@ -552,6 +560,12 @@ begin
end;
+procedure TFSXSimConnectClient.TMProcessMessages(var Msg: TOmniMessage);
+begin
+ HandleSimConnectDataEvent;
+end;
+
+
{ TFSXSimConnectDefinitionRef }
constructor TFSXSimConnectDefinitionRef.Create(ADefinition: IFSXSimConnectDefinitionAccess);
begin
diff --git a/G940LEDControl/Units/FSXSimConnectStateMonitor.pas b/G940LEDControl/Units/FSXSimConnectStateMonitor.pas
index 60e9aa4..483185f 100644
--- a/G940LEDControl/Units/FSXSimConnectStateMonitor.pas
+++ b/G940LEDControl/Units/FSXSimConnectStateMonitor.pas
@@ -90,17 +90,17 @@ var
observer: IInterface;
begin
- CurrentStateLock.Acquire;
- try
- if Value <> FCurrentState then
- begin
+ if Value <> FCurrentState then
+ begin
+ CurrentStateLock.Acquire;
+ try
FCurrentState := Value;
-
- for observer in Observers do
- (observer as IFSXSimConnectStateObserver).ObserverStateUpdate(CurrentState);
+ finally
+ CurrentStateLock.Release;
end;
- finally
- CurrentStateLock.Release;
+
+ for observer in Observers do
+ (observer as IFSXSimConnectStateObserver).ObserverStateUpdate(CurrentState);
end;
end;
diff --git a/G940LEDControl/Units/LEDFunction.pas b/G940LEDControl/Units/LEDFunction.pas
index 07ed8d3..546abaa 100644
--- a/G940LEDControl/Units/LEDFunction.pas
+++ b/G940LEDControl/Units/LEDFunction.pas
@@ -314,29 +314,24 @@ end;
procedure TCustomLEDMultiStateFunctionWorker.SetCurrentState(AState: ILEDStateWorker; ANotifyObservers: Boolean);
begin
- FCurrentStateLock.Acquire;
- try
- if AState <> FCurrentState then
- begin
+ if AState <> FCurrentState then
+ begin
+ FCurrentStateLock.Acquire;
+ try
FCurrentState := AState;
-
- if ANotifyObservers then
- NotifyObservers;
+ finally
+ FCurrentStateLock.Release;
end;
- finally
- FCurrentStateLock.Release;
+
+ if ANotifyObservers then
+ NotifyObservers;
end;
end;
function TCustomLEDMultiStateFunctionWorker.GetCurrentState: ILEDStateWorker;
begin
- FCurrentStateLock.Acquire;
- try
- Result := FCurrentState;
- finally
- FCurrentStateLock.Release;
- end;
+ Result := FCurrentState;
end;