Commit Graph

712 Commits

Author SHA1 Message Date
Mike Blumenkrantz 412595dc60 set client visibility for shell-less wayland clients appropriately during commit 2015-06-25 20:04:31 -04:00
Mike Blumenkrantz 01a4273c38 use ctrl+alt+backspace hotkey in wayland compositor for all non-release builds 2015-06-25 20:04:31 -04:00
Mike Blumenkrantz 05a0602f6e unused variable-- 2015-06-25 20:04:31 -04:00
Mike Blumenkrantz d7c58215f4 set wl client surface pointer in surface create method
remnant from when clients were created by the shell
2015-06-25 20:04:31 -04:00
Mike Blumenkrantz eec5cf6a67 remove E_Comp_Data typedef, use backend-specific typedefs unconditionally
this turned into a bit of a charlie-foxtrot due to constant pointer aliasing
in the wl compositor codebase

no functional changes
2015-06-25 20:04:31 -04:00
Mike Blumenkrantz dbce320216 load wl_desktop_shell and xwayland after wl comp load 2015-06-25 20:04:30 -04:00
Chris Michael 571633a32b e-comp-wl: #if 0 out a currently unused function for pre_frame assignment.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-06-17 11:28:55 -04:00
Yomi 0dc33a5aeb Fix misspellings in E's files.
Summary: Fix misspellings and spaces in E's files.

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2676
2015-06-16 16:10:21 -04:00
Boram Park 5c46de06c6 e_comp_wl: fix not sending a mouse enter event to client.
Summary:
First of all, currently cdata->ptr.x,y contains e_client related pos.
But, cdata is owned by e_comp, not per e_client. So cdata->ptr.x,y should contain
absolute pos.
And, when a pointer resource is created, enter event should be sent to client.

Change-Id: I21cb031e293fe281e35ba89f3a96116a28a48856
Signed-off-by: Boram Park <boram1288.park@samsung.com>

Test Plan:
1. run e as wayland server
2. move cursor to around 50,50
3. run elementary_test
4. click the mouse left button on slide toggle widget.
   (Don't move a cursor out of elementary_test. If you do, you can't find bug)

Reviewers: gwanglim, raster, devilhorns, ManMower, zmike

Reviewed By: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2330
2015-05-18 11:53:05 -04:00
Chris Michael a2d22437fd fix call to e_comp_wl_input_keymap_set for building with
wayland-client support

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-18 11:48:31 -04:00
Derek Foreman 7f6f4b6966 wayland: Remove a lot of E_Comp_Data pointers
Summary: We should just use e_comp->wl_comp_data everywhere we can.

Reviewers: devilhorns, zmike

Reviewed By: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2507
2015-05-18 09:08:52 -04:00
Derek Foreman e1c9bfa619 wayland-compositor: Set server mode
Summary:
If we don't set server mode we can deadlock when trying to use functions
that way for server mode to become set.

This can currently cause a startup freeze in e_scale_init().

Reviewers: zmike, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2520
2015-05-15 14:44:21 -04:00
Chris Michael fd2e05f715 drm randr: More work on getting RandR functional in E-Wl. This adds a
function to remove an output from e_comp_wl also.

NB: Not entirely complete yet

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-13 14:50:40 -04:00
Chris Michael ab9abcb598 remove unused 'serial' variable in mulit-move callback
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-13 13:20:33 -04:00
Chris Michael 3a15df2454 fix numerous compile errors from D2482
NB: Mental Note: COMPILE BEFORE PUSH !!

 # butts

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-13 12:26:07 -04:00
jhyuni.kang c59595e964 Support wl_touch and send wl_touch events to client
Summary:
Currently enlightenment-wayland support pointer and keyboard events.(in input)
         So I added EVAS_CALLBACK_MULTI_* event handler and hanling functions for wl_touch interface.
         This code send wl_touch events to client like a pointer event.

Test Plan:
In wayland + enlightenment environment, generate multi touch events.
           The enlightenment will be send wl_touch events to client.

Reviewers: raster, devilhorns, zmike

Reviewed By: devilhorns, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2482
2015-05-13 12:05:57 -04:00
Chris Michael 57fdd5613d send screen paramaters in proper order to e_comp_wl_output_init
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-13 12:05:17 -04:00
Boram Park 7a078ba99b e_comp_wl: fix segfault in case parent's surface is destroyed before subsurface is destroyed
Summary:
A parent surface can be destroyed. In this case, ec->comp_data->sub.data->parent has
a wrong address which has already destroyed. Then, it occurs segmentation fault.
To avoid segfault, ec->comp_data->sub.data->parent should be NULL when a parent surface
is destroyed.

Signed-off-by: Boram Park <boram1288.park@samsung.com>

Test Plan: Run attached test program(subsurface)

Reviewers: gwanglim, cedric, devilhorns, zmike

Reviewed By: devilhorns, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2484
2015-05-12 14:43:00 -04:00
Chris Michael 0a94e8ba71 enlightenment: Make E build again with EFL from git
sed -i 's/EAPI/E_API/g'

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-07 15:13:10 -04:00
Mike Blumenkrantz fd558491fd don't set e_comp->root for wl compositors
root is the root window. wl compositors do not have root windows.
2015-04-24 14:57:05 -04:00
Mike Blumenkrantz a452baafca move comp_x screen setup code into e_randr
this was not x-specific, so move it for use in wl compositors
2015-04-22 21:20:57 -04:00
Mike Blumenkrantz 4b1925dadf init randr during wayland init...always 2015-04-22 21:20:57 -04:00
Mike Blumenkrantz 18c34ed151 change comp type check at start of e_comp_wl_init()
at present, this value will be set to either TYPE_NONE if no valid
compositor has been created or TYPE_X if running a wl compositor inside
an x11 compositor
2015-04-22 21:20:57 -04:00
Mike Blumenkrantz 3ac3e9bc71 ensure valid strings are send when sending wl output geometry 2015-04-22 21:18:53 -04:00
Mike Blumenkrantz e1181c4d03 create e_comp during e_comp_init, set comp_type automatically
this simplifies comp creation slightly
2015-04-22 21:18:53 -04:00
Chris Michael 57611c6d2f e-comp-wl: Init randr if we are not wayland only
This is needed for the wl-x11 module

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-04-22 10:46:41 -04:00
Mike Blumenkrantz 0bad7b6025 unadjust frame coords when calculating wl surface placement during commit
ec->y -> unadjust -> ec->client.y
2015-04-21 16:19:30 -04:00
Mike Blumenkrantz f276023e71 pass surface resource when creating wl surface pixmaps 2015-04-21 15:41:10 -04:00
Mike Blumenkrantz 96f07bff8a wl client pixmaps now use a different method for creating the pixmap id 2015-04-21 15:19:20 -04:00
Mike Blumenkrantz 6e222cede8 add wl client event callbacks at lower priority
this ensures that bindings will activate before events are passed to clients
2015-04-21 15:17:56 -04:00
Chris Michael 9b7358aa32 e-comp-wl: Don't crash if we fail to create a new e_client
This "should" fix T2344 crashing, however I suppose a better question
is ... why is e_client_new returning NULL when it Does find the client
already in the hash...

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-04-21 09:38:00 -04:00
Mike Blumenkrantz bdc0a6ab8b fix wl randr error message string 2015-04-06 14:29:47 -04:00
Mike Blumenkrantz 617c2d96ff move wl E_Client creation to same place as E_Pixmap creation
ensure that surface manipulation functions will succeed even with no shell surface
2015-03-30 12:13:04 -04:00
Mike Blumenkrantz 73abc46c61 remove useless wl comp code for shape exports 2015-03-30 11:07:29 -04:00
Chris Michael 4c541d3b32 fix debug message for wl_output_bind
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-03-21 16:59:48 -04:00
Chris Michael 5916823f79 add debugging when output gets bound, and fix formatting
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-03-21 16:30:11 -04:00
Derek Foreman 73db701a92 wayland compositor: remove _e_comp_wl_client_focus()
Summary:
We now have a subset of that functionality in e_comp_wl_input.c, so use
that function instead.  The missing bits are moved into the one remaining
caller.

Reviewers: zmike, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2207
2015-03-20 15:26:09 -04:00
Derek Foreman def3ac82ae wayland compositor: Remove focus_update from compositor client data
Summary:
The only use for this was sending keyboard enter events on first commit
after a focus during app startup, and this has proven to be unreliable.

NOTE: Focus before an app requests the keyboard global is now broken and
will be fixed in a following patch.

Reviewers: zmike, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2205
2015-03-20 15:13:25 -04:00
Mike Blumenkrantz 9986311035 move E_Comp->root window setting into e_comp_wl_init() for wl compositors 2015-03-20 15:08:28 -04:00
Mike Blumenkrantz 58447e9508 completely remove E_Manager
the final step in flattening all the canvas/screen apis
2015-03-19 16:53:32 -04:00
Mike Blumenkrantz d466fe3824 remove E_Comp usage from e_comp_wl 2015-03-18 17:30:49 -04:00
Derek Foreman 1ed503281f wayland-compositor: Clamp to 1, 1 on drag resize
Summary:
Apparently negative values mean "pick a size", though this is
undocumented.

Reviewers: devilhorns, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2191
2015-03-18 15:53:44 -04:00
Bryce Harrington 673de24fa7 wayland: Handle failure to init a display screen
Summary:
e_comp_wl_output_init will fail (silently) under a couple of
conditions.  Instead, make it propagate the error so it can be handled
at a higher level.  For now just issue an error message.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>

Reviewers: cedric, devilhorns, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2155
2015-03-13 20:06:01 -04:00
Mike Blumenkrantz 1736d1ecb9 e_client functions no longer require E_Comp param 2015-03-13 16:53:19 -04:00
Mike Blumenkrantz d00127c2f5 e_comp functions no longer require E_Comp param 2015-03-13 16:48:41 -04:00
Mike Blumenkrantz 091142b032 remove E_Client->comp 2015-03-13 15:41:21 -04:00
Mike Blumenkrantz 289c6f0d1f send client sizes for wl configure events when fullscreening/maximizing 2015-03-12 15:19:52 -04:00
Mike Blumenkrantz b533ad67f3 remove unused wl variables 2015-03-12 15:15:40 -04:00
Mike Blumenkrantz 662d9fea2d don't reset placement of internal wl clients on first commit
fixes placement of evry et al
2015-03-12 15:14:27 -04:00
Mike Blumenkrantz 3f8d2d0596 disable wl client hide animations even with gl
broken until we start making textures for rendering clients
2015-03-12 13:24:42 -04:00
Mike Blumenkrantz bb436e6750 don't reuse wl surface pixmaps without adding a ref 2015-03-10 16:37:57 -04:00
Derek Foreman 281f283d7d Wayland: more checks to avoid consuming serials needlessly
Reviewers: devilhorns, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2135
2015-03-10 16:24:46 -04:00
Mike Blumenkrantz 808ab60181 fix invalid eina list usage when merging wl surface frame list 2015-03-10 16:11:57 -04:00
Bryce Harrington 13f4582c76 wayland: Check for potential OOM from wl_array_add()
Summary:
wl_array_add() returns NULL if it can't malloc/realloc.  This
is probably unlikely but check for it and issue a meaningful error if it
occurs.

Reviewers: cedric, devilhorns, zmike, raster

Reviewed By: raster

Subscribers: raster, cedric

Differential Revision: https://phab.enlightenment.org/D2054
2015-03-10 15:07:38 +09:00
Derek Foreman b7f3a81f59 Send modifiers to wayland clients on focus in
Summary:
If we don't update the modifiers on focus in we can end up with stuck
modifiers if a modifier is held when starting a client.

Reviewers: zmike, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2124
2015-03-09 16:37:02 -04:00
Derek Foreman 8c7364b682 Don't update xkbstate when no app has focus
Summary:
We still update the keyboard array.  focus_in adds everything in the
array to xkbstate anyway, so adding it when there's no focus results
in a double update of state and potentially stuck modifiers.

Reviewers: zmike, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2111
2015-03-06 18:55:39 -05:00
Mike Blumenkrantz 7147b7d54b remove unnecessary wl client pixmap checks
these are direct object callbacks so they will only be triggered on wl clients
2015-03-06 16:02:49 -05:00
Derek Foreman 6e4214c8ad Fix stuck modifiers on client exit
Summary:
We still need to remove the active keys when focus_out happens, even
if the pixmap is already gone.  If we don't and a modifier was held
down during exit then the xkb state will have that modifier stuck
forever.

Reviewers: zmike, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2110
2015-03-06 13:08:24 -05:00
Mike Blumenkrantz b9f797a277 flag non-internal wl shm clients as dead and delete mirrors on hide
no more crashing?
2015-03-05 12:18:27 -05:00
Mike Blumenkrantz 7e8d442ac3 force non-internal wl clients to hide when gl is not available 2015-03-05 11:59:29 -05:00
Mike Blumenkrantz 230033aa67 Revert "when we get a request to close client app, defer resource deletion"
This reverts commit 1cf7c1f151.

didn't fix the issue and obfuscated the code unnecessarily
2015-03-05 11:41:43 -05:00
Mike Blumenkrantz de17793fe3 reapply wl surface focus during commit when necessary 2015-03-04 15:36:23 -05:00
Mike Blumenkrantz b069009a16 grab wl shell surface geom and use for adjusting resize operations
I think this still may not be 100% perfect,
but it's more like 95% perfect now instead of 50%
2015-03-03 16:48:25 -05:00
Chris Michael 1cf7c1f151 when we get a request to close client app, defer resource deletion
until After close animation has been run

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-03-02 15:42:26 -05:00
Mike Blumenkrantz e703b40073 improve wl grab resize calcs 2015-02-28 16:48:07 -05:00
Mike Blumenkrantz f62ab0a819 update+clamp wl surface client size to buffer size during commit
this is the same as the X render loop behavior, just in a different place
2015-02-28 15:46:16 -05:00
Mike Blumenkrantz 57c36f92a2 send different values to wl clients for configure when performing a resize action
the calculated values here seem to not be sufficiently accurate to manage a calculated resize.
instead, calc relative pointer coords and send them

 #barrel
2015-02-28 15:43:12 -05:00
Chris Michael 327e422aab set output->scale to e_scale, and when we wl_output_send_scale
actually send output->scale

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-28 11:36:42 -05:00
Bryce Harrington f92e241e8e wayland: Make sure we're initializing output scale sensibly
Summary:
By default the E_NEW() will create our output objects with a 0.0 scale,
which doesn't make any sense and if anything will lead to crashes.
Instead use a scale factor of 1.0.

When updating output details, if the scale setting is invalid then set
it to 1.0 as a sensible value.

Note this doesn't actually enable scaling, just helps make sure we're
not injecting invalid scale parameters from the start.

Reviewers: zmike, devilhorns, cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2078
2015-02-27 19:45:25 -05:00
Bryce Harrington 9a4024a20a wayland: Refactor output initialization code
Summary:
The code to initialize outputs has duplicate stanzas for updating the
data members of the output structure.  This set of refactoring steps
shuffles things around to eliminate the redundant code.  I think this
also makes the code easier to follow too.

This also breaks out a new internal routine for looking up outputs by
id.  I suspect this will have general usefulness later.

Reviewers: devilhorns, cedric, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2077
2015-02-27 19:23:11 -05:00
Mike Blumenkrantz 5bac79422e remove wl client resize idler, send ec->w/h instead of ec->client.w/h on resize
this idler makes sense in X where there is a third party display server but not in wl
2015-02-27 15:56:14 -05:00
Chris Michael 8a76018025 remove missed use of E_COMP_WL_PIXMAP_CHECK macro
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-27 10:59:59 -05:00
Bryce Harrington c802239534 wayland: Document the public API
Summary: Add doxygen comments for public API members

Reviewers: zmike, cedric, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2067
2015-02-27 09:24:59 -05:00
Bryce Harrington 8441520030 wayland: Eliminate extraneous E_COMP_WL_PIXMAP_CHECK macro
Summary:
Many of the functions in the compositor do some preliminary checks, to
ensure objects are valid and the right type.  Most of the checks follow
a consistent pattern, for example:

    if (!(ec = data)) return;
    if (e_object_is_del(E_OBJECT(ec))) return;
    if (ec->iconic) return;

This style makes it pretty straightforward to review the pre-conditions
of the function.

The one exception is the check to see if an object is a wayland pixmap;
this is implemented as a C macro.

     E_COMP_WL_PIXMAP_CHECK;

The name of the macro is descriptive enough, but it conceals what is
actually being checked.  I think that it is clearer and fits better with
the style of the rest of the pre-condition checks for this check to just
be shown as regular C code:

     if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) return;

Reviewers: zmike, cedric, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2066
2015-02-27 09:21:55 -05:00
Bryce Harrington 82e155eac6 wayland: Fix missing check on E_NEW return
Summary:
All other E_NEW calls in this file check the return value, except this
one place.  In this function, other calls are being checked for NULL and
handled so this one should as well.  The other handlers in this function
follow the style of issuing an error message, freeing objects, and
returning false; we don't need to free anything so just do the error
message and return.

Reviewers: zmike, cedric, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2065
2015-02-27 09:18:27 -05:00
Mike Blumenkrantz 8b40a12899 update wl xdg states on maximize/fullscreen events 2015-02-26 22:32:14 -05:00
Mike Blumenkrantz 69c4bc64db don't send wl mouse button events when client's menu is active 2015-02-26 21:55:34 -05:00
Mike Blumenkrantz e908d9a838 unify wl comp mouse button callback checks 2015-02-26 21:54:17 -05:00
Bryce Harrington 126d658914 wayland: Whitespace cleanup
Summary: Cosmetic

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2061
2015-02-26 16:42:27 -05:00
Chris Michael 35c3eb7dcf fix compile issue due to output change and fixup subsurface creation to match new "state" paradigm
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-26 15:33:40 -05:00
Chris Michael b6be9efe26 Implement buffer_reference to fix client resizing issue
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-26 15:33:40 -05:00
Derek Foreman dd2058d8a6 Don't crash when an error pop-up occurs before the compositor is set up.
Reviewers: devilhorns, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2059
2015-02-26 14:43:10 -05:00
Bryce Harrington 5bebba3036 wayland: Refactor out common mouse handling code
Summary:
These two functions are nearly identical so move much of the common code
into a helper function.

Reviewers: cedric, devilhorns, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2053
2015-02-25 22:00:11 -05:00
Bryce Harrington 89dbb9bd27 cosmetic: Whitespace cleanup of wayland client files
Summary:
cosmetic: Cleanup whitespace for wayland compositor

There is excess trailing whitespace in several of the files for the
wayland implementation.  These patches attempt to apply the spacing
rules for Enlightenment as documented at:
https://phab.enlightenment.org/w/coding_convention/

The whitespace rules are applied using the following emacs tabbing
settings:

 (defun start-efl-c-mode ()
  "C mode with adjusted defaults for use with Enlightenment
  development."
  (interactive)
  (c-mode)
  (c-set-style "gnu")
  (setq tab-width 8)
  (setq indent-tabs-mode nil)
  (setq c-basic-offset 3)
  (setq defun-block-intro 3)
  (setq statement-block-intro 3)
  (setq case-label 1)
  (setq statement-case-intro 3)
 )

This patchset also eliminates all tabs in favor of whitespace, as per
the coding style rules.

Reviewers: zmike, cedric, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2048
2015-02-24 17:34:20 -05:00
Chris Michael e8d0ac4f2d append E_Comp_Wl_Output to compositor's output list during output_init
call

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-24 15:27:48 -05:00
Chris Michael e36d2f5235 don't remove E_Comp_Wl_Output on unbind as this Could lead to nasty
crashes if a second client tries to bind wl_output

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-24 15:17:07 -05:00
Derek Foreman 1da3aa24dd Fix wl_output tracking in wayland compositor
Summary:
We should keep a list of resources per output to propagate wl_output
changes to each client that bound an output.

The output list now contains all outputs, not just bound ones.

Reviewers: devilhorns, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2047
2015-02-24 15:10:37 -05:00
Bryce Harrington 40998b8a6e Code cleanup and check for OOM condition with wl_array_add
Summary:
wayland: Check wl_array_add return for OOM condition
cosmetic: Make error return check syntax consistent with rest of code
wayland: Reuse use_adj to track child-forced adjust
wayland: Refactor to collapse if chain
wayland: Refactor _e_comp_wl_client_priority_adjust to collapse if chain
 + This uses early returns to unwrap a couple if clauses to make the code a bit less nesty.
wayland: Refactor if statements for consistency with rest of file

Reviewers: cedric, zmike, devilhorns

Subscribers: devilhorns, cedric

Differential Revision: https://phab.enlightenment.org/D2034
2015-02-24 14:47:56 -05:00
Chris Michael a8eb773752 Fix T2131 (crash when creating wl_outputs)
This fixes the crash and creates outputs based on e_randr
configuration (when in wayland-client mode).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-24 13:25:22 -05:00
Chris Michael 8e6d512076 change output_bind function name
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-19 17:02:46 -05:00
Chris Michael 6458ac3f8e fix some formatting ugliness
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-19 17:02:04 -05:00
Chris Michael 2d4db291d2 fix compiler warning about pointer targets differ in signedness
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-19 17:00:24 -05:00
Derek Foreman 4276b3ac55 Provide wl_output interface to clients
Reviewers: devilhorns, zmike

Reviewed By: devilhorns, zmike

Subscribers: cedric

Maniphest Tasks: T2131

Differential Revision: https://phab.enlightenment.org/D2007
2015-02-19 14:49:01 -05:00
Mike Blumenkrantz 1d069ab3b6 add ctrl+alt+backspace to kill wl-only e
#barrel
2015-02-13 16:40:14 -05:00
Mike Blumenkrantz 23aad426aa remove some futile attempts at variable setting in wl client new hook
none of these attrs are available at this point so the client attrs can't be set
2015-02-13 15:17:48 -05:00
Mike Blumenkrantz a1af6fbdce remove unused var 2015-02-13 15:11:33 -05:00
Mike Blumenkrantz 67bbd1fe03 manage client pointer client hidden states when changing pointer cursor objects
fixes sticky cursors
2015-02-12 20:07:35 -05:00
Mike Blumenkrantz 9a6cddf91f don't clear wl surface input tiler during commit
this broke input regions for successive frames
2015-02-12 19:30:21 -05:00
Mike Blumenkrantz 5846e0febe unset wl client placed value on first commit to force placement
many clients still have not had a first commit prior to running new_client placement,
so this will force a second run of that algo to prevent placing as though a client's
size = 1x1
2015-02-11 17:58:27 -05:00
Mike Blumenkrantz aca462cb8c don't add wl evas callbacks multiple times
#sigh
2015-02-11 17:22:55 -05:00
Mike Blumenkrantz 6bf43fa081 don't use garbage values for new_client wl surface configures 2015-02-11 17:20:03 -05:00
Mike Blumenkrantz 9a82f7bcb0 reapply accurate ec->placed value for wl clients during surface commit configure
fixes client placement when client has not been placed prior to first commit
2015-02-11 17:14:28 -05:00
Mike Blumenkrantz e1e711ce53 use pixmap size for wl subsurface commit configure 2015-02-11 17:08:06 -05:00
Mike Blumenkrantz 491825c05f move map before configure for wl clients during commit
this ensures visibility is set correctly before attempting to set geometry
2015-02-11 17:02:01 -05:00
Mike Blumenkrantz 5ecc0ca0a1 use accurate xy coords for wl surface configures 2015-02-11 17:00:28 -05:00
Mike Blumenkrantz 77da958137 remove nonsensical wl client finding code
if the pixmap has no client set, no client exists for the pixmap
2015-02-11 16:23:07 -05:00
Mike Blumenkrantz 9006bb61e5 set wl client keyboard focus on evas focus and commit
ensure that focus is applied even if there is no new frame
2015-02-11 11:51:39 -05:00
Mike Blumenkrantz 4d80185e69 send wl keyboard enter during commit
in some cases this was happening before the kbd resource was available; this guarantees that it will be
2015-02-10 19:17:50 -05:00
Mike Blumenkrantz c4ba0f5242 setup evas callbacks for wl clients during commit
this was happening way too late and breaking some clients
2015-02-10 19:17:11 -05:00
Mike Blumenkrantz e3efba7ff7 set take_focus more appropriately for wl clients 2015-02-10 19:15:22 -05:00
Mike Blumenkrantz d97c6b04bb redo pixmap image border to take xywh instead of lrtb
client size is not set by the time opacity is set so it's necessary to store the full rect
2015-02-10 18:07:41 -05:00
Mike Blumenkrantz 090261bc1b don't add rect for entire screen on wl region create 2015-02-10 17:30:05 -05:00
Mike Blumenkrantz 7e422ed0c2 remove wl opaque tilers, just set border in opaque callback 2015-02-09 21:27:53 -05:00
Mike Blumenkrantz ce062750b6 set pixmap image borders for wayland clients 2015-02-09 21:16:40 -05:00
Mike Blumenkrantz 06defb7f94 fix wl input region setting 2015-02-09 21:14:18 -05:00
Mike Blumenkrantz d54d6640e8 don't set client shape rects based on wl opaque regions 2015-02-09 21:14:18 -05:00
Mike Blumenkrantz bce8470cef correctly set/update wl opaque regions 2015-02-09 20:44:01 -05:00
Mike Blumenkrantz 1bf6603baa force wl client cursor clients to hide when unset from pointer 2015-02-09 14:35:37 -05:00
Mike Blumenkrantz ee530798f0 replace all occurrences of cursor setting with calls to pointer util function 2015-02-09 12:24:48 -05:00
Mike Blumenkrantz 903b9beaed implement wl client cursor support...as clients
<zmike> super funny idea: for client cursors, what if we just implement them as an override client with no animations and then hide the canvas cursor while the client is visible?

this started as a joke and it worked mostly fine so I improved it and now it's shipping and whatdoidowithallthesebugs.jpg
2015-02-06 18:32:07 -05:00
Mike Blumenkrantz 8399ec5d6f configure/show/hide surfaces which lack shells automatically 2015-02-06 18:32:07 -05:00
Mike Blumenkrantz b720b7c179 use pixmap size for resizes in wl commit
the client size should be this anyway, but we just refreshed the pixmap above so this is guaranteed to be accurate
2015-02-06 18:32:07 -05:00
Mike Blumenkrantz 270bc92f81 add wl util function for calculating pixmap id 2015-02-06 18:32:07 -05:00
Mike Blumenkrantz a19957d3eb move wl pixmap stuff to use pixmap functions in compositor instead of in pixmap 2015-02-05 16:32:10 -05:00
Chris Michael 931409c687 only send key events to focused clients
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-04 11:59:19 -05:00
Chris Michael 0690b8debe change keyboard input listeners to Not depend on a client but rather
use ecore_event_handlers for key events.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-03 15:37:11 -05:00
Mike Blumenkrantz bc59464f99 make wl clients use post render canvas cb to clear buffers 2015-02-02 16:45:18 -05:00
Mike Blumenkrantz 66e4c59764 hide wl clients on surface delete
surface callbacks may not trigger xdg/shell unmap callbacks before this is called, so this ensures a hide animation
2015-02-02 13:39:32 -05:00
Mike Blumenkrantz 8d5ab29625 don't create wl clients as re_manage 2015-02-02 12:41:39 -05:00
Chris Michael b02439c14d Revert "reset keyboard modifiers when client is deleted"
This reverts commit b9f4b257d7.

Revert this quick fix as apparently it did not actually fix the problem.
2015-02-02 12:31:09 -05:00
Chris Michael b9f4b257d7 reset keyboard modifiers when client is deleted
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-02 12:27:40 -05:00
Mike Blumenkrantz ae7976bdc8 delete all clients in wl delete request cb
this was doing weird stuff for some reason when it should just be deleting all clients
2015-02-01 19:05:21 -05:00
Mike Blumenkrantz 7a0ea605e6 move wl pixmap creation back to comp
after further consideration, this seems much simpler
2015-01-28 17:31:40 -05:00
Mike Blumenkrantz 2a51535fc0 Revert "move wl pixmap creation into shell, fix pixmap id usage"
This reverts commit c1a93d893e.
2015-01-28 17:29:17 -05:00
Mike Blumenkrantz c1a93d893e move wl pixmap creation into shell, fix pixmap id usage
using raw surface id here guarantees overlap between surfaces for different apps. instead, shift and add app pid to ensure uniqueness

 #barrel
2015-01-28 17:04:59 -05:00
Chris Michael c024e4bc17 add EINA_UNUSED for unused function paramater
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-26 14:54:55 -05:00
Chris Michael e647105421 add function to return input idle time in wayland compositor
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-26 14:50:58 -05:00
Chris Michael 60f7b57c04 don't crash if the client comp_data has no surface yet
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-14 16:11:53 -05:00
Chris Michael 7c5c8b1561 comp-wl: Set argb and no_shape_cut for new clients. This fixes the
black shadow issue

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-12 13:03:52 -05:00
Chris Michael 72f1b10ea1 comp-wl: Remove unused variable
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-09 13:44:46 -05:00
Chris Michael b61debdcad comp-wl: Add missing function prototype
Since we call this function before it's actually defined in the
source, we'll just add a small function prototype at the top

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-09 13:43:40 -05:00
Chris Michael 3d5171563f comp_wl: Fix issue with multiple clients being created
This fixes an issue where internal elementary dialogs would end up
creating 2 pixmaps and 2 clients for each window. This happened due to
the pixmap id not matching the elm window id.

This patch also handles reparenting internal elm windows if needed.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-09 12:48:04 -05:00
Chris Michael a0e92e2868 remove use of deprecated e_comp_get function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-06 09:28:58 -05:00
Chris Michael 93a125b7a2 e-comp-wl: Don't try to set null data if we don't have a surface
Summary: This fixes an issue where calling wl_resource_set_user_data
with an invalid resource would cause an abort in the wayland
libraries, Thus making E crash.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-24 16:01:27 -05:00
Mike Blumenkrantz ce8a4a2b78 remove ec->changes.internal_props
this should be set directly on the win using evas/elm apis
2014-11-20 15:26:22 -05:00
Mike Blumenkrantz 99589eb5af remove E_Win+e_canvas, convert all internal wins to use elm_win
known issues:

* keybindings for efm windows (eg. ctrl+w) are broken until the rest of the conversion is completed
2014-11-20 15:26:21 -05:00
Chris Michael 69c71a16bb e-comp-wl: Implement client idler for sending configure during resize.
Cleanup surface commit function to work with new pixmap caching code.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-10 11:58:20 -05:00
Chris Michael 7f8387b4bc e-comp-wl: Fix keyboard input with wayland clients when running in X11.
Don't run client_post_new hook for deleted clients.
Start work on client pre_frame hook.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-05 10:00:06 -05:00
Chris Michael dcffab5c82 e-comp-wl: Clip shape rectangles to client size
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-05 10:00:06 -05:00
Chris Michael 19df35bdbf e-comp-wl: Hook into post_new_client event so we can setup hints and
export any shape changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-05 10:00:06 -05:00
Chris Michael 86617fe717 e-comp-wl: Set e_client properties on subsurface E_Client
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-05 10:00:06 -05:00
Chris Michael 2d7ca6d2eb e-comp-wl: Implement callback for surface resource destroy
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 15:10:38 -05:00
Chris Michael 9ebf046e41 e-comp-wl: Remove unnecessary todo item
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 14:48:19 -05:00
Chris Michael 8a08e17603 e-comp-wl: Implement subsurface parent commit function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 14:47:14 -05:00
Chris Michael 4de0a40d0c e-comp-wl: Implement subsurface commit_to_cache and commit_from_cache
functions

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 14:47:14 -05:00
Chris Michael d3aed14ebc e-comp-wl: Fix various compile errors
Summary: add function prototype for subsurface_parent_commit, fix a
few typos which broke compile

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 12:50:07 -05:00
Chris Michael 1b3c77bbe9 e-comp-wl: Start on implementing subsurface commit functions
NB: Not complete yet

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 12:27:13 -05:00
Chris Michael ff77a2fa08 e-comp-wl: Implement subsurface place_below function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 12:27:13 -05:00
Chris Michael 979ba2f467 e-comp-wl: Implement subsurface place_above function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 12:27:13 -05:00
Chris Michael ee9e9a51ee e-comp-wl: Implement subsurface desynchronized_set function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 12:27:13 -05:00
Chris Michael 60c967a5ba e-comp-wl: Implement subsurface synchronized_set function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 12:27:13 -05:00
Chris Michael 393f3c90dd e-comp-wl: Implement subsurface position set function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 12:27:13 -05:00
Chris Michael 78fe19065f e-comp-wl: Implement subsurface destroy callbacks
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 12:27:13 -05:00
Chris Michael c817d83793 e-comp-wl: Destroy subsurface resource in destroy callback
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 12:27:13 -05:00
Chris Michael f53fc6648c e-comp-wl: Start to reimplement subcompositor and subsurface support
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-11-03 12:27:13 -05:00
Chris Michael 103a980adb e_comp_wl: Remove unused variables
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-31 14:38:29 -04:00
Chris Michael a716f41327 e_comp_wl: add support for priority raise/normalize during focus events
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-31 14:38:24 -04:00
Chris Michael db795bbb5d e-comp-wl: Make new compositor functional.
- Remove client_window_hash (not needed).
- Add hook for evas resize and update surface (configure_send) during resize.
- Remove old buffer_refenerce mechanism
- Refresh pixmap on surface commit

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-31 12:33:09 -04:00
Chris Michael c0c911af91 e_comp_wl: Implement surface frame callback support
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:08 -04:00
Chris Michael 89ae4607c9 e_comp_wl: Add hooks for focus in/out events so we can set wayland focus
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:08 -04:00
Chris Michael 1bc93687db e_comp_wl: Cleanup resizing of wayland clients. This hooks into
various resize callbacks to set/unset the resize edges and to update
the surface size.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:08 -04:00
Chris Michael 87d9872b4c e-comp-wl: Que a buffer release after we have committed the pending buffer
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:08 -04:00
Chris Michael 3cf2088ee7 fix formatting
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:08 -04:00
Chris Michael b410042f7f remove debug messages for mouse in/out
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:08 -04:00
Chris Michael e04343eaaa add checks in client focus/unfocus to test for wayland client
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:08 -04:00
Chris Michael 72dac4e751 add callbacks for client focus/unfocus
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 7ea9df0f53 add evas callback for client resize
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 65b397a84f add evas callback for color_set
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 59e431d838 add evas callback for ping event
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 241ad6a789 add evas callback for kill request
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 36ff31e6b4 add evas callback for delete_request and fix printf warnings for
uint64_t

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 438bb71689 add evas callback for key up events
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael c9fe774f23 add evas callback for key down event
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 8cf2100e74 add evas callbacks for mouse wheel event
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 3b45f205a2 add evas callbacks for mouse up event
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael c5d50e050a add evas callback function for mouse down event
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 5eb9ce9f34 add evas callback for mouse move on a surface
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 122d47e6e9 add evas callback for mouse out on a surface
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 2bd389f47c remove some debug messages
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 2696821734 add callback for mouse in on the client.
Fix improper tiler_clear in surface_commit function.
Add fast-path in surface commit to skip processing regions & damage if
the client is not visible.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 7675825f61 add hook for evas callback hide so we can hide any video children
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael f64a570569 add hoook for evas show callback and show any video childs
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 22b793a96f fetch pixmap id in opaque & input region set functions
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 270a394d45 add listener for comp_object_add event so we can setup evas callbacks
for a client.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 830239c60f fix typo
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael c3a9474ae9 update todo
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 128d1f1d05 cleanup any pending input regions when we delete the client
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 6acad9508d cleanup any pending opaque regions when we delete the client
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 9faf1e57d2 cleanup any remaning damage rectangles when we delete the client
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael 6ff00a346c add some comments about fetching resource data
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael cf61ded0c5 update resource data comment
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael e099e33858 add code to handle pending input regions during surface commit
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael d5bb9f9e8a add code to handle pending opaque regions during surface commit
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:07 -04:00
Chris Michael a6cb5bfe6c add code to handle pending damages during surface commit
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 53f21f997c add code to handle setting surface input region
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 5b2d5a58f6 add code to handle setting surface opaque region
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael fb9e9934cf Add code to handle setting surface damages
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael ed649f2ab3 add code to handle regions (creating, destroying, setting)
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael d3e232b51e Start on surface commit code and improve some debugging messages
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 988c875162 add hooks for client delete
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 8c661bb7fb add code to hook the client new event
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael e655abfaa4 Add code to create the clients window hash
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 1dc1be5a7f Implement code for surfaced attach
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael ccee62d069 Fix compile errors. Implement start of buffer code
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 7ace049cfb unset pixmap resource when surface resource is destroyed
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael a4e6ea3348 add call to delete fd handler when we close the compositor
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 8963b3ff88 add start of surface implementation code
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 7aab9b24a5 start on actual compositor interface code
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 8d54d20f8a Fix printing of wayland log output
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael fd42a4ec98 Fix missing variable compiler warning
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael e0d301fdb6 add call to shutdown Ecore_Wayland
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 234953ad3e add code to initialize Ecore_Wayland
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 0342998c79 set compositor wayland data
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 29c89083bd add code to setup input & keyboard if we are using an X compositor
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 708e255730 add code to initialze input
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 8637842cf9 add code to initialize data manager
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 8010e7d8b9 add code to load desktop shell module
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:06 -04:00
Chris Michael 1005a6d299 add code to integrate wayland event loop with ecore_main loop
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael c776f016e3 add function call to initialize shm
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael a4db6d6485 rename compositor delete callback
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael 59338704da add code to create and bind the wayland compositor
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael de917436fd add code to setup wayland compositor signals
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael aff78ea8a7 add code to create wayland display socket
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael 6c76d16a33 add code to create new wayland display
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael edc0037655 add code to setup wayland logging function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael 62471b5b5b add functions to create new compositor
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael 5137277c93 set comp_gl if we have the correct engines available
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael 6a06b8d7f2 add start of new compositor
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael e84c21469d remove old wayland compositor file
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-30 10:39:05 -04:00
Chris Michael b072a54499 e-comp-wl: Reduce calls to wayland protocol functions. These are not
needed here and just waste extra cycles.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-13 15:49:52 -04:00
Chris Michael ab6add8375 e-comp-wl: Support wl_display_add_socket_auto function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-13 15:48:53 -04:00
Chris Michael f882845b2d e-comp-wl: Send the resource as data to the surface_create signal
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-13 15:47:23 -04:00
Chris Michael 55ab9a8a39 fix resizing wayland clients by sending configure message if client is
Not maximized.

Apparently I broke resize when fixing maximize ... uggg.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-12 06:15:25 -04:00
Chris Michael 011600b54d Don't resend a configure event after resize is done. This is part of a
xdg_shell maximize fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-06 15:56:48 -04:00
Chris Michael c27ba8b8c2 e-comp-wl: Update compositor for new xdg shell protocol
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-01 16:15:00 -04:00
Stefan Schmidt 99f9244d1c e_comp_wl: Remove unused variable and mark parameter as unused. 2014-09-05 11:54:45 +02:00
Chris Michael b92b34621c e-comp-wl: Remove blank line
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-09-04 12:50:41 -04:00
vivek ded8356fc7 e_comp_wl: Handle surface opaque region in subsurface commit from cache
Summary: When we commit a subsurface from cache, we should adjust the
client's shape rectangles so that they get applied when rendering.

Signed-off-by: vivek <vivek.ellur@samsung.com>

Reviewers: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1412
2014-09-04 12:49:54 -04:00
MinJeong Kim 73ce914020 Check whether attached buffer exists, before using it.
Summary:
Because attached buffer can be NULL for removing surface content,
check of pending.buffer should be done before getting resource value of the buffer.

Reviewers: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1370
2014-08-27 08:26:38 -04:00
Chris Michael 78bcbfff35 trap return value of shm_buffer_get
This function Can fail to return an shm_buffer if the buffer_resource
is an EGL buffer.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 14:06:57 -04:00
Chris Michael 559d53bc5d Add checks for client being a wl pixmap in some functions
If we don't do this, then when we run in X11 with wl client support,
we crash in various places (iconify, etc) when trying to work with
normal X clients.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:39 -04:00
Mike Blumenkrantz f56a08fc6c move wl client_resize protocol calls to idler 2014-08-26 10:10:39 -04:00
Mike Blumenkrantz e7a0b193f3 automatically enable pointer and keyboard for wayland-in-X 2014-08-26 10:10:38 -04:00
Mike Blumenkrantz 362a9b6cce reuse existing render post callback for wayland clients 2014-08-26 10:10:38 -04:00
Chris Michael 4066cf2ca9 Reduce usage of EC_CHANGED.
Lock subsurface border type to borderless.
Remove commented out code.
Don't mark border.changed during pre_frame callback.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:38 -04:00
Chris Michael 6485968ca0 reorder client idler and stacking functions so we can call them after
post_move.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:38 -04:00
Chris Michael a15eaa46c4 Reduce potential of unnecessary function calls:
- When we are doing client eval, don't check for Just changes in
property OR fetching. Rather we will check using an AND.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:38 -04:00
Chris Michael dba9916abe Remove NULL checks for valid client->comp_data ... let the crashing begin !!
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:38 -04:00
Mike Blumenkrantz 3b649534c9 Fix building Enlightenment for X11-only, Wayland-Only, and X11 with Wayland clients.
Signed-off-by: Chris Michael <cp.michael@samsung.com>

Additional authors: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:38 -04:00
Chris Michael 5448f0a1ac handle setting any pending opaque regions during surface commit and
cleanup the input region code also

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:38 -04:00
Seunghun Lee 1370d6bd32 Implement wayland subsurface support based on E_Client.
Summary: Support subsurface interface of wayland.

Test Plan:
1. Build enlightenment on devs/devilhorns/e_comp_wl branch.
2. Run enlightenment.
3. Run weston-subsurfaces
   - should be built after removing code of gl surface (not yet implemented)
   - just comment out the line egl_state_create in function of demoapp_create()

Reviewers: gwanglim, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1182
2014-08-26 10:10:38 -04:00
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
MinJeong Kim 2799388093 Fixed trying to create damage area with 0x0 size
Summary:
This revision fixed failure to create damage area using Eina_Tiler on surface damage callback.
It was caused by trying to create Eina_Tiler with 0x0 size which is from size of E_Client.

Test Plan:
1. Run elementary_test.
2. Select one of the test apps.(no more magic fail message)

Reviewers: zmike, devilhorns

Reviewed By: devilhorns

Subscribers: cedric, gwanglim

Differential Revision: https://phab.enlightenment.org/D1171
2014-08-26 10:10:38 -04:00
MinJeong Kim ed16127395 Add focus surface setting of keyboard for copy and paste between clients
Summary:
To enable copy and paste between clients,
wayland data device requires to know what surface is focused.
So this revision have make keyboard get focused surface when client is focused or unfocused,
and create data_offer for new focused surface in order to let new focused surface be able to get data from current selection data_source.

Test Plan:
1. Run wayland server
2. Run elementary_test -to entry5 on wayland server.
3. Run elementary_test -to entry5 on wayland server again. (preparing two clients)
4. Copy text on one of clients, and paste to the other.

Reviewers: devilhorns

CC: gwanglim, cedric

Differential Revision: https://phab.enlightenment.org/D1157
2014-08-26 10:10:37 -04:00
Seunghun Lee 0667d4ce34 Change time unit to milli-second from second when send event of frame done for wayland client.
Summary: that's because weston sample client supposed that the time passed by frame callback is milli-second.

Reviewers: devilhorns, zmike, raster

CC: cedric

Differential Revision: https://phab.enlightenment.org/D1133
2014-08-26 10:10:37 -04:00
Seunghun Lee 6a1ef8b846 map/unmap surface in committing surface should be valid, only when buffer is newly attached. check if buffer is newly attached, when do map/unmap surface.
Summary:
There is a case that client do commit twice after one wl_surface_attach.
In this case, even if no buffer attached, unmapping the surface.
Because server already clear the buffer in first commit.

This patch fixes it.

Reviewers: devilhorns, zmike, raster

CC: cedric

Differential Revision: https://phab.enlightenment.org/D1115
2014-08-26 10:10:37 -04:00
Seunghun Lee e402e2363a 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.

Reviewers: devilhorns, zmike, raster

CC: cedric

Differential Revision: https://phab.enlightenment.org/D1089
2014-08-26 10:10:37 -04:00
Chris Michael d6254f4634 flush clients Before we dispatch main loop events as clients may queue
events onto the loop.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:37 -04:00
Chris Michael 165cf8db81 enable checking of windows going outside of e_config->screen limits
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:37 -04:00
Chris Michael 832cfa8f3d add support for mouse wheel events and pass them to wayland
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:37 -04:00
Chris Michael 5b581d88c3 check for valid comp_data before trying to use it.
Don't set pointer to 'k' in keydown event (we don't need it).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:37 -04:00
Chris Michael 894d147844 update some fixme/notes
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:37 -04:00
Chris Michael 024caabef9 Fix state of popup windows to skip taskbar, pager, etc, etc.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael c308904e9b fix formatting
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael 8d720e4b04 remove debug/warning message
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael d278de2d76 e-comp-wl: Handle setting window parent for internal dialogs.
Move parent->modal setting from the shell module to the compositor.
Support setting of various window types (dialogs, menus, etc).
Handle setting of internal properties (min size, max size, etc).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael f92644446a Implement focus_down_set function to grab mouse & wheel bindings.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael aac748dcdc Implement focus_check function and call on delete_request.
Don't try to ping clients that we are forceably killing.
Implement e_grabinput calls during focus_set.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael 92bbc30710 Implement client stacking.
Ungrab mouse & wheel bindings when we delete the client.

Signed-off-by: Chris Michael <cp.michael@samsung.com>

remove client stacking code (apparently handled in e_client already)

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael b7e263bf12 Implement setting of client priority during focus events.
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
MinJeong Kim 4a5387df60 Resize input/damage/opaque pending tilers when client is resized
Summary: When the client resized, it need to resize tilers for surface region also.

Reviewers: devilhorns, zmike, raster, gwanglim

CC: cedric

Differential Revision: https://phab.enlightenment.org/D1020
2014-08-26 10:10:36 -04:00
Gwanglim Lee faf44b7a8a add client property event into wayland eval fetch handler
Summary: add client property event for wayland client

Reviewers: devilhorns, zmike, raster

CC: cedric

Differential Revision: https://phab.enlightenment.org/D1015
2014-08-26 10:10:36 -04:00
Seunghun Lee 2cc4a1cf80 use calloc to allocate memory of E_Comp_Wl_Buffer which is set to zero, instead of malloc.
Summary: E_Comp_Wl_Buffer's busy value should be updated after initialization as zero.

Reviewers: devilhorns, zmike, raster

Reviewed By: devilhorns

CC: cedric

Differential Revision: https://phab.enlightenment.org/D1011
2014-08-26 10:10:36 -04:00
Seunghun Lee 9f81abb729 use eina_hash_int64_new to create hash table "clients_win_hash" in case wayland, instead of eina_hash_int32_new.
Summary:
since the data as a key of hash is 64bit integers, clients_win_hash should be created to int64.
if not, loss of data can occur when add or delete data from hash table.

Test Plan:
(1) run any application. (added ec to hash table)
(2) close the application. (try to delete ec from hash table, but couldn't)
(3) after that, if _e_comp_wl_cb_render_post is called, since refer to ec which was already freed, enlightenment had been crashed.

Reviewers: devilhorns, zmike, raster

CC: cedric

Differential Revision: https://phab.enlightenment.org/D1006
2014-08-26 10:10:36 -04:00
Chris Michael 57b3c40ad1 cleanup unused code
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael 6717b77001 Switch Wayland Compositor to use Eina_Tiler for damages, opaque, input, etc.
Add code to hold references to 'buffers'.
 - Release 'buffers' After they have been rendered by the compositor.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Chris Michael 1238686136 set client shape rectangle properly based on input area
- fix wl client crashses (patch from gwanglim)

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:35 -04:00
Chris Michael df278c9a74 Several fixes for Wayland Compositor:
- post a wl_buffer release After rendering is completed.
  - change code to follow compositor structure name
  - when creating compositor (inside X), set input keymap
  - don't set "reparent" for all new clients

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:35 -04:00
Chris Michael 9f56b2aafc set delete_request for internal e_clients and add giant FIXME note for
internal windows

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:35 -04:00
Chris Michael 434219f758 rewrite wayland compositor:
- reduce memory usage
 - remove duplicated pixmaps
 - remove duplicated pointer images

@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 64683742c4 e-comp-wl: Fix keyboard input sending wrong keys
NB: When running wayland clients under X11, we need to subtract 8 from
the keycode value to reflect X's broken keyboard rules

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-06-26 13:41:25 -04:00
Chris Michael 12d22d8fc8 comp-wl: Only blacklist the actual Nvidia driver
If EGL returns No Vendor, don't blacklist it. Only blacklist the Known
to be Broken NVIDIA driver

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-06-26 10:51:20 -04:00
Chris Michael f056e7af62 check for an already existing wayland compositor before trying to
create another one.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-06-26 10:19:34 -04:00
Gwanglim Lee 26d3075e3d wl pointer configure: fix typo
Summary: ews->geometry.y needs to be set.

Test Plan: N/A

Reviewers: raster, devilhorns, zmike

Reviewed By: devilhorns

CC: cedric

Differential Revision: https://phab.enlightenment.org/D688
2014-04-02 10:39:07 +01:00
Mike Blumenkrantz 83475dad7e set wayland display socket based on e_ipc_socket name 2014-03-20 14:06:41 -04:00
Cedric BAIL ffe4bf794e e: let's just completely blacklist NVidia driver for Wayland. 2014-03-20 20:46:54 +09:00
Chris Michael db40e4b67e bugfix: Fix crash on eglTerminate with buggy Nvidia blob driver
NB: Thanks for the report cedric ;)

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-03-20 10:18:44 +00:00
Chris Michael 9e68b402a4 @bugfix: Initialize the module idler even If we are wayland-only
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-03-18 07:43:05 +00: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
Stefan Schmidt 58286beed4 e_comp_wl: Remove unused variable.
Later on we use state_w directly.
2014-03-05 13:41:35 +01: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 41b0eda0d7 When binding to data_device manager, if we cannot create the resource
then notify the client and get out.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-11-06 07:07:50 +00:00
Chris Michael 122a962cfa Check that creating a new data_device_interface resource does not
fail, and bail out gracefully if so.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-11-06 07:07:50 +00:00
Chris Michael 566b27d15e If we cannot create the data_offer resource, then cleanup and exit
nicely.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-11-06 07:07:50 +00:00
Chris Michael 39816c17bc Update pointer, keyboard, and touch structures for recent upstream wayland/weston changes.
- Remove singular focus resource references
 - Use list of focus resources

 NB: Fixes zmike wayland client crash issue ;)

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-24 15:21:29 +01:00
Chris Michael fa91255049 Use new wl_resource_for_each to send updated seat capabilities
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-24 11:41:35 +01:00
Chris Michael 599d98e3f3 Fix zmike issue w/ surface losing focus when we move/resize.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-12 15:02:59 +01:00
Chris Michael 0fd9c57ddc Update E18 wayland client application support with recent wayland git
changes.

 - Remove function & calls to wl_*_release as they are redefined in
the client protocol again.
 - Fix up calls for getting resource_user_data.
 - Add WL_HIDE_DEPRECTAED define

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-11 10:12:30 +01:00
Chris Michael 131eb77926 Remove wl_keyboard_release and wl_touch_release functions.
NB: Once again, they are redefined in the protocol (for now), so don't
need them here.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-11 10:12:30 +01:00
Chris Michael 01717bde88 Remove wl_pointer_release function
NB: It's redefined in the client protocol again (for now).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-11 10:12:30 +01:00
Mike Blumenkrantz bdd0bc624d add wl surface -> e_border mapping 2013-09-11 09:02:53 +01:00
Chris Michael f37f806eff Reduce extra function call to client_get_display
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-28 09:43:25 +01:00
Chris Michael beda3a827a Handle mouse wheel events in the default pointer grab
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-23 11:21:13 +01:00
Chris Michael 6e226bfd8e Fix surface input region miscalculation after resize.
NB: Try this Mike.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-19 09:23:07 +01:00
Mike Blumenkrantz 71b387deea use inlist for wl surface list 2013-08-19 03:31:24 +01:00
Chris Michael e4924a5986 When surface gets destroyed, reset the pointer surface.
When calling pointer cursor set, if no current surface is focused then
unmap any existing pointer surface and set to NULL in the structure.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-16 11:56:17 +01:00
Chris Michael 9e371c10c8 Get surface from the surface_resource data using
wl_resource_get_user_data function.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-16 09:55:23 +01:00
Chris Michael 54d53d82f2 Define wayland compositor variable as externally visible (for people
using -fvisibility=hidden).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-15 07:23:43 +01:00
Chris Michael 3883a82fe9 Move module idler until After the display is connected.
Fix getting keyboard focused resource when a modifier is pressed.
Flush clients before we dispatch events (clients may add events to the
queue).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-13 14:51:00 +01:00
Chris Michael dfe66d1611 Add functions to surface interface for buffer_transform and
buffer_scale set.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-06 12:35:55 +01:00
Chris Michael 85eaf423b4 Use wl_resource_get_link when creating keyboard resource
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-26 12:05:31 +01:00
Chris Michael 2b6a8ecf24 Update wayland-client support for recent Wayland api changes (replace
wl_display_add_global with wl_global_create, and fix wl_client calls
to create resources with wl_resource).

NB: This brings client support up to par with version 1.2 of Wayland

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-15 13:42:46 +01:00
Chris Michael 8833073b41 Update e_comp_wl with recent wayland changes
- wl_client functions have been deprecated. replaced with wl_resource
 functions

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-09 10:28:30 +01:00
Chris Michael 96d778323d Remove _find_resource_for_client function and use
wl_resource_find_for_client.
More fixups for wl_resource functions (_get_client, set_destructor, etc)

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-03 08:57:12 +01:00
Chris Michael 71924eb5d1 More conversions to wl_resource_get_user_data
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-03 08:57:12 +01:00
Chris Michael 74a7a4ef91 Check for valid pointer focus resource.
Use wl_resource_get_user_data to get the focused surface.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-02 13:57:07 +01:00
Chris Michael de80a48fc3 When we unbind the data device or input device, we do not need to call
free().
Free the allocated strings after creating the keymap (leak--).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-06-28 07:57:34 +01:00
Chris Michael 77e6d1c8e1 Update unbind of the data device to use wl_resource_get_link.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-06-28 06:50:26 +01:00
Chris Michael bd3281c248 Revert "leak--: Store xkb_rule_names into Input structure so we can free the strings"
This reverts commit 87c1798281.

NB: This actually causes a nasty crash on E shutdown, so I need to
come up with another solution.
2013-06-28 06:49:09 +01:00
Chris Michael 87c1798281 leak--: Store xkb_rule_names into Input structure so we can free the strings
on shutdown or keymap change.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-06-27 11:37:51 +01:00
Chris Michael ee05616f33 Update wayland client support in the E compositor to work with recent
Wayland changes.

NB: Although the code does compile and clients do run, I RECOMMEND
that you do not use this feature right now. There is a current bug in
Wayland that is causing crashes when you close clients.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-06-26 09:23:13 +01:00
Chris Michael 8f02899b9a Don't try to send an updated keymap if we have no keyboard resource.
Signed-off-by: Chris Michael <devilhorns@comcast.net>
2013-06-09 09:40:50 +01:00
Chris Michael 04b331ecb3 Move setting of XDG_RUNTIME_DIR to e_main
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-05-28 07:05:00 +01:00
Chris Michael d498c41467 As we need XDG_RUNTIME_DIR to be set before we can run wayland-clients
inside E, check if it is set, and if not set it.

Signed-off-by: Chris Michael <devilhorns@comcast.net>
2013-05-24 21:53:39 +01:00
Chris Michael 9d2f29f0ae Add functions to allow wayland clients to run inside Enlightenment
again.

Wayland moved the input handling to be inside the "compositor" now, so
we need to add functions/support for that.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-05-13 09:03:43 +01:00
Chris Michael ca1b15918d Test for valid Wayland compositor before trying to shutdown.
Signed-off-by: Chris Michael <devilhorns@comcast.net>
2013-05-04 14:35:01 +01:00
Chris Michael f80097f0cb Check for valid wayland compositor and display before dispatching.
Signed-off-by: Chris Michael <devilhorns@comcast.net>
2013-05-04 12:26:25 +01:00
Chris Michael b82cb14698 e_xkb_layout_get can return NULL so trap for that and only set the
names.layout below if needed.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-05-03 06:39:00 +01:00
Chris Michael 6f0a4a63bc Start on code to allow Wayland Clients to render using EGL
Currently, all Wayland Clients render inside E using software
(regardless of E's compositor setting).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-26 13:48:46 +01:00
Chris Michael a07d830ce2 Add support for Dynamic Keymap changes in Wayland Clients.
Now, if you change E's keyboard layout, then Wayland Clients will also
dynamically change to the new keymap.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-26 13:48:46 +01:00
Chris Michael 243c9409c9 Add some additional error trapping for keyboard info initialization.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-17 13:29:26 +01:00
Chris Michael 20c6fb53e1 Call surface configure with proper geometry.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:56:12 +01:00
Chris Michael 98bc3ae1b5 Add code to update the pointer cursor image for wayland clients.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:56:12 +01:00
Chris Michael 3b2072d43d Remove dead comment.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:55:00 +01:00
Chris Michael b1a7691b9f Add missing EINTERN for init and shutdown functions.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:55:00 +01:00
Chris Michael ebb35638f5 Actually export comp_wl_time_get and comp_wl_input_modifiers update
functions as they may be needed in various shell modules.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:54:59 +01:00
Chris Michael 1fac56a7e4 Add code to load/unload the desktop shell module.
Add code to handle surface attach requests.
Add code to handle surface commit requests:
  - Use the surface smart object to handle input and image updates.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:47:55 +01:00
Chris Michael 3560f40237 Fix module_idler variable name (damn I cannot type today) :(
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:47:55 +01:00
Chris Michael 38c725519b Actually declare the idler variable so things build (Oopsie).
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:47:55 +01:00
Chris Michael e5202dc89f Add an idler to defer shell module loading.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:46:25 +01:00
Chris Michael 65fb88c773 Add code to create, destroy, and otherwise handle the wayland region
interface and wayland surface interface.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:46:25 +01:00
Chris Michael 31f6268fd4 Add function prototypes for surface_destroy and region_destroy.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:46:25 +01:00
Chris Michael deec13f2ce Add code to support initialize, setup and destruction of wayland
inputs (pointer, keyboard, touch).

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:46:25 +01:00
Chris Michael a1447c102e Add start of a wayland compositor.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:46:24 +01:00
Chris Michael 047920a9f3 Remove all old wayland compositor files.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-04-16 12:46:24 +01:00
Mike Blumenkrantz 9e8e755cdf formatting: all at once
SVN revision: 82625
2013-01-11 10:34:29 +00:00
Lucas De Marchi 8cacf8429d e: merge comp module into core
* Move compositor to core, but letting the configuration there
 * Rename all files and functions from e_mod_comp_* to e_comp_*
 * Move the config dialogs to a new module named conf_comp. It still
   uses a domain config, otherwise it would not pick the current
   user's configuration. Maybe it would be wise to later on move these
   options to e_config
 * Fixup the wizard mess linking the header in the build tree in order
   to be able to create the config. Since now it's in core, we don't
   need to play linking games in the build system

I'm not sure if the wayland part works. It was not even building
previously so I'll let for who cares about this to actually test and
report bugs.



SVN revision: 82454
2013-01-09 11:34:07 +00:00