[GTK] [Wayland] Should be possible to build with support for both X11 and Wayland.
authorclopez@igalia.com <clopez@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Jun 2015 15:21:07 +0000 (15:21 +0000)
committerclopez@igalia.com <clopez@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Jun 2015 15:21:07 +0000 (15:21 +0000)
https://bugs.webkit.org/show_bug.cgi?id=145701

Reviewed by Žan Doberšek.

.:

* Source/cmake/OptionsGTK.cmake: Remove conflicting options.

Source/WebCore:

No new tests, no behavior changes.

When building both targets, we have to include the wayland-egl
headers in order to build the Wayland target. This causes that
EGLNativePixmapType and EGLNativeWindowType get defined as
different types than when building only the X11 target.

By type casting them to the ones that are expected, we are able
to build both targets at the same time.

I have done tests (building each target alone as also both targets
at the same time), and everything seems to works as expected.

Once built for both targets, if you try to launch the MiniBrowser
from inside a Wayland compositor (Weston on top of X for example),
it will trigger the X11 target if the DISPLAY environment variable
is set and the environment variable GDK_BACKEND is not set to wayland,
otherwise it will trigger the Wayland target.

* platform/graphics/GLContext.cpp:
(WebCore::GLContext::createContextForWindow): Add type cast.
* platform/graphics/egl/GLContextEGL.cpp: Add missing include when
building both targets that is required for defining DefaultRootWindow().
(WebCore::GLContextEGL::createPixmapContext): Add type cast.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@185453 268f45cc-cd09-0410-ab3c-d52691b4dbfc

ChangeLog
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/GLContext.cpp
Source/WebCore/platform/graphics/egl/GLContextEGL.cpp
Source/cmake/OptionsGTK.cmake

index 87a6562..c31426a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2015-06-11  Carlos Alberto Lopez Perez  <clopez@igalia.com>
+
+        [GTK] [Wayland] Should be possible to build with support for both X11 and Wayland.
+        https://bugs.webkit.org/show_bug.cgi?id=145701
+
+        Reviewed by Žan Doberšek.
+
+        * Source/cmake/OptionsGTK.cmake: Remove conflicting options.
+
 2015-06-03  Daniel Bates  <dabates@apple.com>
 
         Caps lock indicator should not be shown in read-only or disabled field
index 052a9f2..22f47d9 100644 (file)
@@ -1,3 +1,35 @@
+2015-06-11  Carlos Alberto Lopez Perez  <clopez@igalia.com>
+
+        [GTK] [Wayland] Should be possible to build with support for both X11 and Wayland.
+        https://bugs.webkit.org/show_bug.cgi?id=145701
+
+        Reviewed by Žan Doberšek.
+
+        No new tests, no behavior changes.
+
+        When building both targets, we have to include the wayland-egl
+        headers in order to build the Wayland target. This causes that
+        EGLNativePixmapType and EGLNativeWindowType get defined as
+        different types than when building only the X11 target.
+
+        By type casting them to the ones that are expected, we are able
+        to build both targets at the same time.
+
+        I have done tests (building each target alone as also both targets
+        at the same time), and everything seems to works as expected.
+
+        Once built for both targets, if you try to launch the MiniBrowser
+        from inside a Wayland compositor (Weston on top of X for example),
+        it will trigger the X11 target if the DISPLAY environment variable
+        is set and the environment variable GDK_BACKEND is not set to wayland,
+        otherwise it will trigger the Wayland target.
+
+        * platform/graphics/GLContext.cpp:
+        (WebCore::GLContext::createContextForWindow): Add type cast.
+        * platform/graphics/egl/GLContextEGL.cpp: Add missing include when
+        building both targets that is required for defining DefaultRootWindow().
+        (WebCore::GLContextEGL::createPixmapContext): Add type cast.
+
 2015-06-11  Hunseop Jeong  <hs85.jeong@samsung.com>
 
         [EFL] Fix the debug build after r185417.
index c959a97..1df982c 100644 (file)
@@ -123,7 +123,7 @@ std::unique_ptr<GLContext> GLContext::createContextForWindow(GLNativeWindowType
 #endif
 
 #if USE(GLX)
-    if (auto glxContext = GLContextGLX::createContext(windowHandle, sharingContext))
+    if (auto glxContext = GLContextGLX::createContext(reinterpret_cast<XID>(windowHandle), sharingContext))
         return WTF::move(glxContext);
 #endif
 #if USE(EGL)
index c6788d6..087d9bf 100644 (file)
@@ -37,6 +37,7 @@
 
 #if PLATFORM(X11)
 #include "PlatformDisplayX11.h"
+#include <X11/Xlib.h>
 #endif
 
 #if ENABLE(ACCELERATED_2D_CANVAS)
@@ -171,7 +172,7 @@ std::unique_ptr<GLContextEGL> GLContextEGL::createPixmapContext(EGLContext shari
         return nullptr;
     }
 
-    EGLSurface surface = eglCreatePixmapSurface(display, config, pixmap.get(), 0);
+    EGLSurface surface = eglCreatePixmapSurface(display, config, reinterpret_cast<EGLNativePixmapType>(pixmap.get()), 0);
     if (surface == EGL_NO_SURFACE) {
         eglDestroyContext(display, context);
         return nullptr;
index 9534e0f..c3fab68 100644 (file)
@@ -80,9 +80,6 @@ WEBKIT_OPTION_DEFINE(USE_REDIRECTED_XCOMPOSITE_WINDOW "Whether to use a Redirect
 # FIXME: Can we use cairo-glesv2 to avoid this conflict?
 WEBKIT_OPTION_CONFLICT(ENABLE_ACCELERATED_2D_CANVAS ENABLE_GLES2)
 
-# FIXME: Should be possible to build with support for both X11 and Wayland.
-WEBKIT_OPTION_CONFLICT(ENABLE_WAYLAND_TARGET ENABLE_X11_TARGET)
-
 WEBKIT_OPTION_DEPEND(ENABLE_3D_TRANSFORMS ENABLE_OPENGL)
 WEBKIT_OPTION_DEPEND(ENABLE_ACCELERATED_2D_CANVAS ENABLE_OPENGL)
 WEBKIT_OPTION_DEPEND(ENABLE_GLES2 ENABLE_OPENGL)