Ignore:
Timestamp:
Dec 5, 2011, 2:20:39 PM (13 years ago)
Author:
chronos
Message:
  • Fixed: CommThread delay in loop only if necessery.
  • Modified: CommDelay now use two separated thread for both direction.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • PinConnection/UCommThread.pas

    r296 r302  
    139139var
    140140  TempStatus: Integer;
     141  DoSleep: Boolean;
    141142begin
    142143  with Parent do
    143144  repeat
     145    DoSleep := True;
    144146    // Check if new data arrived
    145     if FDataAvailable.WaitFor(1) = wrSignaled then begin
     147    if FDataAvailable.WaitFor(0) = wrSignaled then begin
     148      DoSleep := False;
    146149      try
    147150        FInputBufferLock.Acquire;
     
    158161    // Check if state changed
    159162    if FStatusEvent.WaitFor(0) = wrSignaled then begin
     163      DoSleep := False;
    160164      try
    161165        FInputBufferLock.Acquire;
     
    166170      end;
    167171      Pin.Status := TempStatus;
     172    end;
     173    if not Terminated and DoSleep then begin
     174      Sleep(1);
    168175    end;
    169176  until Terminated;
Note: See TracChangeset for help on using the changeset viewer.