Commit Graph

83 Commits

Author SHA1 Message Date
Gwanglim Lee a96d7290f5 Add missing wl_resource_destroy
Summary:
There are no resource free codes in xdg shell destroy handler
and xdg popup destroy handler. e should delete wayland resource as
client requested.

Test Plan:
1. run e as wayland server
2. run weston-stacking in e
3. click with right mouse button to create xdg popup surface
4. click main surface area to delete xdg popup surface

Reviewers: devilhorns, zmike, raster

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1196
2014-08-26 10:10:38 -04:00
Seunghun Lee e5f293214d move the part of code for fetch transient_for in eval time to _e_shell_surface_parent_set().
Summary:
we need to set ec->parent before eval time.
that's because client can request to commit surface calling shell.configure() before eval time.
in this case, ec->parent isn't set yet, configure(move) will be failed.

in order to fix it, we have to set ec->parent in _e_shell_surface_parent_set() before eval time,
but we should check if ec already have parent, and if so, remove its parent's transients before change the value of ec->parent.

Test Plan: N/A

Reviewers: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1177
2014-08-26 10:10:38 -04:00
Gwanglim Lee 6248f11b80 remove EINA_UNUSED in move and resize callbacks
Summary: remove EINA_UNUSED from used function parameters

Test Plan: N/A

Reviewers: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1173
2014-08-26 10:10:38 -04:00
Seunghun Lee 4152e1e2dd remove setting ec->parent before evaluation.
Summary:
the value of "ec->parent" should be set in evaluation time,
therefore ec->parent->transients will be reset automatically.

Reviewers: devilhorns

CC: cedric

Differential Revision: https://phab.enlightenment.org/D1155
2014-08-26 10:10:37 -04:00
Seunghun Lee 97c39e74cc fix crash when client in wayland request to set parent to null.
Summary: Clear the E_Client's parent if client request to set parent to null.

Test Plan: run weston-stacking.

Reviewers: devilhorns

CC: cedric

Differential Revision: https://phab.enlightenment.org/D1154
2014-08-26 10:10:37 -04:00
Chris Michael 2ab2a9a36f re-enable checking of current client geometry when get a configure
message.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:37 -04:00
Chris Michael 581975d255 check if client is getting destroyed before we try to unmap it.
NB: This is done for wayland clients where e_client delete function
has already freed the client wl_comp_data Before we get a shell
surface destroy message from wayland. (occurs due to async nature).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:37 -04:00
Chris Michael 379799e903 unify surface parent setting code for use with wl_shell and xdg_shell.
When setting transient, tell the compositor that we need to reset the
window type for this surface.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:37 -04:00
Chris Michael 2ed054a669 wl-desktop-shell: Unify popup_parent code and fix placement of popup
windows.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael 08a98cdb87 wl-desktop-shell: Simplify transient_set functions and move the
client->parent->modal code to the compositor side.
Also, after setting netwm.type, change the set_win_type in the
compositor data field so that the compositor will handle parent->modal
on next property fetch.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael 118f4eb05e fix formatting
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael dca596c611 remove debug noise
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Gwanglim Lee d86b5816e8 add support for xdg_shell surface transient_for
Summary: add support for xdg_shell surface transient_for

Test Plan:
1. run e wayland server
2. run weston-stacking and set focus it
3. press 't' for creating transient_for surface

Reviewers: devilhorns, zmike, raster

CC: cedric

Differential Revision: https://phab.enlightenment.org/D1016

@feature
2014-08-26 10:10:36 -04:00
Gwanglim Lee a13179dc9d fix geometry restore for maximized and fullscreen windows
Summary:
there are no geometry restore codes in handler of
wl_shell_surface toplevel_set.

Test Plan:
1. run e wayland only server with devilhons's branch source (devs/devilhorns/e_comp_wl)
2. run terminology
3. make terminlogy surface to be maximized
4. make terminlogy surface to be un-maximized
5. move terminlogy surface

Reviewers: devilhorns, zmike, raster, stefan_schmidt

CC: cedric

Differential Revision: https://phab.enlightenment.org/D965
2014-08-26 10:10:36 -04:00
Chris Michael 4ab5c6deb5 fix up formatting of gwanglim's D966 patch
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:35 -04:00
Gwanglim Lee ae76232c2c add fullscreen_set handler for wl_shell_surface
Summary: fullscreen_set handler for wl_shell_surface

Test Plan:
1. run e wayland only server with devilhons's branch source (devs/devilhorns/e_comp_wl)
2. run elementary_test -to "window states"
3. select fullscreen check box on elementary_test surface

Reviewers: devilhorns, zmike, raster, stefan_schmidt

Reviewed By: devilhorns

CC: cedric

Differential Revision: https://phab.enlightenment.org/D966
2014-08-26 10:10:35 -04:00
Gwanglim Lee 93669a4db1 resource parameter is used in _e_shell_surface_cb_move
Summary: remove EINA_UNUSED of resource parameter in _e_shell_surface_cb_move

Test Plan: N/A

Reviewers: devilhorns, zmike, raster, stefan_schmidt

CC: cedric

Differential Revision: https://phab.enlightenment.org/D967
2014-08-26 10:10:35 -04:00
Chris Michael 7a201e24da add support for wl_shell surface move & resize
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:35 -04:00
Chris Michael 92fd5b4be1 add missing EINA_UNUSED
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:35 -04:00
Chris Michael 79599394da update various files for compositor structure changes
- X compositor
  - shell module
  - drm module
  - x11 module
2014-08-26 10:10:35 -04:00
Chris Michael 4da7f486fa don't need to e_pixmap_ref here.
fix wayland client application resizing.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:35 -04:00
Chris Michael 61a08390b3 update wl_desktop_shell module
- Add support for xdg_shell
 - rework to function with new wayland compositor

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:35 -04:00
Chris Michael 217d5a95bc remove old wayland compositor and old shell files
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:34 -04:00
Chris Michael f6d2f30d93 Port D1089 patch from Seunghun Lee <shiin.lee@samsung.com> to current
E master

fix crash and memory leak when press and release any key repeatedly.

Summary:
since the size of wl_array is determined based on one byte,
so in order to compare with uint32_t, the size of wl_array should
be divided by uint32_t's size.
and when calculate the size of wl_array by difference between two
address, address should type cast char* as one byte.

Test Plan:
(1) run terminology
(2) input any key several time.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-06-26 10:58:06 -04:00
Gwanglim Lee fdd4d50146 Fixed a problem with e wl server that sent invalid key value to wl client. (server-side)
Summary:
This problem occurred due to xkb_keysym_t value of libxkbcommon by e wl server.
e wl server should pass keycode from evdev input device on to wl client.
In order that e wl server receives valid keycode Ecore_Event_Key should have
an extended data member. This patch should be applied with client side patch (efl).

Test Plan: run e wl server -> create wl client -> type keys

Reviewers: raster, devilhorns, zmike

Reviewed By: devilhorns

CC: cedric

Differential Revision: https://phab.enlightenment.org/D713
2014-04-14 08:32:51 -04:00
Chris Michael 915f8f0613 @bugfix: Fix building for WAYLAND_ONLY by using the proper define
sed -i 's/WAYLAND_ONLY/HAVE_WAYLAND_ONLY/g'

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-03-18 07:43:04 +00:00
Mike Blumenkrantz 4b58fa9a4e replace ev->keyname with ev->key
see efl 5ae4cfd1923e502731f4d8fc2bf67b1f536a9216
2014-03-13 13:03:34 -04:00
Chris Michael ab15d6e2b4 bugfix: Fix wl_desktop_shell compiler warning for Mike
The keys array stores keys as unsigned int, so with a little bit of
casting voodoo, we can avoid the nasty compiler warning messages about
void pointers used in arithmetic.

Signed-off-by: Chris Michael <devilhorns@comcast.net>
2014-02-20 17:11:56 +00:00
Mike Blumenkrantz eba912cf6a e_client_resizing_get() -> e_client_util_resizing_get()
functions in e_client.x should be namespaced with e_client_util to indicate that they are inline (and in e_client.x)
2014-02-05 10:51:36 -05:00
Mike Blumenkrantz 99a4e5bd27 remove e_pointer_block api
this was a failure idea for a way to block X cursor changes using an api, which turned out to be overengineered
2014-01-23 17:04:41 -05:00
Mike Blumenkrantz 6bc7662459 add e_exec instances for wl clients if they set surface class: works for terminology
creating phony e_exec instances based on name/class allows wayland clients to show up normally in ibar
2014-01-14 20:28:58 -05:00
Mike Blumenkrantz 5737103d67 wl pointers done-ish
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
2014-01-14 20:28:58 -05:00
Mike Blumenkrantz 12d7405a0f huge wl fixup (wayland clients actually working again)
* 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
2014-01-14 20:28:57 -05:00
Mike Blumenkrantz 86656e4df9 compositor rewrite / charlie-foxtrot situation
huge fustercluck commit because there wasn't really a way to separate out the changes. better to just rip it all out at once.

* compositor and window management completely rewritten. this was the goal for E19, but it pretty much required everything existing to be scrapped since it wasn't optimized, streamlined, or sensible. now instead of having the compositor strapped to the window manager like an outboard motor, it's housed more like an automobile engine.

** various comp structs have been merged into other places (eg. E_Comp_Zone is now just part of E_Zone where applicable), leading to a large deduplication of attributes

** awful E_Comp_Win is totally dead, having been replaced with e_comp_object smart objects which work just like normal canvas objects

** protocol-specific window management and compositor functionality is now kept exclusively in backend files

** e_pixmap api provides generic client finding and rendering api

** screen/xinerama screens are now provided directly by compositor on startup and re-set on change

** e_comp_render_update finally replaced with eina_tiler

** wayland compositor no longer creates X windows

** compositor e_layout removed entirely

* e_container is gone. this was made unnecessary in E18, but I kept it to avoid having too much code churn in one release. its sole purpose was to catch some events and handle window stacking, both of which are now just done by the compositor infra

* e_manager is just for screensaver and keybind stuff now, possibly remove later?

* e_border is gone along with a lot of its api. e_client has replaced it, and e_client has been rewritten completely; some parts may be similar, but the design now relies upon having a functional compositor

** window configuration/focus functions are all removed. all windows are now managed solely with evas_object_X functions on the "frame" member of a client, just as any other canvas object can be managed.

*** do NOT set interceptors on a client's comp_object. seriously.

* startup order rewritten: compositor now starts much earlier, other things just use attrs and members of the compositor

* ecore_x_pointer_xy_get usage replaced with ecore_evas_pointer_xy_get

* e_popup is totally gone, existing usage replaced by e_comp_object_util_add where applicable, otherwise just placed normally on the canvas

* deskmirror is (more) broken for now

* illume is totally fucked

* Ecore_X_Window replaced with Ecore_Window in most cases

* edge binding XWindows replaced with regular canvas objects

* some E_Win functionality has changed such that delete callbacks are now correctly called in ALL cases. various dialogs have been updated to not crash as a result

comp files and descriptions:

e_comp.c - overall compositor functions, rendering/update loop, shape cutting

e_comp_x.c - X window management and compositor functionality

e_comp_wl.c - Wayland surface management and compositor functionality

e_comp_canvas.c - general compositor canvas functions and utilities

e_comp_object.c - E_Client->frame member for managing clients as Evas_Objects, utility functions for adding objects to the compositor rendering systems

additional authors: ivan.briano@intel.com

feature: new compositor

removal: e_border, e_container, e_popup
2014-01-14 20:22:02 -05:00
Chris Michael eb4c914c3e Initialize btn variable to zero
Fixes compiler warning 'btn' may be used uninitialized

Signed-off-by: Chris Michael <devilhorns@comcast.net>
2014-01-04 11:24:55 +00:00
Chris Michael 58131a4274 Update shell for recent upstream wayland/weston changes.
- Update shell to support multiple resources on the client side

 NB: Fixes zmike wayland client crash issue ;)

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-24 15:22:12 +01:00
Chris Michael 09768f143c Fix zmike issue w/ surface losing focus when we move/resize.
- Check if surface is still focused by the pointer on focus_out events
   NB: Needed due to spurious focus_out events we receive from evas/edje
 - On spurious mouse_out event, check if pointer is actually still
inside the surface.
 - Cleanup Move and Resize Grab code (don't need a binding event
struct here).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-12 15:02:59 +01:00
Mike Blumenkrantz bdd0bc624d add wl surface -> e_border mapping 2013-09-11 09:02:53 +01:00
Chris Michael 2aed20988c Get keysym from X on key_up.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-28 09:43:05 +01:00
Chris Michael ac27edb524 Remove redundant useage of grab pointer.
Add safety checks for pointer button_count.
When releasing a busy grab, also check if surface is NULL.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-28 08:16:02 +01:00
Chris Michael 5392c1884c Hook into mouse_wheel events for surface.
Send wheel event to the pointer interface.

NB: Discomfitor/Zmike .. You Have Mouse Wheel Support Now !! ;)

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-23 11:22:23 +01:00
Chris Michael 32b1e742c7 Revert "Remove call to ecore_x function for getting keycode."
This reverts commit ccb72c38ca.

Revert this (for now) because it breaks key input for wayland apps running
inside of X. Need more time to look into it....
2013-08-21 14:41:46 +01:00
Mike Blumenkrantz c93467177a another ecore-x instance in wl_desktop_shell 2013-08-21 07:17:33 +01:00
Chris Michael ccb72c38ca Remove call to ecore_x function for getting keycode.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-20 09:56:19 +01:00
Carsten Haitzler 8b65fe069c pollers by default are in 1/8th of a second in ecore.... 32 made no sense. 2013-08-18 21:36:19 +09:00
Chris Michael 9d2b22553a Revert this button_count change for now (breaking move/resize here).
Revert "Remove button increments/decrements from interface callbacks as these"

This reverts commit 2dce6d935f.
2013-08-16 13:26:19 +01:00
Chris Michael 6a8524259a E configs ping interval for clients is in ticks. Wayland event source
timers are in mils ... let's do some multiplication here to stop
clients from pinging out all the time and getting killed.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-16 13:20:59 +01:00
Chris Michael 2dce6d935f Remove button increments/decrements from interface callbacks as these
are done in the mouse up/down callbacks.

NB: Thanks for the report Mike ;)

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-16 13:03:16 +01:00
Chris Michael 1dca808f98 Get the pointer grab from the compositor's input
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-16 11:55:50 +01:00
Chris Michael bd9da64552 No need to allocate a grab here if we are just setting busy cursor.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-16 09:51:20 +01:00