this automatically handles the case where enlightenment has commandeered the
cursor temporarily and the active client has not unset+set a new cursor in the
meantime
xwayland compositing requires that we set up a root window cursor image
immediately since we'll be getting that cursor surface to display as soon
as the pointer goes out of an x11 client's window
this requires that both canvas cursors and window cursors be present for the same
E_Pointer object, even though only the canvas cursor is actually visible
#kansas
wayland-only and also not working with an X client.
bugfix: Fix case of pointers_size_set not adjusting pointer structure
fields with new size when rendering wayland pointers.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
E doen't have to remove pointer_image evas object when destroying wayland
surface. The image contents of pointer_image will be replaced default mouse
cursor in pointer_object at idler unless pointer_image is removed in
e_pointer_image_set.
Test Plan: run e with wayland only server -> run elementary test -> close elementary test
Reviewers: raster, devilhorns, zmike
CC: cedric
Differential Revision: https://phab.enlightenment.org/D776
Summary:
it fixes a bug that cursor is invisible when running a wayland client.
e_pointer_image_set function sets image data of p->pointer_image to
data of E_Pixmap. and then e_pointer_idler_before function changes
raw image data of p->pointer_image to p->pixels. we should enable blocks
to avoid it.
Test Plan: run enlightenment (wayland only) -> run efl app with wayland shm engine
Reviewers: raster, devilhorns, zmike
CC: cedric
Differential Revision: https://phab.enlightenment.org/D769
Fixing devilhorns commit and run commit. If we have a condition we want
to check we need an else if not a simple else. Always compile before push.
Especially the small and simple changes. :)
pointers in E now come in two flavors, one for each protocol that we currently support. each is created from the owner compositor backend:
X pointers still work as usual
Wayland pointers are actually surfaces that we dump image data into periodically to render them as evas images
some small amounts of hack is necessary to make this work, namely blocking X pointers when a Wayland one is in use if we're running a multi-protocol compositor
* try to clear up build system for separating out ecore-x
* add #ifdefs for lots of ecore-x stuff
* break out some internal e wl functions for reuse in api
* store wl surface buffers as an inlist
* add protocol-specific client compositor data
** move lots of X client attributes here
* add pixmap type checks to a number of X-specific things, such as grabinput, to block them for non-X clients
* rearrange startup order to work with wayland
* move X screensaver code to e_comp_x
* flag modules still requiring X with -DNEED_X