From 0b0c464efde0c7aa3dfde0412ada505ae5a1ca04 Mon Sep 17 00:00:00 2001 From: Chris Michael Date: Thu, 15 May 2014 10:41:09 +0100 Subject: [PATCH] fix e_client sructure for running wayland client applications inside X. update compositor structure for ability to run X and Wayland Clients. update wayland compositor data & input file(s) for data structure rename. NB: Both the X compositor and the Wayland compositor have different "client data" to store, so e_client structure needs different fields Signed-off-by: Chris Michael --- src/bin/e_client.h | 3 ++- src/bin/e_comp.h | 12 ++++++++---- src/bin/e_comp_wl.h | 4 ++-- src/bin/e_comp_wl_data.c | 12 ++++++------ src/bin/e_comp_wl_data.h | 4 ++-- src/bin/e_comp_wl_input.c | 36 ++++++++++++++++++------------------ src/bin/e_comp_wl_input.h | 14 +++++++------- 7 files changed, 45 insertions(+), 40 deletions(-) diff --git a/src/bin/e_client.h b/src/bin/e_client.h index f25aa30ed..41b40508b 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -257,7 +257,8 @@ struct E_Client E_Direction shade_dir; - E_Comp_Client_Data *comp_data; //private for the compositor engine (X, Wayland) ONLY + E_Comp_Wl_Client_Data *wl_comp_data; + E_Comp_X_Client_Data *x_comp_data; //private for the compositor engine (X, Wayland) ONLY Evas_Object *input_object; //for running wayland clients in X diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h index 48048fa5e..5b0ca4d94 100644 --- a/src/bin/e_comp.h +++ b/src/bin/e_comp.h @@ -1,7 +1,9 @@ #ifdef E_TYPEDEFS -typedef struct _E_Comp E_Comp; -typedef struct _E_Comp_Data E_Comp_Data; -typedef struct _E_Comp_Client_Data E_Comp_Client_Data; +typedef struct _E_Comp E_Comp; +typedef struct _E_Comp_X_Data E_Comp_X_Data; +typedef struct _E_Comp_Wl_Data E_Comp_Wl_Data; +typedef struct _E_Comp_X_Client_Data E_Comp_X_Client_Data; +typedef struct _E_Comp_Wl_Client_Data E_Comp_Wl_Client_Data; typedef struct _E_Comp_Demo_Style_Item E_Comp_Demo_Style_Item; #define E_COMP_TYPE (int) 0xE0b01003 @@ -56,7 +58,9 @@ struct _E_Comp Eina_List *clients; unsigned int new_clients; - E_Comp_Data *comp_data; + E_Comp_X_Data *x_comp_data; + E_Comp_Wl_Data *wl_comp_data; + E_Pixmap_Type comp_type; //for determining X/Wayland/ unsigned int num; diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index 1ed13d6ba..bc6baf4bf 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -23,7 +23,7 @@ # define BTN_BACK 0x116 # endif -struct _E_Comp_Data +struct _E_Comp_Wl_Data { struct { @@ -120,7 +120,7 @@ struct _E_Comp_Data Eina_Bool restack : 1; }; -struct _E_Comp_Client_Data +struct _E_Comp_Wl_Client_Data { Eina_Rectangle *input; Eina_Rectangle *opaque; diff --git a/src/bin/e_comp_wl_data.c b/src/bin/e_comp_wl_data.c index e6a57a330..ea5e748dd 100644 --- a/src/bin/e_comp_wl_data.c +++ b/src/bin/e_comp_wl_data.c @@ -29,7 +29,7 @@ _e_comp_wl_data_manager_cb_source_create(struct wl_client *client, struct wl_res static void _e_comp_wl_data_manager_cb_device_get(struct wl_client *client EINA_UNUSED, struct wl_resource *manager_resource, uint32_t id, struct wl_resource *seat_resource) { - E_Comp_Data *cdata; + E_Comp_Wl_Data *cdata; struct wl_resource *res; DBG("Comp_Wl_Data: Get Data Device"); @@ -58,7 +58,7 @@ static const struct wl_data_device_manager_interface _e_manager_interface = /* static void */ /* _e_comp_wl_data_cb_unbind_manager(struct wl_resource *resource) */ /* { */ -/* E_Comp_Data *cdata; */ +/* E_Comp_Wl_Data *cdata; */ /* DBG("Comp_Wl_Data: Unbind Manager"); */ @@ -70,7 +70,7 @@ static const struct wl_data_device_manager_interface _e_manager_interface = static void _e_comp_wl_data_cb_bind_manager(struct wl_client *client, void *data, uint32_t version EINA_UNUSED, uint32_t id) { - E_Comp_Data *cdata; + E_Comp_Wl_Data *cdata; struct wl_resource *res; if (!(cdata = data)) return; @@ -90,7 +90,7 @@ _e_comp_wl_data_cb_bind_manager(struct wl_client *client, void *data, uint32_t v } EINTERN Eina_Bool -e_comp_wl_data_manager_init(E_Comp_Data *cdata) +e_comp_wl_data_manager_init(E_Comp_Wl_Data *cdata) { /* check for valid compositor data */ if (!cdata) return EINA_FALSE; @@ -109,8 +109,8 @@ e_comp_wl_data_manager_init(E_Comp_Data *cdata) } EINTERN void -e_comp_wl_data_manager_shutdown(E_Comp_Data *cdata) +e_comp_wl_data_manager_shutdown(E_Comp_Wl_Data *cdata) { /* destroy the global manager resource */ - if (cdata->mgr.global) wl_global_destroy(cdata->mgr.global); + /* if (cdata->mgr.global) wl_global_destroy(cdata->mgr.global); */ } diff --git a/src/bin/e_comp_wl_data.h b/src/bin/e_comp_wl_data.h index 61bacfb85..70c445f4d 100644 --- a/src/bin/e_comp_wl_data.h +++ b/src/bin/e_comp_wl_data.h @@ -3,8 +3,8 @@ # ifndef E_COMP_WL_DATA_H # define E_COMP_WL_DATA_H -EINTERN Eina_Bool e_comp_wl_data_manager_init(E_Comp_Data *cdata); -EINTERN void e_comp_wl_data_manager_shutdown(E_Comp_Data *cdata); +EINTERN Eina_Bool e_comp_wl_data_manager_init(E_Comp_Wl_Data *cdata); +EINTERN void e_comp_wl_data_manager_shutdown(E_Comp_Wl_Data *cdata); # endif #endif diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c index b09ceaf06..f5d1bdf20 100644 --- a/src/bin/e_comp_wl_input.c +++ b/src/bin/e_comp_wl_input.c @@ -4,7 +4,7 @@ #include static void -_e_comp_wl_input_update_seat_caps(E_Comp_Data *cdata) +_e_comp_wl_input_update_seat_caps(E_Comp_Wl_Data *cdata) { Eina_List *l; struct wl_resource *res; @@ -32,7 +32,7 @@ _e_comp_wl_input_cb_resource_destroy(struct wl_client *client EINA_UNUSED, struc static void _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resource *resource, uint32_t serial, struct wl_resource *surface_resource, int32_t x, int32_t y) { - E_Comp_Data *cdata; + E_Comp_Wl_Data *cdata; /* get compositor data */ if (!(cdata = wl_resource_get_user_data(resource))) return; @@ -52,7 +52,7 @@ static const struct wl_keyboard_interface _e_keyboard_interface = static void _e_comp_wl_input_cb_pointer_unbind(struct wl_resource *resource) { - E_Comp_Data *cdata; + E_Comp_Wl_Data *cdata; /* get compositor data */ if (!(cdata = wl_resource_get_user_data(resource))) return; @@ -63,7 +63,7 @@ _e_comp_wl_input_cb_pointer_unbind(struct wl_resource *resource) static void _e_comp_wl_input_cb_pointer_get(struct wl_client *client, struct wl_resource *resource, uint32_t id) { - E_Comp_Data *cdata; + E_Comp_Wl_Data *cdata; struct wl_resource *res; /* get compositor data */ @@ -87,7 +87,7 @@ _e_comp_wl_input_cb_pointer_get(struct wl_client *client, struct wl_resource *re static void _e_comp_wl_input_cb_keyboard_unbind(struct wl_resource *resource) { - E_Comp_Data *cdata; + E_Comp_Wl_Data *cdata; /* get compositor data */ if (!(cdata = wl_resource_get_user_data(resource))) return; @@ -98,7 +98,7 @@ _e_comp_wl_input_cb_keyboard_unbind(struct wl_resource *resource) static void _e_comp_wl_input_cb_keyboard_get(struct wl_client *client, struct wl_resource *resource, uint32_t id) { - E_Comp_Data *cdata; + E_Comp_Wl_Data *cdata; struct wl_resource *res; /* uint32_t serial; */ @@ -134,7 +134,7 @@ _e_comp_wl_input_cb_keyboard_get(struct wl_client *client, struct wl_resource *r static void _e_comp_wl_input_cb_touch_get(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t id EINA_UNUSED) { - E_Comp_Data *cdata; + E_Comp_Wl_Data *cdata; /* DBG("Input Touch Get"); */ @@ -154,7 +154,7 @@ static const struct wl_seat_interface _e_seat_interface = static void _e_comp_wl_input_cb_unbind_seat(struct wl_resource *resource) { - E_Comp_Data *cdata; + E_Comp_Wl_Data *cdata; if (!(cdata = wl_resource_get_user_data(resource))) return; @@ -164,7 +164,7 @@ _e_comp_wl_input_cb_unbind_seat(struct wl_resource *resource) static void _e_comp_wl_input_cb_bind_seat(struct wl_client *client, void *data, uint32_t version, uint32_t id) { - E_Comp_Data *cdata; + E_Comp_Wl_Data *cdata; struct wl_resource *res; if (!(cdata = data)) return; @@ -226,7 +226,7 @@ _e_comp_wl_input_keymap_fd_get(off_t size) } static void -_e_comp_wl_input_keymap_update(E_Comp_Data *cdata, struct xkb_keymap *keymap) +_e_comp_wl_input_keymap_update(E_Comp_Wl_Data *cdata, struct xkb_keymap *keymap) { char *tmp; xkb_mod_mask_t latched, locked; @@ -311,7 +311,7 @@ _e_comp_wl_input_keymap_update(E_Comp_Data *cdata, struct xkb_keymap *keymap) } EINTERN Eina_Bool -e_comp_wl_input_init(E_Comp_Data *cdata) +e_comp_wl_input_init(E_Comp_Wl_Data *cdata) { /* check for valid compositor data */ if (!cdata) return EINA_FALSE; @@ -335,7 +335,7 @@ e_comp_wl_input_init(E_Comp_Data *cdata) } EINTERN void -e_comp_wl_input_shutdown(E_Comp_Data *cdata) +e_comp_wl_input_shutdown(E_Comp_Wl_Data *cdata) { /* Eina_List *l; */ struct wl_resource *res; @@ -356,7 +356,7 @@ e_comp_wl_input_shutdown(E_Comp_Data *cdata) /* TODO: destroy cdata->kbd.keys array */ /* destroy the global seat resource */ - if (cdata->seat.global) wl_global_destroy(cdata->seat.global); + /* if (cdata->seat.global) wl_global_destroy(cdata->seat.global); */ cdata->seat.global = NULL; } @@ -375,7 +375,7 @@ e_comp_wl_input_keyboard_check(struct wl_resource *res) } EINTERN void -e_comp_wl_input_keyboard_modifiers_update(E_Comp_Data *cdata) +e_comp_wl_input_keyboard_modifiers_update(E_Comp_Wl_Data *cdata) { xkb_mod_mask_t depressed, latched, locked; xkb_layout_index_t group; @@ -411,7 +411,7 @@ e_comp_wl_input_keyboard_modifiers_update(E_Comp_Data *cdata) } EINTERN void -e_comp_wl_input_keyboard_state_update(E_Comp_Data *cdata, uint32_t keycode, Eina_Bool pressed) +e_comp_wl_input_keyboard_state_update(E_Comp_Wl_Data *cdata, uint32_t keycode, Eina_Bool pressed) { enum xkb_key_direction dir; @@ -426,7 +426,7 @@ e_comp_wl_input_keyboard_state_update(E_Comp_Data *cdata, uint32_t keycode, Eina } EAPI void -e_comp_wl_input_pointer_enabled_set(E_Comp_Data *cdata, Eina_Bool enabled) +e_comp_wl_input_pointer_enabled_set(E_Comp_Wl_Data *cdata, Eina_Bool enabled) { /* check for valid compositor data */ if (!cdata) return; @@ -436,7 +436,7 @@ e_comp_wl_input_pointer_enabled_set(E_Comp_Data *cdata, Eina_Bool enabled) } EAPI void -e_comp_wl_input_keyboard_enabled_set(E_Comp_Data *cdata, Eina_Bool enabled) +e_comp_wl_input_keyboard_enabled_set(E_Comp_Wl_Data *cdata, Eina_Bool enabled) { /* check for valid compositor data */ if (!cdata) return; @@ -446,7 +446,7 @@ e_comp_wl_input_keyboard_enabled_set(E_Comp_Data *cdata, Eina_Bool enabled) } EAPI void -e_comp_wl_input_keymap_set(E_Comp_Data *cdata, const char *rules, const char *model, const char *layout) +e_comp_wl_input_keymap_set(E_Comp_Wl_Data *cdata, const char *rules, const char *model, const char *layout) { struct xkb_keymap *keymap; struct xkb_rule_names names; diff --git a/src/bin/e_comp_wl_input.h b/src/bin/e_comp_wl_input.h index 9c0000c9a..522b245cf 100644 --- a/src/bin/e_comp_wl_input.h +++ b/src/bin/e_comp_wl_input.h @@ -3,18 +3,18 @@ # ifndef E_COMP_WL_INPUT_H # define E_COMP_WL_INPUT_H -EINTERN Eina_Bool e_comp_wl_input_init(E_Comp_Data *cdata); -EINTERN void e_comp_wl_input_shutdown(E_Comp_Data *cdata); +EINTERN Eina_Bool e_comp_wl_input_init(E_Comp_Wl_Data *cdata); +EINTERN void e_comp_wl_input_shutdown(E_Comp_Wl_Data *cdata); EINTERN Eina_Bool e_comp_wl_input_pointer_check(struct wl_resource *res); EINTERN Eina_Bool e_comp_wl_input_keyboard_check(struct wl_resource *res); -EINTERN void e_comp_wl_input_keyboard_modifiers_update(E_Comp_Data *cdata); -EINTERN void e_comp_wl_input_keyboard_state_update(E_Comp_Data *cdata, uint32_t keycode, Eina_Bool pressed); +EINTERN void e_comp_wl_input_keyboard_modifiers_update(E_Comp_Wl_Data *cdata); +EINTERN void e_comp_wl_input_keyboard_state_update(E_Comp_Wl_Data *cdata, uint32_t keycode, Eina_Bool pressed); -EAPI void e_comp_wl_input_pointer_enabled_set(E_Comp_Data *cdata, Eina_Bool enabled); -EAPI void e_comp_wl_input_keyboard_enabled_set(E_Comp_Data *cdata, Eina_Bool enabled); +EAPI void e_comp_wl_input_pointer_enabled_set(E_Comp_Wl_Data *cdata, Eina_Bool enabled); +EAPI void e_comp_wl_input_keyboard_enabled_set(E_Comp_Wl_Data *cdata, Eina_Bool enabled); -EAPI void e_comp_wl_input_keymap_set(E_Comp_Data *cdata, const char *rules, const char *model, const char *layout); +EAPI void e_comp_wl_input_keymap_set(E_Comp_Wl_Data *cdata, const char *rules, const char *model, const char *layout); # endif #endif