summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Tarquini <btarquini@gmail.com>2011-11-17 10:54:54 +0000
committerCarsten Haitzler <raster@rasterman.com>2011-11-17 10:54:54 +0000
commit44476d7e762bc0b45c509269ba1ac639fbde7aef (patch)
tree0cc98926ae7d3588f9fe71bd2b8a0ef53ca1c5e0
parentcc17bb417203564e2fd1038b3c62dd4ef3bbaa15 (diff)
From: Bruno Tarquini <btarquini@gmail.com>
Subject: [Patch] expedite: fix segfault at exit shutdown the engine before evas because Xext, Xrender and GL (loaded by evas) seem to register a hook which is called in XCloseDisplay (in engine_shutdown()). this segfault because evas_shutdown() should unload those libs, and so, invalidate the hook pointer. this bug was already noted by caro in @43373: > strangely, the xrender xlib and gl xlib engines are segfaulting when XCloseDisplay is called (in the shutdown function). > It does not with soft xlib. I absolutely don't know why. with this proper fix, remove also Xext, Xrender from dependencies, which are not used directly by expedite. triggered by compiling with --as-needed, because it removed unused libs: libXrender, libXext. tested with xlib, gl and sdl engine SVN revision: 65336
-rw-r--r--AUTHORS1
-rw-r--r--configure.ac4
-rw-r--r--src/bin/main.c2
3 files changed, 4 insertions, 3 deletions
diff --git a/AUTHORS b/AUTHORS
index 414ee67..7af8764 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -2,3 +2,4 @@ The Rasterman (Carsten Haitzler) <raster@rasterman.com>
2Tim Horton <hortont424@gmail.com> 2Tim Horton <hortont424@gmail.com>
3Saumsung Electronics <tbd> 3Saumsung Electronics <tbd>
4Samsung SAIT <tbd> 4Samsung SAIT <tbd>
5Bruno Tarquini <btarquini@gmail.com>
diff --git a/configure.ac b/configure.ac
index 4ae097c..1f9596c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -151,11 +151,11 @@ if test "x$have_software_xlib" = "xyes" -o "x$have_software_16_x11" = "xyes" -o
151 [have_xlib="yes"], 151 [have_xlib="yes"],
152 [have_xlib="no"]) 152 [have_xlib="no"])
153 if test "x$want_evas_simple_x11" = "xyes"; then 153 if test "x$want_evas_simple_x11" = "xyes"; then
154 x_libs="${x_libs} -lX11 -lXext -lXrender" 154 x_libs="${x_libs} -lX11"
155 else 155 else
156 x_dir=${x_dir:-/usr/X11R6} 156 x_dir=${x_dir:-/usr/X11R6}
157 x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}} 157 x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
158 x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext -lXrender" 158 x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11"
159 fi 159 fi
160fi 160fi
161AM_CONDITIONAL(BUILD_X11, [test "x$have_xlib" = "xyes"]) 161AM_CONDITIONAL(BUILD_X11, [test "x$have_xlib" = "xyes"])
diff --git a/src/bin/main.c b/src/bin/main.c
index ba0bd8d..0b77411 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -1382,7 +1382,7 @@ main(int argc, char **argv)
1382 1382
1383 evas_free(evas); 1383 evas_free(evas);
1384 1384
1385 evas_shutdown();
1386 engine_shutdown(); 1385 engine_shutdown();
1386 evas_shutdown();
1387 return 0; 1387 return 0;
1388} 1388}