diff options
author | Brian Swetland <swetland@google.com> | 2010-09-20 19:32:01 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-09-20 19:32:01 -0700 |
commit | 23838860b0295351a5891899f2249fc30ecdfd10 (patch) | |
tree | de2943001aaadab8c76e69ae7cc20d6bd1efe0cb /opengl/libs/EGL | |
parent | 399542a7a30aa691c4923961c557fc99960786fd (diff) | |
parent | 5c7465220d52c64c87fe4566fe109c649ec5c4f7 (diff) | |
download | frameworks_base-23838860b0295351a5891899f2249fc30ecdfd10.zip frameworks_base-23838860b0295351a5891899f2249fc30ecdfd10.tar.gz frameworks_base-23838860b0295351a5891899f2249fc30ecdfd10.tar.bz2 |
am 5c746522: am 181e5ea8: Merge "support loading EGL libraries from /vendor/lib/egl as well as /system/lib/egl" into gingerbread
Merge commit '5c7465220d52c64c87fe4566fe109c649ec5c4f7'
* commit '5c7465220d52c64c87fe4566fe109c649ec5c4f7':
support loading EGL libraries from /vendor/lib/egl as well as /system/lib/egl
Diffstat (limited to 'opengl/libs/EGL')
-rw-r--r-- | opengl/libs/EGL/Loader.cpp | 28 | ||||
-rw-r--r-- | opengl/libs/EGL/Loader.h | 2 |
2 files changed, 16 insertions, 14 deletions
diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp index 5d6ac26..747c829 100644 --- a/opengl/libs/EGL/Loader.cpp +++ b/opengl/libs/EGL/Loader.cpp @@ -136,30 +136,24 @@ void* Loader::open(EGLNativeDisplayType display, int impl, egl_connection_t* cnx */ void* dso; - char path[PATH_MAX]; int index = int(display); driver_t* hnd = 0; - const char* const format = "/system/lib/egl/lib%s_%s.so"; char const* tag = getTag(index, impl); if (tag) { - snprintf(path, PATH_MAX, format, "GLES", tag); - dso = load_driver(path, cnx, EGL | GLESv1_CM | GLESv2); + dso = load_driver("GLES", tag, cnx, EGL | GLESv1_CM | GLESv2); if (dso) { hnd = new driver_t(dso); } else { // Always load EGL first - snprintf(path, PATH_MAX, format, "EGL", tag); - dso = load_driver(path, cnx, EGL); + dso = load_driver("EGL", tag, cnx, EGL); if (dso) { hnd = new driver_t(dso); // TODO: make this more automated - snprintf(path, PATH_MAX, format, "GLESv1_CM", tag); - hnd->set( load_driver(path, cnx, GLESv1_CM), GLESv1_CM ); + hnd->set( load_driver("GLESv1_CM", tag, cnx, GLESv1_CM), GLESv1_CM ); - snprintf(path, PATH_MAX, format, "GLESv2", tag); - hnd->set( load_driver(path, cnx, GLESv2), GLESv2 ); + hnd->set( load_driver("GLESv2", tag, cnx, GLESv2), GLESv2 ); } } } @@ -222,12 +216,20 @@ void Loader::init_api(void* dso, } } -void *Loader::load_driver(const char* driver_absolute_path, +void *Loader::load_driver(const char* kind, const char *tag, egl_connection_t* cnx, uint32_t mask) { + char driver_absolute_path[PATH_MAX]; + const char* const search1 = "/vendor/lib/egl/lib%s_%s.so"; + const char* const search2 = "/system/lib/egl/lib%s_%s.so"; + + snprintf(driver_absolute_path, PATH_MAX, search1, kind, tag); if (access(driver_absolute_path, R_OK)) { - // this happens often, we don't want to log an error - return 0; + snprintf(driver_absolute_path, PATH_MAX, search2, kind, tag); + if (access(driver_absolute_path, R_OK)) { + // this happens often, we don't want to log an error + return 0; + } } void* dso = dlopen(driver_absolute_path, RTLD_NOW | RTLD_LOCAL); diff --git a/opengl/libs/EGL/Loader.h b/opengl/libs/EGL/Loader.h index 8659b0b..580d6e4 100644 --- a/opengl/libs/EGL/Loader.h +++ b/opengl/libs/EGL/Loader.h @@ -74,7 +74,7 @@ public: private: Loader(); - void *load_driver(const char* driver, egl_connection_t* cnx, uint32_t mask); + void *load_driver(const char* kind, const char *tag, egl_connection_t* cnx, uint32_t mask); static __attribute__((noinline)) void init_api(void* dso, |