OSDN Git Service

Make libEGL build cleanly under 64-bit
authorDan Stoza <stoza@google.com>
Fri, 17 Jan 2014 19:38:34 +0000 (11:38 -0800)
committerColin Cross <ccross@android.com>
Tue, 28 Jan 2014 02:16:50 +0000 (18:16 -0800)
Change-Id: I255dfb70b166b7469d59352b1acfc7aececa07de

opengl/libs/EGL/egl.cpp
opengl/libs/EGL/eglApi.cpp

index f759e6b..67fbae5 100644 (file)
@@ -27,7 +27,6 @@
 #include <cutils/log.h>
 #include <cutils/atomic.h>
 #include <cutils/properties.h>
-#include <cutils/memory.h>
 
 #include <utils/CallStack.h>
 #include <utils/String8.h>
@@ -42,6 +41,8 @@
 #include "egl_display.h"
 #include "egl_object.h"
 
+typedef __eglMustCastToProperFunctionPointerType EGLFuncPointer;
+
 // ----------------------------------------------------------------------------
 namespace android {
 // ----------------------------------------------------------------------------
@@ -234,11 +235,11 @@ static void early_egl_init(void)
     pthread_key_create(&gGLTraceKey, NULL);
     initEglTraceLevel();
 #endif
-    uint32_t addr = (uint32_t)((void*)gl_no_context);
-    android_memset32(
-            (uint32_t*)(void*)&gHooksNoContext,
-            addr,
-            sizeof(gHooksNoContext));
+    int numHooks = sizeof(gHooksNoContext) / sizeof(EGLFuncPointer);
+    EGLFuncPointer *iter = reinterpret_cast<EGLFuncPointer*>(&gHooksNoContext);
+    for (int hook = 0; hook < numHooks; ++hook) {
+        *(iter++) = reinterpret_cast<EGLFuncPointer>(gl_no_context);
+    }
 
     setGLHooksThreadSpecific(&gHooksNoContext);
 }
index 0cc5265..d96b54f 100644 (file)
@@ -204,7 +204,7 @@ EGLDisplay eglGetDisplay(EGLNativeDisplayType display)
 {
     clearError();
 
-    uint32_t index = uint32_t(display);
+    uintptr_t index = reinterpret_cast<uintptr_t>(display);
     if (index >= NUM_DISPLAYS) {
         return setError(EGL_BAD_PARAMETER, EGL_NO_DISPLAY);
     }