Drop support for Wayland/Weston < 1.2 and update to 1.2 APIs
authorU. Artie Eoff <ullysses.a.eoff@intel.com>
Fri, 9 Aug 2013 23:20:27 +0000 (16:20 -0700)
committerU. Artie Eoff <ullysses.a.eoff@intel.com>
Fri, 9 Aug 2013 23:24:06 +0000 (16:24 -0700)
Dropped usage of wayland server 1.2 deprecated APIs and replaced
with new APIs.

This also drops support for Wayland and Weston SDK < 1.2.

Incremented project version.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
configure.ac
src/extensions/weston/Makefile.am
src/extensions/weston/weston-wfits-init.cpp
src/extensions/weston/weston-wfits-input.cpp
src/extensions/weston/weston-wfits-query.cpp
src/extensions/weston/weston-wfits.cpp
src/extensions/weston/weston-wfits.h

index 9ffc9d2..03d6bad 100644 (file)
@@ -1,7 +1,7 @@
 AC_PREREQ([2.64])
 
 AC_INIT([wayland-fits],
-        [0.1.0],
+        [0.2.0],
         [https://github.com/01org/wayland-fits/issues],
         [wayland-fits],
         [https://github.com/01org/wayland-fits])
@@ -23,9 +23,8 @@ LDFLAGS="-Wl,--no-as-needed"
 
 # Required minimum versions for dependencies
 m4_define([check_req_version],         [0.9.8])
-# m4_define([pixman1_req_version],     [0.29.3])
-m4_define([wayland_req_version],       [1.0.6])
-m4_define([weston_req_version],                [1.0.6])
+m4_define([wayland_req_version],       [1.2.0])
+m4_define([weston_req_version],                [1.2.0])
 m4_define([efl_req_version],           [1.7.6])
 m4_define([gtk_req_version],           [3.8.0])
 m4_define([boost_req_version],         [1.49.0])
@@ -77,38 +76,6 @@ if test "x$want_weston_extensions" != "xno"; then
                [
                        AC_DEFINE(HAVE_WESTON, 1, [Support for Weston extensions])
                        have_weston="yes"
-                       PKG_CHECK_MODULES([WESTON_SDK1],
-                               [
-                                       weston >= 1.0.6
-                                       weston < 1.0.90
-                               ],
-                               [
-                                       AC_DEFINE(HAVE_WESTON_SDK1, 1, [Support for Weston 1.0 extensions])
-                                       have_weston_sdk1="yes"
-                               ],
-                               [have_weston_sdk1="no"]
-                       )
-                       PKG_CHECK_MODULES([WESTON_SDK2],
-                               [
-                                       weston >= 1.0.90
-                                       weston < 1.1.90
-                               ],
-                               [
-                                       AC_DEFINE(HAVE_WESTON_SDK2, 1, [Support for Weston 1.1 extensions])
-                                       have_weston_sdk2="yes"
-                               ],
-                               [have_weston_sdk2="no"]
-                       )
-                       PKG_CHECK_MODULES([WESTON_SDK3],
-                               [
-                                       weston >= 1.1.90
-                               ],
-                               [
-                                       AC_DEFINE(HAVE_WESTON_SDK3, 1, [Support for Weston 1.2 extensions])
-                                       have_weston_sdk3="yes"
-                               ],
-                               [have_weston_sdk3="no"]
-                       )
                ],
                [have_weston="no"]
        )
index 6b62ed8..a7eae54 100644 (file)
@@ -35,7 +35,6 @@ AM_CXXFLAGS =                         \
        -Wno-unused-variable            \
        -Wno-unknown-pragmas            \
        -Wno-parentheses                \
-       -Wno-deprecated-declarations    \
        -std=gnu++0x
 
 endif
index 6bb2371..f7b2edc 100644 (file)
@@ -36,18 +36,9 @@ compositor_destroy(struct wl_listener *listener, void *data)
 
 extern "C" {
 
-#if defined(HAVE_WESTON_SDK1)
-WL_EXPORT int
-module_init(struct weston_compositor *compositor)
-#elif defined(HAVE_WESTON_SDK2)
-WL_EXPORT int
-module_init(struct weston_compositor *compositor,
-           int *argc, char *argv[], const char *config_file)
-#else // defined(HAVE_WESTON_SDK3)
 WL_EXPORT int
 module_init(struct weston_compositor *compositor,
            int *argc, char *argv[])
-#endif
 {
        struct wl_listener *listener(new struct wl_listener);
 
index 48d9504..d121ccc 100644 (file)
@@ -41,9 +41,9 @@ void InputInterface::init()
        if (initialized_) return;
 
        assert(
-               wl_display_add_global(
+               wl_global_create(
                        Globals::display(),
-                       &wfits_input_interface,
+                       &wfits_input_interface, 1,
                        NULL,
                        InputInterface::bind
                )
@@ -65,36 +65,36 @@ void InputInterface::destroy()
 }
 
 /*static*/
-void InputInterface::bind(struct wl_client *wl_client, void *data, uint32_t version, uint32_t id)
+void InputInterface::bind(struct wl_client *client, void *data, uint32_t version, uint32_t id)
 {
        ActiveKeys *keys(new ActiveKeys);
 
-       struct wl_resource *resource = wl_client_add_object(
-               wl_client, &wfits_input_interface,
-               &InputInterface::implementation, id, keys
+       struct wl_resource *resource = wl_resource_create(
+               client, &wfits_input_interface, 1, id
        );
 
-       resource->destroy = InputInterface::unbind;
+       if (not resource) {
+               wl_client_post_no_memory(client);
+               return;
+       }
+
+       wl_resource_set_implementation(
+               resource, &InputInterface::implementation, keys, &InputInterface::unbind
+       );
 }
 
 /*static*/
 void InputInterface::unbind(struct wl_resource *resource)
 {
-       ActiveKeys *keys(static_cast<ActiveKeys*>(resource->data));
+       ActiveKeys *keys = static_cast<ActiveKeys*>(
+               wl_resource_get_user_data(resource)
+       );
 
        foreach (uint32_t key, *keys) {
                InputInterface::keySend(key, 0);
        }
 
        delete keys;
-
-       /* FIXME: Don't delete wl_resource in Wayland 1.2. They are now
-        * managed by the wayland server.
-        * However, for Wayland < 1.2 we should delete them... but for now
-        * just let it leak until we have time to fix this (i.e. do a
-        * compile time version check) :-/.
-        */
-//     delete resource;
 }
 
 /*static*/
@@ -145,7 +145,9 @@ void InputInterface::movePointer(struct wl_client *wl_client,
 void InputInterface::keySend(struct wl_client *wl_client,
        struct wl_resource *resource, uint32_t key, uint32_t state)
 {
-       ActiveKeys *keys(static_cast<ActiveKeys*>(resource->data));
+       ActiveKeys *keys = static_cast<ActiveKeys*>(
+               wl_resource_get_user_data(resource)
+       );
 
        InputInterface::keySend(key, state);
 
index 43c2562..0fdc3cd 100644 (file)
@@ -41,9 +41,9 @@ void QueryInterface::init()
        if (initialized_) return;
 
        assert(
-               wl_display_add_global(
+               wl_global_create(
                        Globals::display(),
-                       &wfits_query_interface,
+                       &wfits_query_interface, 1,
                        NULL, QueryInterface::bind
                )
        );
@@ -60,57 +60,54 @@ void QueryInterface::destroy()
 /*static*/
 void QueryInterface::bind(struct wl_client *client, void *data, uint32_t version, uint32_t id)
 {
-       wl_client_add_object(
-               client, &wfits_query_interface,
-               &QueryInterface::implementation, id, data
+       struct wl_resource *resource = wl_resource_create(
+               client, &wfits_query_interface, 1, id
+       );
+
+       if (not resource) {
+               wl_client_post_no_memory(client);
+               return;
+       }
+
+       wl_resource_set_implementation(
+               resource, &QueryInterface::implementation, data, NULL
        );
 }
 
 /*static*/
 void QueryInterface::surfaceGeometry(struct wl_client *client, struct wl_resource *resource,
-                      struct wl_resource *surface_resource, uint32_t result_id)
+                      struct wl_resource *surface_resource, uint32_t id)
 {
-       struct wl_resource result;
-       struct weston_surface *surface =
-               static_cast<struct weston_surface*>(surface_resource->data);
-
-       result.object.interface = &wfits_query_result_interface;
-       result.object.id = result_id;
-       result.destroy = NULL;
-       result.client = client;
-       result.data = NULL;
+       struct wl_resource *result = wl_resource_create(
+               client, &wfits_query_result_interface, 1, id
+       );
 
-       wl_client_add_resource(client, &result);
+       struct weston_surface *surface = static_cast<struct weston_surface*>(
+               wl_resource_get_user_data(surface_resource)
+       );
 
        wfits_query_result_send_surface_geometry(
-               &result,
+               result,
                wl_fixed_from_double(surface->geometry.x),
                wl_fixed_from_double(surface->geometry.y),
                surface->geometry.width,
                surface->geometry.height
        );
-       wl_resource_destroy(&result);
 }
 
 /*static*/
 void QueryInterface::globalPointerPosition(struct wl_client *client,
                              struct wl_resource *resource,
-                             uint32_t result_id)
+                             uint32_t id)
 {
-       struct wl_resource result;
-       struct weston_seat *seat(Globals::seat());
+       struct wl_resource *result = wl_resource_create(
+               client, &wfits_query_result_interface, 1, id
+       );
+
        wl_fixed_t cx, cy;
        Globals::pointerXY(&cx, &cy);
 
-       result.object.interface = &wfits_query_result_interface;
-       result.object.id = result_id;
-       result.destroy = NULL;
-       result.client = client;
-       result.data = NULL;
-
-       wl_client_add_resource(client, &result);
-       wfits_query_result_send_global_pointer_position(&result, cx, cy);
-       wl_resource_destroy(&result);
+       wfits_query_result_send_global_pointer_position(result, cx, cy);
 }
 
 } // namespace weston
index 37f97e7..96f860c 100644 (file)
@@ -94,13 +94,9 @@ struct weston_seat * Globals::seat()
 void Globals::pointerXY(wl_fixed_t *x, wl_fixed_t *y)
 {
        struct weston_seat *seat(Globals::seat());
-#if defined(HAVE_WESTON_SDK3)
+
        *x = seat->pointer->x;
        *y = seat->pointer->y;
-#else
-       *x = seat->pointer.x;
-       *y = seat->pointer.y;
-#endif
 }
 
 bool Globals::isHeadless()
index 2c8971a..da86b49 100644 (file)
 #ifndef __WESTON_WFITS_H__
 #define __WESTON_WFITS_H__
 
-#include <wayland-server.h>
-
-/**
- * Weston SDK 1.0.x workaround for
- * https://bugs.freedesktop.org/show_bug.cgi?id=63485
- **/
-extern "C" {
-#define private configure_private
 #include <weston/compositor.h>
-#undef private
-}
 
 #include "extensions/protocol/wayland-fits-server-protocol.h"