[EFL] Add Gamepad support
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 2 Jul 2012 06:22:14 +0000 (06:22 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 2 Jul 2012 06:22:14 +0000 (06:22 +0000)
https://bugs.webkit.org/show_bug.cgi?id=90170

Patch by Christophe Dumez <christophe.dumez@intel.com> on 2012-07-01
Reviewed by Kenneth Rohde Christiansen.

.:

* Source/cmake/FindEFL.cmake: Bump EFL libs dependencies.
* Source/cmake/OptionsEfl.cmake: Turn on GAMEPAD flag on EFL port.
* Source/cmakeconfig.h.cmake: Add GAMEPAD flag to CMake.

Source/WebCore:

Add support for the Gamepad feature on the EFL port.

The implementation of this class relies on the Linux
kernel joystick API.

Gamepad devices are recognized through the GamepadsEfl
class, of which implementation is based on Eeze
library. This way devices are properly registered on
connection as objects of the GamepadDeviceEfl class
which inherits GamepadDeviceLinux. GamepadDeviceEfl
reads the joystick data through an Ecore_Fd_Handler
and updates the device state accordingly. The
GamepadsEfl object is then polled for gamepads data
through the sampleGamepads method.

No new tests - already tested by gamepad/*

* CMakeLists.txt:
* PlatformEfl.cmake:
* platform/efl/GamepadsEfl.cpp: Added.
(WebCore):
(GamepadDeviceEfl):
(WebCore::GamepadDeviceEfl::create):
(WebCore::GamepadDeviceEfl::GamepadDeviceEfl):
(WebCore::GamepadDeviceEfl::~GamepadDeviceEfl):
(WebCore::GamepadDeviceEfl::readCallback):
(GamepadsEfl):
(WebCore::GamepadsEfl::onGamePadChange):
(WebCore::GamepadsEfl::GamepadsEfl):
(WebCore::GamepadsEfl::~GamepadsEfl):
(WebCore::GamepadsEfl::registerDevice):
(WebCore::GamepadsEfl::unregisterDevice):
(WebCore::GamepadsEfl::updateGamepadList):
(WebCore::sampleGamepads):

Tools:

* Scripts/webkitperl/FeatureList.pm: Turn on GAMEPAD flag
by default for EFL port.
* efl/jhbuild.modules: Bump dependency versions of EFL libs
since the latest Eeze is required for gamepad support.

LayoutTests:

Unskip gamepad/gamepad-api.html now that Gamepad
support is enabled on EFL port.

gamepad/gamepad-polling-access.html is still
skipped because it requires additional test
infrastructure.

* platform/efl/Skipped:
* platform/efl/TestExpectations:

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

14 files changed:
ChangeLog
LayoutTests/ChangeLog
LayoutTests/platform/efl/Skipped
LayoutTests/platform/efl/TestExpectations
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/PlatformEfl.cmake
Source/WebCore/platform/efl/GamepadsEfl.cpp [new file with mode: 0644]
Source/cmake/FindEFL.cmake
Source/cmake/OptionsEfl.cmake
Source/cmakeconfig.h.cmake
Tools/ChangeLog
Tools/Scripts/webkitperl/FeatureList.pm
Tools/efl/jhbuild.modules

index 3956349..098f7a3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2012-07-01  Christophe Dumez  <christophe.dumez@intel.com>
+
+        [EFL] Add Gamepad support
+        https://bugs.webkit.org/show_bug.cgi?id=90170
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        * Source/cmake/FindEFL.cmake: Bump EFL libs dependencies.
+        * Source/cmake/OptionsEfl.cmake: Turn on GAMEPAD flag on EFL port.
+        * Source/cmakeconfig.h.cmake: Add GAMEPAD flag to CMake.
+
 2012-06-30  Jason Liu  <jason.liu@torchmobile.com.cn>
 
         [BlackBerry] WebView/Browser cause blank screen when selecting a dropdown field.
index 0015cea..724d3a8 100644 (file)
@@ -1,3 +1,20 @@
+2012-07-01  Christophe Dumez  <christophe.dumez@intel.com>
+
+        [EFL] Add Gamepad support
+        https://bugs.webkit.org/show_bug.cgi?id=90170
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Unskip gamepad/gamepad-api.html now that Gamepad
+        support is enabled on EFL port.
+
+        gamepad/gamepad-polling-access.html is still
+        skipped because it requires additional test
+        infrastructure.
+
+        * platform/efl/Skipped:
+        * platform/efl/TestExpectations:
+
 2012-07-01  Kihong Kwon  <kihong.kwon@samsung.com>
 
         Move platform/qt/fast/jsnavigator-language.html to fast/js
index 3fac039..dc65ce8 100644 (file)
@@ -747,9 +747,6 @@ fast/forms/month
 fast/forms/time
 fast/forms/week
 
-# ENABLE_GAMEPAD not enabled.
-gamepad/
-
 # HiDPI tests require test infrastructure enhancements
 fast/hidpi
 svg/as-image/image-respects-deviceScaleFactor.html
index dcd66fc..6211fbb 100644 (file)
@@ -691,6 +691,9 @@ BUGWK86637 : editing/spelling/spelling-marker-description.html = TEXT
 // Looks like some race condition during loading.
 BUGWK85977 : fast/css/font-face-download-error.html = TIMEOUT
 
+// Missing test infrastructure, no gamepads available.
+BUGWKEFL : gamepad/gamepad-polling-access.html = TEXT
+
 // Fails on GTK+ and Qt as well.
 BUGWK86445 : fast/multicol/split-in-top-margin.html = IMAGE
 
index 5c56495..6cf7242 100644 (file)
@@ -96,6 +96,7 @@ SET(WebCore_INCLUDE_DIRECTORIES
 
 SET(WebCore_IDL_INCLUDES
     Modules/filesystem
+    Modules/gamepad
     Modules/geolocation
     Modules/indexeddb
     Modules/quota
@@ -2475,6 +2476,22 @@ IF (ENABLE_BATTERY_STATUS)
     )
 ENDIF ()
 
+IF (ENABLE_GAMEPAD)
+    LIST(APPEND WebCore_INCLUDE_DIRECTORIES
+        "${WEBCORE_DIR}/Modules/gamepad"
+    )
+    LIST(APPEND WebCore_IDL_FILES
+        Modules/gamepad/Gamepad.idl
+        Modules/gamepad/GamepadList.idl
+        Modules/gamepad/NavigatorGamepad.idl
+    )
+    LIST(APPEND WebCore_SOURCES
+        Modules/gamepad/Gamepad.cpp
+        Modules/gamepad/GamepadList.cpp
+        Modules/gamepad/NavigatorGamepad.cpp
+    )
+ENDIF ()
+
 IF (ENABLE_MEDIA_STREAM)
     LIST(APPEND WebCore_INCLUDE_DIRECTORIES
         ${WEBCORE_DIR}/Modules/mediastream
index 35f8ddc..bb250c8 100644 (file)
@@ -1,3 +1,45 @@
+2012-07-01  Christophe Dumez  <christophe.dumez@intel.com>
+
+        [EFL] Add Gamepad support
+        https://bugs.webkit.org/show_bug.cgi?id=90170
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Add support for the Gamepad feature on the EFL port.
+
+        The implementation of this class relies on the Linux
+        kernel joystick API.
+
+        Gamepad devices are recognized through the GamepadsEfl
+        class, of which implementation is based on Eeze
+        library. This way devices are properly registered on
+        connection as objects of the GamepadDeviceEfl class
+        which inherits GamepadDeviceLinux. GamepadDeviceEfl
+        reads the joystick data through an Ecore_Fd_Handler
+        and updates the device state accordingly. The
+        GamepadsEfl object is then polled for gamepads data
+        through the sampleGamepads method.
+
+        No new tests - already tested by gamepad/*
+
+        * CMakeLists.txt:
+        * PlatformEfl.cmake:
+        * platform/efl/GamepadsEfl.cpp: Added.
+        (WebCore):
+        (GamepadDeviceEfl):
+        (WebCore::GamepadDeviceEfl::create):
+        (WebCore::GamepadDeviceEfl::GamepadDeviceEfl):
+        (WebCore::GamepadDeviceEfl::~GamepadDeviceEfl):
+        (WebCore::GamepadDeviceEfl::readCallback):
+        (GamepadsEfl):
+        (WebCore::GamepadsEfl::onGamePadChange):
+        (WebCore::GamepadsEfl::GamepadsEfl):
+        (WebCore::GamepadsEfl::~GamepadsEfl):
+        (WebCore::GamepadsEfl::registerDevice):
+        (WebCore::GamepadsEfl::unregisterDevice):
+        (WebCore::GamepadsEfl::updateGamepadList):
+        (WebCore::sampleGamepads):
+
 2012-07-01  James Robinson  <jamesr@chromium.org>
 
         Unreviewed, rolling out r121635.
index 22af0e6..94e690f 100644 (file)
@@ -8,6 +8,7 @@ LIST(APPEND WebCore_INCLUDE_DIRECTORIES
   "${WEBCORE_DIR}/page/efl"
   "${WEBCORE_DIR}/platform/efl"
   "${WEBCORE_DIR}/platform/graphics/efl"
+  "${WEBCORE_DIR}/platform/linux"
   "${WEBCORE_DIR}/platform/mediastream/gstreamer"
   "${WEBCORE_DIR}/platform/network/soup"
   "${WEBCORE_DIR}/platform/text/efl"
@@ -33,6 +34,7 @@ LIST(APPEND WebCore_SOURCES
   platform/efl/EflScreenUtilities.cpp
   platform/efl/EventLoopEfl.cpp
   platform/efl/FileSystemEfl.cpp
+  platform/efl/GamepadsEfl.cpp
   platform/efl/KURLEfl.cpp
   platform/efl/LanguageEfl.cpp
   platform/efl/LocalizedStringsEfl.cpp
@@ -74,6 +76,7 @@ LIST(APPEND WebCore_SOURCES
   platform/image-decoders/jpeg/JPEGImageDecoder.cpp
   platform/image-decoders/png/PNGImageDecoder.cpp
   platform/image-decoders/webp/WEBPImageDecoder.cpp
+  platform/linux/GamepadDeviceLinux.cpp
   platform/mediastream/gstreamer/DeprecatedPeerConnectionHandler.cpp
   platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp
   platform/network/soup/CookieJarSoup.cpp
@@ -307,3 +310,12 @@ IF (ENABLE_WEB_AUDIO)
   ADD_DEFINITIONS(-DUNINSTALLED_AUDIO_RESOURCES_DIR="${WEBCORE_DIR}/platform/audio/resources")
 ENDIF ()
 
+IF (ENABLE_GAMEPAD)
+  LIST(APPEND WebCore_INCLUDE_DIRECTORIES
+    ${EEZE_INCLUDE_DIRS}
+  )
+  LIST(APPEND WebCore_LIBRARIES
+    ${EEZE_LIBRARIES}
+  )
+ENDIF ()
+
diff --git a/Source/WebCore/platform/efl/GamepadsEfl.cpp b/Source/WebCore/platform/efl/GamepadsEfl.cpp
new file mode 100644 (file)
index 0000000..be9308b
--- /dev/null
@@ -0,0 +1,240 @@
+/*
+ * Copyright (C) 2012 Intel Corporation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "Gamepads.h"
+
+#if ENABLE(GAMEPAD)
+
+#include "GamepadDeviceLinux.h"
+#include "GamepadList.h"
+#include <Ecore.h>
+#include <Eeze.h>
+#include <Eina.h>
+#include <unistd.h>
+#include <wtf/HashMap.h>
+#include <wtf/PassOwnPtr.h>
+#include <wtf/text/CString.h>
+#include <wtf/text/StringHash.h>
+
+namespace WebCore {
+
+static const char joystickPrefix[] = "/dev/input/js";
+
+class GamepadDeviceEfl : public GamepadDeviceLinux {
+public:
+    static PassOwnPtr<GamepadDeviceEfl> create(const String& deviceFile)
+    {
+        return adoptPtr(new GamepadDeviceEfl(deviceFile));
+    }
+    ~GamepadDeviceEfl();
+    void resetFdHandler() { m_fdHandler = 0; }
+
+private:
+    GamepadDeviceEfl(const String& deviceFile);
+    static Eina_Bool readCallback(void* userData, Ecore_Fd_Handler*);
+
+    Ecore_Fd_Handler* m_fdHandler;
+};
+
+GamepadDeviceEfl::GamepadDeviceEfl(const String& deviceFile)
+    : GamepadDeviceLinux(deviceFile)
+    , m_fdHandler(0)
+{
+    if (m_fileDescriptor < 0)
+        return;
+
+    m_fdHandler = ecore_main_fd_handler_add(m_fileDescriptor, ECORE_FD_READ, readCallback, this, 0, 0);
+    if (!m_fdHandler)
+        LOG_ERROR("Failed to create the Ecore_Fd_Handler.");
+}
+
+GamepadDeviceEfl::~GamepadDeviceEfl()
+{
+    if (m_fdHandler)
+        ecore_main_fd_handler_del(m_fdHandler);
+}
+
+Eina_Bool GamepadDeviceEfl::readCallback(void* userData, Ecore_Fd_Handler* fdHandler)
+{
+    GamepadDeviceEfl* gamepadDevice = static_cast<GamepadDeviceEfl*>(userData);
+
+    if (ecore_main_fd_handler_active_get(fdHandler, ECORE_FD_ERROR)) {
+        LOG_ERROR("An error occurred while watching the joystick file descriptor, aborting.");
+        gamepadDevice->resetFdHandler();
+        return ECORE_CALLBACK_CANCEL;
+    }
+
+    int fdDevice = ecore_main_fd_handler_fd_get(fdHandler);
+    struct js_event event;
+    const ssize_t len = read(fdDevice, &event, sizeof(event));
+
+    if (len <= 0) {
+        LOG_ERROR("Failed to read joystick file descriptor, aborting.");
+        gamepadDevice->resetFdHandler();
+        return ECORE_CALLBACK_CANCEL;
+    }
+    if (len != sizeof(event)) {
+        LOG_ERROR("Wrong js_event size read on file descriptor, ignoring.");
+        return ECORE_CALLBACK_RENEW;
+    }
+
+    gamepadDevice->updateForEvent(event);
+    return ECORE_CALLBACK_RENEW;
+}
+
+class GamepadsEfl {
+public:
+    GamepadsEfl(size_t length);
+
+    void registerDevice(const String& syspath);
+    void unregisterDevice(const String& syspath);
+
+    void updateGamepadList(GamepadList*);
+
+private:
+    ~GamepadsEfl();
+    static void onGamePadChange(const char* syspath, Eeze_Udev_Event, void* userData, Eeze_Udev_Watch* watcher);
+
+    Vector<OwnPtr<GamepadDeviceEfl> > m_slots;
+    HashMap<String, GamepadDeviceEfl*> m_deviceMap;
+
+    Eeze_Udev_Watch* m_gamepadsWatcher;
+};
+
+void GamepadsEfl::onGamePadChange(const char* syspath, Eeze_Udev_Event event, void* userData, Eeze_Udev_Watch* watcher)
+{
+    GamepadsEfl* gamepadsEfl = static_cast<GamepadsEfl*>(userData);
+
+    switch (event) {
+    case EEZE_UDEV_EVENT_ADD:
+        gamepadsEfl->registerDevice(String::fromUTF8(syspath));
+        break;
+    case EEZE_UDEV_EVENT_REMOVE:
+        gamepadsEfl->unregisterDevice(String::fromUTF8(syspath));
+        break;
+    default:
+        break;
+    }
+}
+
+GamepadsEfl::GamepadsEfl(size_t length)
+    : m_slots(length)
+    , m_gamepadsWatcher(0)
+{
+    if (eeze_init() < 0) {
+        LOG_ERROR("Failed to initialize eeze library.");
+        return;
+    }
+
+    // Watch for gamepads additions / removals.
+    m_gamepadsWatcher = eeze_udev_watch_add(EEZE_UDEV_TYPE_JOYSTICK, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), onGamePadChange, this);
+
+    // List available gamepads.
+    Eina_List* gamepads = eeze_udev_find_by_type(EEZE_UDEV_TYPE_JOYSTICK, 0);
+    void* data;
+    EINA_LIST_FREE(gamepads, data) {
+        char* syspath = static_cast<char*>(data);
+        registerDevice(String::fromUTF8(syspath));
+        eina_stringshare_del(syspath);
+    }
+}
+
+GamepadsEfl::~GamepadsEfl()
+{
+    if (m_gamepadsWatcher)
+        eeze_udev_watch_del(m_gamepadsWatcher);
+    eeze_shutdown();
+}
+
+void GamepadsEfl::registerDevice(const String& syspath)
+{
+    if (m_deviceMap.contains(syspath))
+        return;
+
+    // Make sure it is a valid joystick.
+    const char* deviceFile = eeze_udev_syspath_get_devpath(syspath.utf8().data());
+    if (!deviceFile || !eina_str_has_prefix(deviceFile, joystickPrefix))
+        return;
+
+    LOG(Gamepad, "Registering gamepad at %s, deviceFile: %s", syspath.utf8().data(), deviceFile);
+
+    const size_t slotCount = m_slots.size();
+    for (size_t index = 0; index < slotCount; ++index) {
+        if (!m_slots[index]) {
+            m_slots[index] = GamepadDeviceEfl::create(String::fromUTF8(deviceFile));
+            m_deviceMap.add(syspath, m_slots[index].get());
+            break;
+        }
+    }
+}
+
+void GamepadsEfl::unregisterDevice(const String& syspath)
+{
+    if (!m_deviceMap.contains(syspath))
+        return;
+
+    LOG(Gamepad, "Registering gamepad at %s,", syspath.utf8().data());
+
+    GamepadDeviceEfl* gamepadDevice = m_deviceMap.take(syspath);
+    const size_t index = m_slots.find(gamepadDevice);
+    ASSERT(index != notFound);
+
+    m_slots[index].clear();
+}
+
+void GamepadsEfl::updateGamepadList(GamepadList* into)
+{
+    ASSERT(m_slots.size() == into->length());
+
+    const size_t slotCount = m_slots.size();
+    for (size_t i = 0; i < slotCount; ++i) {
+        if (m_slots[i].get() && m_slots[i]->connected()) {
+            GamepadDeviceEfl* gamepadDevice = m_slots[i].get();
+            RefPtr<Gamepad> gamepad = into->item(i);
+            if (!gamepad)
+                gamepad = Gamepad::create();
+
+            gamepad->index(i);
+            gamepad->id(gamepadDevice->id());
+            gamepad->timestamp(gamepadDevice->timestamp());
+            gamepad->axes(gamepadDevice->axesCount(), gamepadDevice->axesData());
+            gamepad->buttons(gamepadDevice->buttonsCount(), gamepadDevice->buttonsData());
+
+            into->set(i, gamepad);
+        } else
+            into->set(i, 0);
+    }
+}
+
+void sampleGamepads(GamepadList* into)
+{
+    DEFINE_STATIC_LOCAL(GamepadsEfl, gamepadsEfl, (into->length()));
+    gamepadsEfl.updateGamepadList(into);
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(GAMEPAD)
index 1466f8b..054b86b 100644 (file)
@@ -1,20 +1,20 @@
 INCLUDE(FindPkgConfig)
 
 PKG_CHECK_MODULES (EDJE REQUIRED edje>=1.0.0)
-PKG_CHECK_MODULES (ECORE REQUIRED ecore>=1.0.0)
+PKG_CHECK_MODULES (ECORE REQUIRED ecore>=1.2.0)
 PKG_CHECK_MODULES (ECORE_EVAS REQUIRED ecore-evas>=1.0.0)
 PKG_CHECK_MODULES (EFLDEPS REQUIRED
-  eina>=1.0.999.63568
+  eina>=1.2.0
   evas>=1.0.0
-  ecore>=1.0.999.59763
+  ecore>=1.2.0
   ecore-file>=1.0.0
   ecore-evas>=1.0.999.59763
   edje>=1.0.0
   eukit>=1.1.0
   edbus>=1.1.0
   ecore-input>=1.0.0
-  eeze>=1.1.99)
-PKG_CHECK_MODULES (EINA REQUIRED eina>=1.0.0)
+  eeze>=1.2.99)
+PKG_CHECK_MODULES (EINA REQUIRED eina>=1.2.0)
 PKG_CHECK_MODULES (ECORE_X ecore-x>=1.0.0)
 PKG_CHECK_MODULES (EVAS REQUIRED evas>=1.0.0)
 PKG_CHECK_MODULES (EUKIT REQUIRED eukit>=1.1.0)
index a9e8869..79e2eb4 100644 (file)
@@ -75,6 +75,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FAST_MOBILE_SCROLLING ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FILTERS ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FULLSCREEN_API ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GLIB_SUPPORT ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_COLOR ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_WEBKIT_BLOB_BUILDER ON)
index acf20ed..933c0cc 100644 (file)
@@ -33,6 +33,7 @@
 #cmakedefine01 ENABLE_FIXED_REPORTED_SIZE
 #cmakedefine01 ENABLE_FTPDIR
 #cmakedefine01 ENABLE_FULLSCREEN_API
+#cmakedefine01 ENABLE_GAMEPAD
 #cmakedefine01 ENABLE_GEOLOCATION
 #cmakedefine01 ENABLE_GLIB_SUPPORT
 #cmakedefine01 ENABLE_ICONDATABASE
index 72216d4..e2a3c72 100644 (file)
@@ -1,3 +1,15 @@
+2012-07-01  Christophe Dumez  <christophe.dumez@intel.com>
+
+        [EFL] Add Gamepad support
+        https://bugs.webkit.org/show_bug.cgi?id=90170
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        * Scripts/webkitperl/FeatureList.pm: Turn on GAMEPAD flag
+        by default for EFL port.
+        * efl/jhbuild.modules: Bump dependency versions of EFL libs
+        since the latest Eeze is required for gamepad support.
+
 2012-07-01  Adam Barth  <abarth@webkit.org>
 
         Unreviewed.
index 5aad050..413cc60 100644 (file)
@@ -214,7 +214,7 @@ my @features = (
       define => "ENABLE_FULLSCREEN_API", default => (isAppleMacWebKit() || isEfl() || isGtk() || isBlackBerry() || isQt()), value => \$fullscreenAPISupport },
 
     { option => "gamepad", desc => "Toggle Gamepad support",
-      define => "ENABLE_GAMEPAD", default => isGtk(), value => \$gamepadSupport },
+      define => "ENABLE_GAMEPAD", default => (isEfl() || isGtk()), value => \$gamepadSupport },
 
     { option => "geolocation", desc => "Toggle Geolocation support",
       define => "ENABLE_GEOLOCATION", default => (isAppleWebKit() || isGtk() || isBlackBerry()), value => \$geolocationSupport },
index 9811ec2..d951342 100644 (file)
   <autotools id="eina" >
     <branch module="eina"
             repo="enlightenment.org"
-            revision="68629"/>
+            revision="73027"/>
   </autotools>
 
   <autotools id="embryo">
     <branch module="embryo"
             repo="enlightenment.org"
-            revision="68629"/>
+            revision="73027"/>
     <dependencies>
       <dep package="eina"/>
     </dependencies>
   <autotools id="evas">
     <branch module="evas"
             repo="enlightenment.org"
-            revision="68629"/>
+            revision="73027"/>
   </autotools>
 
   <autotools id="ecore">
     <branch module="ecore"
             repo="enlightenment.org"
-            revision="68629"/>
+            revision="73027"/>
     <dependencies>
       <dep package="eina"/>
       <dep package="evas"/>
   <autotools id="eet">
     <branch module="eet"
             repo="enlightenment.org"
-            revision="68629"/>
+            revision="73027"/>
     <dependencies>
       <dep package="eina"/>
     </dependencies>
   <autotools id="edje">
     <branch module="edje"
             repo="enlightenment.org"
-            revision="68629"/>
+            revision="73027"/>
     <dependencies>
       <dep package="eet"/>
       <dep package="ecore"/>
   <autotools id="e_dbus">
     <branch module="e_dbus"
             repo="enlightenment.org"
-            revision="68629"/>
+            revision="73027"/>
     <dependencies>
       <dep package="ecore"/>
       <dep package="eina"/>
   <autotools id="eeze">
     <branch module="eeze"
             repo="enlightenment.org"
-            revision="68629"/>
+            revision="73027"/>
     <dependencies>
       <dep package="ecore"/>
       <dep package="eina"/>