diff options
Diffstat (limited to 'Game/Code/lib/JEDI-SDL/OpenGL-Set8087CW.patch')
-rw-r--r-- | Game/Code/lib/JEDI-SDL/OpenGL-Set8087CW.patch | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Game/Code/lib/JEDI-SDL/OpenGL-Set8087CW.patch b/Game/Code/lib/JEDI-SDL/OpenGL-Set8087CW.patch new file mode 100644 index 00000000..aeebeee5 --- /dev/null +++ b/Game/Code/lib/JEDI-SDL/OpenGL-Set8087CW.patch @@ -0,0 +1,70 @@ +Index: OpenGL/Pas/gl.pas
+===================================================================
+--- OpenGL/Pas/gl.pas (revision 961)
++++ OpenGL/Pas/gl.pas (working copy)
+@@ -2287,9 +2287,9 @@
+ end;
+
+ initialization
+- {$ifdef x86}
++ {$IF Defined(CPU386) or Defined(CPUI386) or Defined(CPUX86_64)}
+ Set8087CW($133F);
+- {$endif x86}
++ {$IFEND}
+
+ LoadOpenGL( GLLibName );
+
+Index: OpenGL/Pas/opengl12.pas
+===================================================================
+--- OpenGL/Pas/opengl12.pas (revision 961)
++++ OpenGL/Pas/opengl12.pas (working copy)
+@@ -7125,16 +7125,15 @@
+
+ //----------------------------------------------------------------------------------------------------------------------
+
+-{$ifndef VER140}
++// RaiseLastOSError did not exist in Delphi 5
++{$ifdef VER130}
+
+ procedure RaiseLastOSError;
+ begin
+- {$ifndef FPC}
+ RaiseLastWin32Error;
+- {$endif}
+ end;
+
+-{$endif VER140}
++{$endif}
+
+ //----------------------------------------------------------------------------------------------------------------------
+
+@@ -9948,21 +9947,16 @@
+ end;
+
+ //----------------------------------------------------------------------------------------------------------------------
+-{$ifdef FPC}
+-const Default8087CW: Word = $1332;
+
+-{$ASMMODE INTEL}
+-procedure Set8087CW(NewCW: Word); Assembler;
+-asm
+- MOV Default8087CW, AX
+-end;
+-{$endif}
+-
+-//----------------------------------------------------------------------------------------------------------------------
+-
+ initialization
+- ContextList := TThreadList.Create;
+- Set8087CW($133F);
++ ContextList := TThreadList.Create;
++ {$IF Defined(CPU386) or Defined(CPUI386) or Defined(CPUX86_64)}
++ // FPC has its own implementation of Set8087CW now. The wrongly
++ // coded (the important asm-directives were missing so it was not of any use!!!)
++ // implementation was removed from this unit so it does not hide the correct FPC version anymore.
++ // This should fix some EDivByZero exceptions in floating-point expressions.
++ Set8087CW($133F);
++ {$IFEND}
+ finalization
+ CloseOpenGL;
+ ContextList.Free;
|