#include <wtf/text/CString.h>
#include <wtf/text/StringBuilder.h>
-#include <wtf/text/WTFString.h>
// os-compatibility
extern "C" {
namespace WebCore {
WaylandDisplay* WaylandDisplay::m_instance = 0;
+String WaylandDisplay::m_socketString = "Wayland-";
static int MAXEVENTS = 64;
static const struct wl_registry_listener registrylistener = {
void WaylandDisplay::initialize(wl_display* display)
{
-
if (display) {
m_eventDispatcher = WaylandPollThread::create();
m_display = wl_display_create();
return;
}
- String socketString("Wayland-");
- socketString.append(String::format("%d", m_eventDispatcher->id()));
- setenv("WAYLAND_NESTED_CLIENT", socketString.utf8().data(), 1);
-
- if (wl_display_add_socket(m_display, socketString.utf8().data())) {
+ m_socketString.append(String::format("%d", m_eventDispatcher->id()));
+ if (wl_display_add_socket(m_display, m_socketString.utf8().data())) {
LOG_ERROR("WaylandDisplay initialization failed:: Failed to Add socket.");
terminate();
return;
m_eventDispatcher->start(m_display, display);
} else {
- const char* nestedSocket = getenv("WAYLAND_NESTED_CLIENT");
- m_display = wl_display_connect(nestedSocket);
+ m_display = wl_display_connect(m_socketString.utf8().data());
if (!m_display) {
LOG_ERROR("WaylandDisplay initialization failed: Failed to make connection with Wayland.");
#include "WaylandHelper.h"
#include "WaylandSurface.h"
+#include <wtf/text/WTFString.h>
+
namespace WebCore {
class WaylandBuffer;
// callback handlers.
static void syncCallback(void*, struct wl_callback*, uint32_t);
+ static void setSocketString(String socketString) { m_socketString = socketString; }
+ static String socketString() { return m_socketString; }
+
protected:
WaylandDisplay();
virtual ~WaylandDisplay();
bool m_pendingEvents :1;
friend class WaylandBuffer;
friend class WaylandSurface;
+
+ static String m_socketString;
};
}
encoder->encode(pageLength);
encoder->encode(gapBetweenPages);
encoder->encode(userAgent);
+#if PLATFORM(WAYLAND)
+ encoder->encode(waylandSocketString);
+#endif
encoder->encode(sessionState);
encoder->encode(highestUsedBackForwardItemID);
encoder->encode(canRunBeforeUnloadConfirmPanel);
return false;
if (!decoder->decode(parameters.userAgent))
return false;
+#if PLATFORM(WAYLAND)
+ if (!decoder->decode(parameters.waylandSocketString))
+ return false;
+#endif
if (!decoder->decode(parameters.sessionState))
return false;
if (!decoder->decode(parameters.highestUsedBackForwardItemID))
#if PLATFORM(WIN)
HWND nativeWindow;
#endif
+
+#if PLATFORM(WAYLAND)
+ String waylandSocketString;
+#endif
};
} // namespace WebKit
#if PLATFORM(WIN)
parameters.nativeWindow = m_pageClient->nativeWindow();
#endif
+
+#if PLATFORM(WAYLAND)
+ parameters.waylandSocketString = WaylandDisplay::socketString();
+#endif
return parameters;
}
#include <WebCore/TizenExtensibleAPI.h>
#endif
+#if PLATFORM(WAYLAND)
+#include "WaylandDisplay.h"
+#endif
+
using namespace JSC;
using namespace WebCore;
connection()->setOnlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage(true);
#endif
-#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+#if !PLATFORM(WAYLAND) && ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
+ // In case of WRT, this causes WaylandDisplay initialization ahead of UIProcess.
+ // So, we have to initialize PlatformSurfacePoolTizen in WebProcess::createWebPage, not here.
m_platformSurfacePool = adoptPtr(new PlatformSurfacePoolTizen());
#endif
void WebProcess::createWebPage(uint64_t pageID, const WebPageCreationParameters& parameters)
{
+#if PLATFORM(WAYLAND)
+ WaylandDisplay::setSocketString(parameters.waylandSocketString);
+#endif
+
#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
if (!m_platformSurfacePool)
m_platformSurfacePool = adoptPtr(new PlatformSurfacePoolTizen());