Browse Source

--- Merging r24824 into '.':
U packages/fcl-registry/src/winreg.inc
U packages/fcl-registry/src/regdef.inc
U rtl/win/wininc/defines.inc
--- Merging r25774 into '.':
G rtl/win/wininc/defines.inc
--- Merging r24882 into '.':
G packages/fcl-registry/src/winreg.inc
G packages/fcl-registry/src/regdef.inc
--- Merging r25340 into '.':
U utils/instantfpc/instantfptools.pas

# revisions: 24824,25774,24882,25340
r24824 | sergei | 2013-06-09 02:15:29 +0200 (Sun, 09 Jun 2013) | 2 lines
Changed paths:
M /trunk/packages/fcl-registry/src/regdef.inc
M /trunk/packages/fcl-registry/src/winreg.inc
M /trunk/rtl/win/wininc/defines.inc

+ Added KEY_WOW64_64KEY and KEY_WOW64_32KEY to Windows unit and fcl-registry/src/regdef.inc
* Fixed TRegistry.OpenKeyReadOnly and TRegistry.KeyExists methods so they preserve KEY_WOW64_xxKEY bits passed into TRegistry constructor. Based on patch from Maciej Kaczkowski, resolves #23695, #23188
r25774 | nickysn | 2013-10-14 13:59:24 +0200 (Mon, 14 Oct 2013) | 4 lines
Changed paths:
M /trunk/rtl/win/wininc/defines.inc

+ added the PFD_DIRECT3D_ACCELERATED and PFD_SUPPORT_COMPOSITION constants to
the windows unit
r24882 | sergei | 2013-06-12 14:42:42 +0200 (Wed, 12 Jun 2013) | 1 line
Changed paths:
M /trunk/packages/fcl-registry/src/regdef.inc
M /trunk/packages/fcl-registry/src/winreg.inc

* Fix building for WinCE (KEY_WOW64_xx constants do not exist there), resolves #24587
r25340 | mattias | 2013-08-23 15:47:07 +0200 (Fri, 23 Aug 2013) | 1 line
Changed paths:
M /trunk/utils/instantfpc/instantfptools.pas

instantfpc: fixed showing compiler error

git-svn-id: branches/fixes_2_6@25843 -

marco 11 years ago
parent
commit
cca3b8eed9

+ 6 - 1
packages/fcl-registry/src/regdef.inc

@@ -25,7 +25,10 @@ Const
   KEY_READ               = Windows.KEY_READ;
   KEY_READ               = Windows.KEY_READ;
   KEY_SET_VALUE          = Windows.KEY_SET_VALUE;
   KEY_SET_VALUE          = Windows.KEY_SET_VALUE;
   KEY_WRITE              = Windows.KEY_WRITE;
   KEY_WRITE              = Windows.KEY_WRITE;
-
+{$ifndef WinCE}
+  KEY_WOW64_64KEY        = Windows.KEY_WOW64_64KEY;
+  KEY_WOW64_32KEY        = Windows.KEY_WOW64_32KEY;
+{$endif WinCE}
 {$else}
 {$else}
 
 
 Const
 Const
@@ -47,5 +50,7 @@ Const
   KEY_READ               = $20019;
   KEY_READ               = $20019;
   KEY_SET_VALUE          = 2;
   KEY_SET_VALUE          = 2;
   KEY_WRITE              = $20006;
   KEY_WRITE              = $20006;
+  KEY_WOW64_64KEY        = $100;
+  KEY_WOW64_32KEY        = $200;
   
   
 {$endif windows}
 {$endif windows}

+ 3 - 2
packages/fcl-registry/src/winreg.inc

@@ -151,7 +151,8 @@ begin
   Result:=false;
   Result:=false;
   OldAccess:=FAccess;
   OldAccess:=FAccess;
   try
   try
-    FAccess:=KEY_QUERY_VALUE or KEY_ENUMERATE_SUB_KEYS or STANDARD_RIGHTS_READ;
+    FAccess:=KEY_QUERY_VALUE or KEY_ENUMERATE_SUB_KEYS or STANDARD_RIGHTS_READ 
+    {$ifndef WinCE} or (OldAccess and (KEY_WOW64_64KEY or KEY_WOW64_32KEY)) {$endif};
     KeyHandle:=GetKey(Key);
     KeyHandle:=GetKey(Key);
     if KeyHandle<>0 then
     if KeyHandle<>0 then
       begin
       begin
@@ -209,7 +210,7 @@ Var
   OldAccess: LongWord;
   OldAccess: LongWord;
 begin
 begin
   OldAccess:=fAccess;
   OldAccess:=fAccess;
-  fAccess:=KEY_READ;
+  fAccess:=KEY_READ {$ifndef WinCE} or (OldAccess and (KEY_WOW64_64KEY or KEY_WOW64_32KEY)) {$endif};
   try
   try
     Result:=OpenKey(Key, False);
     Result:=OpenKey(Key, False);
   finally
   finally

+ 4 - 0
rtl/win/wininc/defines.inc

@@ -1100,6 +1100,8 @@
      KEY_QUERY_VALUE = 1;
      KEY_QUERY_VALUE = 1;
      KEY_READ = $20019;
      KEY_READ = $20019;
      KEY_SET_VALUE = 2;
      KEY_SET_VALUE = 2;
+     KEY_WOW64_64KEY = $0100;
+     KEY_WOW64_32KEY = $0200;
      KEY_WRITE = $20006;
      KEY_WRITE = $20006;
      PROCESS_ALL_ACCESS = $1f0fff;
      PROCESS_ALL_ACCESS = $1f0fff;
      PROCESS_CREATE_PROCESS = 128;
      PROCESS_CREATE_PROCESS = 128;
@@ -5320,6 +5322,8 @@ Type
      PFD_SWAP_LAYER_BUFFERS = $800;
      PFD_SWAP_LAYER_BUFFERS = $800;
      PFD_GENERIC_ACCELERATED = $1000;
      PFD_GENERIC_ACCELERATED = $1000;
      PFD_SUPPORT_DIRECTDRAW = $2000;
      PFD_SUPPORT_DIRECTDRAW = $2000;
+     PFD_DIRECT3D_ACCELERATED = $4000;
+     PFD_SUPPORT_COMPOSITION = $8000;
   { TEXTMETRIC structure  }
   { TEXTMETRIC structure  }
      TMPF_FIXED_PITCH = $1;
      TMPF_FIXED_PITCH = $1;
      TMPF_VECTOR = $2;
      TMPF_VECTOR = $2;

+ 37 - 25
utils/instantfpc/instantfptools.pas

@@ -282,6 +282,15 @@ var
   pid: SizeUInt;
   pid: SizeUInt;
   BuildDir: String;
   BuildDir: String;
   BuildOutputFilename: String;
   BuildOutputFilename: String;
+
+  procedure CleanUp;
+  begin
+    if BuildDir<>'' then begin
+      // delete build directory
+      DeleteDirectory(BuildDir);
+    end;
+  end;
+
 begin
 begin
   Compiler:=GetCompiler;
   Compiler:=GetCompiler;
   pid:=GetProcessID;
   pid:=GetProcessID;
@@ -307,34 +316,37 @@ begin
       Halt(1);
       Halt(1);
     end;
     end;
   end;
   end;
-  CompParams:=GetCompilerParameters(CacheFilename,BuildDir,BuildOutputFilename);
-  Proc:=TProcess.Create(nil);
-  Proc.CommandLine:=Compiler+' '+CompParams;
-{$WARNING Unconditional use of pipes breaks for targets not supporting them}
-  Proc.Options:= [poUsePipes, poStdErrToOutput];
-  Proc.ShowWindow := swoHide;
-  Proc.Execute;
-  ss:=TStringStream.Create('');
-  repeat
-    Count:=Proc.Output.Read(Buf{%H-},4096);
-    if Count>0 then
-      ss.write(buf,count);
-  until Count=0;
-  if BuildDir<>'' then begin
-    // move from build directory to cache
-    if not RenameFile(BuildOutputFilename,OutputFilename) then begin
-      writeln('unable to move "',BuildOutputFilename,'" to "',OutputFilename,'"');
+  try
+    CompParams:=GetCompilerParameters(CacheFilename,BuildDir,BuildOutputFilename);
+    Proc:=TProcess.Create(nil);
+    Proc.CommandLine:=Compiler+' '+CompParams;
+  {$WARNING Unconditional use of pipes breaks for targets not supporting them}
+    Proc.Options:= [poUsePipes, poStdErrToOutput];
+    Proc.ShowWindow := swoHide;
+    Proc.Execute;
+    ss:=TStringStream.Create('');
+    repeat
+      Count:=Proc.Output.Read(Buf{%H-},4096);
+      if Count>0 then
+        ss.write(buf,count);
+    until Count=0;
+    if (not Proc.WaitOnExit) or (Proc.ExitStatus<>0) then begin
+      WriteCompilerOutput(SrcFilename,BuildOutputFilename,ss.DataString);
+      CleanUp;
       Halt(1);
       Halt(1);
     end;
     end;
-    // delete build directory
-    DeleteDirectory(BuildDir);
-  end;
-  if (not Proc.WaitOnExit) or (Proc.ExitStatus<>0) then begin
-    WriteCompilerOutput(SrcFilename,CacheFilename,ss.DataString);
-    Halt(1);
+    if BuildDir<>'' then begin
+      // move from build directory to cache
+      if not RenameFile(BuildOutputFilename,OutputFilename) then begin
+        writeln('unable to move "',BuildOutputFilename,'" to "',OutputFilename,'"');
+        Halt(1);
+      end;
+    end;
+    ss.Free;
+    Proc.Free;
+  finally
+    CleanUp;
   end;
   end;
-  ss.Free;
-  Proc.Free;
 end;
 end;
 
 
 function GetCompilerParameters(const SrcFilename, OutputDirectory,
 function GetCompilerParameters(const SrcFilename, OutputDirectory,