[packages/ecore] - updated to 1.7.1 - added wayland patch (updates for wayland 0.99/1.0 taken from SVN trunk)
qboosh
qboosh at pld-linux.org
Sat Nov 3 14:19:09 CET 2012
commit 2df4acd620e08962ac453158d5ca6be850d07baa
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Sat Nov 3 14:20:03 2012 +0100
- updated to 1.7.1
- added wayland patch (updates for wayland 0.99/1.0 taken from SVN trunk)
ecore-wayland.patch | 474 ++++++++++++++++++++++++++++++++++++++++++++++++++++
ecore.spec | 13 +-
2 files changed, 482 insertions(+), 5 deletions(-)
---
diff --git a/ecore.spec b/ecore.spec
index e23ce0b..22e182c 100644
--- a/ecore.spec
+++ b/ecore.spec
@@ -22,12 +22,13 @@
Summary: Enlightened Core X interface library
Summary(pl.UTF-8): Biblioteka interfejsu X Enlightened Core
Name: ecore
-Version: 1.7.0
-Release: 2
+Version: 1.7.1
+Release: 1
License: BSD
Group: X11/Libraries
Source0: http://download.enlightenment.org/releases/%{name}-%{version}.tar.bz2
-# Source0-md5: 9072b65366fe42612812001075e29789
+# Source0-md5: 94fd264e478323a1100b3cfff833d28d
+Patch0: %{name}-wayland.patch
URL: http://trac.enlightenment.org/e/wiki/Ecore
BuildRequires: DirectFB-devel >= 0.9.16
BuildRequires: SDL-devel >= 1.2.0
@@ -73,7 +74,7 @@ BuildRequires: xorg-lib-libXtst-devel
# xorg-lib-libXgesture-devel
%endif
%if %{with wayland}
-BuildRequires: wayland-devel
+BuildRequires: wayland-devel >= 1.0.0
BuildRequires: xorg-lib-libxkbcommon-devel
%endif
Requires: eina >= 1.7.0
@@ -627,6 +628,7 @@ Summary(pl.UTF-8): Biblioteka Ecore Wayland
Group: Libraries
Requires: %{name} = %{version}-%{release}
Requires: %{name}-input = %{version}-%{release}
+Requires: wayland >= 1.0.0
%description wayland
Ecore Wayland library.
@@ -640,7 +642,7 @@ Summary(pl.UTF-8): Plik nagłówkowy biblioteki Ecore Wayland
Group: Development/Libraries
Requires: %{name}-devel = %{version}-%{release}
Requires: %{name}-input-devel = %{version}-%{release}
-Requires: wayland-devel
+Requires: wayland-devel >= 1.0.0
%description wayland-devel
Header file for Ecore Wayland library.
@@ -770,6 +772,7 @@ Ecore - moduł metody wprowadzania znaków XIM.
%prep
%setup -q
+%patch0 -p3
%build
%{__libtoolize}
diff --git a/ecore-wayland.patch b/ecore-wayland.patch
new file mode 100644
index 0000000..e6d0d6b
--- /dev/null
+++ b/ecore-wayland.patch
@@ -0,0 +1,474 @@
+#Index: /trunk/ecore/src/lib/ecore_evas/ecore_evas_wayland_common.c
+#===================================================================
+#--- /trunk/ecore/src/lib/ecore_evas/ecore_evas_wayland_common.c (revision 78047)
+#+++ /trunk/ecore/src/lib/ecore_evas/ecore_evas_wayland_common.c (revision 78048)
+#@@ -351,5 +351,4 @@
+#
+# sd->frame = evas_object_rectangle_add(evas);
+#- evas_object_is_frame_object_set(sd->frame, EINA_TRUE);
+# evas_object_color_set(sd->frame, 249, 249, 249, 255);
+# evas_object_smart_member_add(sd->frame, obj);
+#@@ -360,4 +359,5 @@
+# evas_object_text_font_set(sd->text, "Sans", 10);
+# evas_object_text_text_set(sd->text, "Smart Test");
+#+ evas_object_smart_member_add(sd->text, obj);
+#
+# evas_object_smart_data_set(obj, sd);
+Index: /trunk/ecore/src/lib/ecore_wayland/Ecore_Wayland.h
+===================================================================
+--- /trunk/ecore/src/lib/ecore_wayland/Ecore_Wayland.h (revision 78048)
++++ /trunk/ecore/src/lib/ecore_wayland/Ecore_Wayland.h (revision 78049)
+@@ -76,4 +76,5 @@
+ {
+ struct wl_display *display;
++ struct wl_registry *registry;
+ struct wl_compositor *compositor;
+ struct wl_shell *shell;
+Index: /trunk/ecore/src/lib/ecore_wayland/ecore_wl.c
+===================================================================
+--- /trunk/ecore/src/lib/ecore_wayland/ecore_wl.c (revision 78049)
++++ /trunk/ecore/src/lib/ecore_wayland/ecore_wl.c (revision 78050)
+@@ -8,7 +8,6 @@
+ /* local function prototypes */
+ static Eina_Bool _ecore_wl_shutdown(Eina_Bool close);
+-static int _ecore_wl_cb_event_mask_update(unsigned int mask, void *data);
+-static Eina_Bool _ecore_wl_cb_handle_data(void *data, Ecore_Fd_Handler *hdl __UNUSED__);
+-static void _ecore_wl_cb_handle_global(struct wl_display *disp, unsigned int id, const char *interface, unsigned int version __UNUSED__, void *data);
++static Eina_Bool _ecore_wl_cb_handle_data(void *data, Ecore_Fd_Handler *hdl);
++static void _ecore_wl_cb_handle_global(void *data, struct wl_registry *registry, unsigned int id, const char *interface, unsigned int version __UNUSED__);
+ static Eina_Bool _ecore_wl_xkb_init(Ecore_Wl_Display *ewd);
+ static Eina_Bool _ecore_wl_xkb_shutdown(Ecore_Wl_Display *ewd);
+@@ -16,4 +15,9 @@
+ /* local variables */
+ static int _ecore_wl_init_count = 0;
++static const struct wl_registry_listener _ecore_wl_registry_listener =
++{
++ _ecore_wl_cb_handle_global,
++ NULL // handle_global_remove
++};
+
+ /* external variables */
+@@ -131,10 +135,9 @@
+ }
+
+- _ecore_wl_disp->fd =
+- wl_display_get_fd(_ecore_wl_disp->wl.display,
+- _ecore_wl_cb_event_mask_update, _ecore_wl_disp);
++ _ecore_wl_disp->fd = wl_display_get_fd(_ecore_wl_disp->wl.display);
+
+ _ecore_wl_disp->fd_hdl =
+- ecore_main_fd_handler_add(_ecore_wl_disp->fd, ECORE_FD_READ,
++ ecore_main_fd_handler_add(_ecore_wl_disp->fd,
++ ECORE_FD_READ | ECORE_FD_WRITE,
+ _ecore_wl_cb_handle_data, _ecore_wl_disp,
+ NULL, NULL);
+@@ -143,11 +146,10 @@
+ wl_list_init(&_ecore_wl_disp->outputs);
+
+- wl_display_add_global_listener(_ecore_wl_disp->wl.display,
+- _ecore_wl_cb_handle_global, _ecore_wl_disp);
+-
+- /* Init egl */
+-
+- /* FIXME: Process connection events ?? */
+- /* wl_display_iterate(_ecore_wl_disp->wl.display, WL_DISPLAY_READABLE); */
++ _ecore_wl_disp->wl.registry =
++ wl_display_get_registry(_ecore_wl_disp->wl.display);
++ wl_registry_add_listener(_ecore_wl_disp->wl.registry,
++ &_ecore_wl_registry_listener, _ecore_wl_disp);
++
++ wl_display_dispatch(_ecore_wl_disp->wl.display);
+
+ /* TODO: create pointer surfaces */
+@@ -207,6 +209,5 @@
+ // LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+- while (_ecore_wl_disp->mask & WL_DISPLAY_WRITABLE)
+- wl_display_iterate(_ecore_wl_disp->wl.display, WL_DISPLAY_WRITABLE);
++ wl_display_flush(_ecore_wl_disp->wl.display);
+ }
+
+@@ -324,5 +325,5 @@
+ ecore_wl_display_iterate(void)
+ {
+- wl_display_iterate(_ecore_wl_disp->wl.display, WL_DISPLAY_READABLE);
++ wl_display_dispatch(_ecore_wl_disp->wl.display);
+ }
+
+@@ -397,41 +398,37 @@
+ }
+
+-static int
+-_ecore_wl_cb_event_mask_update(unsigned int mask, void *data)
++static Eina_Bool
++_ecore_wl_cb_handle_data(void *data, Ecore_Fd_Handler *hdl)
+ {
+ Ecore_Wl_Display *ewd;
+
++ /* LOGFN(__FILE__, __LINE__, __FUNCTION__); */
++
++ if (!(ewd = data)) return ECORE_CALLBACK_RENEW;
++
++ /* FIXME: This should also catch ECORE_FD_ERROR and exit */
++
++ if (ecore_main_fd_handler_active_get(hdl, ECORE_FD_READ))
++ wl_display_dispatch(ewd->wl.display);
++ else if (ecore_main_fd_handler_active_get(hdl, ECORE_FD_WRITE))
++ wl_display_flush(ewd->wl.display);
++
++ return ECORE_CALLBACK_RENEW;
++}
++
++static void
++_ecore_wl_cb_handle_global(void *data, struct wl_registry *registry, unsigned int id, const char *interface, unsigned int version __UNUSED__)
++{
++ Ecore_Wl_Display *ewd;
++
+ // LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+ ewd = data;
+- ewd->mask = mask;
+- return 0;
+-}
+-
+-static Eina_Bool
+-_ecore_wl_cb_handle_data(void *data, Ecore_Fd_Handler *hdl __UNUSED__)
+-{
+- Ecore_Wl_Display *ewd;
+-
+- /* LOGFN(__FILE__, __LINE__, __FUNCTION__); */
+-
+- if (!(ewd = data)) return ECORE_CALLBACK_RENEW;
+- wl_display_iterate(ewd->wl.display, ewd->mask);
+- return ECORE_CALLBACK_RENEW;
+-}
+-
+-static void
+-_ecore_wl_cb_handle_global(struct wl_display *disp, unsigned int id, const char *interface, unsigned int version __UNUSED__, void *data)
+-{
+- Ecore_Wl_Display *ewd;
+-
+-// LOGFN(__FILE__, __LINE__, __FUNCTION__);
+-
+- ewd = data;
+-
+- /* TODO: Add listener for wl_display so we can catch fatal errors !! */
+
+ if (!strcmp(interface, "wl_compositor"))
+- ewd->wl.compositor = wl_display_bind(disp, id, &wl_compositor_interface);
++ {
++ ewd->wl.compositor =
++ wl_registry_bind(registry, id, &wl_compositor_interface, 1);
++ }
+ else if (!strcmp(interface, "wl_output"))
+ _ecore_wl_output_add(ewd, id);
+@@ -439,10 +436,11 @@
+ _ecore_wl_input_add(ewd, id);
+ else if (!strcmp(interface, "wl_shell"))
+- ewd->wl.shell = wl_display_bind(disp, id, &wl_shell_interface);
+- /* else if (!strcmp(interface, "desktop_shell")) */
+- /* ewd->wl.desktop_shell = wl_display_bind(disp, id, &wl_shell_interface); */
++ {
++ ewd->wl.shell =
++ wl_registry_bind(registry, id, &wl_shell_interface, 1);
++ }
+ else if (!strcmp(interface, "wl_shm"))
+ {
+- ewd->wl.shm = wl_display_bind(disp, id, &wl_shm_interface);
++ ewd->wl.shm = wl_registry_bind(registry, id, &wl_shm_interface, 1);
+
+ /* FIXME: We should not hard-code a cursor size here, and we should
+@@ -453,5 +451,5 @@
+ {
+ ewd->wl.data_device_manager =
+- wl_display_bind(disp, id, &wl_data_device_manager_interface);
++ wl_registry_bind(registry, id, &wl_data_device_manager_interface, 1);
+ }
+
+Index: /trunk/ecore/src/lib/ecore_wayland/ecore_wl_window.c
+===================================================================
+--- /trunk/ecore/src/lib/ecore_wayland/ecore_wl_window.c (revision 78050)
++++ /trunk/ecore/src/lib/ecore_wayland/ecore_wl_window.c (revision 78051)
+@@ -252,5 +252,8 @@
+ if (!win) return;
+ if (win->surface)
+- wl_surface_damage(win->surface, x, y, w, h);
++ {
++ wl_surface_damage(win->surface, x, y, w, h);
++ wl_surface_commit(win->surface);
++ }
+ }
+
+@@ -287,4 +290,5 @@
+ wl_surface_damage(win->surface, 0, 0,
+ win->allocation.w, win->allocation.h);
++ wl_surface_commit(win->surface);
+
+ win->server_allocation = win->allocation;
+Index: /trunk/ecore/src/lib/ecore_wayland/ecore_wl_output.c
+===================================================================
+--- /trunk/ecore/src/lib/ecore_wayland/ecore_wl_output.c (revision 78051)
++++ /trunk/ecore/src/lib/ecore_wayland/ecore_wl_output.c (revision 78052)
+@@ -36,5 +36,7 @@
+ output->display = ewd;
+
+- output->output = wl_display_bind(ewd->wl.display, id, &wl_output_interface);
++ output->output =
++ wl_registry_bind(ewd->wl.registry, id, &wl_output_interface, 1);
++
+ wl_list_insert(ewd->outputs.prev, &output->link);
+ wl_output_add_listener(output->output, &_ecore_wl_output_listener, output);
+#Index: /trunk/ecore/src/lib/ecore_evas/ecore_evas_wayland_common.c
+#===================================================================
+#--- /trunk/ecore/src/lib/ecore_evas/ecore_evas_wayland_common.c (revision 78052)
+#+++ /trunk/ecore/src/lib/ecore_evas/ecore_evas_wayland_common.c (revision 78053)
+#@@ -452,6 +452,6 @@
+# EE_Wl_Smart_Data *sd;
+#
+#- if (!(sd = evas_object_smart_data_get(ee->engine.wl.frame))) return;
+#- evas_object_text_text_set(sd->text, ee->prop.title);
+#+ if ((sd = evas_object_smart_data_get(ee->engine.wl.frame)))
+#+ evas_object_text_text_set(sd->text, ee->prop.title);
+# }
+#
+Index: /trunk/ecore/src/lib/ecore_wayland/ecore_wl_input.c
+===================================================================
+--- /trunk/ecore/src/lib/ecore_wayland/ecore_wl_input.c (revision 78053)
++++ /trunk/ecore/src/lib/ecore_wayland/ecore_wl_input.c (revision 78054)
+@@ -177,11 +177,16 @@
+ if (!(cursor = ecore_wl_cursor_get(input->cursor_name)))
+ {
++ printf("No Cursor %s in Theme\n", input->cursor_name);
+ /* if the theme does not have this cursor, default to left pointer */
+ if (!(cursor = ecore_wl_cursor_get("left_ptr")))
+- return;
++ {
++ printf("Failed to get Left Pointer Cursor\n");
++ return;
++ }
+ }
+
+ if ((!cursor->images) || (!cursor->images[0]))
+ {
++ printf("Cursor %s has no images\n", input->cursor_name);
+ ecore_wl_input_pointer_set(input, NULL, 0, 0);
+ return;
+@@ -197,8 +202,11 @@
+ wl_surface_damage(input->cursor_surface, 0, 0,
+ cursor_image->width, cursor_image->height);
++ wl_surface_commit(input->cursor_surface);
+
+ if (!input->cursor_frame_cb)
+ _ecore_wl_input_cb_pointer_frame(input, NULL, 0);
+ }
++ else
++ printf("No Buffer from Cursor Image\n");
+ }
+
+@@ -231,6 +239,7 @@
+
+ input->seat =
+- wl_display_bind(ewd->wl.display, id, &wl_seat_interface);
++ wl_registry_bind(ewd->wl.registry, id, &wl_seat_interface, 1);
+ wl_list_insert(ewd->inputs.prev, &input->link);
++
+ wl_seat_add_listener(input->seat,
+ &_ecore_wl_seat_listener, input);
+@@ -322,7 +331,10 @@
+ Ecore_Wl_Input *input;
+
+- if (!(input = data)) return;
++ printf("Seat Handle Capabilities\n");
++ if (!(input = data)) return;
++ printf("\tInput Valid\n");
+ if ((caps & WL_SEAT_CAPABILITY_POINTER) && (!input->pointer))
+ {
++ printf("\tCreate New Pointer\n");
+ input->pointer = wl_seat_get_pointer(seat);
+ wl_pointer_set_user_data(input->pointer, input);
+@@ -331,4 +343,5 @@
+ else if (!(caps & WL_SEAT_CAPABILITY_POINTER) && (input->pointer))
+ {
++ printf("\tDestroy POinter\n");
+ wl_pointer_destroy(input->pointer);
+ input->pointer = NULL;
+@@ -367,4 +380,6 @@
+
+ /* LOGFN(__FILE__, __LINE__, __FUNCTION__); */
++
++ printf("Input Cb Pointer Motion\n");
+
+ if (!(input = data)) return;
+@@ -675,4 +690,6 @@
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
++ printf("Input Cb Pointer Enter\n");
++
+ if (!surface) return;
+ if (!(input = data)) return;
+@@ -691,14 +708,14 @@
+ input->pointer_enter_serial = serial;
+
+- if (!(win = wl_surface_get_user_data(surface))) return;
+-
+- win->pointer_device = input;
+- input->pointer_focus = win;
+-
+- /* _ecore_wl_input_mouse_move_send(input, win, input->timestamp); */
+- _ecore_wl_input_mouse_in_send(input, win, input->timestamp);
+-
+ /* The cursor on the surface is undefined until we set it */
+ ecore_wl_input_cursor_from_name_set(input, "left_ptr");
++
++ if ((win = wl_surface_get_user_data(surface)))
++ {
++ win->pointer_device = input;
++ input->pointer_focus = win;
++
++ _ecore_wl_input_mouse_in_send(input, win, input->timestamp);
++ }
+
+ /* NB: This whole 'if' below is a major HACK due to wayland's stupidness
+@@ -742,4 +759,6 @@
+ Ecore_Wl_Window *win;
+
++ printf("Input Cb Pointer Leave\n");
++
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+@@ -771,4 +790,6 @@
+ Ecore_Wl_Input *input;
+ Ecore_Wl_Window *win = NULL;
++
++ printf("Keyboard Enter Event\n");
+
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+Index: /trunk/ecore/src/lib/ecore_wayland/ecore_wl.c
+===================================================================
+--- /trunk/ecore/src/lib/ecore_wayland/ecore_wl.c (revision 78054)
++++ /trunk/ecore/src/lib/ecore_wayland/ecore_wl.c (revision 78055)
+@@ -139,5 +139,5 @@
+ _ecore_wl_disp->fd_hdl =
+ ecore_main_fd_handler_add(_ecore_wl_disp->fd,
+- ECORE_FD_READ | ECORE_FD_WRITE,
++ ECORE_FD_READ | ECORE_FD_WRITE,
+ _ecore_wl_cb_handle_data, _ecore_wl_disp,
+ NULL, NULL);
+@@ -152,6 +152,4 @@
+
+ wl_display_dispatch(_ecore_wl_disp->wl.display);
+-
+- /* TODO: create pointer surfaces */
+
+ if (!_ecore_wl_xkb_init(_ecore_wl_disp))
+@@ -409,4 +407,6 @@
+ /* FIXME: This should also catch ECORE_FD_ERROR and exit */
+
++ /* wl_display_dispatch_pending(ewd->wl.display); */
++
+ if (ecore_main_fd_handler_active_get(hdl, ECORE_FD_READ))
+ wl_display_dispatch(ewd->wl.display);
+@@ -422,5 +422,5 @@
+ Ecore_Wl_Display *ewd;
+
+-// LOGFN(__FILE__, __LINE__, __FUNCTION__);
++ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+ ewd = data;
+Index: /trunk/ecore/src/lib/ecore_wayland/ecore_wl_input.c
+===================================================================
+--- /trunk/ecore/src/lib/ecore_wayland/ecore_wl_input.c (revision 78055)
++++ /trunk/ecore/src/lib/ecore_wayland/ecore_wl_input.c (revision 78056)
+@@ -177,16 +177,11 @@
+ if (!(cursor = ecore_wl_cursor_get(input->cursor_name)))
+ {
+- printf("No Cursor %s in Theme\n", input->cursor_name);
+ /* if the theme does not have this cursor, default to left pointer */
+ if (!(cursor = ecore_wl_cursor_get("left_ptr")))
+- {
+- printf("Failed to get Left Pointer Cursor\n");
+- return;
+- }
++ return;
+ }
+
+ if ((!cursor->images) || (!cursor->images[0]))
+ {
+- printf("Cursor %s has no images\n", input->cursor_name);
+ ecore_wl_input_pointer_set(input, NULL, 0, 0);
+ return;
+@@ -207,6 +202,4 @@
+ _ecore_wl_input_cb_pointer_frame(input, NULL, 0);
+ }
+- else
+- printf("No Buffer from Cursor Image\n");
+ }
+
+@@ -331,10 +324,8 @@
+ Ecore_Wl_Input *input;
+
+- printf("Seat Handle Capabilities\n");
+- if (!(input = data)) return;
+- printf("\tInput Valid\n");
++ if (!(input = data)) return;
++
+ if ((caps & WL_SEAT_CAPABILITY_POINTER) && (!input->pointer))
+ {
+- printf("\tCreate New Pointer\n");
+ input->pointer = wl_seat_get_pointer(seat);
+ wl_pointer_set_user_data(input->pointer, input);
+@@ -343,5 +334,4 @@
+ else if (!(caps & WL_SEAT_CAPABILITY_POINTER) && (input->pointer))
+ {
+- printf("\tDestroy POinter\n");
+ wl_pointer_destroy(input->pointer);
+ input->pointer = NULL;
+@@ -380,6 +370,4 @@
+
+ /* LOGFN(__FILE__, __LINE__, __FUNCTION__); */
+-
+- printf("Input Cb Pointer Motion\n");
+
+ if (!(input = data)) return;
+@@ -690,6 +678,4 @@
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+- printf("Input Cb Pointer Enter\n");
+-
+ if (!surface) return;
+ if (!(input = data)) return;
+@@ -759,6 +745,4 @@
+ Ecore_Wl_Window *win;
+
+- printf("Input Cb Pointer Leave\n");
+-
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+@@ -790,6 +774,4 @@
+ Ecore_Wl_Input *input;
+ Ecore_Wl_Window *win = NULL;
+-
+- printf("Keyboard Enter Event\n");
+
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+Index: /trunk/ecore/ChangeLog
+===================================================================
+--- /trunk/ecore/ChangeLog (revision 78056)
++++ /trunk/ecore/ChangeLog (revision 78057)
+@@ -1012,2 +1012,5 @@
+ * Since evas has 8bit engines removed, remove support from ecore-evas.
+
++2012-10-16 Christopher Michael
++
++ * Update Ecore_Wayland to build & work with newest wayland (0.99) from git
+Index: /trunk/ecore/NEWS
+===================================================================
+--- /trunk/ecore/NEWS (revision 78057)
++++ /trunk/ecore/NEWS (revision 78058)
+@@ -39,4 +39,6 @@
+ - ecore_x_randr to actually return crtcs outputs properly.
+ - send ECORE_X_EVENT_SELECTION_NOTIFY even if there is no data.
++ * ecore_wayland:
++ - Update to work with latest wayland (0.99) from git.
+
+ Removal:
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ecore.git/commitdiff/2df4acd620e08962ac453158d5ca6be850d07baa
More information about the pld-cvs-commit
mailing list