2014-05-09 02:51:08 -07:00
|
|
|
#ifdef E_TYPEDEFS
|
2015-06-25 16:55:37 -07:00
|
|
|
# ifndef HAVE_WAYLAND_ONLY
|
|
|
|
# include "e_comp_x.h"
|
|
|
|
# endif
|
2014-05-09 02:51:08 -07:00
|
|
|
#else
|
|
|
|
# ifndef E_COMP_WL_H
|
|
|
|
# define E_COMP_WL_H
|
|
|
|
|
|
|
|
/* NB: Turn off shadow warnings for Wayland includes */
|
2014-08-27 00:22:27 -07:00
|
|
|
# pragma GCC diagnostic push
|
2014-05-09 02:51:08 -07:00
|
|
|
# pragma GCC diagnostic ignored "-Wshadow"
|
|
|
|
# define WL_HIDE_DEPRECATED
|
|
|
|
# include <wayland-server.h>
|
|
|
|
# pragma GCC diagnostic pop
|
|
|
|
|
|
|
|
# include <xkbcommon/xkbcommon.h>
|
|
|
|
|
2015-06-25 16:55:37 -07:00
|
|
|
# ifndef HAVE_WAYLAND_ONLY
|
|
|
|
# include "e_comp_x.h"
|
|
|
|
# endif
|
|
|
|
|
2014-10-20 09:22:30 -07:00
|
|
|
/* # ifdef HAVE_WAYLAND_EGL */
|
|
|
|
/* # include <EGL/egl.h> */
|
|
|
|
/* # define GL_GLEXT_PROTOTYPES */
|
|
|
|
/* # endif */
|
2014-06-24 09:01:43 -07:00
|
|
|
|
2014-05-09 02:51:08 -07:00
|
|
|
# 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
|
|
|
|
|
2014-06-10 13:42:16 -07:00
|
|
|
# define container_of(ptr, type, member) \
|
|
|
|
({ \
|
|
|
|
const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
|
|
|
|
(type *)( (char *)__mptr - offsetof(type,member) ); \
|
|
|
|
})
|
|
|
|
|
|
|
|
typedef struct _E_Comp_Wl_Buffer E_Comp_Wl_Buffer;
|
2014-11-03 08:13:16 -08:00
|
|
|
typedef struct _E_Comp_Wl_Subsurf_Data E_Comp_Wl_Subsurf_Data;
|
2015-02-19 13:33:09 -08:00
|
|
|
typedef struct _E_Comp_Wl_Surface_State E_Comp_Wl_Surface_State;
|
2014-08-04 09:58:49 -07:00
|
|
|
typedef struct _E_Comp_Wl_Client_Data E_Comp_Wl_Client_Data;
|
|
|
|
typedef struct _E_Comp_Wl_Data E_Comp_Wl_Data;
|
2015-02-24 10:24:56 -08:00
|
|
|
typedef struct _E_Comp_Wl_Output E_Comp_Wl_Output;
|
2015-12-10 10:24:55 -08:00
|
|
|
typedef struct E_Shell_Data E_Shell_Data;
|
2014-08-04 09:58:49 -07:00
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct _E_Comp_Wl_Buffer
|
2014-08-04 09:58:49 -07:00
|
|
|
{
|
|
|
|
struct wl_resource *resource;
|
|
|
|
struct wl_signal destroy_signal;
|
|
|
|
struct wl_listener destroy_listener;
|
2016-02-16 11:28:10 -08:00
|
|
|
struct wl_listener deferred_destroy_listener;
|
2015-11-02 13:23:20 -08:00
|
|
|
struct wl_shm_buffer *shm_buffer;
|
2016-02-16 11:28:10 -08:00
|
|
|
struct wl_shm_pool *pool;
|
2016-05-17 09:40:42 -07:00
|
|
|
struct linux_dmabuf_buffer *dmabuf_buffer;
|
2016-02-16 11:28:10 -08:00
|
|
|
E_Pixmap *discarding_pixmap;
|
2014-08-04 09:58:49 -07:00
|
|
|
int32_t w, h;
|
|
|
|
uint32_t busy;
|
|
|
|
};
|
|
|
|
|
2015-02-25 11:17:14 -08:00
|
|
|
struct _E_Comp_Wl_Surface_State
|
|
|
|
{
|
|
|
|
int sx, sy;
|
|
|
|
int bw, bh;
|
|
|
|
E_Comp_Wl_Buffer *buffer;
|
|
|
|
struct wl_listener buffer_destroy_listener;
|
|
|
|
Eina_List *damages, *frames;
|
|
|
|
Eina_Tiler *input, *opaque;
|
|
|
|
Eina_Bool new_attach : 1;
|
|
|
|
Eina_Bool has_data : 1;
|
|
|
|
};
|
|
|
|
|
2014-11-03 08:13:16 -08:00
|
|
|
struct _E_Comp_Wl_Subsurf_Data
|
2014-08-04 09:58:49 -07:00
|
|
|
{
|
|
|
|
struct wl_resource *resource;
|
|
|
|
|
|
|
|
E_Client *parent;
|
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
int x, y;
|
|
|
|
Eina_Bool set;
|
|
|
|
} position;
|
|
|
|
|
2015-02-25 11:17:14 -08:00
|
|
|
E_Comp_Wl_Surface_State cached;
|
2014-08-04 09:58:49 -07:00
|
|
|
|
|
|
|
Eina_Bool synchronized;
|
|
|
|
};
|
2014-06-10 13:42:16 -07:00
|
|
|
|
2016-01-22 12:58:52 -08:00
|
|
|
typedef struct E_Comp_Wl_Extension_Data
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
2016-03-21 14:24:24 -07:00
|
|
|
struct wl_resource *global;
|
2016-01-22 12:58:52 -08:00
|
|
|
struct wl_client *client;
|
|
|
|
void (*read_pixels)(E_Comp_Wl_Output *output, void *pixels);
|
|
|
|
} screenshooter;
|
2016-03-21 14:24:24 -07:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
struct wl_resource *global;
|
|
|
|
} session_recovery;
|
2016-03-28 11:16:04 -07:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
struct wl_resource *global;
|
|
|
|
} www;
|
2016-01-22 12:58:52 -08:00
|
|
|
} E_Comp_Wl_Extension_Data;
|
|
|
|
|
2014-05-15 02:41:09 -07:00
|
|
|
struct _E_Comp_Wl_Data
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
2015-12-07 06:46:11 -08:00
|
|
|
Ecore_Wl2_Display *ewd;
|
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
|
|
|
struct wl_display *disp;
|
2015-12-05 10:09:03 -08:00
|
|
|
Ecore_Wl2_Display *client_disp;
|
2015-07-16 13:51:54 -07:00
|
|
|
struct wl_registry *registry; // only used for nested wl compositors
|
2015-10-22 08:54:59 -07:00
|
|
|
/* struct wl_event_loop *loop; */
|
2015-07-16 13:51:54 -07:00
|
|
|
Eina_Inlist *globals; // only used for nested wl compositors
|
|
|
|
struct wl_shm *shm; // only used for nested wl compositors
|
2015-11-02 13:23:20 -08:00
|
|
|
Evas_GL *gl;
|
|
|
|
Evas_GL_Config *glcfg;
|
|
|
|
Evas_GL_Context *glctx;
|
|
|
|
Evas_GL_Surface *glsfc;
|
|
|
|
Evas_GL_API *glapi;
|
2014-05-09 02:51:08 -07:00
|
|
|
} wl;
|
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-10-13 12:51:14 -07:00
|
|
|
{
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-10-13 12:51:14 -07:00
|
|
|
{
|
|
|
|
struct wl_signal create;
|
|
|
|
struct wl_signal activate;
|
|
|
|
struct wl_signal kill;
|
|
|
|
} surface;
|
|
|
|
/* NB: At the moment, we don't need these */
|
|
|
|
/* 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;
|
2014-05-09 02:51:08 -07:00
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
|
|
|
Eina_List *resources;
|
2015-07-22 14:38:40 -07:00
|
|
|
Eina_List *focused;
|
2014-05-09 02:51:08 -07:00
|
|
|
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;
|
2014-07-09 08:06:25 -07:00
|
|
|
struct wl_resource *focus;
|
2015-02-03 12:31:39 -08:00
|
|
|
int mod_changed;
|
2014-05-09 02:51:08 -07:00
|
|
|
} kbd;
|
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
|
|
|
Eina_List *resources;
|
|
|
|
wl_fixed_t x, y;
|
|
|
|
wl_fixed_t grab_x, grab_y;
|
|
|
|
uint32_t button;
|
2016-01-21 09:52:21 -08:00
|
|
|
uint32_t button_mask;
|
2015-08-04 15:44:23 -07:00
|
|
|
E_Client *ec;
|
|
|
|
Eina_Bool enabled : 1;
|
2014-05-09 02:51:08 -07:00
|
|
|
} ptr;
|
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
|
|
|
Eina_List *resources;
|
|
|
|
Eina_Bool enabled : 1;
|
|
|
|
} touch;
|
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
|
|
|
struct wl_global *global;
|
|
|
|
Eina_List *resources;
|
|
|
|
uint32_t version;
|
|
|
|
char *name;
|
2015-08-20 11:55:14 -07:00
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
struct wl_global *global;
|
|
|
|
struct wl_resource *resource;
|
|
|
|
} im;
|
2014-05-09 02:51:08 -07:00
|
|
|
} seat;
|
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
|
|
|
struct wl_global *global;
|
2015-08-06 16:06:36 -07:00
|
|
|
struct wl_resource *resource;
|
2015-08-04 16:48:11 -07:00
|
|
|
Eina_Hash *data_resources;
|
2014-05-09 02:51:08 -07:00
|
|
|
} mgr;
|
|
|
|
|
2014-07-01 04:03:07 -07:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
void *data_source;
|
|
|
|
uint32_t serial;
|
|
|
|
struct wl_signal signal;
|
|
|
|
struct wl_listener data_source_listener;
|
2015-08-04 15:56:18 -07:00
|
|
|
E_Client *target;
|
2014-07-01 04:03:07 -07:00
|
|
|
} selection;
|
|
|
|
|
2014-07-16 08:48:14 -07:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
void *source;
|
|
|
|
struct wl_listener listener;
|
2015-08-10 13:29:11 -07:00
|
|
|
E_Client *xwl_owner;
|
2014-07-16 08:48:14 -07:00
|
|
|
} clipboard;
|
|
|
|
|
2014-07-01 04:03:07 -07:00
|
|
|
struct
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
|
|
|
struct wl_resource *resource;
|
|
|
|
uint32_t edges;
|
|
|
|
} resize;
|
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
|
|
|
struct xkb_keymap *keymap;
|
|
|
|
struct xkb_context *context;
|
|
|
|
struct xkb_state *state;
|
|
|
|
int fd;
|
|
|
|
size_t size;
|
|
|
|
char *area;
|
|
|
|
} xkb;
|
|
|
|
|
2016-01-22 12:58:52 -08:00
|
|
|
E_Comp_Wl_Extension_Data *extensions;
|
2015-07-08 12:03:16 -07:00
|
|
|
|
2015-02-24 10:24:56 -08:00
|
|
|
Eina_List *outputs;
|
2015-02-19 11:49:01 -08:00
|
|
|
|
2014-05-09 02:51:08 -07:00
|
|
|
Ecore_Fd_Handler *fd_hdlr;
|
|
|
|
Ecore_Idler *idler;
|
|
|
|
|
2015-06-25 15:41:07 -07:00
|
|
|
struct wl_client *xwl_client;
|
2015-06-25 16:55:37 -07:00
|
|
|
Eina_List *xwl_pending;
|
2015-06-25 15:41:07 -07:00
|
|
|
|
2015-08-04 15:56:18 -07:00
|
|
|
E_Drag *drag;
|
|
|
|
E_Client *drag_client;
|
|
|
|
void *drag_source;
|
2016-05-11 07:44:00 -07:00
|
|
|
|
|
|
|
Eina_Bool dmabuf_disable : 1;
|
|
|
|
Eina_Bool dmabuf_proxy : 1;
|
2014-05-09 02:51:08 -07:00
|
|
|
};
|
|
|
|
|
2014-06-10 13:42:16 -07:00
|
|
|
struct _E_Comp_Wl_Client_Data
|
|
|
|
{
|
2015-07-22 14:55:30 -07:00
|
|
|
Ecore_Timer *on_focus_timer;
|
2014-05-09 02:51:08 -07:00
|
|
|
|
2014-07-16 07:54:57 -07:00
|
|
|
struct
|
|
|
|
{
|
2014-11-03 08:13:16 -08:00
|
|
|
E_Comp_Wl_Subsurf_Data *data;
|
2014-07-16 07:54:57 -07:00
|
|
|
E_Client *restack_target;
|
|
|
|
Eina_List *list;
|
|
|
|
} sub;
|
|
|
|
|
2014-05-09 02:51:08 -07:00
|
|
|
/* regular surface resource (wl_compositor_create_surface) */
|
|
|
|
struct wl_resource *surface;
|
2015-02-19 13:33:09 -08:00
|
|
|
struct wl_signal destroy_signal;
|
2014-05-09 02:51:08 -07:00
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
|
|
|
/* 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 (*map)(struct wl_resource *resource);
|
|
|
|
void (*unmap)(struct wl_resource *resource);
|
2015-03-03 13:48:25 -08:00
|
|
|
Eina_Rectangle window;
|
2015-12-10 10:24:55 -08:00
|
|
|
E_Shell_Data *data;
|
2016-04-05 12:05:10 -07:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
Eina_Bool fullscreen : 1;
|
|
|
|
Eina_Bool unfullscreen : 1;
|
|
|
|
Eina_Bool maximize : 1;
|
|
|
|
Eina_Bool unmaximize : 1;
|
|
|
|
Eina_Bool minimize : 1;
|
|
|
|
} set;
|
2014-05-09 02:51:08 -07:00
|
|
|
} shell;
|
2016-03-28 11:16:04 -07:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
struct wl_resource *surface;
|
|
|
|
int x, y;
|
|
|
|
} www;
|
2014-05-09 02:51:08 -07:00
|
|
|
|
2015-02-19 13:33:09 -08:00
|
|
|
E_Comp_Wl_Surface_State pending;
|
2014-06-10 13:42:16 -07:00
|
|
|
|
2015-02-19 13:33:09 -08:00
|
|
|
Eina_List *frames;
|
2014-05-09 02:51:08 -07:00
|
|
|
|
2015-02-24 14:34:20 -08:00
|
|
|
struct
|
2014-05-09 02:51:08 -07:00
|
|
|
{
|
|
|
|
int32_t x, y;
|
|
|
|
} popup;
|
2016-04-08 13:08:32 -07:00
|
|
|
|
|
|
|
E_Maximize max;
|
2015-06-25 16:55:37 -07:00
|
|
|
#ifndef HAVE_WAYLAND_ONLY
|
|
|
|
E_Pixmap *xwayland_pixmap;
|
|
|
|
E_Comp_X_Client_Data *xwayland_data;
|
|
|
|
#endif
|
2014-05-09 02:51:08 -07:00
|
|
|
|
2015-02-19 13:33:09 -08:00
|
|
|
Eina_Bool keep_buffer : 1;
|
2014-05-09 02:51:08 -07:00
|
|
|
Eina_Bool mapped : 1;
|
|
|
|
Eina_Bool change_icon : 1;
|
|
|
|
Eina_Bool evas_init : 1;
|
|
|
|
Eina_Bool set_win_type : 1;
|
|
|
|
Eina_Bool frame_update : 1;
|
2016-01-20 12:55:10 -08:00
|
|
|
Eina_Bool cursor : 1;
|
2016-03-28 11:16:04 -07:00
|
|
|
Eina_Bool moved : 1;
|
2016-04-04 11:02:39 -07:00
|
|
|
Eina_Bool maximizing : 1;
|
2016-04-08 13:08:32 -07:00
|
|
|
Eina_Bool in_commit : 1;
|
2014-05-09 02:51:08 -07:00
|
|
|
};
|
|
|
|
|
2015-02-24 10:24:56 -08:00
|
|
|
struct _E_Comp_Wl_Output
|
|
|
|
{
|
|
|
|
struct wl_global *global;
|
2015-02-24 12:10:37 -08:00
|
|
|
Eina_List *resources;
|
2015-02-24 10:24:56 -08:00
|
|
|
const char *id, *make, *model;
|
|
|
|
int x, y, w, h;
|
|
|
|
int phys_width, phys_height;
|
|
|
|
unsigned int refresh;
|
|
|
|
unsigned int subpixel;
|
|
|
|
unsigned int transform;
|
2015-02-25 10:13:10 -08:00
|
|
|
double scale;
|
2015-07-08 12:03:16 -07:00
|
|
|
|
|
|
|
/* added for screenshot ability */
|
|
|
|
struct wl_output *wl_output;
|
|
|
|
struct wl_buffer *buffer;
|
|
|
|
void *data;
|
2015-02-24 10:24:56 -08:00
|
|
|
};
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API Eina_Bool e_comp_wl_init(void);
|
2014-05-09 02:51:08 -07:00
|
|
|
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);
|
2014-10-15 07:43:55 -07:00
|
|
|
EINTERN Eina_Bool e_comp_wl_surface_commit(E_Client *ec);
|
2014-11-03 09:26:13 -08:00
|
|
|
EINTERN Eina_Bool e_comp_wl_subsurface_commit(E_Client *ec);
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API E_Comp_Wl_Buffer *e_comp_wl_buffer_get(struct wl_resource *resource);
|
2014-05-09 02:51:08 -07:00
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API struct wl_signal e_comp_wl_surface_create_signal_get(void);
|
|
|
|
E_API double e_comp_wl_idle_time_get(void);
|
|
|
|
E_API Eina_Bool e_comp_wl_output_init(const char *id, const char *make, const char *model, int x, int y, int w, int h, int pw, int ph, unsigned int refresh, unsigned int subpixel, unsigned int transform);
|
2015-05-13 11:44:51 -07:00
|
|
|
E_API void e_comp_wl_output_remove(const char *id);
|
2015-07-21 11:27:29 -07:00
|
|
|
|
|
|
|
EINTERN Eina_Bool e_comp_wl_key_down(Ecore_Event_Key *ev);
|
|
|
|
EINTERN Eina_Bool e_comp_wl_key_up(Ecore_Event_Key *ev);
|
2015-08-12 12:04:45 -07:00
|
|
|
E_API Eina_Bool e_comp_wl_evas_handle_mouse_button(E_Client *ec, uint32_t timestamp, uint32_t button_id, uint32_t state);
|
2015-07-21 11:27:29 -07:00
|
|
|
|
2015-08-12 17:18:43 -07:00
|
|
|
E_API extern int E_EVENT_WAYLAND_GLOBAL_ADD;
|
|
|
|
|
2015-06-25 16:55:37 -07:00
|
|
|
# ifndef HAVE_WAYLAND_ONLY
|
|
|
|
EINTERN void e_comp_wl_xwayland_client_queue(E_Client *ec);
|
|
|
|
static inline E_Comp_X_Client_Data *
|
|
|
|
e_comp_wl_client_xwayland_data(const E_Client *ec)
|
|
|
|
{
|
|
|
|
return ec->comp_data ? ((E_Comp_Wl_Client_Data*)ec->comp_data)->xwayland_data : NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline E_Pixmap *
|
|
|
|
e_comp_wl_client_xwayland_pixmap(const E_Client *ec)
|
|
|
|
{
|
2015-07-02 11:57:01 -07:00
|
|
|
return ec->comp_data ? ((E_Comp_Wl_Client_Data*)ec->comp_data)->xwayland_pixmap : NULL;
|
2015-06-25 16:55:37 -07:00
|
|
|
}
|
2014-10-13 12:51:14 -07:00
|
|
|
|
2015-06-25 16:55:37 -07:00
|
|
|
static inline void
|
|
|
|
e_comp_wl_client_xwayland_setup(E_Client *ec, E_Comp_X_Client_Data *cd, E_Pixmap *ep)
|
|
|
|
{
|
2015-06-30 15:38:01 -07:00
|
|
|
if (cd && ep)
|
|
|
|
{
|
|
|
|
((E_Comp_Wl_Client_Data*)ec->comp_data)->xwayland_data = cd;
|
|
|
|
((E_Comp_Wl_Client_Data*)ec->comp_data)->xwayland_pixmap = ep;
|
|
|
|
}
|
2015-08-13 13:05:57 -07:00
|
|
|
if (e_comp_wl->xwl_pending)
|
|
|
|
e_comp_wl->xwl_pending = eina_list_remove(e_comp_wl->xwl_pending, ec);
|
2015-06-25 16:55:37 -07:00
|
|
|
}
|
|
|
|
# endif
|
2014-05-09 02:51:08 -07:00
|
|
|
# endif
|
|
|
|
#endif
|