diff --git a/configure b/configure index 08e73c5f0..173b9e79a 100755 --- a/configure +++ b/configure @@ -21578,6 +21578,16 @@ fi $as_echo "#define HAVE_LIBUDEV_H 1" >>confdefs.h + + udev_lib=`find_lib "libudev.so.*" "" | sed 's/.*\/\(.*\)/\1/; q'` + if test x$udev_lib != x; then + echo "-- dynamic udev -> $udev_lib" + +cat >>confdefs.h <<_ACEOF +#define SDL_UDEV_DYNAMIC "$udev_lib" +_ACEOF + + fi fi fi } diff --git a/configure.in b/configure.in index 801d2f198..bf67b0abf 100644 --- a/configure.in +++ b/configure.in @@ -2231,6 +2231,12 @@ AC_HELP_STRING([--enable-libudev], [enable libudev support [[default=yes]]]), have_libudev_h_hdr=no) if test x$have_libudev_h_hdr = xyes; then AC_DEFINE(HAVE_LIBUDEV_H, 1, [ ]) + + udev_lib=[`find_lib "libudev.so.*" "" | sed 's/.*\/\(.*\)/\1/; q'`] + if test x$udev_lib != x; then + echo "-- dynamic udev -> $udev_lib" + AC_DEFINE_UNQUOTED(SDL_UDEV_DYNAMIC, "$udev_lib", [ ]) + fi fi fi } diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index 850866ab7..f953cb0d9 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -360,4 +360,7 @@ /* Enable ime support */ #undef SDL_USE_IME +/* Enable dynamic udev support */ +#undef SDL_UDEV_DYNAMIC + #endif /* SDL_config_h_ */ diff --git a/src/core/linux/SDL_dbus.c b/src/core/linux/SDL_dbus.c index ab73ca17c..332113d8a 100644 --- a/src/core/linux/SDL_dbus.c +++ b/src/core/linux/SDL_dbus.c @@ -237,3 +237,5 @@ SDL_DBus_ScreensaverInhibit(SDL_bool inhibit) } } #endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/core/linux/SDL_ibus.c b/src/core/linux/SDL_ibus.c index 3d63b8b30..33ef6ac7e 100644 --- a/src/core/linux/SDL_ibus.c +++ b/src/core/linux/SDL_ibus.c @@ -680,3 +680,5 @@ SDL_IBus_PumpEvents(void) } #endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/core/linux/SDL_ime.c b/src/core/linux/SDL_ime.c index 049bd6e02..4809b2421 100644 --- a/src/core/linux/SDL_ime.c +++ b/src/core/linux/SDL_ime.c @@ -136,3 +136,5 @@ SDL_IME_PumpEvents() if (SDL_IME_PumpEvents_Real) SDL_IME_PumpEvents_Real(); } + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/core/linux/SDL_udev.c b/src/core/linux/SDL_udev.c index 351ecf3c7..a0b168d85 100644 --- a/src/core/linux/SDL_udev.c +++ b/src/core/linux/SDL_udev.c @@ -33,7 +33,14 @@ #include "SDL.h" -static const char* SDL_UDEV_LIBS[] = { "libudev.so.1", "libudev.so.0" }; +static const char *SDL_UDEV_LIBS[] = { +#ifdef SDL_UDEV_DYNAMIC + SDL_UDEV_DYNAMIC +#else + "libudev.so.1", + "libudev.so.0" +#endif +}; #define _THIS SDL_UDEV_PrivateData *_this static _THIS = NULL; @@ -252,8 +259,12 @@ SDL_UDEV_LoadLibrary(void) if (_this == NULL) { return SDL_SetError("UDEV not initialized"); } - - + + /* See if there is a udev library already loaded */ + if (SDL_UDEV_load_syms() == 0) { + return 0; + } + if (_this->udev_handle == NULL) { for( i = 0 ; i < SDL_arraysize(SDL_UDEV_LIBS); i++) { _this->udev_handle = SDL_LoadObject(SDL_UDEV_LIBS[i]); @@ -536,3 +547,5 @@ SDL_UDEV_DelCallback(SDL_UDEV_Callback cb) #endif /* SDL_USE_LIBUDEV */ + +/* vi: set ts=4 sw=4 expandtab: */