Commit Graph

10684 Commits

Author SHA1 Message Date
Carsten Haitzler f88ed7c7fb e exec - fix missing ref and unref for instance event
this fixes a crash on shutdown when freeing up stuff because an exec
instance wasnt ref++'d and ref--'d when adding an event on the event
queue that pointed to it.

@fix
2015-12-07 19:52:48 +09:00
Carsten Haitzler bb3701702a e zone - handle null e_comp if comp is already shut down
this came from backlight shutdown that got current zone... and getting
zone relied on e_comp being valid.

@fix
2015-12-07 19:52:40 +09:00
Carsten Haitzler bc8cfec356 e comp - set e_comp to null on shutdown so others dont access junk
e backlight was accessing e_comp implicitly during shutdown and comp
is shut down before backlight (that is correct as comp relies on
backlight). this fixes that

@fix
2015-12-07 19:52:38 +09:00
Carsten Haitzler 47f26b5b08 e backlight - avoid seg when comp is shut down and backlight updated
if comp is already shut down, then backlight can't do shutdown things
assuming comp is around, thus handle null e_comp. this fixes segv's
waiting to happen as backlight is shut down after comp and thus e_comp
is a garbage pointer of course

@fix
2015-12-07 19:52:13 +09:00
Mike Blumenkrantz 027b044297 use client geometry for calculations in x11 ConfigureRequest handler
the values requested by the client will be based on its geometry and not
the geometry of the frame. using the frame geometry here results in windows
moving ↘ based on the top/left frame sizes

fix T2912
2015-12-03 14:12:37 -05:00
Mike Blumenkrantz a08ac02e82 add config option for allowing sticky windows to receive focus reverts
since forever, sticky windows have not been allowed to receive focus after
various events, eg. desk flip or window close. in some workflows, however,
this may actually be desired behavior

disabled by default

fix T2837
2015-11-30 16:27:04 -05:00
Mike Blumenkrantz e5e31a2501 remove e_comp_wl struct keyboard repeat members
duplicating these from e_config serves no purpose

ref D3364
2015-11-30 14:15:47 -05:00
Sung-Jin Park 6826608961 (1) e_config.c/e_comp_wl.c: add code for making repeat values configurable
(2) e.src(s): add keyboard.repeat_delay, keyboard.repeat_rate into e.src files

Summary:
As of now, the default values of repeat delay/rate are being set in e_comp_wl.c.
Those values need to be configurable and will be used in e_comp_wl_init().
The limit of each of the values is defined from -1 to 1000. (maximum 1s).
If one of the two is negative, it means default repeat delay/rate are going to be used.
(e.g. delay:400, rate:25)

Test Plan:
N/A

Signed-off-by: Sung-Jin Park <input.hacker@gmail.com>

Reviewers: raster, stefan_schmidt, gwanglim, devilhorns, zmike

Subscribers: Jeon, ohduna, cedric

Differential Revision: https://phab.enlightenment.org/D3364
2015-11-30 14:05:10 -05:00
Derek Foreman 81ff082e0d Stop using MIN macros when choosing versions for wayland resources
Summary:
libwayland-server.so will post an error if the requested version
is higher than the supported one anyway, so there's no point in
doing this.

Using MIN() to pick versions is a client side idiom.

 #kansas

Reviewers: zmike, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3385
2015-11-26 20:12:47 -05:00
Stefan Schmidt 9365129a5a e_menu: use Eina_Bool for one-bit bitfield
Make sure we are using a unsigned var here. Best go with a Eina_Bool directly.
2015-11-26 18:31:29 +01:00
Stefan Schmidt d18e169701 e_gadcon: use Eina_Bool for one-bit bitfield
Make sure we are using a unsigned var here. Best go with a Eina_Bool directly.
2015-11-26 18:31:02 +01:00
Stefan Schmidt 01a4a24f34 e_fm:correct declaration of function with no parameters
We have to use void in a function declaration if we want no function
parameters. Using just empty parenthesis means the function takes an
unspecified number of parameters.

We had it correct for most declarations and this series fixes it for
the rest.

Thanks for the sparse semantic parser for pointing this out.
2015-11-26 18:09:32 +01:00
Mike Blumenkrantz c05100ed14 re-swallow bg_object after wallpaper transition has completed
fixes eventing/stacking on bg object
2015-11-25 12:36:36 -05:00
Mike Blumenkrantz ac0cc26765 allow more client hooks to bypass delete check
failing to propagate these signals can result in a broken compositor
when a client is deleted before/during an operation
2015-11-24 21:42:22 -05:00
Mike Blumenkrantz ea8e88b592 do not apply max client geometry restriction if max geometry is not set
default values for these is set to a very high value, but it's possible
(and guaranteed) for some clients to set them to a value <= 0, which results
in a broken window
2015-11-24 17:34:03 -05:00
Mike Blumenkrantz 60269f3ecf use CSD geometry during move/resize display
this should provide more user-relevant information
2015-11-24 17:31:47 -05:00
Mike Blumenkrantz e8f4f30f40 adjust for SSD geometry during wayland client resize
client moveinfo includes the frame geometry, so this must be taken
into account when resizing a client which has a frame

fix T2863
2015-11-24 17:29:53 -05:00
Mike Blumenkrantz 0ed63ede7c avoid setting incorrect geometry during new_client frame calc
in the case where a client has no geometry set, attempting to update
the client's geometry during frame recalc will guarantee that wrong
geometry is set, resulting in a bad first frame
2015-11-24 17:28:08 -05:00
Mike Blumenkrantz 70c6dc30d1 use separate handler for x11 fatal errors when using xwayland
a fatal error with xwayland is not a fatal error for the compositor,
so this should not result in a dead session
2015-11-24 15:34:42 -05:00
Mike Blumenkrantz ef09d3e620 add mechanism for preventing unload of important modules during runtime
if a wayland output module is unloaded while the compositor is still
active, bad things will happen
2015-11-24 15:26:10 -05:00
Mike Blumenkrantz e01b594fbd reenable restart/shutdown dbus methods under x11 2015-11-24 11:49:15 -05:00
Carsten Haitzler cdb436ee86 e msgbus - move almost all of core dbus methods to msgbus module
for security reaons, all the dbus methods that allow you to mess with
e are now in the msgbus module - load at your own risk. this is
irrelevant in x11, but in wayland this matters as wayland is actually
secure.

this also disables restart and shutdown dbus methods still in core.
they are there but non-functional due to possibly being able to be
abused in a wayland universe to "dos attack" the wm.

@fix
2015-11-24 22:07:46 +09:00
Mike Blumenkrantz 80071ab79e only perform drm shutdown during signal handler if drm engine is in use 2015-11-23 15:03:45 -05:00
Mike Blumenkrantz be69ae562f only create wayland screensaver timer in wayland mode
probably fix T2867
2015-11-23 14:47:37 -05:00
Chris Michael ebf1318b0d Fix invalid compositor type check in e_dpms_force_update
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-11-23 10:00:36 -05:00
Chris Michael eff826b4e3 Fix formatting and remove extra blank line
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-11-23 09:48:58 -05:00
Carsten Haitzler 251daa7515 e - fix compositor fade out ghosting
due to enabling manual rendering (and als animator frametiem to 10
secons) in e_comp_canvas.c when screensaver is active (blanking is
finished totallly - eg the fade to black) evas weill nto render the
last frame of the animation - skipping it and not rendering another
update until screensaver is disabled. this leaves a subtle ghost of
pixel data which is 1 step before black on the screen (until dpms
turns the monitor off).

this fixes that. this delays enabling manual render for 1 more second
after we have been told the screensaver is active. this is plenty of
time to update all the way to black.

@fix
2015-11-23 11:42:38 +09:00
Stafford Horne bbe3173906 e/core: Fix minor mem leak when reading module paths
Summary:
Found this with a quick valgrind session.  For paths that are not directories, if we fail the `ecore_file_is_dir` condition memory will not be freed.

The change is to use the default e_path freeing function.

Test Plan:
Run enlightenment in valgrind.  It should no longer show a mem leak like below.

```
==6912== 8 bytes in 1 blocks are definitely lost in loss record 186 of 5,940
==6912==    at 0x4C28C50: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==6912==    by 0x4D8574: e_path_dir_list_get (e_path.c:326)
==6912==    by 0x4D1BA4: e_module_init.part.0 (e_module.c:183)
==6912==    by 0x4D1DA8: e_module_init (e_module.c:153)
==6912==    by 0x4371ED: main (e_main.c:868)
```

Reviewers: zmike

Subscribers: cedric, seoz

Differential Revision: https://phab.enlightenment.org/D3356
2015-11-19 20:44:45 -05:00
Mike Blumenkrantz d32392760a always set wayland E_Client->redirected during client creation
fix T2846
2015-11-19 15:58:52 -05:00
Mike Blumenkrantz 0988e21193 ensure that a deskmirror object does not orphan child objects
ref T2846, T2830
2015-11-19 15:52:01 -05:00
Mike Blumenkrantz 818531a13e Revert "e deskmirror - fix loss of mirror object from deskmirror"
This reverts commit bd0c590489.

the m->mirror object can never be deleted except in the case of a client
being removed from the owner desk. removing it at any point will break any
users of the deskmirror api and create other issues

ref T2846
2015-11-19 15:44:34 -05:00
Mike Blumenkrantz 5e6831187a always create compositor mirror objects, ignore pixmap image state
checking pixmap image state in this case resulted in mirrors failing to
be created in some cases when there was no reason to fail

ref T2846
2015-11-19 15:17:19 -05:00
Mike Blumenkrantz 00252fad74 add safety checks to e_client_focus/raise_latest_set() fns
passing a null client here breaks the universe, so ensure that it's
easily catchable
2015-11-19 12:44:35 -05:00
Mike Blumenkrantz 11c632ab44 further improve csd calculations for x11 clients
there was previously a frame in which maximized x11 csd clients would
reposition themselves offscreen before rendering

this is now fixed by adjusting the client geometries either upon
unsetting the csd or re-setting it, allowing the client to retain its
expected positioning without jitters
2015-11-16 16:25:34 -05:00
Mike Blumenkrantz 64ceff507f update E_Client->desk member upon focusing a sticky client
a sticky window previously would always have the desk set for where
it was set as sticky, meaning that anything which tries to access it
will be reading wrong data here.
more useful information to provide is the last desk which the sticky
client was focused on, so update that upon focusing it
2015-11-12 17:38:58 -05:00
Mike Blumenkrantz 846ff6c068 do not add new deskmirror clients on desk_set event if client already exists 2015-11-12 17:31:27 -05:00
Mike Blumenkrantz f09e410285 improve x11 client focusing with mouse-based focus policies on mouse move
in the case that a mouse move event occurs, the compositor should validate
the event to ensure that the mouse cursor is actually over the window that
the event claims to be from

fix T2594
2015-11-12 17:17:38 -05:00
Mike Blumenkrantz 660c7cb2e5 improve readability of E_FIRST_FRAME environment variable detection
functionality remains the same, but this is more clear for readers
2015-11-12 15:09:29 -05:00
Mike Blumenkrantz c2e2769c3a null efm icon eio handle in error callback
ref T2829
2015-11-11 12:25:56 -05:00
Carsten Haitzler b018ac1abc e screens/zones/randr - store randr2 id in xinerama and zones for lookup
so e has a bit of a problem. we mostly deal with zones, BUt these
zones come from our old xinerama code (this likely should just die
some time) and THIS code gets fed info from e's randr code. we
re-fill/modify as randr finds new screens or things get reconfigured.
thus zones adapt. the problem is now all our zone code really has a
hard time reverse mapping the zone back to where it came from -eg the
randr screen data. you literally can't do a whole bunch of things like
know if that zone was an internal laptop lid or an external screen, or
if it was rotated or even what the dpi is... as you ave no deasy way
to map it back other than by guessing geometry matches.

this fixes that by storing the randr screen id (which should be
unique) fromt he original src randr screen in the xinerama screen and
then in the zone. with this you can do a quick lookup in the e randr
data should you ever need to find the info. this should pave the way
for some other fixes/improvements, but without this they cannot be done.

@fix
2015-11-11 21:22:30 +09:00
Mike Blumenkrantz b3d68ee828 use unsigned int for client focus tracking freeze state
there's no reason why this should ever be negative
2015-11-10 14:32:53 -05:00
Mike Blumenkrantz 33b1f3842c Revert "clamp client to ABOVE layer when ending nocomp"
This reverts commit 8c6bbe0d44.

This Breaks Everything™.
2015-11-10 13:34:02 -05:00
Mike Blumenkrantz 8c6bbe0d44 clamp client to ABOVE layer when ending nocomp
should fix case where an "Always on Top" window toggles fullscreen
2015-11-10 12:59:26 -05:00
Vivek Ellur f026fdf9b3 e: Fix realloc issue in e font module
Summary:
@Fix

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

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3306
2015-11-10 12:26:14 -05:00
Carsten Haitzler bd0c590489 e deskmirror - fix loss of mirror object from deskmirror
this fixes T2830

@fix
2015-11-10 19:06:57 +09:00
Mike Blumenkrantz 551657e02a check client comp data existence in x11 mirror visibility callbacks 2015-11-09 14:29:23 -05:00
Mike Blumenkrantz 945f9506cf enforce fullscreen client stacking during nocomp end IFF client is fullscreen
previous behavior would result in the nocomp window becoming stuck at a fullscreen
layer when ending nocomp, even if the client was no longer fullscreen

fix T2827
2015-11-09 13:20:50 -05:00
Mike Blumenkrantz 9ffef78188 disable client menu stacking functions for unstackable windows
any client stacked higher than E_LAYER_CLIENT_ABOVE should never be
user-stacked
2015-11-09 13:11:26 -05:00
Mike Blumenkrantz b753b1bab4 Revert "force a software render in all cases when finalizing x11 client iconify"
This reverts commit 1a87463083.

no longer necessary
2015-11-07 13:12:14 -05:00
Mike Blumenkrantz bf2e36236c toggle x11 client iconic/mapped state based on mirror visibility
in order to continue rendering an iconic client without breaking icccm,
it's necessary to map the client's window again and unset iconic state
whenever rendering is needed, then re-set states when rendering
stops

ref T2788
2015-11-07 13:10:02 -05:00