Changeset 12 for trunk/Packages/Kernel/UKernel.pas
- Timestamp:
- Sep 6, 2017, 6:47:49 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Packages/Kernel/UKernel.pas
r10 r12 7 7 uses 8 8 Classes, Math, SysUtils, UList, Contnrs, UFileSystem, UMemory, UScreen, UDevice, 9 fgl, UApp, UScheduler ;9 fgl, UApp, UScheduler, UApi; 10 10 11 11 type … … 26 26 TKernel = class 27 27 private 28 Api: TKernelApi; 28 29 procedure InitVideo; 30 function KernelApiExecute(Command: TApiCommand; Data: Pointer): Pointer; 29 31 public 30 32 Apps: TNamedObjectList<TApp>; … … 88 90 end; 89 91 92 function TKernel.KernelApiExecute(Command: TApiCommand; 93 Data: Pointer): Pointer; 94 begin 95 Result := Api.Call(Command, Data); 96 end; 97 90 98 procedure TKernel.AppExecute(AFile: TFile); 91 99 var … … 94 102 App := TApp(Apps.FindByName(AFile.Name)); 95 103 if Assigned(App) then begin 96 App.API.Kernel := Self;104 App.API.KernelApiCallback := KernelApiExecute; 97 105 Scheduler.AddTask(App.Name, App.Run); 98 106 end else raise Exception.Create('Application ''' + AFile.Name + ''' no found'); … … 119 127 NewFile.Name := 'Clock2'; 120 128 NewDrive.FileSystem.TopDirectory.Items.Add(NewFile); 121 InitVideo;129 InitVideo; 122 130 end; 123 131 … … 149 157 Scheduler := TScheduler.Create; 150 158 Screens := TFPGObjectList<TScreen>.Create; 159 Api := TKernelApi.Create; 160 Api.Kernel := Self; 151 161 end; 152 162 153 163 destructor TKernel.Destroy; 154 164 begin 155 Screens.Free; 156 Scheduler.Free; 157 Apps.Free; 158 Drives.Free; 159 Devices.Free; 165 FreeAndNil(Api); 166 FreeAndNil(Screens); 167 FreeAndNil(Scheduler); 168 FreeAndNil(Apps); 169 FreeAndNil(Drives); 170 FreeAndNil(Devices); 160 171 inherited Destroy; 161 172 end;
Note:
See TracChangeset
for help on using the changeset viewer.