diff options
author | Vasiliy Ulyanov <v.ulyanov@samsung.com> | 2016-12-09 13:06:48 +0300 |
---|---|---|
committer | Vasiliy Ulyanov <v.ulyanov@samsung.com> | 2017-01-23 11:24:17 +0300 |
commit | 49d296e27a95a384d77310cf7fdba635f3d4ced0 (patch) | |
tree | d81bb5a63e3016cbe7bb01371a4eed19e178b881 | |
parent | 10cbad9bfe346f80c276180f2fd9f844a8b08916 (diff) | |
download | emulator-yagl-49d296e27a95a384d77310cf7fdba635f3d4ced0.tar.gz emulator-yagl-49d296e27a95a384d77310cf7fdba635f3d4ced0.tar.bz2 emulator-yagl-49d296e27a95a384d77310cf7fdba635f3d4ced0.zip |
Avoid using yagl_host_handle when acquiring imagesdevel/vulkan
yagl_host_handle is defined as uint32_t, while EGL image client handle
(either EGLImageKHR or GLeglImageOES) is void *. On x64 arch the cast to
yagl_host_handle will lead to data truncation and as a result the image
may not be found.
Change-Id: I02e8a14326c635d0f6bcb0e9b289a0467c846f1f
Signed-off-by: Vasiliy Ulyanov <v.ulyanov@samsung.com>
-rw-r--r-- | EGL/yagl_client_image.c | 4 | ||||
-rw-r--r-- | GLES_common/yagl_gles_calls.c | 2 | ||||
-rw-r--r-- | include/yagl_client_image.h | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/EGL/yagl_client_image.c b/EGL/yagl_client_image.c index 4dc03cf..8eac326 100644 --- a/EGL/yagl_client_image.c +++ b/EGL/yagl_client_image.c @@ -62,7 +62,7 @@ void yagl_client_image_release(struct yagl_client_image *image) } } -struct yagl_client_image *yagl_acquire_client_image(yagl_host_handle handle) +struct yagl_client_image *yagl_acquire_client_image(void *handle) { struct yagl_context *ctx = yagl_get_context(); struct yagl_image *image; @@ -72,7 +72,7 @@ struct yagl_client_image *yagl_acquire_client_image(yagl_host_handle handle) return NULL; } - image = yagl_display_image_acquire(ctx->dpy, (EGLImageKHR)INT2VOIDP(handle)); + image = yagl_display_image_acquire(ctx->dpy, (EGLImageKHR)handle); if (!image) { return NULL; diff --git a/GLES_common/yagl_gles_calls.c b/GLES_common/yagl_gles_calls.c index 22e4c20..a87f4c5 100644 --- a/GLES_common/yagl_gles_calls.c +++ b/GLES_common/yagl_gles_calls.c @@ -2444,7 +2444,7 @@ YAGL_API void glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) goto out; } - image_obj = (struct yagl_gles_image*)yagl_acquire_client_image((yagl_host_handle)VOIDP2INT(image)); + image_obj = (struct yagl_gles_image*)yagl_acquire_client_image(image); if (!image_obj) { YAGL_SET_ERR(GL_INVALID_OPERATION); diff --git a/include/yagl_client_image.h b/include/yagl_client_image.h index 19ea605..08c979c 100644 --- a/include/yagl_client_image.h +++ b/include/yagl_client_image.h @@ -64,6 +64,6 @@ YAGL_API void yagl_client_image_acquire(struct yagl_client_image *image); */ YAGL_API void yagl_client_image_release(struct yagl_client_image *image); -YAGL_API struct yagl_client_image *yagl_acquire_client_image(yagl_host_handle handle); +YAGL_API struct yagl_client_image *yagl_acquire_client_image(void *handle); #endif |