Commit Graph

18125 Commits

Author SHA1 Message Date
Mike Blumenkrantz 3413399b15 always move objects during efx_resize if position is provided
some objects (like clients) may lie about their geometries and report
wrong values
2016-03-12 11:17:32 -05:00
Mike Blumenkrantz 48b6d54966 don't increment position coords twice during efx move operations 2016-03-12 11:17:06 -05:00
Mike Blumenkrantz 1fd9d8eee5 break out xwl init/shutdown into static functions for reuse internally
calling modapi functions like this causes symbol collision and randomly
calls corresponding functions for other modules
2016-03-12 11:15:42 -05:00
Mike Blumenkrantz f1bccff8e1 Revert "fix xwayland compile with 1.18 eo"
This reverts commit 2ec02258ec.
2016-03-12 10:43:13 -05:00
Mike Blumenkrantz 965632fedc use object position for efx resize anchoring when no move effect is active
CIDs 1352902, 1352903
2016-03-12 10:42:19 -05:00
Mike Blumenkrantz f26f6cf3dd be less pedantic during efx move/resize operations about object geometry
assume that an object is where it's supposed to be in order to avoid failing
to correctly animate objects which modify set geometries, such as e clients
2016-03-11 18:17:06 -05:00
Mike Blumenkrantz 88518d8103 don't add render updates for deleted clients on failed resize 2016-03-11 18:16:21 -05:00
Mike Blumenkrantz d2cc427505 grab comp input on wizard start
without this, windows can randomly grab keyboard input and prevent
fast forwarding
2016-03-11 17:19:32 -05:00
Mike Blumenkrantz 9c829d5f25 redo wizard to use elm 2016-03-11 17:19:32 -05:00
Mike Blumenkrantz 14ad1892aa redo wizard's gl testing mechanism
Xorg.$.log is not a reliable source of information for a variety of reasons,
using the readily-available evasgl is much safer and more portable
2016-03-11 17:19:32 -05:00
Mike Blumenkrantz 1b475da50e handle wireless module existence in related wizard page 2016-03-11 17:19:32 -05:00
Mike Blumenkrantz eb58e2ca70 remove eldbus init/shutdown calls from the codebase
this is handled by e_msgbus
2016-03-11 17:19:32 -05:00
Mike Blumenkrantz 40ebdb60d4 remove library checks for a number of modules along with useless defines
most of these date back from before efl was a unified tree or enlightenment itself
could be optionally built with things like dbus support
2016-03-11 17:19:32 -05:00
Derek Foreman e9751f4d57 Free pixel data after taking a wayland screen shot 2016-03-11 11:19:29 -05:00
Derek Foreman a4fc286d7f Fix internal window borders on 32-bit computers
Our wayland window ids are 64 bit integers, we need to be careful
about the data type on 32-bit machines where pointers are smaller
than this.
2016-03-10 16:47:09 -05:00
Mike Blumenkrantz 57f62675cc make wayland client keyboard focus list pruning more robust
this should handle all possible cases where focused keyboard resources
need to be removed from the global list
2016-03-10 15:18:47 -05:00
Mike Blumenkrantz b742baff5b reject attempts to focus deleted comp objects 2016-03-10 15:18:19 -05:00
Mike Blumenkrantz f91ed81cd1 run focus-out and mouse-out wayland client callbacks for deleted clients
this fixes a number of issues caused by clients not cleaning up on deletion

ref 3e9029ea08

 #YouAlwaysRememberTheFirstTimeYouBorkedTheCompositor
2016-03-10 14:47:41 -05:00
Derek Foreman ff70943f76 Fix wayland hide for internal windows
We need to make sure we drop reference on all exit paths through the
hide callback - somehow this only seemed to break internal windows.

ref 65166c5a36
2016-03-10 12:19:32 -05:00
Mike Blumenkrantz 15a918d3c7 during bryce moveresize callback, return if no zone could be located
probably some crazy animation going on, ignore this case

CID 1352828
2016-03-10 11:59:58 -05:00
Mike Blumenkrantz 66fbb48cc6 check returned pixmap size before attempting to create updates tiler
CID 1349419
2016-03-10 11:57:11 -05:00
Mike Blumenkrantz e49657eed0 ensure pointer lifetimes when advancing efx effect queue
CIDs 1352853, 1352852, 1352851, 1352850, 1352849, 1352848, 1352847
2016-03-10 11:46:18 -05:00
Mike Blumenkrantz 53d64276b4 resolve harmless coverity reports in time module
CIDs 1352837, 1352846
2016-03-10 11:28:34 -05:00
Mike Blumenkrantz 0b69c40d92 resolve harmless coverity reports in wireless module
CIDs 1352825, 1352826, 1352827
2016-03-10 11:21:11 -05:00
Mike Blumenkrantz 77602a5853 ensure string termination when using strncpy
CID 1352823
2016-03-10 11:11:57 -05:00
Mike Blumenkrantz c95f3347ae flatten return of strcmp to bool value
CIDs 1352821, 1352822
2016-03-10 11:08:48 -05:00
Mike Blumenkrantz 2017eda0bc don't add render update during ignored damage on deleted clients
ref 1507f815a5
2016-03-09 15:27:59 -05:00
Mike Blumenkrantz fcf3bf8a5c remove show callback from evry win on deletion
==22088== Invalid read of size 1
==22088==    at 0x2C9FE7B1: _evry_cb_show (evry.c:3046)
==22088==    by 0x5BE9918: _eo_evas_object_cb (evas_callbacks.c:65)
==22088==    by 0x69A16F4: _eo_base_event_callback_call (eo_base_class.c:715)
==22088==    by 0x69A3041: eo_event_callback_call (in /usr/lib/libeo.so.1.17.99)
==22088==    by 0x5BEA0B3: evas_object_event_callback_call (evas_callbacks.c:240)
==22088==    by 0x5C2577C: evas_object_inform_call_show (evas_object_inform.c:12)
==22088==    by 0x5C1ED24: _show (evas_object_main.c:1360)
==22088==    by 0x5C1EADA: _evas_object_efl_gfx_base_visible_set (evas_object_main.c:1313)
==22088==    by 0x575D80A: efl_gfx_visible_set (in /usr/lib/libefl.so.1.17.99)
==22088==    by 0x5C1EA58: evas_object_show (evas_object_main.c:1291)
==22088==    by 0x479FCF: _e_comp_intercept_show_helper (e_comp_object.c:1616)
==22088==    by 0x47A02A: _e_comp_intercept_show (e_comp_object.c:1630)
==22088==  Address 0x17621591 is 81 bytes inside a block of size 120 free'd
==22088==    at 0x4C2AE6B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==22088==    by 0x2C9F95A8: _evry_window_free (evry.c:993)
==22088==    by 0x2C9F8065: evry_hide (evry.c:366)
==22088==    by 0x2C9FB9A2: _evry_cb_key_down (evry.c:1926)
==22088==    by 0x8F6ED4A: _ecore_call_handler_cb (ecore_private.h:316)
==22088==    by 0x8F6FC92: _ecore_event_call (ecore_events.c:518)
==22088==    by 0x8F7A15A: _ecore_main_loop_iterate_internal (ecore_main.c:2339)
==22088==    by 0x8F784A8: ecore_main_loop_begin (ecore_main.c:1284)
==22088==    by 0x4403F6: main (e_main.c:1087)
==22088==  Block was alloc'd at
==22088==    at 0x4C2BBD5: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==22088==    by 0x2C9F8D7D: _evry_window_new (evry.c:758)
==22088==    by 0x2C9F772D: evry_show (evry.c:177)
==22088==    by 0x2C9F711C: _e_mod_run_defer_cb (e_mod_main.c:537)
==22088==    by 0x8F75267: _ecore_call_task_cb (ecore_private.h:282)
==22088==    by 0x8F7574E: _ecore_idle_enterer_call (ecore_idle_enterer.c:174)
==22088==    by 0x8F7A05B: _ecore_main_loop_iterate_internal (ecore_main.c:2261)
==22088==    by 0x8F784A8: ecore_main_loop_begin (ecore_main.c:1284)
==22088==    by 0x4403F6: main (e_main.c:1087)
2016-03-09 14:25:16 -05:00
Mike Blumenkrantz 2ec02258ec fix xwayland compile with 1.18 eo 2016-03-09 13:13:45 -05:00
Mike Blumenkrantz d44de2e192 add window maximize animation
this has been implemented and working well in desksanity for a couple years,
and it's a trivial thing to bring over now that efx is available
2016-03-08 18:06:36 -05:00
Mike Blumenkrantz aa024e0a4f bump E_VERSION_MAJOR and modapi 2016-03-08 18:06:36 -05:00
Mike Blumenkrantz 103da25b94 unify client e_hints window size setting in move/resize callbacks 2016-03-08 18:06:36 -05:00
Chris Michael d49f60dd8a don't have to hook the ecore_evas resize callback here as that should
be handled by elm now

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-03-08 16:09:55 -05:00
Mike Blumenkrantz 8ca293423a always run client res changes in e_comp_canvas_update()
this function is only called when screen geometry (or useful geometry) has
changed, and so all clients should have their geometries checked at this point
to ensure that they update for any new zone obstacle changes which have occurred
2016-03-08 15:59:57 -05:00
Mike Blumenkrantz b710f6f3b3 block re-unsetting of native surface for comp objects
due to recent evas internals changes, this breaks software compositing
2016-03-08 14:53:00 -05:00
Mike Blumenkrantz 69fe80959b manually calc bryce center-screen coords
e_comp_object_util_center_pos_get() uses zone useful geometry
2016-03-08 13:00:43 -05:00
Derek Foreman df7bc5963d Remove argb_convert for wayland buffers
Wayland buffers are currently either ARGB or XRGB - we don't need to
convert either of these, we just need to set alpha appropriately - which
we now do.
2016-03-08 12:46:32 -05:00
Derek Foreman b4bcb1dc23 Don't use e_pixmap_image_data_argb_convert for wayland images
All we really need for wayland is to set alpha properly, so we can
save the conversion/copy when doing XRGB.
2016-03-08 12:46:32 -05:00
Derek Foreman 2e0e74f087 Stop copying all wayland buffers
The new buffer management shouldn't require this anymore.
2016-03-08 12:46:32 -05:00
Derek Foreman e4490c4bf6 Re-enable window close animations for wayland
These should work properly with the new buffer management code.
2016-03-08 12:46:32 -05:00
Derek Foreman 36586fbf9c Remove wayland buffer reference
This code is similar to code in weston, but doesn't really work properly
for us in E, since this can blow up buffers behind the async renderer's
back.

The rest of the reference code has been pushed into e_pixmap, so we can
kill this all now.
2016-03-08 12:46:32 -05:00
Derek Foreman dfc7c26ce4 Rework wayland buffer handling
We need to keep wayland buffers around even if they'll never be written
to again.  This is part of Buffer_Reference's task in weston, but we
already have our pixmap abstraction which can serve mostly the same
purpose.

Remove the "buffer reference" stuff from e_pixmap and replace it with a
kept buffer for the last commit.

Add shared memory pool references to keep pools from going away on us.
2016-03-08 12:46:32 -05:00
Derek Foreman b98e78d464 Track whether a render is in progress or not
We'll need this to protect certain wayland operations.
2016-03-08 12:46:32 -05:00
Derek Foreman 33582859e2 Don't allow deleted wayland clients to set the cursor 2016-03-08 12:46:32 -05:00
Derek Foreman 65166c5a36 Take an extra reference on wayland clients
We need to make sure wayland clients aren't deleted while the scene
graph has their data pointers, so we take an extra reference when creating
them.

We drop that reference by clearing the client's image data and putting it
in the render post_updates list.
2016-03-08 12:46:32 -05:00
Derek Foreman a35c7637a2 Track whether objects are on the post_updates list or not
Will use this to prevent accidentally adding objects to the list twice
2016-03-08 12:46:32 -05:00
Derek Foreman ac47fd61ca Render deleted objects as long as they still have a pixmap
In wayland we can be presented with a new frame before being deleted.  If
we've never displayed that frame we should (since we released all pointers
to the old frame when we got the new one)
2016-03-08 12:46:32 -05:00
Derek Foreman e5e887c773 Add a NULL check in native_surface_init under wayland 2016-03-08 12:46:32 -05:00
Mike Blumenkrantz b3cda14e1b add bryce autohide/size getters, pull related values into wizard 2016-03-08 12:43:35 -05:00
Mike Blumenkrantz 82a4dbda8d enforce accurate resizing/orienting when changing the location of a bryce 2016-03-08 12:31:10 -05:00
Carsten Haitzler 0d9af6c3d6 e xkbswitch: don't free layouts that are just pointed to in instances
we free the instance layout even though tthis is never duplicated but
jhust set to point to the current_layout. don't free it as this causes
a double-free. this fixes a crash here.

@fix
2016-03-08 13:45:59 +09:00
Mike Blumenkrantz 114a604166 apply x11 focus/unfocus using jobs
if multiple x11 clients receive focus during the same mainloop iteration,
an almost unbreakable cycle of window focus chaining will occur, resulting in
both windows being focused simultaneously--or so it appears--which results in
no window being able to receive input. to avoid this, ensure that only one x11
client can receive focus in a given loop iteration
2016-03-07 14:47:26 -05:00
Mike Blumenkrantz 7e91bc721a apply x11 mouse in event for clients using a job
due to event bursts, it's possible for multiple x11 clients to receive
mouse in events on during the same main loop iteration. in this scenario,
only the last client has received an actionable mouse in, and applying this
event after the dispatch has completed ensures that multiple clients do not
all receive mouse in+out events during the same loop

this greatly improves mouse-based focus reliability in a number of cases
2016-03-07 14:45:32 -05:00
Mike Blumenkrantz e385bfa2d6 only use x11 mouse out event if client has received mouse in previously 2016-03-07 14:44:16 -05:00
Mike Blumenkrantz 0ba369330d reverse ordering for x11 client mouse in NotifyVirtual and NotifyInferior details
apparently I did this backwards.

ref 7b7dbbc249
2016-03-07 14:43:02 -05:00
Mike Blumenkrantz b4559055a7 reject x11 client mouse-in events on comp object based on frame geometry
mousing over a window for an x11 client should always yield x11 mouse events
in cases where mouse eventing is required; any events occurring on the comp
object in other cases inside the xwindow region are able to be ignored
2016-03-07 14:40:27 -05:00
Mike Blumenkrantz 9002c4d7a5 Revert "send mouse out+in on desk flip end"
This reverts commit 782cf3606e.

should be resolved in a better way with upcoming commits
2016-03-07 14:39:56 -05:00
Mike Blumenkrantz 9589ec7d54 stack time gadget popups on POPUP layer 2016-03-07 11:34:17 -05:00
Mike Blumenkrantz c139796082 delete gadget display object during object deletion
fixes crashing when unloading modules with active gadgets
2016-03-04 17:29:15 -05:00
Mike Blumenkrantz f87020189c add bryce editor to Desktop item in main menu 2016-03-04 14:23:44 -05:00
Mike Blumenkrantz 863a50acbb bump config version, add mouse/wheel bindings for manipulating gadgets/bryces
this copies the user's current bindings for moving/resizing/menu on a window
and applies them to gadget-related objects for UX coherency
2016-03-04 14:23:44 -05:00
Mike Blumenkrantz 21a6a600c3 add button to desklock config dialog for configuring gadgets
the current security policy for this is based on two points:
1) don't add gadgets to your lockscreen that you don't want on your lockscreen
2) see #1

future improvements here will probably add gadget info to show what risks a gadget
may incur when placed on the lockscreen
2016-03-04 14:23:44 -05:00
Mike Blumenkrantz dad9160ffa add new time module with clock gadgets
this is the successor to the clock module/gadget. it uses separate config files
and theme groups from the "clock" module.
2016-03-04 14:23:44 -05:00
Mike Blumenkrantz 24fe43d735 add new wireless module/gadget
this is the successor to the connman module/gadget. it does not use
or depend on econnman.
2016-03-04 14:23:44 -05:00
Mike Blumenkrantz f527e6c8fb add new start gadget
this is identical to the old one so it will just be merged into the existing module
2016-03-04 14:23:44 -05:00
Mike Blumenkrantz 6e032ce35d add bryces: new shelf replacement
see e_bryce.h
2016-03-04 14:23:44 -05:00
Mike Blumenkrantz d26c49b3ce add new gadget system
see e_gadget.h
2016-03-04 14:23:44 -05:00
Mike Blumenkrantz d3fe687ada add a namespaced version of efx
this will eventually be merged into the efl tree but the current release
cycle is not a good time for it
2016-03-04 14:23:44 -05:00
Mike Blumenkrantz d4996e2db3 trigger mouse binding end callbacks on mouse up
broken by copy/paste errors last month

ref fe5d2e6e61
2016-03-04 13:08:09 -05:00
Mike Blumenkrantz ed7a0246f9 don't directly use image data when creating a comp object mirror
in the case where pixmap image data does not yet exist, the returned
pointer will be garbage data from the internal buffer
2016-03-04 13:06:41 -05:00
Mike Blumenkrantz 1a93efc3ae trigger elm config save during e config save
if an e config save is queued, it may also be the case that an elm config
value has been updated due to the intertwined nature of these configs.
adding a silent save here without a flush will account for such cases
2016-03-01 11:38:55 -05:00
Chris Michael 5b8d133d76 add prototype functions for missing wl_data_source interface
As we require wayland 1.10 now, there were missing functions for the
wl_data_source interface. This patch just adds placeholders for those
missing functions until we can implement them

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-03-01 10:52:50 -05:00
Chris Michael 0fb83f8c84 don't call deprecated ecore_drm_fb_set function when displaying drm
alert box

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-03-01 10:47:19 -05:00
Chris Michael dfce9c44fe add prototype function for missing wl_seat interface
As we require wayland 1.10 now, the wl_seat_interface implementation
was missing a function pointer for the 'release' request. This patch
just implements a function placeholder until we can implement it.

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-03-01 10:45:21 -05:00
Chris Michael 0275987d69 add prototype functions for missing wl_data_offer interface
As we require wayland 1.10 now, there were missing functions for
wl_data_offer interface. This patch just adds placeholders for those
missing functions until we can implement them

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-03-01 10:27:13 -05:00
Chris Michael 993f387433 don't define variables that we are not going to use
If our efl version is not >= 1.18, then the rotations and orient
variables here end up being unused. This patch just moves those
variables (and their usage) inside the 1.18 version check

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-03-01 10:22:21 -05:00
Mike Blumenkrantz 1507f815a5 do not add render updates during damage of deleted clients 2016-02-29 13:33:52 -05:00
Mike Blumenkrantz fb51f4d98d remove impossible null check in color dialog
CID 1294267
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz fac201c528 simplify ipc socket creation
in trying to be extra secure here, a security hole is created due to time
between mkdir and stat calls

CID 1039781
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz dc33712069 remove ipc command allowing arbitrary command execution by the compositor
http://i2.kym-cdn.com/photos/images/facebook/000/565/399/9c0.jpg

CID 1291836
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz fd8cbcd9f0 simplify static grab case statements
CID 1267213
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz d6802e9c42 use uint instead of int for eina_list_count() return in cpufreq (trivial)
CID 1267212
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz bd0142536a remove useless client_add handler in e_ipc
CID 1267210
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz 8eae3f3a96 remove unused value in config profile saving
CID 1261287
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz d8f0bea57a prevent potential null deref during pager (plain) window drag
CID 1237302
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz adf851de4c replace static buffer usage with binbuf in e_fm_ipc
CID 1039804
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz 1e1754466d use dblequal for double comparisons in edgebindings config 2016-02-29 10:43:02 -05:00
Mike Blumenkrantz f723b88d50 use strbuf instead of strcat in edgebinding string synthesis
CID 1039800
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz fcac68958e use strbuf instead of strcat in keybinding string synthesis
CIDs 1039798, 1039799
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz 91eede9577 strcpy -> strncpy in evry files plugin 2016-02-29 10:43:02 -05:00
Mike Blumenkrantz ce6f252317 remove multihead env var setting in e_exec
multihead no longer possible, no point in keeping this

CID 1039793
2016-02-29 10:43:02 -05:00
Mike Blumenkrantz 5651eb6c3f remove DISPLAY usage from E_IPC_SOCKET value
pid should be enough here

CID 1039791
2016-02-29 10:43:01 -05:00
Mike Blumenkrantz 2343ab165a remove security hole in e_start_main
if a file called ~/.e-mtrack existed then during startup the launcher would
read the first line of this file and set LD_PRELOAD to that value

CID 1039785
2016-02-29 10:42:39 -05:00
Mike Blumenkrantz f4023fc6c1 do not set XCURSOR_PATH variable if re-setting existing value 2016-02-29 08:12:40 -05:00
Mike Blumenkrantz c5ff37e56e use strbufs instead of strcat in fwin navbars
CIDs 1039794, 1039795, 1039796
2016-02-29 07:55:37 -05:00
Mike Blumenkrantz a424542459 disable emotion_shutdown during shutdown procedure
this manually iterates main loop and is guaranteed to trigger unexpected
behaviors and/or crashes
2016-02-27 14:19:28 -05:00
Mike Blumenkrantz bbd4d2fbae force changed when adding or removing keyboard layouts in config
fix T3208
2016-02-26 16:45:44 -05:00
Mike Blumenkrantz 71a85b7d08 update winlist ui when using directional window selection
fix T3152
ref b1378ce77b
2016-02-26 16:37:52 -05:00
Mike Blumenkrantz 7b07b03c21 track/manage size hints for zoomap child objects
this enables the use of zoomaps for elm objects
2016-02-26 15:03:22 -05:00
Mike Blumenkrantz 8c2396cd9b setup comp util object zoomap before setting its child
this avoids some minor canvas thrashing since the zoomap will try
to reapply existing geometries to the child instead of setting 0 and
triggering infinite callbacks
2016-02-26 15:02:15 -05:00
Mike Blumenkrantz 9fa7f41e35 add zoomaps unconditionally for all comp util objects
these objects are more likely to be animated regardless of type, so adding
a zoomap will greatly improve the animation visual
2016-02-26 11:46:49 -05:00
Mike Blumenkrantz e1035aef81 Revert "e comp: fix crashes on exit/restart when e_comp is NULL"
This reverts commit 26a7ba3a58.

this can only occur if something forces an event flush during shutdown.
in this case, whatever is triggering the event flush is a bug, not the
dereferencing of a pointer which is guaranteed to exist for the normal
lifetime of the process
2016-02-25 15:05:24 -05:00
Mike Blumenkrantz 357fd48ff8 remove emotion_init/shutdown from e_video
this already happens during regular startup
2016-02-25 15:04:51 -05:00
Mike Blumenkrantz beee048282 do not decrement e_comp->new_clients for non-new clients during _e_client_eval
this overflows the int!
2016-02-25 14:16:25 -05:00
Mike Blumenkrantz 9d3f4564b3 make bgpreview create vdesk config dialog on mouse up instead of mouse down
if the option to always raise a window on click is enabled, clicking an internal
window in a way which creates another window will cause a race condition where
the clicked window is raised over the newly created window

there is no obvious policy-wide solution to this issue, but making this change
at least resolves the issue in question

fix T3210
2016-02-25 14:00:01 -05:00
Mike Blumenkrantz bb1c0dba28 fix bgpreview internals parenting
fixes errors on object deletion as well as object visibility

ref be1b11ca28
2016-02-25 13:39:32 -05:00
Mike Blumenkrantz 8c969b5f5f remove some unused variables 2016-02-25 13:37:52 -05:00
Mike Blumenkrantz 6fe6fba44e redo wayland pixmap ids to use monotonic decreasing ints with no collisions
using pointers for this turned out to have some corner case collisions, so
now just use something totally unrelated to the surface to ensure uniqueness
2016-02-25 11:16:09 -05:00
Carsten Haitzler f5148ddbf3 e - efm: fix op registry listener add and dont use eina_error
eina list stopped using eina_error like... so so so so so long ago like
before 1.0 - so eina_error value may be something junk and from
somewhere else where the list append succeeded but ena error said
fail- and that is what was happening and things crashed. this fixes this

@fix
2016-02-23 13:54:24 +09:00
Mike Blumenkrantz 41e95cc3f4 enable comp object image data refresh if a dirty call is made with no damages
this indicates that a buffer has changed, but there is no new data to draw
2016-02-22 17:48:35 -05:00
Mike Blumenkrantz 89df60a6cd add comp object util callback for closing on Escape key
this is the most common usage for autoclose callbacks, so having it
available as api saves a lot of typing for the codebase
2016-02-21 11:50:23 -05:00
Mike Blumenkrantz 87d4e254f0 pre-remove pixmap from x11 clients during del hook
this breaks the compositor!

ref 0ca200513e
2016-02-19 18:02:54 -05:00
Mike Blumenkrantz 3f3ed7ae99 reshuffle x11 comp init to cleanup on failure cases
in the event of a wayland start, x11 comp init will fail, meaning that
cleanup must occur in order to avoid erroneous triggering of x11 handlers

 #TooSoon
2016-02-19 17:07:03 -05:00
Derek Foreman 625e417bb2 Remove wayland focus timer in delete callback
If we don't remove it now it could fire later when the structures
it depends on are already freed.
2016-02-18 12:40:52 -06:00
Derek Foreman 0ca200513e Move pixmap free to client free from client destroy
Under wayland we need the pixmaps to exist until after the close
animations finish, even if clients can perform new rendering.

@fix
2016-02-18 12:31:31 -06:00
Derek Foreman b30c96e142 Use eina_list_merge instead of eina_list_move for wayland lists
We should use eina_list_merge for concatenating lists instead of
eina_list_move.
2016-02-18 12:31:31 -06:00
Derek Foreman 6a65d2a546 Protect the wayland frame callback list from corruption
The resource destroy callback for frame callbacks will walk the frame list
to remove itself.  When freeing that list we need to make sure the
resource destroy callback doesn't see the same list we're walking and
corrupt it.
2016-02-18 12:31:31 -06:00
Derek Foreman 6f3e670f75 Fix xdg-shell destructors
_e_shell_surface_destroy() is already the implementation's destructor, so
it'll be called when the surface is destroyed anyway.  What we have to do
here is just call wl_resource_destroy(resource) - which will call that
function for us.

It'll also do us the favor of actually destroying the resource and
removing it from the client's resource list so we won't get a SECOND call
to _e_shell_surface_destroy() on client exit.
2016-02-18 12:31:31 -06:00
Derek Foreman 7063aa3bb8 Initialize pointer before passing to e_wheel_bindings_find()
It's going to dereference it, so init it to NULL.
2016-02-18 12:31:31 -06:00
Derek Foreman c373331f94 Remove wayland frame callbacks from subsurface cache on destruction
There are 3 places a frame callback could be hiding.  frames list,
pending.frames list, or subsurface cached.frames list.  We weren't
clearing it from the subsurface cache on destruction.
2016-02-18 11:51:10 -06:00
Derek Foreman cd3a071519 Initialize pointer before calling e_bindings_mouse_button_find()
The pointer is dereferenced, so it should have an initialized value.
2016-02-18 11:50:18 -06:00
Mike Blumenkrantz 3f82a7f1fb return no binding found when trying to incrementally resolve end-of-list mousebinds
in the case where every binding until the end of the binding list has been rejected,
returning NULL must happen in order to inform callers that there is no more resolving
to be done, breaking out of an otherwise infinite resolve loop

ref fe5d2e6e61
2016-02-17 12:36:34 -05:00
Mike Blumenkrantz c14adb768f improve enforcement of shelf autohide-related window adjustment
for whatever reason, there's a global option which makes windows adjust
when a shelf autohides as well as a per-shelf option to ignore the global
option

in the case where the global option is not enabled, there is no reason to
check the per-shelf option

ref 5d63b07ca3
2016-02-17 11:36:30 -05:00
Derek Foreman 3e9029ea08 Ensure wayland clients haven't been deleted when processing callbacks
Summary:
It's apparently possible to trigger at least some of these by interacting
with a client as it's closing, so add a bunch of checks.

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3699
2016-02-16 16:41:03 -05:00
Mike Blumenkrantz a9b4754776 do not clamp comp object input regions to 0,0
this breaks input for clients using csd which are aligned at x|y axis
2016-02-16 15:36:56 -05:00
Gustavo Lima Chaves 92eb0572e2 e/quickaccess: Make "Skip window list" a quickaccess behavior option too. 2016-02-16 14:19:04 -02:00
Mike Blumenkrantz e8b8fe8310 add flag for zone obstacles to indicate verticality
I added a lower quality and less precise workaround for this before
since I didn't have enough test cases to think of something which would
be suffiently good to handle all cases.

as a result, initial calculations for obstacles would incorrectly detect
horizontally-oriented obstacles as being vertical, causing inconsistencies
in window placement. this would become even more severe if the obstacle
never resized itself, erroneously modifying window placement to position
around obstacles which did not exist

having a hint on the obstacle to indicate a direction is sufficient for
most cases, specifically zone useful geometry calcs, where obstacles are
expanded to cover the entire screen on which they reside and must expand
accurately based on the orientation of the obstacle

ref 10c43efc83
2016-02-08 14:52:55 -05:00
Mike Blumenkrantz 7d3319e6ee do not perform special case position adjustment for re_manage clients
this case is solely for handling clients which are created with nonzero
position, eg. an x11 window trying to display itself centered upon initial
creation. re_manage indicates a window which is re-managed after a restart of
enlightenment, so these windows clearly do not fall into that case

fixes an issue where windows would move up+left by the size of their frame during
restart

ref 95e133282e
2016-02-08 14:52:55 -05:00
Mike Blumenkrantz 493f6f595b Revert "e - restart window positioning - fix it"
This reverts commit d0229b3652.

see following patches
2016-02-08 14:51:21 -05:00
Carsten Haitzler d0229b3652 e - restart window positioning - fix it
so every time i restart e i have my windows all messed up. it's
INSANELY annoying and time consuming every single time having to move
a dozen or more windows back to where they should be just because i
restarted e. i've narrowed it down to 2 places. 1 which is trying to
handle "out of screen" windows and during startup it seems things are
not quite stable yet as the randr code figures things out until the
event storm settles down.

when this is then fixed - another bit of code just shuffles windows up
all the time by a titlebar whcih is also supremely annoying. this is
the code that adopes a new frame for a window.

so the nasty hack to avoid piles of pain right now is for the first 5
seconds of e's life - don't do this stuff. at least you can now use e
and not be annoyed to hell and back every restart.

yes a nicer fix may be better - but that's going to take a lot more
time and patience and until then - this will do.
2016-02-06 11:31:01 +09:00
Carsten Haitzler e75af1536d Revert "e bg: remove debug printf"
This reverts commit 77c2a2a3d1.

oops - i forgot i had all this other debugging there
2016-02-06 10:29:04 +09:00
Carsten Haitzler 77c2a2a3d1 e bg: remove debug printf 2016-02-06 10:27:09 +09:00
Mike Blumenkrantz e7a40cfc5f remove debug printf from e_bg
ref be1b11ca28
2016-02-05 13:29:44 -05:00
Carsten Haitzler 99a98997ad e - bgpreview widget - fix sizing of normal wallpapers after video add
sizing of bg previuews with normal edje wallpapers broke when adding
in video - fix back to where it was and working again
2016-02-05 22:01:27 +09:00
Carsten Haitzler be1b11ca28 e - video bgs - allow selection of video files for wallpapers
this allows video files to be played for wapapers - they loop and run
indefinitely. it is a special video object that shares the same source
across all outputs, so if you have the same video set, on 2 screens
(or desktops) then it's only decoded once and uses proxies to
ducplicate. this works in the pager too (it uses proxies).

this is for amusement and fun and ... because we can. :)
2016-02-05 18:35:49 +09:00
Carsten Haitzler 26a7ba3a58 e comp: fix crashes on exit/restart when e_comp is NULL
when we are shutting down i seem to get into a state where e_comp is
null yet we are still processing events. this fixes that and checks.
2016-02-05 18:35:49 +09:00
Mike Blumenkrantz b9c45c6159 check whether to reapply all callbacks for comp util objects when changing type
in the case where the existence of a zoomap in the comp frame edje has changed
during the course of changing the type, these callbacks must be updated with new
data params in order to ensure accurate operations during callbacks
2016-02-04 16:24:44 -05:00
Chris Michael 38d3654982 only specify sw, sh, fh variables if we intend on using them
This patch fixes an issue where building with wayland support but
disabling wl_drm module would cause compiler warnings about these
variables being defined but not used

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-02-04 13:14:29 -05:00
Mike Blumenkrantz 896781204f clamp minimum shelf size to 20px in shelf config
the majority of gadgets do not render correctly/anything under this size,
so allowing it to be set is not going to be helpful to anyone
2016-02-04 12:58:38 -05:00
Mike Blumenkrantz a2279cf119 remove efl version check macros in xwayland dnd handlers 2016-02-04 12:58:37 -05:00
Chris Michael 04e108dbac correctly wrap 1.18 API function calls
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-02-04 11:19:56 -05:00
Chris Michael b88e8b7a4d wrap 1.18 drm rotation functions around #ifdefs
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-02-04 11:17:48 -05:00
Chris Michael 04ea946f3d Add support for configuring output rotations
When running under DRM, this patch adds support for getting the
supported rotations of an output, listing them in the Screen Setup
dialog, and adds the ability to set a rotation on a given screen

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-02-04 09:16:02 -05:00
Mike Blumenkrantz fe5d2e6e61 add bool return for mouse-based E_Action callbacks
in many cases, a mouse action's callback will fail to execute as a result of multiple
objects being under the pointer at the time of the event. in this case,
the callback should be able to determine whether action callback processing should
continue.

as an example, when attempting to execute an action which only activates for
client objects, if the passed object is not a client then the callback should return
false to indicate that it was not able to perform the action for the given object,
allowing further actions to be attempted on this object
2016-02-03 18:09:18 -05:00
Mike Blumenkrantz 39c6f1c33a ignore subsequent bindings with ANY context after finding a previous ANY binding
if multiple ANY bindings exist for a given event, return the first one found
2016-02-03 18:09:18 -05:00
Mike Blumenkrantz 331a3e74e1 disable map when unsetting zoomap child
if the existing map is left enabled when the child is removed from the
zoomap, the child object will be permanently misrendered with the previously
applied map
2016-02-01 17:31:20 -05:00
Mike Blumenkrantz 6a4488faea set child of zoomap as new content for comp util objects when changing type
the zoomap is deleted here anyway, so all this does is crash

ref 980135fc38
2016-02-01 17:23:02 -05:00
Mike Blumenkrantz b5103ac3e2 compare key OR keyname in e_bindings_key_event_find()
keys such as tab will have different names in key and keyname, eg.
"Tab" vs "ISO_Left_Tab", and both names are valid for comparisons

thanks to @billiob for pointing out this regression
2016-02-01 11:31:57 -05:00
Mike Blumenkrantz 782cf3606e send mouse out+in on desk flip end
this triggers mouse in events on objects under the mouse in order to
forcibly reapply focus for mouse-based focus policies

fix Tfrance
2016-02-01 11:04:38 -05:00
Mike Blumenkrantz 6544ae2c65 add back binding key->keyname check in e_bindings_key_event_find()
second copy/paste failure of the day...
2016-01-25 16:56:52 -05:00
Mike Blumenkrantz d6772d8911 update xkb.cur_group and send event upon serializing an EFFECTIVE layout in wl input
according to xkbcommon, the group returned from serializing the EFFECTIVE layout
is the one which is currently active. this array index should match up with the
list used in the xkb part of E_Config
2016-01-25 16:33:49 -05:00
Mike Blumenkrantz 8678e01ce9 do not update keymap group in _e_comp_wl_input_keymap_update()
this state is dead, and any group changes which have been made should
be reapplied based on the new state
2016-01-25 16:33:49 -05:00
Chris Michael c692381f2e add missing EINA_UNUSED for _xkb_changed_state function
This function does not use the event parameter, so mark it as unused

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-25 14:02:48 -05:00
Mike Blumenkrantz 10c43efc83 fill zone obstacles on x/y axis during useful geometry recalc
this fixes an issue where shrinking vertical shelves would cause vertically
maximized windows to always match the height of the shelf

possibly needs improving later depending on usage of zone obstacles in
the future...
2016-01-25 13:45:47 -05:00
Mike Blumenkrantz ea2ec5a2f3 use desk obstacles for calculating desk-specific zone useful geometry
typo--
2016-01-25 13:41:13 -05:00
Mike Blumenkrantz 6a20006ac2 prefer specific context activation for bindings over generic context
in the case where an ANY context action exists and a SPECIFIC context action
also exists for the exact same binding (eg. alt+click), the action which was
added to the config first would be activated

this is unreliable and confusing since it's impossible for users to determine
the order without either manually examining the config or clearing all bindings
and starting over, and this presupposes that the user is even aware of such an
issue

instead, now the most specific binding context will be chosen, with ANY used only
as a fallback in the case where no other binding could be activated for a given
scenario
2016-01-25 13:10:03 -05:00
Mike Blumenkrantz 37394b26c3 use event-finding functions to simplify key/edge binding handlers 2016-01-25 13:00:11 -05:00
Mike Blumenkrantz 93b106f17e add edge binding event find function
similar to key/mouse/wheel functions
2016-01-25 12:51:56 -05:00
Mike Blumenkrantz 6e3b9763b0 remove e_bindings_key_up_event_find, rename other one to e_bindings_key_event_find
key up and key down are identical, having two functions here is misleading
2016-01-25 12:38:45 -05:00
Mike Blumenkrantz e88823dd1b disable shelf shadows if "noshadow" data item exists in shelf theme
this used to be handled by the "shaped" flag back when shelves had their
own windows, but the handling for it was lost during the transition away from
the E18 compositor
2016-01-25 12:36:21 -05:00
Mike Blumenkrantz c637c70f1c add extra param to e_bindings_key_down_event_find() to return found binding
this should match the corresponding mouse binding function
2016-01-25 12:27:54 -05:00
Mike Blumenkrantz 6d45baa510 do not shortcut access of Efreet_Desktop->x hash in fileman
this subverts thread safety and also (now) avoids return data validation

fix T3096
2016-01-25 11:29:55 -05:00
Mike Blumenkrantz 85d7c121bd do not attempt to create x11 canvas during xwayland init
this kills the gl_drm engine
2016-01-22 17:06:42 -05:00
Mike Blumenkrantz 8f510bc228 add macros for creating and binding wayland globals in extensions file
wayland requires a ton of boilerplate code. anything that can be done to
reduce the amount of work (copy/pasting) required to handle extension adding
is a plus
2016-01-22 16:53:02 -05:00
Mike Blumenkrantz edba13322a disable bindings during wayland screenshot operations
recursive action activation is very bad.
2016-01-22 16:31:07 -05:00
Mike Blumenkrantz 446f9c4b68 defer screenshot action execution using a job
the drm screenshot action forcefully iterates the main loop, causing
the current loop (which triggered the action) to return after the screenshot
action has ended. during this time, it's possible for other actions to also
trigger, including triggering subsequent screenshot actions, so it's necessary
to defer the execution of the action until after the initial loop which triggered
the action has returned

 #Recursion
2016-01-22 16:25:32 -05:00
Mike Blumenkrantz 542079d841 move all wayland extension implementations into e_comp_wl_extensions.c
e_comp_wl.c getting a bit hard to manage already, future extension additions
are going to make it a lot worse
2016-01-22 16:25:29 -05:00
Mike Blumenkrantz df5106f1cb ship tiling module edj file
this never gets edited, no point in compiling it every build
2016-01-22 16:25:29 -05:00
Mike Blumenkrantz 1d092a08b4 move wayland protocols and generated files into separate directories
this should make it easier to track them as e starts shipping more private
extensions
2016-01-22 16:25:12 -05:00
Mike Blumenkrantz c86aa21e90 remove comp canvas key handler shortcuts for passing keys to wayland clients
now handled normally by disabling bindings
2016-01-22 13:13:08 -05:00
Mike Blumenkrantz fc6458bccd re-add MANAGER context bindings
these bindings activate before any other handler can process the
corresponding event and will block all propagation of the event upon
activation

as an example, the alt+wheel default binding for flipping desks currently
passes through a number of event handlers prior to activating the binding,
meaning that it's possible for the wheel action to have unwanted effects
when these handlers cause actions before the binding stops the propagation.
using a MANAGER context instead ensures that this is not possible
2016-01-22 12:59:19 -05:00
Mike Blumenkrantz 194b1ab336 disable binding activation when grab dialog, menus, or dnd is active
these are all cases where bindings should fail to activate in order to
avoid interfering with current operations

also fixes an issue where attempting to add or modify an existing
mouse/key/wheel binding would fail as a result of that binding activating
while the grab dialog was active
2016-01-22 12:58:16 -05:00
Mike Blumenkrantz 8500517e34 add function for disabling mouse/key/wheel/signal bindings
currently there are a lot of workarounds for inhibiting these bindings,
but it's getting harder to keep track of all the conditions and cases
where bindings need to be worked around

this should greatly simplify the process of toggling binding activation
in cases where such behavior is undesirable

acpi bindings are always allowed since they are unlikely to interfere with
operations where direct-input bindings would be harmful
2016-01-22 12:49:05 -05:00
Mike Blumenkrantz f54bf1ec60 allocate E_Shell_Data for all xdg surfaces (popups)
this crashes if the shell surface does not have shell data
2016-01-21 17:21:31 -05:00
Mike Blumenkrantz 9245b1ec27 handle more mouse buttons in wayland
according to the "reference" compositor this is how it works
2016-01-21 16:28:25 -05:00
Mike Blumenkrantz fabf2de023 determine new_client state for xwayland clients using xwayland pixmap
in the case where the xwayland pixmap has previously been marked as usable,
the corresponding client is guaranteed to have gone through the new_client
eval. allowing a second eval will result in wrong geometries being set for
the window in some cases
2016-01-21 15:35:05 -05:00
Mike Blumenkrantz b10344899d use zone obstacles for resist calculations 2016-01-21 15:34:26 -05:00
Mike Blumenkrantz 8d94637e28 allow instant client mouse actions to persist until mouse up
if an action triggers on a window, the triggering mouse event should
not be passed to the window. the only way to determine this is if the
action object lives through the entire event
2016-01-21 14:43:52 -05:00
Mike Blumenkrantz 945eafd791 unify client mouse action ending
the code for this in most places was identical, but in some places it was
not, leading to behavior inconsistencies and potentially dangling objects
2016-01-21 14:29:10 -05:00
Mike Blumenkrantz ec0cbc7ead remove duplicate E_Config_XKB_Option config descriptors
this appears to have been a copy/paste mishap

partially reverts e1369a24bd
2016-01-21 14:27:08 -05:00
Mike Blumenkrantz 3e8b5890bc enable surface visibility fallthrough for drag clients
more surfaces with no shell interfaces
2016-01-21 13:38:58 -05:00
Mike Blumenkrantz d689ab5e75 track wayland client mouse button states as a full button mask
sending a button release event to a surface which has not previously
received a button press yields strange results
2016-01-21 13:38:58 -05:00
Chris Michael d09b1030b8 check siginfo si_code to verify that SIGUSR2 comes from user
When VT switching away and back, the kernel uses SIGUSR1 and SIGUSR2
to notify us of a vt switch event. That same signal was being trapped
here to toggle display of the 'fps' window. If we check the signal's
si_code, we can tell if this signal came from the kernel (as in vt
switch) or from the user (as is sent in 'kill'). This fixes the issue
of VT-switching back and forth under DRM would cause the compositor
'fps' display to appear.

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-21 11:28:31 -05:00
Mike Blumenkrantz d33a12b434 remove _e_comp_wl_focus_down_set()
this function does nothing for wayland clients and never should have
been used in this file
2016-01-20 17:06:50 -05:00
Mike Blumenkrantz 9c23679bac reenable fallthrough surface (un)mapping for subsurfaces during commit
subsurfaces have no shell interface and rely upon the map state of parent
surfaces to determine whether they are mapped
2016-01-20 17:06:45 -05:00
Mike Blumenkrantz 892c4a44ca add render updates for cursor clients if damages exist during set_cursor
this indicates a cursor surface which has been committed but could not be
rendered due to lack of shell interface and cursor hint
2016-01-20 17:05:46 -05:00
Mike Blumenkrantz 039c08617e remove duplicate visibility setting blocks from wayland surface commit
this is already present (and identical) in state commit
2016-01-20 17:05:46 -05:00
Mike Blumenkrantz 1a47836723 always apply damages and input regions during wayland commit
mapped status is not relevant according to spec
2016-01-20 17:05:46 -05:00
Mike Blumenkrantz 97d8f26724 do not set focus in wayland client show callback for cursor clients 2016-01-20 17:05:46 -05:00
Mike Blumenkrantz fbedd9dcac automatically mark wayland cursor surfaces as visible during set_cursor
a cursor client should be shown/hidden as needed despite its lack of a
shell interface, and having a special flag to identify these types of
surfaces makes it easier to do that
2016-01-20 17:05:46 -05:00
Mike Blumenkrantz ba40fb5cb4 add wayland-only mouse action for translating a button press to a key
in some cases it might be desirable to remap a mouse button to a key.
this is not very user-friendly since it requires device-specific key names
which need to be translated to/from files such as /usr/share/X11/xkb/keycodes/evdev

 #SamsungFeatures
2016-01-20 17:05:30 -05:00
Mike Blumenkrantz 40c1e796fe add function for wayland compositors to generate (fake) keyboard events
in automated testing scenarios, being able to generate input events is useful
for detecting regressions related to keyboard actions

this depends on an xkbcommon function which is expected to be in the 0.6.0
release, so dlsym here in order to make that a runtime dependency for now
since this is not going to be a widely-used feature

 #SamsungFeatures
2016-01-20 17:03:17 -05:00
Chris Michael 01ae2a6287 fix compiler warning about comparison between signed and unsigned ints
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-20 15:10:36 -05:00
Mike Blumenkrantz 00d3cdd7ab remove WAYLAND_ONLY ifdefs from kbd layout change actions 2016-01-19 16:03:58 -05:00
Mike Blumenkrantz d4bbe0727e |= instead of = flag setting for want_focus during wayland surface commit
if want_focus has already been set, this check should not unset it
2016-01-19 13:52:07 -05:00
Mike Blumenkrantz 77485f322e improve focus setting during wayland client show callback
take_focus will only be handled if the new_client flag is set. in all
other casees, focus_set should be called directly

new_client flag implies changed flag
2016-01-19 13:51:05 -05:00
Mike Blumenkrantz e3f829ace7 more correctly handle evry mouse detection on wayland
in this case, mouse events which are not originating from the internal
window are for the screen, and these coords can be used for determining
"mouse out". if the mouse event comes from the window, it is inside the window.

ref 7c661b54a9
2016-01-19 13:49:10 -05:00
Mike Blumenkrantz 0a2442d3b7 only do passthrough surface map on xwayland surfaces during commit
these was a workaround for handling early internal windows which is
no longer necessary now that they will handle their map states more
effectively

now, any wayland surface (not xwayland) requires a shell to map the
surface as intended
2016-01-19 13:46:29 -05:00
Mike Blumenkrantz 0df8c94572 set want_focus for xdg popup surfaces on creation
these types of surfaces should grab focus as early as possible, and
setting the flag at this time ensures that it will be handled during
the next client eval
2016-01-19 13:45:08 -05:00
Mike Blumenkrantz d52fffeec9 call xdg surface map when creating a surface for visible internal windows
if windows are created during startup, they will attempt to show themselves
before xdg surface operations are available, leading to a scenario where they
will never successfully map themselves. if the elm win object is visible, this
indicates a mapped internal window, so directly call the map function at this
time to make the window visible
2016-01-19 13:43:06 -05:00
Mike Blumenkrantz 092c834c5e Revert "Fix issue of compositor surface create passing wrong parameter to"
This reverts commit 67170f40a1.

this was changed intentionally to use the resource pointer in order to fix an
issue where external clients would reuse the same surface id,
thereby breaking the compositor with duplicate entries in the pixmap hash.

note, however, that internal windows in wayland DO use an int type pixmap id.
this is easily detected by checking the pid of the client for a window before doing
checks. this is necessary in order to be able to flag internal clients as internal
while still being able to match them with their surface id

also, uintptr_t is NOT indicative of an int type being used, it's an
int type which has the same size as a pointer, allowing casts between ints
and pointer.
2016-01-19 12:21:37 -05:00
Mike Blumenkrantz fbe959cccc remove need_reparent, reparented, first_damage flags from wl client comp_data
these flags, and related code, have no functional purpose in wayland
2016-01-19 12:10:49 -05:00
Chris Michael 1b36f93956 Fix issue of using the wrong id when finding pixmap client
Previously, we were passing in the wl window id into the
pixmap_find_client function. This is improper as the e_pixmap_new
functions take the surface resource id. To solve this, we will get the
Ecore_Wl2_window from the Evas_Object, fetch the surface id from that,
then pass those into e_pixmap_find_client.

This resolves an issue where the everything module was not working
properly.

ref T3058

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-19 10:48:38 -05:00
Chris Michael 67170f40a1 Fix issue of compositor surface create passing wrong parameter to
e_pixmap_new function

e_pixmap_new (when creating wayland windows) is expecting to get a
uintptr_t type passed into it (surface id). Previously we were passing
the entire wl_resource.

ref T3058

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-19 10:48:38 -05:00
Marcel Hollerbach 37ad839f51 e_comp_wl: only ignore ignored clients
a override client (in terms of override like x) should get focus, which
would not happen for the case of the function call.
2016-01-18 22:26:51 +01:00
Marcel Hollerbach 1c7cd941d0 xkbswitch: change icon if E_EVENT_XKB_CHANGED is emitted 2016-01-18 22:14:45 +01:00
Marcel Hollerbach bd7136ade1 xkbswitch: enable module for wayland 2016-01-18 22:14:45 +01:00
Marcel Hollerbach 8b2eb6fb8b e_xkb: emit changed event if ECORE_X_EVENT_XKB_STATE_NOTIFY is emitted 2016-01-18 22:14:45 +01:00
Marcel Hollerbach 7e74ad229c e_xkb: emit changed event if wayland keyboard has changed 2016-01-18 22:14:45 +01:00
Mike Blumenkrantz d12c5f9474 automatically attempt to create a wayland x11 output during comp init
at this point an x11 compositor has already failed to be created, so trying
to use x11 is safe and probably desired
2016-01-18 15:01:23 -05:00
Mike Blumenkrantz 352d023d76 use more correct defines for enabling wl output modules during comp init 2016-01-18 14:54:18 -05:00
Mike Blumenkrantz 4d717df870 if available, use wl output (nested) for wayland compositor creation
this defaults to using a nested compositor as the first choice:
harmless if it fails to create an output
2016-01-18 14:52:53 -05:00
Mike Blumenkrantz 262b303984 use 2/3 screen size for wl output (nested) compositor size
1/4 screen size is a compositor for ants
2016-01-18 14:52:11 -05:00
Mike Blumenkrantz f8a0cbd534 unset WM_STATE for x11 clients upon unmapping them
icccm provides conflicting spec info regarding how this property should be set.
according to 4.1.3.1:

When the window is withdrawn, the window manager will either change the state
field's value to WithdrawnState or it will remove the WM_STATE property entirely.

however, 4.1.4 states:

Only the client can effect a transition into or out of the Withdrawn state

so to be on the safe(r) side, deleting the property seems to be the best choice here

ref 41daddeacc

fix T3011
2016-01-18 13:46:31 -05:00
Mike Blumenkrantz 1dd45a3cc1 do not unset comp object native surface during shape apply
due to efl changes, unsetting a native surface now clears existing image pixel
data, resulting in a guaranteed blank render

ref T3011
2016-01-18 13:36:17 -05:00
Mike Blumenkrantz 3057b34098 create comp object updates tiler in helper function from either show or damage
it's possible for damage to occur before the show interceptor is triggered,
and in this case damages would be lost despite it being a valid usage

ref T3011
2016-01-18 13:36:11 -05:00
Mike Blumenkrantz 45be3360d8 apply zone coords when calculating zone useful geometry
calculated coords in this case have not yet been normalized for the
zone which they correspond to

ref bdd175a47a

fix T3061
2016-01-16 15:00:46 -05:00
Marcel Hollerbach dcbf258a35 e_grabinput: do not pass a faulty time
Summary:
currently there is ecore_x_current_time passed, which is the time of the
last event. if this is passed to ecore_x_window_focus_at_time the request can be
ignored because the last event can be in the past. Instead using
ecore_x_window_focus fixes this, because current time is passed, which
means that x is just using this event at the time it is called.

@fix T2948

Test Plan: Try to run spotify and try to trigger the bug, I cannot anymore.

Reviewers: zmike, raster

Subscribers: raster, abyomi0, cedric, billiob

Maniphest Tasks: T2948

Differential Revision: https://phab.enlightenment.org/D3471
2016-01-16 12:20:43 +01:00
Mike Blumenkrantz ac809440e9 add function for creating a demo version of the lockscreen
this provides a simple way to (pre)view the current lockscreen without
fully locking down the compositor
2016-01-15 19:25:25 -05:00
Mike Blumenkrantz de59970690 set zone-based name on lokker comp objects
allows identification of desklock objects in events
2016-01-15 19:24:29 -05:00
Mike Blumenkrantz f12b6b9385 update existing shelf obstacle geometries on shelf move/resize
...instead of deleting and recreating the obstacles
2016-01-14 17:08:53 -05:00
Mike Blumenkrantz b1a0a91f83 only recalc shelf obstacles on desk count change if shelf uses desk_show_mode 2016-01-14 16:44:02 -05:00
Mike Blumenkrantz 297dbc6bdf use zone obstacles when generating list of obstacles in smart place
this should also fix an issue where shelves on other screens were not
blocking window placement in some cases
2016-01-14 16:16:57 -05:00
Mike Blumenkrantz a1576f2027 unify a large portion of repeated code in e_place
this is still a nonsensical nightmare, but at least now it's all in
one place
2016-01-14 16:12:21 -05:00
Mike Blumenkrantz 5d63b07ca3 enforce border_fix_on_shelf_toggle config option in shelf
shelf overlap can only take effect based on the state of this option:
specifically, overlap can only be enabled if border_fix_on_shelf_toggle
is enabled
2016-01-14 15:53:36 -05:00
Mike Blumenkrantz 5ec690512d use zone obstacles for window placement during shelf coverage calcs 2016-01-14 15:50:40 -05:00
Mike Blumenkrantz f033d5616a update shelf obstacles on move/resize 2016-01-14 15:20:13 -05:00
Mike Blumenkrantz bdd175a47a implement zone obstacles for calculating useful geometry
these are generic objects which can be added to indicate that there
is something blocking window placement at the edge of a screen/desk.
this replaces the traditional method of watching shelves to calculate
useful geometry with a managed object which will automatically trigger
a recalc whenever it is updated, and it allows non-shelf objects to
more easily register themselves as obstacles for window placement
2016-01-14 15:13:57 -05:00
Mike Blumenkrantz 4d55682362 make E_DESK_TYPE an int define
this was causing unsigned vs signed comparison warnings
2016-01-14 15:13:57 -05:00
Mike Blumenkrantz 78c6b4c234 make e_desk_at_xy_get() const 2016-01-14 15:13:57 -05:00
Mike Blumenkrantz 4b2e75176b improve menu hiding and autoclose
remove menu object from autoclose (if set) and ensure that only the
intended menu is deactivated in the autoclose callback

this fixes some cases where the wrong menu could be closed (or not closed)
due to race conditions with ecore and evas events
2016-01-14 15:13:57 -05:00
Mike Blumenkrantz 887ccb4f83 allow NULL object in e_comp_object_util_autoclose()
this can be used to unset the current autoclose object in the case
where the object is known to evade normal autoclose detection
mechanisms
2016-01-14 15:13:57 -05:00
Derek Foreman 3304ea7b6c Remove inappropriate usage of %m
Summary:
printf %m stringifies and prints errno.  This is actually hugely confusing
if used in error messages after failures that don't set errno.

You may get "Success", or you may get an errno that was harmless ages
ago.

Some of the functions followed by %m have only some error paths that
set errno, or make multiple system calls that can set errno
independently - knowing the errno at failure time is unlikely to be
useful in these cases.

Reviewers: devilhorns, zmike

Reviewed By: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3571
2016-01-14 12:41:47 -05:00
Marcel Hollerbach 35ae02a524 e_xkb: implement keyboard setting on wayland.
this splits e_xkb_update into a update function for wayland and x. The
matching function to the compositor type is called.

@feature
2016-01-14 18:37:27 +01:00
Marcel Hollerbach b8dd1c5bcd e_main: init e_xkb before e_comp
otherwise e_xkb cannot guess what kind of compositor is running.
2016-01-14 18:37:27 +01:00
Mike Blumenkrantz 19b87070f5 do full cleanup when overriding existing comp autoclose object
failing to trigger delete on existing autoclose object would result
in the object never closing and being "leaked"
2016-01-14 10:31:03 -05:00
Mike Blumenkrantz e31a3cc378 make ibar config pointer EINTERN 2016-01-14 10:31:03 -05:00
Chris Michael 3911b504cc Port e_alert to implement WBOD for drm/wayland
This patch makes e_alert_main (the enlightenment_alert binary) work
for crashes when running with wayland (via the drm backend).

ref T2926

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-13 14:17:13 -05:00
Carsten Haitzler 81d2596209 e randr - fix randr dialog to do restore right again
post e20 commit that allowe dradnr dialog to come up for a specifci
streen broke restore option - now this fixes it.
2016-01-11 09:01:55 +09:00
Mike Blumenkrantz 6b93a73d0c optimize zoomap recalc during recursion
in most cases, zoomap recalcs will trigger recursive calls to zoomap
recalc. these inner calls can be optimized to just do the object move,
allowing the outer-most call to perform the remainder of the recalc
operation
2016-01-08 15:51:35 -05:00
Mike Blumenkrantz d1d30029d1 select mixer popup sink after popup has been fully initialized
attempting to select too early results in callbacks being triggered
before various widgets are available
2016-01-08 12:05:41 -05:00
Mike Blumenkrantz 7334c65748 disable custom logging when eina backtrace is active
ref 2df0404226
2016-01-08 11:44:00 -05:00
Mike Blumenkrantz 6a8cbb53da Revert "e logs - the custom e log func breaks eina backtraces, so don't use it"
This reverts commit 2df0404226.

let's not do this in all cases
2016-01-08 11:43:36 -05:00
Chris Michael 370b6a03e3 Update wl_weekeyboard for ecore_evas_wayland_window_get2 function rename
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-08 10:37:42 -05:00
Carsten Haitzler 2df0404226 e logs - the custom e log func breaks eina backtraces, so don't use it
this fixes e's logs to include eina backtraces again. this is a
shortcoming of eina_log not being able to do multiple passes basically
(multiple outputs) per log.
2016-01-08 21:55:05 +09:00
Carsten Haitzler e1369a24bd per-desk profiles - move to per screen and use elm derived profiles
this removes the per desktop profile config and replaces it with a
per-screen one that is tied to a specific display so it is far more
logical than per desktop. this allows e to set up different scaling
per screen for apps that use elementary for example via this derived
profile.

this of course is slightly problematic for e itself since it now uses
elm - as this will cause e to go kind-of-crazy with differing profiles
as it fights with itself and elm if 2 screens have different profiles.
this requires elm to be fixed to allow custom profiles per window.

this also currently won't switch profile of a window when you
reconfigure screens.

@feature

xx
2016-01-08 21:54:31 +09:00
Carsten Haitzler 8215777848 randr - improve header indenting 2016-01-08 18:04:53 +09:00
Carsten Haitzler e183ffa748 e randr2 - provide lookup funcs for screen and dpi 2016-01-08 18:04:53 +09:00
Mike Blumenkrantz b6214b9846 check all corners of an object in e_comp_object_util_zone_get()
if the top left corner is offscreen, checking other corners is still
valid for returning a useful zone
2016-01-07 17:27:36 -05:00
Mike Blumenkrantz 96f1caeddb add back comp object data from typo in previous commit... 2016-01-07 17:20:05 -05:00