Commit Graph

11852 Commits

Author SHA1 Message Date
Mike Blumenkrantz e1ed56c327 account for late object setup when adding ssd mouse in/out callbacks
internal windows have a different setup order in which the frame is created
before any of the other internal objects in a comp object
2017-03-17 18:47:09 -04:00
Mike Blumenkrantz e2be96901e do not attempt to set window hidden hints on non-internal x11 windows
this causes a BadWindow error
2017-03-17 15:08:38 -04:00
Mike Blumenkrantz 58b66048f1 block x11 focus eventing under xwayland
ensure that focus changes come from the compositor and not from clients
2017-03-17 15:08:38 -04:00
Mike Blumenkrantz 1be8a5a590 always feed mouse events for wl client move events
better handling for xwayland case of moving pointer into ssd region
2017-03-17 15:08:38 -04:00
Mike Blumenkrantz 7f142f31f5 use even more accurate wl callbacks for detecting ssd mouse in/out events
ensure that any wl client with ssd hits the ssd mouse eventing path
2017-03-17 15:08:38 -04:00
Mike Blumenkrantz a151ac30b8 do not send mouse events to ssd wl clients if mouse is within ssd region 2017-03-17 15:08:38 -04:00
Mike Blumenkrantz f2ab232f3e Revert "Stop sending wayland motion events when the mouse is grabbed"
This reverts commit 0a91a24573.

this should be resolved in a more readable way now
2017-03-17 15:08:38 -04:00
Mike Blumenkrantz 8f197eba71 compare against e_client_action_get() for rejecting wl mouse events
signal actions do not set the cur_mouse_action pointer, but the return
of this function will still match the client for a more accurate heuristic
2017-03-17 15:08:38 -04:00
Mike Blumenkrantz 9e5bf813f9 set signal move/resize clients as action_client internally
technically action_client is used to indicate that an e_action is
active, but functionally it really just means "this client is moving or
resizing" and the compositor makes certain adjustments based on this
2017-03-17 15:08:38 -04:00
Mike Blumenkrantz 5a94a95e63 send wl client resize edges during focus-in/out send_configure
avoid prematurely terminating resize operations
2017-03-17 15:08:38 -04:00
Mike Blumenkrantz 3ca416cc0a add wrappers for elm_win util create functions
avoid deadlocking in gl init by forcing sw
2017-03-17 15:08:29 -04:00
Mike Blumenkrantz 69936f74a5 set dialog and tooltip flags for internal clients
fixes handling of internal wl windows which are set as dialogs
2017-03-17 13:16:59 -04:00
Mike Blumenkrantz 89ea040222 only re-set comp object position during show if client has been placed
avoid accidentally placing an unplaced client
2017-03-17 13:16:59 -04:00
Mike Blumenkrantz be5ef5e6c4 always get zone geometry when placing clients
previous codepaths relied on new_client being set, which would have
fetched the zone geometry earlier. this is no longer necessarily the
case
2017-03-17 13:16:59 -04:00
Mike Blumenkrantz 7be2167013 handle window icons from elm for internal wins
fixes appearance of icons set with elm_win_icon_name_set()
2017-03-17 13:16:59 -04:00
Mike Blumenkrantz e23bf0cf68 do not use animations for wl clients with initial maximize state
this looks fugly and breaks all kinds of things
2017-03-17 13:16:59 -04:00
Mike Blumenkrantz 0d8b33c15f use maximized geometry for shell maximize calls on wl clients if !buffer_commit
this is for setting the initial state of a surface as maximized, so do not use
animation geometry here
2017-03-17 13:16:59 -04:00
Mike Blumenkrantz 638657f043 always use jobs to create bryce menus
ensure that menus can never be created during a post event callback in
order to avoid crashes

ref T3144
fix T5262
2017-03-17 13:16:59 -04:00
Mike Blumenkrantz 24feeaaf73 only set toolbar icon min size if icon exists 2017-03-17 13:16:59 -04:00
Mike Blumenkrantz 118a70730f handle nested compositor delete requests
the previous implementation of this using ee callbacks broke during
elm integration since elm overrides all of those callbacks
2017-03-17 13:16:59 -04:00
Mike Blumenkrantz 71c9cedfbf only hide wl clients on surface destroy when surface is mapped
fixes some cases where hide animations would not be visible
2017-03-17 13:16:59 -04:00
Al Poole 8bce604383 Fix compiler type warnings (snprintf)
Reviewers: zmike!

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D4715
2017-03-13 12:32:54 -04:00
Al Poole ac5036af0f Fix macro namings in relation to endianness.
Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D4714
2017-03-13 12:32:23 -04:00
Mike Blumenkrantz 32c55ebc51 handle null E_Comp->screen during randr2 shutdown
some output modules have no screen iface (e.g., buffer, wl_wl, wl_x11)
and so this will always be null
2017-03-10 15:55:19 -05:00
Mike Blumenkrantz 05ef0b0280 call e_randr2_shutdown in comp shutdown
this should always be called, not just in comp_x
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz a064899511 move x11 iconic window init from e_hints -> comp_x initial fetch
this reflects the order in which the client passes through these functions
and fixes handling of iconic clients on startup
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz f253351f0a force iconic state for iconic x11 clients during shutdown
this may or may not have been set previously if client mirrors are present,
but it should definitely be set during shutdown since there are no mirrors
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz cc434190ad call wl/x compositor shutdown functions directly during comp shutdown 2017-03-10 15:55:06 -05:00
Mike Blumenkrantz d17fe0614e check changes.pos during client maximize/fullscreen and adjust window coords
using these coords when the changes.pos flag is set should result in more accurate
results for positioning when removing the state
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz 5b9dec214e only save client size info on maximize/fullscreen when protocol visible
a client which begins in one of these states must set its size again when
removing the state
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz 5720338072 perform frame adjustments before applying wm spec hints during unmaximize
e_client_resize_limit removes frame adjustments before performing calcs,
so ensure that the geometry passed is pre-adjusted to account for this
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz e4b6494936 make e_remember_del() work with sr remembers 2017-03-10 15:55:06 -05:00
Mike Blumenkrantz a7f708d568 add wl client flag to indicate status of xdg6 pre-buffer configure
ensure that initial configure is not sent more than once

ref T5044
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz fece2ab5bf return during comp object pixels function if client was deleted during render 2017-03-10 15:55:06 -05:00
Mike Blumenkrantz 8f896b7862 show x11 parent windows during reparent only if not withdrawn
iconic windows are still shown
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz f2c1976e9a do not force comp objects to render for their proxies if real_hid is set
this flag indicates that the object cannot be rendered
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz adaad812d3 run e_hints_window_init() on new_client eval and not during placement
these are not related
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz f93777181f manually center pointer using compositor size on init when not restarting
when using fake screens this ensures that a viewported canvas will have
the expected mouse position
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz 802136f5f2 do not use saved e_randr screens if fake screens have been added 2017-03-10 15:55:06 -05:00
Mike Blumenkrantz 5d62ec3cee make E_COMP_SIZE a global comp resizing env var 2017-03-10 15:55:06 -05:00
Mike Blumenkrantz 2a8d593e8b add handler for EFREET_EVENT_DESKTOP_CACHE_BUILD to e_order init
it's possible that during startup there will never be a CACHE_UPDATE
event, so ensure that an attempt to read occurs by watching this event too
2017-03-03 10:52:24 -05:00
Mike Blumenkrantz 41476f8f3e defer menu activation mouse-up feed
ensure that this is not triggered from an evas post event callback

ref T3144
2017-03-03 10:49:33 -05:00
Mike Blumenkrantz d29fb6b0b5 do not unset E_Client->placed for fullscreen/maximize clients
these are already placed
2017-03-03 10:49:33 -05:00
Mike Blumenkrantz b91d224a4d add Return and Caps_Lock handling to wl key event generation 2017-03-03 10:49:33 -05:00
Mike Blumenkrantz e3a5ab1457 Revert "e - wl mode - stop consuming 100 percent cpu"
This reverts commit cd3490f35c.

this breaks many windows by preventing deferred resizing from occurring.
a window which is unable to resize at the time of this call must be queued
for a deferred resize, otherwise it may never resize at all and thus will
never be rendered

test case: screenshot dialog
2017-03-03 10:49:33 -05:00
Mike Blumenkrantz 156b8d434b unset deskmirror client's client pointer upon client deletion
prevent invalid access after client deletion
2017-03-03 10:49:33 -05:00
Mike Blumenkrantz cfb1fa41e6 add all wl client frame callbacks with priority AFTER
ensure that these occur after all other callbacks since they can affect
the lifetime of the client object
2017-03-03 10:49:33 -05:00
Mike Blumenkrantz e618e00297 better protect comp object internals from dereferencing freed clients
animating comp objects persist after the lifetime of their client, so
ensure that functions which are likely to be called after the client's free
will not attempt to access client struct members
2017-03-03 10:49:33 -05:00
Mike Blumenkrantz 54dfcea3e0 comment out inlist member of E_Comp_Object struct
this was unused
2017-03-03 10:49:33 -05:00
Mike Blumenkrantz 504f88d24a hide wl clients before deleting them on surface destroy
==13853== Invalid read of size 8
==13853==    at 0x5C7C56: _e_comp_wl_surface_destroy (e_comp_wl.c:1804)
==13853==    by 0xA999971: destroy_resource (wayland-server.c:611)
==13853==    by 0xA9A06F4: for_each_helper (wayland-util.c:374)
==13853==    by 0xA9A073F: wl_map_for_each (wayland-util.c:387)
==13853==    by 0xA999C87: wl_client_destroy (wayland-server.c:763)
==13853==    by 0xA999216: wl_client_connection_data (wayland-server.c:283)
==13853==    by 0xA99C2B0: wl_event_source_fd_dispatch (event-loop.c:90)
==13853==    by 0xA99CC11: wl_event_loop_dispatch (event-loop.c:423)
==13853==    by 0xA787AC0: _cb_create_data (ecore_wl2_display.c:272)
==13853==    by 0xDBE984D: _ecore_call_fd_cb (ecore_private.h:333)
==13853==    by 0xDBEC01B: _ecore_main_fd_handlers_call (ecore_main.c:1992)
==13853==    by 0xDBEC8A9: _ecore_main_loop_iterate_internal (ecore_main.c:2379)
==13853==    by 0xDBEA672: ecore_main_loop_begin (ecore_main.c:1292)
==13853==    by 0x441DA9: main (e_main.c:1089)
==13853==  Address 0x30ba5d90 is 176 bytes inside a block of size 1,424 free'd
==13853==    at 0x4C2ED4A: free (vg_replace_malloc.c:530)
==13853==    by 0x4603D6: _e_client_free (e_client.c:588)
==13853==    by 0x5475A8: e_object_free (e_object.c:119)
==13853==    by 0x5477C4: e_object_unref (e_object.c:152)
==13853==    by 0x5473D7: e_object_del (e_object.c:60)
==13853==    by 0x5C7C51: _e_comp_wl_surface_destroy (e_comp_wl.c:1803)
==13853==    by 0xA999971: destroy_resource (wayland-server.c:611)
==13853==    by 0xA9A06F4: for_each_helper (wayland-util.c:374)
==13853==    by 0xA9A073F: wl_map_for_each (wayland-util.c:387)
==13853==    by 0xA999C87: wl_client_destroy (wayland-server.c:763)
==13853==    by 0xA999216: wl_client_connection_data (wayland-server.c:283)
==13853==    by 0xA99C2B0: wl_event_source_fd_dispatch (event-loop.c:90)
==13853==    by 0xA99CC11: wl_event_loop_dispatch (event-loop.c:423)
==13853==    by 0xA787AC0: _cb_create_data (ecore_wl2_display.c:272)
==13853==    by 0xDBE984D: _ecore_call_fd_cb (ecore_private.h:333)
==13853==    by 0xDBEC01B: _ecore_main_fd_handlers_call (ecore_main.c:1992)
==13853==    by 0xDBEC8A9: _ecore_main_loop_iterate_internal (ecore_main.c:2379)
==13853==    by 0xDBEA672: ecore_main_loop_begin (ecore_main.c:1292)
==13853==    by 0x441DA9: main (e_main.c:1089)
==13853==  Block was alloc'd at
==13853==    at 0x4C2FA50: calloc (vg_replace_malloc.c:711)
==13853==    by 0x5471A4: e_object_alloc (e_object.c:20)
==13853==    by 0x467AD5: e_client_new (e_client.c:2596)
==13853==    by 0x5C7F11: _e_comp_wl_compositor_cb_surface_create (e_comp_wl.c:1858)
==13853==    by 0xADBDC57: ffi_call_unix64 (in /usr/lib64/libffi.so.6.0.2)
==13853==    by 0xADBD6B9: ffi_call (in /usr/lib64/libffi.so.6.0.2)
==13853==    by 0xA99EEED: wl_closure_invoke (connection.c:935)
==13853==    by 0xA999581: wl_client_connection_data (wayland-server.c:371)
==13853==    by 0xA99C2B0: wl_event_source_fd_dispatch (event-loop.c:90)
==13853==    by 0xA99CC11: wl_event_loop_dispatch (event-loop.c:423)
==13853==    by 0xA787AC0: _cb_create_data (ecore_wl2_display.c:272)
==13853==    by 0xDBE984D: _ecore_call_fd_cb (ecore_private.h:333)
==13853==    by 0xDBEC01B: _ecore_main_fd_handlers_call (ecore_main.c:1992)
==13853==    by 0xDBEC8A9: _ecore_main_loop_iterate_internal (ecore_main.c:2379)
==13853==    by 0xDBEA672: ecore_main_loop_begin (ecore_main.c:1292)
==13853==    by 0x441DA9: main (e_main.c:1089)
2017-03-03 10:49:33 -05:00
Chris Michael 933814f3a9 fix wl_drm detection in e_signals.c
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 08:40:00 -05:00
Mike Blumenkrantz f2550ba326 typo-- 2017-02-24 15:20:23 -05:00
Mike Blumenkrantz cfc538ca55 remove all unnecessary efl version checks
the version of efl required by configure is already higher than these checks
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz e39b6601b0 make 'after_restart' variable global
this allows the compositor to detect (accurately) whether it is a new
instance
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 0ce43bd0dd add E_Menu access from its comp object 2017-02-24 14:15:38 -05:00
Mike Blumenkrantz e56f689fad show already-visible comp util objects when changing frame type
ensure internal clipper state matches object visibility state
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz a32f7119e2 only move new bryces to zone on create, not existing ones
this resolves an issue where not changing any position-related attrs
would stick the bryce in the wrong location until restart
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz e7c2d30a85 add function for printing debug info on an evas object 2017-02-24 14:15:38 -05:00
Mike Blumenkrantz e33c01cdce add new explicit method for enabling backlight depending on output type
ensure that nested compositors don't mess with backlight
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 5d875e6a3d enable abort on critical error for non-release builds
this should help with debugging
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 9934ccfbf0 free E_Remember->uuid on shutdown 2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 58f7d7e54e do not shortcut wl surface commit unignore path for internal wins
this doesn't seem to do anything and therefor is not worthwhile
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz b0cb4b38d6 redo wl client setting of E_Client->take_focus and E_Client->want_focus
this used to be set on show since the assumption was that show was the
first time the client would be seen, but this turns out to be incorrect
and results in focus being set too early (breaking policy)
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 8952eb1add set E_Client->remember before calling e_remember_update()
fix case where new remember was created but not immediately updated,
resulting in a blank remember which would be applied and break windows
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz e7539003ba unadjust wl surface coords before applying position during commit
this seems to fix some positioning issues with internal wins
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 60213325fc only attempt to place clients which are protocol-visible
unmapped clients have no geometry
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz a117c977dd e_menu_grab_window_get() -> e_menu_is_active()
0 is a valid canvas window id, and this function was no longer being used
for its original purpose
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 98ab29ea3c add event for xwayland init 2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 18b452778a block backlight changing for nested/buffer compositors 2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 1bf6c2d5c3 remove e_comp_wl->ptr.grab_x/y
unused
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 2c7e91d38f make e_comp_wl->ptr.x/y ints and fix usage to be consistent
sometimes these were treated as ints and sometimes wl_fixed
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 981f2286d4 add client smart callback for post_render 2017-02-24 14:15:38 -05:00
Mike Blumenkrantz b228c95dce make wl key input generator take keynames instead of keycodes 2017-02-24 14:15:38 -05:00
Mike Blumenkrantz 5b5e3fa5db fix wl_drm detection in e_mouse.c 2017-02-24 14:15:38 -05:00
Michael Bouchaud 2e043e825d e_client_volume: Don't set client volume to max after a mute.
Don't set client volume to max after a mute and unmute. Just check if the
volume is within the available limits.
2017-02-23 00:51:33 +01:00
Michael Bouchaud cb6ea9f747 e_client_volume: check volume setted after a slider drag 2017-02-23 00:36:17 +01:00
Michael Bouchaud f13d9dc8cd e_askpass: fix a typo 2017-02-22 22:58:13 +01:00
Michael Bouchaud 31d3b5914f e_askpass: compliant with GIT_ASKPASS for querying username
It isn't well documented but git could use SSH_ASKPASS env var for querying
username. So we use the argument passed to the command to know what to do.
2017-02-22 21:08:52 +01:00
Carsten Haitzler a534433a91 e client volume - use the overall state of all sinks for display
improve mixer volume display in titlebar now to show a unified
display. average volume of all non-muted sinks for volume display and
if at least 1 sink is non-muted display as not muted as some sound is
coming from that app... somwhere...
2017-02-22 09:50:42 +09:00
Stephen 'Okra' Houston 4510e474f6 Revert "Bryce: Don't proceed to process the mouse down event structure if it is null in the post callback."
This reverts commit 25950ccfa9.
Rever this commit to allow a more proper fix.
2017-02-21 11:27:52 -06:00
Stephen 'Okra' Houston 25950ccfa9 Bryce: Don't proceed to process the mouse down event structure if it is null in the post callback. 2017-02-21 11:06:45 -06:00
Marcel Hollerbach 57b8f3e093 e_sys: bring back system actions after resume was called
when resume is called we are just notifing the theme that e is back
there. There is no E_Sys_Action for it, so its enough for now to just
call the backlight to fade back in and emit the signal to the theme.

This should fix e blocking sys actions
2017-02-21 17:01:13 +01:00
Michael Bouchaud 0a73905895 e_client_volume: add E_EVENT_CLIENT_VOLUME_SINK handler
This commit introduce 3 new handlers to e_client_volume API. These allow to
catch event about sink add, del and update
2017-02-20 02:21:14 +01:00
Michael Bouchaud 939ac0b93d e_client_volume: add sink_name_get API to e_client_volume 2017-02-20 00:46:59 +01:00
Carsten Haitzler 718f0fe0f4 e client mixer - stop messing with mute + volume state just for display
so add a new sink or get an update on state and e will SEt volume/mute
settings, not just passively disdplay them. this has been messing up
rage's winlist (mouse over on right) for several months now... and e
is/was wrong.

this doesnt fix all. if an app has multiple streams really this client
mixer needs to display a control per stream, not a single one - eg in
a popup. in fact volume shoud likely be done in a popup instead of
inside titlebar anyway :)

but this fixes the most annoying problem where withotu users doing
anything, the audio starts to play from streams explicitly muted by
the app...
2017-02-19 21:15:35 +09:00
Chris Michael 37e84e1b40 remove unused variable in e_exec.c
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-16 13:46:20 -05:00
Marcel Hollerbach 6becc2b179 e_exec: split up the free of the instance
otherwise two calls to that free would not sent the event, but free the
instance, undependend of the event beeing emitted or not.

fix T4963
2017-02-14 22:10:26 +01:00
Carsten Haitzler 8211a6f0e1 e thumb - fix alignment warning nuisance 2017-02-12 17:59:47 +09:00
Carsten Haitzler fd139068e1 efm - fix nuisance warning about enlightenment 2017-02-12 17:59:17 +09:00
Carsten Haitzler d72815747a efx - fix unaligned ptr fill that is actually a bug
warning found a bug - filling in chr fileds with an api that expects
ptrs to ints - this is doing really bad things like unaligned writes
and it's overiting adjacent memory. fix
2017-02-12 16:25:35 +09:00
Carsten Haitzler ccf3a6f5fe e comp - quiet some warnings for casts that are ok
add soem void 8 casts for casts that are ok alignment-wise but that
generate warnings
2017-02-12 16:25:35 +09:00
Carsten Haitzler eb8f2a68b0 e comp - fix stupid cast to from eina rect* to char* to eina rect* again
just causes warnings and makes no sense...
2017-02-12 16:25:35 +09:00
Carsten Haitzler d8e639a9ea e comp object - fix warning where a void cast is as goos as the old one
we did cast to Evas_Native_Surface * but this just causes warnings due
to the input ptr being char * from memcup. as this will be aligned due
to allocation, we're ok, so use a void * cast instead
2017-02-12 16:25:35 +09:00
Carsten Haitzler f91086be7d evry module - fix warning about comparing signed to unsigned
harmless warning - use a cast to keepit quiet.
2017-02-12 16:25:35 +09:00
Carsten Haitzler 7b0891a743 e desklock logging - fix types for critical error logs
the critical error log expects unsigned long so cast to exactly that
so it's correct and doesn't break/display incorrect values
2017-02-12 16:25:35 +09:00
Carsten Haitzler 3e95380edb efm - fix warnings for progress time display
the code is right - data is aligned, but gcc doesn't know this, so
silence it with void * cast
2017-02-12 16:25:35 +09:00
Carsten Haitzler 7d5db07a75 e notification - silence alignment warning
the code is ok - it's aligned data from evas and we can address it by
int ptrs, but the warning is noise, so simply add a void * cast in there
2017-02-12 16:25:35 +09:00
Carsten Haitzler dd4cd1ce73 e thumb - silence alignment warning - valid code
the code is right as the int array is at the start of the allocation
that should be aligned to all types anyway. but it's noise that
distracts.
2017-02-12 16:25:35 +09:00
Carsten Haitzler 8c87fe514d e comp - wl - add void cast to reduce warnings
we're pointer playing anyway so types here are not really useful. we
have to get our ptrs right - including alignment, and these warnings
are not useful and just noise.
2017-02-12 16:25:35 +09:00
Carsten Haitzler 8c70210ee6 e xsettings - fix warnings about unaligned ptr access
this moves access to byte by byte memcpy's to avoid potential
unaligned access.
2017-02-12 16:25:35 +09:00
Carsten Haitzler b40fd20fbc e comp x - fix property fetch to use int ptr from the start
this clears up soem warnings and do the cast on providing the pointer
to ecore_x_window_prop_property_get() which since it has to allocate
the data will be fine for alignment anyway, so a void * cast will do.
2017-02-12 16:25:35 +09:00
Carsten Haitzler 16131b14f0 efm ipc - fix unaligned int read on ipc decode
warning was right - this is an unaligned read. fix.
2017-02-12 16:25:35 +09:00
Carsten Haitzler 9c984ea9cf e ptr cast via void fix to reduce warnings
so we cast a lot of ptrs to other types as that is then the actual
type of the object. all these objects are allocated by malloc nad
friends so this is ok. but gcc on arm is not happy and warns. maybe it
assume this ptr could be to an element in an array of structs of this
type and so on thus will have specific alignment enforced by compiler
but our casting may disturb it? anyway. cast via void first fixes it.
we can focus on other real warnings and errors instead.
2017-02-12 16:25:35 +09:00
Mike Blumenkrantz 4e1cbab3ff ignore all non-NORMAL type wl windows in e_place
this catches subsurfaces, drags, and popups, which were erroneously being
handled like obstacles during placement
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 8f3c9dd796 do not use new_client to determine placement-related paths during wl client commit
this is a remnant from xdg5-only code where new_client meant "first buffer". with
xdg6, this is no longer the case since a surface can receive infinite commits
without ever having a buffer attached

ref 9a82f7bcb0
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 476305563c always set E_Client->placed when successfully moving a comp object
enforce this for all cases
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 63b7111a1f make client placement eval not dependent on new_client flag
this should just run if placed is not set for a valid window
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 964640d9ae never return remembers which apply uuid if not looking for sr remembers
avoid collision between sr remembers and user remembers
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz a8e7ca98cc allow new_clients to update their remembers
this might cause a little more event spam but it's pretty harmless
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 743a57f572 watch UNIGNORE hook for hooking window remembers
ref d9cc4f887828b620cd114e85b89589cbe929ea50
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz d6052cbbfd unignore wl clients on first commit regardless of buffer attachment
this allows for things to begin catching "new" clients as soon as possible
in the compositor
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 7c118eb272 use E_Client->changes.size for validating wl client geom during configure
xdg6 allows for clients without buffers to be configured such that the
first buffer will match the configured state

if a client is sized before this point, the changes.size flag will be set
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 2f6f31f2a7 add client hook for UNIGNORE
UNIGNORE is the hook to watch for wl clients as they are added; the
ignore mechanism prevents most of the compositor from processing
clients. this is a stupid method from an api perspective since it's
different in x11 and wl, so it should probably be improved on in the future
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 25240fb86d future-proof client hook inlist initialization
manually initializing this meant it needed to be kept in sync with the
header, something that I'm unlikely to check every time client hooks are
added/removed
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 51782fd5ee Revert "e - wayland - fix double-resize if e wants a different initial size"
This reverts commit e1c3120689.

this commit revealed a number of issues with the xdg6 implementation related
to unconfigured buffer management: see subsequent patches for a less
sledgehammer-y solution

ref 5497fadce4
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 0d4a52a240 fix return code checking for errors when generating wl key events 2017-02-10 17:24:13 -05:00
Mike Blumenkrantz cafb46953b add wl_buffer output module 2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 75ff919036 more correctly handle dnd completion for wl
* always send cancel when drag is !accepted
* always null e_comp_wl->drag_source
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz b568e7abb1 simplify _e_comp_wl_data_device_drag_finished() slightly 2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 1f7bd4b83d move wl data device focus-change handling to data device leave() fn
leave() is always called before enter(), meaning that this will handle
window1 -> window2 as well as window1 -> null
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 0acea1a2b1 add specific handling for xwl cursor unsetting on mouse-out to ssd
xwl clients will attempt to unset the cursor when mousing out of the surface,
but this can happen after evas events are triggered for the ssd due to
latency

if the given surface has mouse.in set, but the mouse is not inside the surface
area, assume that the mouse has just entered the compositor canvas

 #TheDisappointer
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz c6216d7c1e reset compositor pointer cursor if wl surface destroy is the current cursor
this should never happen and is only included as a failsafe

 #TheDisappointer
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 7350a9c891 Revert "attempt to re-set wl surface pointer when popping back to "default" pointer type"
This reverts commit e42b072f38.

this is broken according to spec, clients should re-set their pointers manually
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 00329d6f29 force mouse-out on wl clients during delete if mouse.in is set
#TheDisappointer
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz e3d0fdbf67 only unset current pointer cursor object if new one is being set
#TheDisappointer
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 12655becaa ref clients during exe_inst deletion to avoid invalid access after free
in the case where clients are deleted during the same loop that they are
added to an exe_inst, the client will be destroyed before the instance's
delete event returns

ref T4963
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 57edf1bbd8 remove E_Config->desktop_default_name
this is an easy format string attack vector which serves no purpose
that I can fathom. the commit log where it was added it also made
no mention of this, as it was done in a seemingly-unrelated feature
addition
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 641812918f add note in doc for "gadget_destroyed" callback re: callback ordering 2017-02-10 17:24:13 -05:00
Derek Foreman 1fe5b56500 Replace some ecore_time_get users with ecore_loop_time_get
I'm confident these sites can use loop time safely, and they're
frequent callers.
2017-02-10 15:18:19 -06:00
Derek Foreman 391c833a8d Remove tests for wayland damage_buffer presence
We now depend on a version of wayland that has these, so we don't
need to handle the case where it's not available anymore.
2017-02-10 10:06:00 -06:00
Carsten Haitzler e1c3120689 e - wayland - fix double-resize if e wants a different initial size
let's say you sue tiling or some module and it wants a window by
default to maximize or fill the screen or be size XxY ... this stops
the client first having a buffer smaller (or larger) and then sizing
down rendering 2 times (one of the renders is pointless). this makes
initial buffer render/show seamless as it should be in wayland.
2017-02-10 19:23:43 +09:00
Carsten Haitzler ef6c178a17 enlightenment_sys - eina_init BEFORE switching uid - safer
in case eina_init uses env vars, move it to befor setuid() so it can
detect. you normally would setuid only for a limited op and we do it
for "the rest of the running" as e_sys is fairly simple.
2017-02-10 08:33:34 +09:00
Derek Foreman 2021480748 Dispatch wayland frame callbacks in the correct order
The protocol says they should be dispatched in the order they're
registered, so switch to list append instead of list prepend.
2017-02-08 13:25:30 -06:00
Chris Michael 63a9bae282 fix potentially uninitialized variables
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-07 13:18:19 -05:00
Chris Michael 90c120985a minor formatting fix
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-07 11:09:54 -05:00
Chris Michael 76cbf61616 minor formatting fix
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-07 11:09:49 -05:00
Derek Foreman 4cf555f36e Replace all timer_reset with timer_loop_reset
Another sed bomb - didn't occur to me first time around to
check for this.  Cleans up more clock_gettime calls.
2017-02-06 15:59:25 -06:00
Derek Foreman 73aecd73ab Replace all timer_add with timer_loop_add
So yeah, I've literally used sed to replace every occurrence of
ecore_time_add() with ecore_timer_loop_add() because I'm reasonably
confident that no part of E has a legitimate need for timer based on the
exact current time.

It would be really nice if I'm not wrong. :)

The reason for this is the incredible spew of clock_gettime() calls I'm
seeing on an ARM system (that should have a vdso for gettime, but...)
This can amount to thousands of system calls per second.

 #YOLO
2017-02-03 15:52:28 -06:00
Mike Blumenkrantz 036bcc1f67 hide wl client cursors when set_pointer is passed a null surface 2017-02-03 15:13:45 -05:00
Mike Blumenkrantz ee4a861f90 use 1x1 for unsized (internal) clients
this was a typo
2017-02-03 15:13:45 -05:00
Mike Blumenkrantz d566b54049 simplify mouse-out cursor reset for wl clients
this is handled by e_pointer_object_set()
2017-02-03 15:13:45 -05:00
Mike Blumenkrantz c68ca50ced make e_pointer_object_set() a no-op when passing the existing cursor 2017-02-03 15:13:45 -05:00
Mike Blumenkrantz 83f0a68291 add e_pointer_show() 2017-02-03 15:13:45 -05:00
Mike Blumenkrantz e2f8d2ba69 implement pointer-constraints v1
xwayland nyi
2017-02-03 15:13:45 -05:00
Mike Blumenkrantz 85aaa64f11 ignore intercepted mouse events for non-wl compositing 2017-02-03 15:13:45 -05:00
Mike Blumenkrantz 30f1b8b9c3 generically handle relative motion eventing for non-featureful backends 2017-02-03 15:13:45 -05:00
Mike Blumenkrantz 501efaf357 add flag for comp screen iface to indicate relative motion eventing 2017-02-03 15:13:45 -05:00
Mike Blumenkrantz 186cf73294 implement relative-pointer v1 2017-02-03 15:13:45 -05:00
Derek Foreman 0a91a24573 Stop sending wayland motion events when the mouse is grabbed
This stops the compositor from sending motion events to internal
windows while they're being moved or resized.
2017-02-02 12:03:51 -06:00
Carsten Haitzler 1f87c6d805 e sys - make timeout for sys loging 3 instead of 15 seconds
this shortens logout timeout for "apps still hanging around" to 3
seconds meaning that within 3 seconds something should complain that
logout is taking too long so you know your logout request actually
went through... and any app not responding in 3 seconds is likely
"bad" (swapped out, hung on blocking i/o or something or doing a "are
you sure" dialog thing).
2017-01-30 12:57:23 +09:00
Carsten Haitzler b71f1be074 e dialog - fix unreszable dialogs to not be 1x1
so i see non-resizable dialogs end up 1x1... this fixes that.
2017-01-30 12:57:23 +09:00
Marcel Hollerbach 738f6d8f6b e_gadget: fix destroying of drop_objects
keys of pointer hashes are represent as void** so you just get a pointer
to where the pointer can be found. This now dereferences the pointer so
the correct value is used.

This fixes T5136.
2017-01-28 23:02:40 +01:00
Carsten Haitzler b55ce098bf e thumb - support signal emits and desk pan msgs for thumbs
this in theory allows pan desk thumbs to work... but hey ... they are
broken anyway... :)

@fix
2017-01-28 16:08:46 +09:00
Carsten Haitzler 1caf626322 e_thumb header - remove tabs 2017-01-28 12:59:33 +09:00
Mike Blumenkrantz 1861f474e4 remove gadget drop object event callbacks during object deletion
ensure that no callbacks reference gadget internals after they have been
deleted
2017-01-27 10:51:21 -05:00
Carsten Haitzler acf8988c40 e widget bgpreview - use e thumb to get quality back and speed too
this should keep the perfromance of the prior commit
f80f73a7c9 and now get quality back by
generating thumbnails at higher resolution then scaling down from there.

@fix
2017-01-27 23:44:02 +09:00
Carsten Haitzler bcbc263710 Revert "e widget bgpreview - stop using livethumb as it cuases performance issues"
This reverts commit f80f73a7c9.
2017-01-27 23:24:12 +09:00
Carsten Haitzler f80f73a7c9 e widget bgpreview - stop using livethumb as it cuases performance issues
bgp[review uses livethumb. livethumb by definition uses an image
canvas with a sw engine and thus not only renders the bg with another
engine, it also is causing continual texture uploads thanks to the
pager and this shows clearly on slow systems. this causes memory
duplication for the same wallpaper as ever bg has its own canvas and
buffer etc.

this does come with a quality drop though and that's up for debate. we
COULD use something else like a proxy or map in between to force a
higher "virtual" res vs output. but for now at least this solves both
a memory bloat issue and a performance problem.

@fix
2017-01-27 21:50:39 +09:00
Stephen 'Okra' Houston 35e9501637 Enlightenment: Whitelist and autoload the sysinfo gadgets. 2017-01-25 16:24:53 -06:00
Mike Blumenkrantz 75224784bd reset demo gadget id before deleting gadget object during drop operation
ensure that the gadget is marked as usable so that the config isn't deleted
2017-01-20 11:52:24 -05:00
Carsten Haitzler 3f2ea65112 e window stakcs - fix bugs with stacks by doing stack stuff in idle eval
this moves ensuring windows are centered on their parent even when
moved etc. for stack (and move the whole stack not just the specific
window) in the idle enterer int he pahse before all the client evals
take place. much cleaner!
2017-01-18 18:51:30 +09:00
Chris Michael 1974f5da2d Revert "send wl_touch events when we handle mouse buttons"
Reverting this as it ends up causing multiple events being handled
(touch and pointer) inside various clients if you have both touch and
pointer enabled. Will need a different fix here....

This reverts commit 7906537c02.
2017-01-17 13:28:05 -05:00
Chris Michael 7906537c02 send wl_touch events when we handle mouse buttons
Small patch to enable sending wl_touch down/up events when pointer
mouse button events are handled. This is needed in the case where we
do Not have any mouse pointer at all, but we do have touch support.

ref T5094

NB: This allows weston-simple-touch client to operate in Enlightenment
now. There is still something strange happening with EFL clients in E
wrt touch events tho...

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-17 11:31:48 -05:00
Chris Michael d01509cf26 fix formatting
NB: No functional changes, just cleanup formatting

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-17 08:43:21 -05:00
Carsten Haitzler cd3490f35c e - wl mode - stop consuming 100 percent cpu
so on 1 intel laptop and my rpi i'm seeing 100% cpu usage in wayland
mode. it seems something is resizing to 0x0 and then causing a size
change which causes a property change which causes... another request
to 0x0 and repeat. dont set tyhe size changed flags if size actually
didnt change and this fixes that.
2017-01-15 14:16:31 +09:00
Mike Blumenkrantz 0c56e19a64 validate xdg-shell move/resize requests against latest button serial
these are supposed to match in order to initiate the corresponding action
2017-01-13 11:35:20 -05:00
Mike Blumenkrantz aba6687b30 handle pixmap_refresh() failure cases more accurately under wayland
non-usable pixmaps here are still valid in some cases, such as when
no buffer is attached
2017-01-13 11:35:20 -05:00
Mike Blumenkrantz 27091c510c ensure that gadget internal del callbacks are handled before other callbacks 2017-01-13 11:35:20 -05:00
Mike Blumenkrantz fe2c390861 use geometry from comp object input rect when determining if coords intersect
the rect geometry may be clipped, so use whatever the current geom is
2017-01-13 11:35:20 -05:00
Mike Blumenkrantz 0fbef3b74e use persistent clipping for comp object input rects
it's technically legal to set an input region larger than a surface,
then later expand the surface and expect that the input region will
also expand
2017-01-13 11:35:20 -05:00
Mike Blumenkrantz df414cef65 do not perform frame coord adjustments for re_manage wayland clients
prevent mismatch of positions between restarts
2017-01-13 11:35:20 -05:00
Mike Blumenkrantz e4e8db74d9 do not return sr window remembers if not looking for sr remembers 2017-01-13 11:35:20 -05:00
Mike Blumenkrantz 3af7affa02 free configs for demo gadgets on object free
these are purely for demo purposes and should never be retained

I think this is right...
2017-01-13 11:35:20 -05:00
Mike Blumenkrantz 5aadf3b3ff implement xdg-foreign v1
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-13 11:34:50 -05:00
Mike Blumenkrantz d1bb23954f break out code to set clients as transients for a parent 2017-01-13 11:33:36 -05:00
Chris Michael 92aa99b97a Use proper coordinate adjustment
This seems like just some copy/paste that was never corrected, however
when calculating coordinate adjustments we should be using the proper
values here. Previous code was using e_comp_canvas_x_root_adjust for
the Y value. This patch uses e_comp_canvas_y_root_adjust for Y
coordinates.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-12 10:44:23 -05:00
Carsten Haitzler 45b6536a20 e_icon - remove icon cache code - its disabled anyway with ifdefs
this isnt used so it just adds complexity/code to work on. remove it.
it would need a rewrite anyway as using a single file is hugely
inefficient as eet has to doa full rewrite of the file every
modification... it also duplicated icons in memory and dint load
directly from file etc. so... remove anyway.
2017-01-10 10:32:51 +09:00
Stephen 'Okra' Houston 05f35b4deb Enlightenment: Make gadget editor popup scrollable:
This fixes T5077
2017-01-09 10:39:39 -06:00
Carsten Haitzler 8d6b834d57 e_icon - handle load failure and dont display icon object
also some XXX fixme notes i found along the way
2017-01-09 18:24:25 +09:00
Carsten Haitzler 0b0b6e6fd9 desklock - make blocker transparent again - a theme issue not code
if "theme is transparent" and this is an issue - dont use that theme.
very simple. the theme for a desk LOCK should be solid. it should hide
what is underneath. that is the POINT is can have transition effects
and that is why we shouldnt hide what is under it to allow that to
happen otherwise if you do have such an effect (eg a fade in) you just
get a black screen instantly on ctrl+alt+l for lock for example THEN
it fades in which is not how things SHOULD look.

yes - there is an issue on locking on screen lock where you get an
initial fade in effect for example as desklock is shown LATER like
when screen "unsuspends" from blank rather thanbefore this point. that
is orthogonal. this rect should block events... not pixels. don't use
non-solid themes or images if you dont want to see through...
2017-01-07 14:19:18 +09:00
Carsten Haitzler 3903d44666 e - BLOODY BUILD AGAIN - DAMN FLOAT WARNINGS...
i swear ... all of this shit over a warning that CAUSED more bugs than
it eveer fixed? sersiously...

ARGH!
2017-01-07 14:05:17 +09:00
Mike Blumenkrantz 574bf220d5 mark strftime calls using struct tm in e_slider as safe
disable -Wformat-nonliteral temporarily
2017-01-06 12:57:34 -05:00
Mike Blumenkrantz 86505cd885 add global macros for easily toggling warning flags
in some cases, eg., -Wformat-nonliteral, warnings may be generated for
valid uses of C, but the warning is still useful. this allows certain warnings
to be disabled as necessary
2017-01-06 12:57:34 -05:00
Mike Blumenkrantz c5b3aba6fd specify format string for desk names in desk config
-Wformat=2
2017-01-06 12:57:34 -05:00
Mike Blumenkrantz 40f8e02be8 resolve misc float-equal warnings
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:34 -05:00
Mike Blumenkrantz 7264ac9e96 resolve binding+action float-equal warnings
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:34 -05:00
Mike Blumenkrantz ec96143327 resolve client float-equal warnings
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:34 -05:00
Mike Blumenkrantz faac750727 resolve gadcon-related float-equal warnings
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:33 -05:00
Mike Blumenkrantz c242029cf7 resolve widget-related float-equal warnings
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:33 -05:00
Mike Blumenkrantz 989b0cd096 fix selective disabling of -Wunused-parameter under clang in copied weston code
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:33 -05:00
Mike Blumenkrantz 85589ab2b8 resolve compositor float-equal warnings
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:33 -05:00
Mike Blumenkrantz 5268ac6500 resolve efx float-equal warnings
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:33 -05:00
Mike Blumenkrantz aeb8851c9d resolve efm float-equal warnings
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:33 -05:00
Mike Blumenkrantz 6f1f165d32 resolve certain double/float comparisons in with increased correctness
ref 03d0f1d2dc

Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:28 -05:00
Mike Blumenkrantz 1c4ee0028c add method for unblocking zones during desklock show/hide 2017-01-06 11:42:21 -06:00
Mike Blumenkrantz 912eb66b70 revert desklock block_rect opacity change
block rects are for blocking view of the desktop. they exist for security,
preventing the desktop from being visible if a transparent lockscreen is
in use.

also split block_rects into per-zone rects for later use

ref c997077c17
2017-01-06 11:42:21 -06:00
Chris Michael c5ad11886c fix shadowed variable declaration
Eina_List *l is already previously defined at the top of this
function. Since we are just using it for list iteration, there is no
need to define it again.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-04 08:30:53 -05:00
Carsten Haitzler 3779086a63 e icon - use new skip header async preload to make icon loads async
now they can be trule async hopefully stopping things like application
menu from stalling while loading icons header... which is really nasty
with svg's. this actually makes icons async by default which is really
EXACTLY what you want. this also prepares for later making edje loads
async.

@feature
2017-01-02 09:51:57 +09:00
Carsten Haitzler 227d49e346 e icon header - clean up formatting 2017-01-02 09:51:57 +09:00
Carsten Haitzler c997077c17 desklock - allow for fadein/out effects in theme for locking/unlocking
this allows the theme to now do special effects on showing the
desklock and on hiding it again afterwards so it can look nicer.

@feature
2017-01-02 09:51:57 +09:00
Carsten Haitzler 8b9fee916e e sys - remove system action dialogs as comp actually does this
so we have some dialog saying we're suspending/shutting down etc. etc.
and this is really pointless as comp already does a screen-wide effect
like fading out etc. and these dialogs were added long before we had a
compositor. there isn't much point anymore so remove them and let comp
deal with it.
2017-01-02 09:51:57 +09:00
Carsten Haitzler cc21b2a046 e comp object - fix valid warning of shadowed var (ambiguous) 2016-12-28 20:16:35 +09:00
Carsten Haitzler 7c27959446 e comp object - fix shadow var warning (valid) for ec 2016-12-28 20:16:35 +09:00
Carsten Haitzler a1541f9a40 e bindings - fix warnings about possible use of undefined var 2016-12-28 20:16:29 +09:00
Carsten Haitzler 9ca5ea5817 efm - fix ifs to be ifdef as they should be 2016-12-28 19:55:24 +09:00
Carsten Haitzler 03d0f1d2dc e - fix float warnings cmp where they actually may cause issues 2016-12-28 19:55:20 +09:00
Carsten Haitzler a5faab4fa1 efm - warning - change invalid #if toe #ifdef as this is right 2016-12-28 19:15:58 +09:00
Mike Blumenkrantz 001e08c54a bump modapi
e_client.h changed
2016-12-19 11:04:02 -05:00
Mike Blumenkrantz 30b25f16d1 remove extra SLEEP prints during startup on non-release builds
this was useful for startup profiling, but there are better methods available now

partially reverts 2850c28167
2016-12-19 10:59:14 -05:00
Carsten Haitzler 8b6ba41a66 e window menu now skips stack windows except top one 2016-12-17 15:11:23 +09:00
Carsten Haitzler 652d7e113e e wl - fix build break with wl. 2016-12-16 22:03:17 +09:00
Carsten Haitzler e9de31249a stacks - fix crash for pointer warp when client is null 2016-12-16 19:03:21 +09:00
Carsten Haitzler c6fa2f6457 tasks - add stack "hiding" support and only show top stack item
this makes tasks behave like you'd expect with a stack - only show the
top one and track properly. tasks was simple and easiest to do first
as it has little fluff other than the tasks logic itself. other
elements of e next...
2016-12-16 18:59:56 +09:00
Carsten Haitzler 6540eddb96 e module - remove duplicate modules at load all time from config
ALSO dont remove dups from e_module_new as we may be walking at the
time. instead refuse to load a module alread loaded bu name. this
should solve things better.

@fix
2016-12-16 16:18:27 +09:00
Carsten Haitzler aead4d96b4 e config - don't keep adding lunchers until you burst. only if not found
so e config would add lunhcers forevert. i spotted 13 of them. no.
just one. also make them delayed because thats pretty much what we
always want. same with other config added modules. should be delayed
generally.
2016-12-16 16:18:27 +09:00
Carsten Haitzler 5c38609e0e client handling - add support for window stacks needed for views/manager
this adds core basic handling for window stacks where windows behave
correctly as a single unified stack something like what naviframe does
but out-of-window so you can including multiple processes. only on x11
right now as it's being supported/worked on.

as we dont plan to kepe naviframe in future, this is the way to go.
naviframe "pages" will be windows in a stack. the wm should do the
nice thing. in e this will be very nice. for now elsewhere we use
transient_for so a wm would treat this like a bunch of dialogs with a
single parent window. i guess in a desktop thats probably what you
might expect. e will be a little more "finesse" filled.

need to make ibar, tasks,m win menu and winlist (alt-tab) respect this
and only show the top member of a stack.

need to send messages to clients when they are "top" or "middle" or
"bottom" or "alone" in the stack or something so decorations can change.

should add soem new border signals in theme (for both SSD and CSD) to
make this look nice. will need some config additions for that and
ability for e comp to do the right thing

but this is a solid start
2016-12-16 16:17:10 +09:00
Derek Foreman d83e885673 Use a monotonic clock for frame callback times 2016-12-15 09:59:21 -06:00
Stephen 'Okra' Houston 30ba420c6d E_Config: Fix auto load of luncher
This fixes T5007 https://phab.enlightenment.org/T5007
2016-12-15 09:00:35 -06:00
Stephen 'Okra' Houston 46ae444069 E_Config: Auto load luncher if ibar is enabled and bump config. 2016-12-14 11:52:10 -06:00
Mike Blumenkrantz a73ad1b190 plug iterator leak in e_comp_object_render()
==13307== 96 bytes in 1 blocks are definitely lost in loss record 6,598 of 11,698
==13307==    at 0x4C2DA60: calloc (vg_replace_malloc.c:711)
==13307==    by 0xCECA287: eina_tiler_iterator_new (eina_tiler.c:1299)
==13307==    by 0x46D13D: e_comp_object_render (e_comp_object.c:3966)
==13307==    by 0x46DB42: e_comp_object_dirty (e_comp_object.c:3923)
==13307==    by 0x46017D: _e_comp_client_update (e_comp.c:343)
==13307==    by 0x46017D: _e_comp_cb_update (e_comp.c:400)
==13307==    by 0xB34D4BA: _ecore_job_event_handler (ecore_job.c:98)
==13307==    by 0xB34909C: _ecore_call_handler_cb (ecore_private.h:317)
==13307==    by 0xB34909C: _ecore_event_call (ecore_events.c:518)
==13307==    by 0xB350527: _ecore_main_loop_iterate_internal (ecore_main.c:2359)
==13307==    by 0xB3508A6: ecore_main_loop_begin (ecore_main.c:1287)
==13307==    by 0x43C88A: main (e_main.c:1093)
2016-12-14 11:44:58 -05:00
Derek Foreman 0493abf457 Fix wayland frame callback times
ecore_time_unix_get() * 1000 is too big to fit in a uint32, so take the
time we instantiate the wayland pixmap hash and use that as a base.
2016-12-13 13:54:21 -06:00
Mike Blumenkrantz e62423603a correctly set E_POINTER_RESIZE_BR mode for client keyboard resizing
typo from when this was refactored

fix T2452, T2579
2016-12-13 11:10:13 -05:00
Mike Blumenkrantz 485f250880 don't track gadget drop handler objects for deletion
the user should be managing this
2016-12-09 11:59:24 -05:00
Mike Blumenkrantz 4e3ea4f6b3 add some internal functions for triggering fake screen hotplug events
debugging is fun
2016-12-09 11:52:03 -05:00
Mike Blumenkrantz 3bae673848 null out bryce and site pointers when deleting bryce object
fixes handling of bryces when changing screen setup
2016-12-09 11:52:03 -05:00
Mike Blumenkrantz f1c70e626f null out animator pointers in efx stop() operations 2016-12-08 11:20:45 -05:00
Derek Foreman ae9d2904c7 test dmabuf pixmaps properly
If we can't handle a dmabuf format we now properly tell the client instead
of accepting it anyway and falling apart later.
2016-12-06 16:37:35 -06:00
Mike Blumenkrantz 0e4ddaffbe use better check for getting wl surface alpha from cursor pixmaps
ref 6ba85cf864
2016-12-05 11:05:24 -05:00
Mike Blumenkrantz b1037cbc5c Revert "Check for deleted client in e_pixmap_image_is_argb"
This reverts commit 6ba85cf864.

returning false here causes csd regions to become opaque (black) during
close animations
2016-12-05 11:05:24 -05:00
Mike Blumenkrantz 8f39054965 handle pass_event clients in e_comp_object_coords_inside_input_area
fix T4966
2016-12-05 11:05:24 -05:00
Mike Blumenkrantz ca7c77d05e fix internal wl windows to exit when border X is clicked 2016-12-05 10:49:06 -05:00
Mike Blumenkrantz e42b072f38 attempt to re-set wl surface pointer when popping back to "default" pointer type
this automatically handles the case where enlightenment has commandeered the
cursor temporarily and the active client has not unset+set a new cursor in the
meantime
2016-12-02 10:54:06 -05:00
Mike Blumenkrantz 5f246e079b set wl pointer surfaces to E_LAYER_CLIENT_PRIO during setup
these later get overridden onto the pointer layer, but setting a layer
here ensures that the pointer surface will always be the client
returned by e_client_top_get()
2016-12-02 10:54:06 -05:00
Mike Blumenkrantz 647e998b72 do not pop pointer types on client hide events if the client is pass_events
these clients cannot receive events and thus have no pointer to pop
2016-12-02 10:54:06 -05:00
Chris Michael 4aba7e7beb remove unused variables in e_comp_wl
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-02 10:41:46 -05:00
Derek Foreman 41e60d251e Stop sending key up/down events on focus change under wayland
We shouldn't be doing this, but there's a collective memory that
this was put in place to fix stuck modifier bugs.

If we run into stuck modifiers again because of this patch, then we
should be fixing them in a different way.

If anyone bisects to this point, I apologize - assign me a ticket.
2016-12-01 10:55:49 -06:00
Mike Blumenkrantz 08ee9293df feed mouse move and canvas mouse up upon breaking a wl surface grab
ensure that the hw pointer location and the cursor location match after grabs

fix T4939
2016-12-01 11:22:42 -05:00
Carsten Haitzler 8934ada4d8 e_util_defer_object_del - ensure order of deferred deletions are right
so since e_util_defer_object_del used a before idler this would
reverse deletion order vs the order submitted. this may cause issues.
not sure. chasing netstar's "animator stops" issue, but if defered
deletion if disabled seems to stop it from happening.

at least fix order if multiple deferred deletions are queued

@fix
2016-12-01 08:49:33 +09:00
Derek Foreman 60617c82d7 More aggressively prune keyboard focus list
Even if a client is deleted we still need to get its resources off the
keyboard focus list.
2016-11-30 14:48:54 -06:00
Derek Foreman ce34c550e7 Fix crash when exiting an xdg shell application
The focus in timer has been firing for deleted clients, this causes a
NULL pointer dereference.

Then again, maybe the timer should've been disabled by now...
2016-11-30 14:48:54 -06:00
Derek Foreman 8245c1eb7a Fix keyboard tracking when leaving an xdg shell window
_parent_client_contains_pointer() shouldn't return true if there is no
parent client.  This could result in leaving stale resources in the
keyboard focus list and crash the compositor.
2016-11-30 14:48:54 -06:00
Mike Blumenkrantz ca5176e6fa handle input detection for wl surface grabs more accurately using stacking
this should more accurately handle cases where mouse movements over grabbed
surfaces are intercepted by overlapping windows
2016-11-30 12:46:54 -05:00
Mike Blumenkrantz f83045dc62 move the comp canvas cursor object during wl surface grabs
the struct member is not guaranteed to be the visible object, so get
the ee cursor and move that
2016-11-30 12:34:30 -05:00
Mike Blumenkrantz a3a239c1d0 use correct coords for determining input region calcs on comp objects 2016-11-30 12:34:30 -05:00
Derek Foreman 6ba85cf864 Check for deleted client in e_pixmap_image_is_argb
Fixes a crash when closing Qt applications.
2016-11-29 11:13:50 -06:00
Mike Blumenkrantz 19a902ec09 stack subsurfaces above their parents upon creation
handles the case where no explicit stacking is set on the subsurface
2016-11-29 10:11:23 -05:00
Romain Naour c8f5f942d0 E: fix Wayland without xwayland build
When building enlightement without xwayland, we need to provide
MESA_EGL_NO_X11_HEADERS in the CFLAGS to avoid including X11/Xlib.h.

This define is provided by WAYLAND_EGL_CFLAGS, so add it for E modules
and e_fm build.

Fixes:
In file included from /usr/include/EGL/egl.h:39:0,
                 from ./src/bin/e.h:108,
                 from src/modules/mixer/lib/backends/pulseaudio/pulse.c:1:
/usr/include/EGL/eglplatform.h:119:22: erreur fatale : X11/Xlib.h

Signed-off-by: Romain Naour <romain.naour@gmail.com>
2016-11-28 10:43:28 -05:00
Mike Blumenkrantz b133dbd35d prevent divide by zero when calculating gadget aspect sizing 2016-11-28 10:43:28 -05:00
Chris Michael 96d517a6f2 use ecore_evas_screen_dpi_get when updating e_scale value
Now that the ecore_evas_drm code can return screen dpi, we can use
that rather than using a client API function (ecore_wl2) to get server
screen dpi.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-11-28 10:10:28 -05:00
Derek Foreman 9f3de5e346 Fix wayland deferred buffer free crash
We'd sometimes get a stale pointer when doing a deferred buffer free.
2016-11-25 11:14:38 -06:00