Skip to content

Commit

Permalink
Merge r223416 - [WPE] Build failure due to invalid cast of EGLNativeW…
Browse files Browse the repository at this point in the history
…indowType when targetting 64-bit ARM

https://bugs.webkit.org/show_bug.cgi?id=178090

Reviewed by Michael Catanzaro.

EGLNativeWindowType can be aliased to a different type depending (at least) on the EGL
implementation, its build options, and the libepoxy build options.  Using "static_cast"
works when it is a numeric value and the width of the value needs to be optionally
extended to 64 bits (e.g. the EGL type is "int" in a 32-bit CPU) but not for pointers,
and using "reinterpret_cast" works when the size of a pointer is 64 bits but not in other
cases. Therefore it seems reasonable to use a plain C cast expression to solve this
particular situation.

* WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
(WebKit::AcceleratedSurfaceWPE::window const): Use a good old plain C cast expression.
  • Loading branch information
aperezdc authored and carlosgcampos committed Oct 17, 2017
1 parent d6c6e94 commit 069a1ef
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
18 changes: 18 additions & 0 deletions Source/WebKit/ChangeLog
@@ -1,3 +1,21 @@
2017-10-16 Adrian Perez de Castro <aperez@igalia.com>

[WPE] Build failure due to invalid cast of EGLNativeWindowType when targetting 64-bit ARM
https://bugs.webkit.org/show_bug.cgi?id=178090

Reviewed by Michael Catanzaro.

EGLNativeWindowType can be aliased to a different type depending (at least) on the EGL
implementation, its build options, and the libepoxy build options. Using "static_cast"
works when it is a numeric value and the width of the value needs to be optionally
extended to 64 bits (e.g. the EGL type is "int" in a 32-bit CPU) but not for pointers,
and using "reinterpret_cast" works when the size of a pointer is 64 bits but not in other
cases. Therefore it seems reasonable to use a plain C cast expression to solve this
particular situation.

* WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
(WebKit::AcceleratedSurfaceWPE::window const): Use a good old plain C cast expression.

2017-10-10 Adrian Perez de Castro <aperez@igalia.com>

[WPE] Remove the possibility of installing the old WebKit2 C API
Expand Down
Expand Up @@ -75,7 +75,12 @@ void AcceleratedSurfaceWPE::finalize()
uint64_t AcceleratedSurfaceWPE::window() const
{
ASSERT(m_backend);
return reinterpret_cast<uint64_t>(wpe_renderer_backend_egl_target_get_native_window(m_backend));
// EGLNativeWindowType changes depending on the EGL implementation: reinterpret_cast works
// for pointers (only if they are 64-bit wide and not for other cases), and static_cast for
// numeric types (and when needed they get extended to 64-bit) but not for pointers. Using
// a plain C cast expression in this one instance works in all cases.
static_assert(sizeof(EGLNativeWindowType) <= sizeof(uint64_t), "EGLNativeWindowType must not be longer than 64 bits.");
return (uint64_t) wpe_renderer_backend_egl_target_get_native_window(m_backend);
}

uint64_t AcceleratedSurfaceWPE::surfaceID() const
Expand Down

0 comments on commit 069a1ef

Please sign in to comment.