<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[185453] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/185453">185453</a></dd>
<dt>Author</dt> <dd>clopez@igalia.com</dd>
<dt>Date</dt> <dd>2015-06-11 08:21:07 -0700 (Thu, 11 Jun 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[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.

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.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkChangeLog">trunk/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGLContextcpp">trunk/Source/WebCore/platform/graphics/GLContext.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicseglGLContextEGLcpp">trunk/Source/WebCore/platform/graphics/egl/GLContextEGL.cpp</a></li>
<li><a href="#trunkSourcecmakeOptionsGTKcmake">trunk/Source/cmake/OptionsGTK.cmake</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/ChangeLog (185452 => 185453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/ChangeLog        2015-06-11 12:05:25 UTC (rev 185452)
+++ trunk/ChangeLog        2015-06-11 15:21:07 UTC (rev 185453)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2015-06-11  Carlos Alberto Lopez Perez  &lt;clopez@igalia.com&gt;
+
+        [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.
+
</ins><span class="cx"> 2015-06-03  Daniel Bates  &lt;dabates@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Caps lock indicator should not be shown in read-only or disabled field
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (185452 => 185453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-06-11 12:05:25 UTC (rev 185452)
+++ trunk/Source/WebCore/ChangeLog        2015-06-11 15:21:07 UTC (rev 185453)
</span><span class="lines">@@ -1,3 +1,35 @@
</span><ins>+2015-06-11  Carlos Alberto Lopez Perez  &lt;clopez@igalia.com&gt;
+
+        [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.
+
</ins><span class="cx"> 2015-06-11  Hunseop Jeong  &lt;hs85.jeong@samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [EFL] Fix the debug build after r185417.
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGLContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/GLContext.cpp (185452 => 185453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/GLContext.cpp        2015-06-11 12:05:25 UTC (rev 185452)
+++ trunk/Source/WebCore/platform/graphics/GLContext.cpp        2015-06-11 15:21:07 UTC (rev 185453)
</span><span class="lines">@@ -123,7 +123,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if USE(GLX)
</span><del>-    if (auto glxContext = GLContextGLX::createContext(windowHandle, sharingContext))
</del><ins>+    if (auto glxContext = GLContextGLX::createContext(reinterpret_cast&lt;XID&gt;(windowHandle), sharingContext))
</ins><span class="cx">         return WTF::move(glxContext);
</span><span class="cx"> #endif
</span><span class="cx"> #if USE(EGL)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicseglGLContextEGLcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/egl/GLContextEGL.cpp (185452 => 185453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/egl/GLContextEGL.cpp        2015-06-11 12:05:25 UTC (rev 185452)
+++ trunk/Source/WebCore/platform/graphics/egl/GLContextEGL.cpp        2015-06-11 15:21:07 UTC (rev 185453)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(X11)
</span><span class="cx"> #include &quot;PlatformDisplayX11.h&quot;
</span><ins>+#include &lt;X11/Xlib.h&gt;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(ACCELERATED_2D_CANVAS)
</span><span class="lines">@@ -171,7 +172,7 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    EGLSurface surface = eglCreatePixmapSurface(display, config, pixmap.get(), 0);
</del><ins>+    EGLSurface surface = eglCreatePixmapSurface(display, config, reinterpret_cast&lt;EGLNativePixmapType&gt;(pixmap.get()), 0);
</ins><span class="cx">     if (surface == EGL_NO_SURFACE) {
</span><span class="cx">         eglDestroyContext(display, context);
</span><span class="cx">         return nullptr;
</span></span></pre></div>
<a id="trunkSourcecmakeOptionsGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/OptionsGTK.cmake (185452 => 185453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/OptionsGTK.cmake        2015-06-11 12:05:25 UTC (rev 185452)
+++ trunk/Source/cmake/OptionsGTK.cmake        2015-06-11 15:21:07 UTC (rev 185453)
</span><span class="lines">@@ -80,9 +80,6 @@
</span><span class="cx"> # FIXME: Can we use cairo-glesv2 to avoid this conflict?
</span><span class="cx"> WEBKIT_OPTION_CONFLICT(ENABLE_ACCELERATED_2D_CANVAS ENABLE_GLES2)
</span><span class="cx"> 
</span><del>-# FIXME: Should be possible to build with support for both X11 and Wayland.
-WEBKIT_OPTION_CONFLICT(ENABLE_WAYLAND_TARGET ENABLE_X11_TARGET)
-
</del><span class="cx"> WEBKIT_OPTION_DEPEND(ENABLE_3D_TRANSFORMS ENABLE_OPENGL)
</span><span class="cx"> WEBKIT_OPTION_DEPEND(ENABLE_ACCELERATED_2D_CANVAS ENABLE_OPENGL)
</span><span class="cx"> WEBKIT_OPTION_DEPEND(ENABLE_GLES2 ENABLE_OPENGL)
</span></span></pre>
</div>
</div>

</body>
</html>