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
This commit is contained in:
Bruno Tarquini 2011-11-17 10:54:54 +00:00 committed by Carsten Haitzler
parent cc17bb4172
commit 44476d7e76
3 changed files with 4 additions and 3 deletions

View File

@ -2,3 +2,4 @@ The Rasterman (Carsten Haitzler) <raster@rasterman.com>
Tim Horton <hortont424@gmail.com>
Saumsung Electronics <tbd>
Samsung SAIT <tbd>
Bruno Tarquini <btarquini@gmail.com>

View File

@ -151,11 +151,11 @@ if test "x$have_software_xlib" = "xyes" -o "x$have_software_16_x11" = "xyes" -o
[have_xlib="yes"],
[have_xlib="no"])
if test "x$want_evas_simple_x11" = "xyes"; then
x_libs="${x_libs} -lX11 -lXext -lXrender"
x_libs="${x_libs} -lX11"
else
x_dir=${x_dir:-/usr/X11R6}
x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext -lXrender"
x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11"
fi
fi
AM_CONDITIONAL(BUILD_X11, [test "x$have_xlib" = "xyes"])

View File

@ -1382,7 +1382,7 @@ main(int argc, char **argv)
evas_free(evas);
evas_shutdown();
engine_shutdown();
evas_shutdown();
return 0;
}