UPD: File system watcher notify event callback

This commit is contained in:
Alexander Koblov 2009-06-06 08:10:37 +00:00
commit d87196cbb4
2 changed files with 7 additions and 6 deletions

View file

@ -393,7 +393,7 @@ type
Shift: TShiftState);
procedure edtCommandExit(Sender: TObject);
procedure tbEditClick(Sender: TObject);
procedure FramePanelOnWatcherNotifyEvent(Sender: TObject; NotifyEvent: TWatchFilter);
procedure FramePanelOnWatcherNotifyEvent(Sender: TObject; NotifyData: PtrInt);
procedure tmHALTimer(Sender: TObject);
private
{ Private declarations }
@ -3207,7 +3207,7 @@ begin
ShowConfigToolbar(pmToolBar.Tag);
end;
procedure TfrmMain.FramePanelOnWatcherNotifyEvent(Sender: TObject; NotifyEvent: TWatchFilter);
procedure TfrmMain.FramePanelOnWatcherNotifyEvent(Sender: TObject; NotifyData: PtrInt);
var
sDrive,
sWatchDirsExclude: String;

View file

@ -35,7 +35,7 @@ uses
type
TWatchFilter = set of (wfFileNameChange, wfAttributesChange);
TOnWatcherNotifyEvent = procedure(Sender: TObject; NotifyEvent: TWatchFilter) of object;
TOnWatcherNotifyEvent = procedure(Sender: TObject; NotifyData: PtrInt) of object;
{ TWatcherThread }
@ -47,8 +47,8 @@ type
FFileHandle,
FNotifyHandle: THandle;
FWatchPath: UTF8String;
FWatchFilter,
FNotifyEvent: TWatchFilter;
FWatchFilter: TWatchFilter;
FNotifyData: PtrInt;
protected
procedure Execute; override;
procedure WatcherThreadError(const sErrMsg: String);
@ -185,6 +185,7 @@ begin
begin
ev:= pinotify_event((buf + p));
WriteLn('wd = ',ev^.wd,', mask = ',ev^.mask,', cookie = ',ev^.cookie, ' name = ', PChar(@ev^.name));
FNotifyData:= PtrInt(ev);
// call event handler
Synchronize(@WatcherNotifyEvent);
p:= p + ev^.len + 16;
@ -210,7 +211,7 @@ end;
procedure TWatcherThread.WatcherNotifyEvent;
begin
if Assigned(FOnWatcherNotifyEvent) then
FOnWatcherNotifyEvent(FOwner, FNotifyEvent);
FOnWatcherNotifyEvent(FOwner, FNotifyData);
end;
destructor TWatcherThread.Destroy;