forked from enlightenment/enlightenment
rewrite wayland compositor:
- reduce memory usage - remove duplicated pixmaps - remove duplicated pointer images @feature Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
5ea94188f5
commit
434219f758
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,186 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
# ifndef E_COMP_WL_H
|
||||
# define E_COMP_WL_H
|
||||
|
||||
/* NB: Turn off shadow warnings for Wayland includes */
|
||||
# pragma GCC diagnostic ignored "-Wshadow"
|
||||
# define WL_HIDE_DEPRECATED
|
||||
# include <wayland-server.h>
|
||||
# pragma GCC diagnostic pop
|
||||
|
||||
# include <xkbcommon/xkbcommon.h>
|
||||
|
||||
# ifdef __linux__
|
||||
# include <linux/input.h>
|
||||
# else
|
||||
# define BTN_LEFT 0x110
|
||||
# define BTN_RIGHT 0x111
|
||||
# define BTN_MIDDLE 0x112
|
||||
# define BTN_SIDE 0x113
|
||||
# define BTN_EXTRA 0x114
|
||||
# define BTN_FORWARD 0x115
|
||||
# define BTN_BACK 0x116
|
||||
# endif
|
||||
|
||||
struct _E_Comp_Data
|
||||
{
|
||||
struct
|
||||
{
|
||||
struct wl_display *disp;
|
||||
struct wl_event_loop *loop;
|
||||
} wl;
|
||||
|
||||
/* NB: At the moment, we don't need these */
|
||||
/* struct */
|
||||
/* { */
|
||||
/* struct wl_signal destroy; */
|
||||
/* struct wl_signal activate; */
|
||||
/* struct wl_signal transform; */
|
||||
/* struct wl_signal kill; */
|
||||
/* struct wl_signal idle; */
|
||||
/* struct wl_signal wake; */
|
||||
/* struct wl_signal session; */
|
||||
/* struct */
|
||||
/* { */
|
||||
/* struct wl_signal created; */
|
||||
/* struct wl_signal destroyed; */
|
||||
/* struct wl_signal moved; */
|
||||
/* } seat, output; */
|
||||
/* } signals; */
|
||||
|
||||
struct
|
||||
{
|
||||
struct wl_resource *shell;
|
||||
struct wl_resource *xdg_shell;
|
||||
} shell_interface;
|
||||
|
||||
struct
|
||||
{
|
||||
Eina_List *resources;
|
||||
Eina_Bool enabled : 1;
|
||||
xkb_mod_index_t mod_shift, mod_caps;
|
||||
xkb_mod_index_t mod_ctrl, mod_alt;
|
||||
xkb_mod_index_t mod_super;
|
||||
xkb_mod_mask_t mod_depressed, mod_latched, mod_locked;
|
||||
xkb_layout_index_t mod_group;
|
||||
struct wl_array keys;
|
||||
} kbd;
|
||||
|
||||
struct
|
||||
{
|
||||
Eina_List *resources;
|
||||
Eina_Bool enabled : 1;
|
||||
wl_fixed_t x, y;
|
||||
wl_fixed_t grab_x, grab_y;
|
||||
uint32_t button;
|
||||
} ptr;
|
||||
|
||||
struct
|
||||
{
|
||||
Eina_List *resources;
|
||||
Eina_Bool enabled : 1;
|
||||
} touch;
|
||||
|
||||
struct
|
||||
{
|
||||
struct wl_global *global;
|
||||
Eina_List *resources;
|
||||
uint32_t version;
|
||||
char *name;
|
||||
} seat;
|
||||
|
||||
struct
|
||||
{
|
||||
struct wl_global *global;
|
||||
} mgr;
|
||||
|
||||
struct
|
||||
{
|
||||
struct wl_resource *resource;
|
||||
int32_t width, height;
|
||||
uint32_t edges;
|
||||
} resize;
|
||||
|
||||
struct
|
||||
{
|
||||
struct xkb_keymap *keymap;
|
||||
struct xkb_context *context;
|
||||
struct xkb_state *state;
|
||||
int fd;
|
||||
size_t size;
|
||||
char *area;
|
||||
} xkb;
|
||||
|
||||
Ecore_Fd_Handler *fd_hdlr;
|
||||
Ecore_Idler *idler;
|
||||
|
||||
/* Eina_List *retry_clients; */
|
||||
/* Ecore_Timer *retry_timer; */
|
||||
Eina_Bool restack : 1;
|
||||
};
|
||||
|
||||
struct _E_Comp_Client_Data
|
||||
{
|
||||
Eina_Rectangle *input;
|
||||
Eina_Rectangle *opaque;
|
||||
Eina_Rectangle *shape;
|
||||
Eina_Rectangle *damage;
|
||||
|
||||
Ecore_Timer *first_draw_tmr;
|
||||
|
||||
/* regular surface resource (wl_compositor_create_surface) */
|
||||
struct wl_resource *surface;
|
||||
|
||||
struct
|
||||
{
|
||||
/* shell surface resource */
|
||||
struct wl_resource *surface;
|
||||
|
||||
void (*configure_send)(struct wl_resource *resource, uint32_t edges, int32_t width, int32_t height);
|
||||
void (*configure)(struct wl_resource *resource, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
|
||||
void (*ping)(struct wl_resource *resource);
|
||||
void (*activate)(struct wl_resource *resource);
|
||||
void (*deactivate)(struct wl_resource *resource);
|
||||
void (*map)(struct wl_resource *resource);
|
||||
void (*unmap)(struct wl_resource *resource);
|
||||
} shell;
|
||||
|
||||
struct
|
||||
{
|
||||
int32_t x, y, w, h;
|
||||
struct wl_resource *buffer;
|
||||
Eina_Bool new_attach : 1;
|
||||
} pending;
|
||||
|
||||
struct
|
||||
{
|
||||
int32_t x, y;
|
||||
} popup;
|
||||
|
||||
Eina_List *frames;
|
||||
|
||||
Eina_Bool mapped : 1;
|
||||
Eina_Bool change_icon : 1;
|
||||
Eina_Bool need_reparent : 1;
|
||||
Eina_Bool reparented : 1;
|
||||
Eina_Bool evas_init : 1;
|
||||
Eina_Bool first_damage : 1;
|
||||
Eina_Bool set_win_type : 1;
|
||||
Eina_Bool frame_update : 1;
|
||||
};
|
||||
|
||||
EAPI Eina_Bool e_comp_wl_init(void);
|
||||
EINTERN void e_comp_wl_shutdown(void);
|
||||
|
||||
EINTERN struct wl_resource *e_comp_wl_surface_create(struct wl_client *client, int version, uint32_t id);
|
||||
EINTERN void e_comp_wl_surface_destroy(struct wl_resource *resource);
|
||||
|
||||
static inline uint64_t
|
||||
e_comp_wl_id_get(uint32_t client, uint32_t surface)
|
||||
{
|
||||
return ((uint64_t)surface << 32) + (uint64_t)client;
|
||||
}
|
||||
|
||||
# endif
|
||||
#endif
|
Loading…
Reference in New Issue