Răsfoiți Sursa

link to X only when reuquired (oberon on ocmmand shell without X should also work!)

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@6970 8c9fc860-2736-0410-a75d-ab315db34111
felixf 8 ani în urmă
părinte
comite
2bde737ee1
2 a modificat fișierele cu 11 adăugiri și 4 ștergeri
  1. 10 4
      source/Generic.Linux.I386.Unix.Mod
  2. 1 0
      source/Generic.Unix.X11.Mod

+ 10 - 4
source/Generic.Linux.I386.Unix.Mod

@@ -1075,7 +1075,6 @@ static void sighandler( int sig, siginfo_t *scp, void *ucp ) {
 
 		libc := Dlopen( libcname, 2 );
 		libp := Dlopen( libpthreadname, 2); 
-		libx := Dlopen( libX11name, 2); 
 		
 		Dlsym( libc, "exit",		ADDRESSOF( exit ) );
 		
@@ -1180,14 +1179,21 @@ static void sighandler( int sig, siginfo_t *scp, void *ucp ) {
 		Dlsym( libc, "perror",	ADDRESSOF( perror ) );
 		Dlsym( libc, "__errno_location",	ADDRESSOF(errno_location ) );
 		
-		Dlsym( libx, "XSetErrorHandler", ADDRESS OF xSetErrorHandler);
-		Dlsym( libx, "XSetIOErrorHandler", ADDRESS OF xSetIOErrorHandler);
-
 		getSysinfo;
 				
 		CreateSignalStack;
 		InitSignalHandler;
 	END Init;
+	
+	(* load X11 related libaries only on demand *)
+	PROCEDURE LinkToX*;
+	BEGIN
+		libx := Dlopen( libX11name, 2); 
+
+		Dlsym( libx, "XSetErrorHandler", ADDRESS OF xSetErrorHandler);
+		Dlsym( libx, "XSetIOErrorHandler", ADDRESS OF xSetIOErrorHandler);
+	END LinkToX;
+	
 
 	PROCEDURE {INITIAL} Init0;
 	BEGIN

+ 1 - 0
source/Generic.Unix.X11.Mod

@@ -371,6 +371,7 @@ VAR
 	PROCEDURE LinkToX;
 	VAR xlib: ADDRESS;
 	BEGIN
+		Unix.LinkToX;
 		xlib := Unix.Dlopen( Unix.libX11name, 2 );
 		IF xlib = 0 THEN  (* try default version *)
 		 xlib := Unix.Dlopen( "libX11.so", 2 )