Commit Graph

10896 Commits

Author SHA1 Message Date
Chris Michael 43140e080d port e_scale to use Ecore_Wl2
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-09 13:16:48 -05:00
Chris Michael 86d5cfb939 port e_grabinput to use Ecore_Wl2
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-09 13:16:48 -05:00
Chris Michael 7870721cab port wayland compositor to use Ecore_Wl2
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-09 13:16:48 -05:00
Chris Michael 6906c9b4d9 remove unused event loop and add external Ecore_Wl2_Display variable
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-09 13:16:48 -05:00
Chris Michael 0b01b204a9 include header for Ecore_Wl2
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-09 13:16:48 -05:00
Carsten Haitzler a885c8c040 e - fix using an invalid icon theme - fall back to hicolor if not exists
this should fix D2036 on the e side by checking validity of an icon
theme once efreet has finished scanning for stuff and if its invalid,
going back to hicolor.

@fix
2015-12-09 16:21:31 +09:00
Mike Blumenkrantz ae0e6c73a8 disable redirection toggling for the nocomp client
#ThisBreaksTheCompositor!
2015-12-07 18:16:12 -05:00
Carsten Haitzler 1fa0c79662 e randr - fix leak of modes list in randr code
this fixes a leak of the modes list in randr

@fix
2015-12-07 20:01:03 +09:00
Carsten Haitzler 58d5c6d3f6 e randr - slicken up fade to use sinusoidal interpolation
@feature
2015-12-07 20:00:14 +09:00
Carsten Haitzler f63f651800 e randr2 - remove auto-clone and now make randr dialog come up instead
some odd things happen with auto-clone, so give the user manual
intervention automatically with the randr conf dilaog coming up on an
unconfigured screen being detected.

@fix
2015-12-07 19:58:58 +09:00
Carsten Haitzler 3c1588efa2 e comp randr support - fix leak of randr info
this fixes case where randr info is not freed

@fix
2015-12-07 19:56:13 +09:00
Carsten Haitzler de269f4711 e randr - fix silent free of data behind randr's back
this fixes a bizarrre issue that valgrind reported that has the
strings we malloc and fill somehow being freed by xlib. totally didn't
make sense. either way, a workaround here is to strdup them
immediately and free the tmp copy and oddly the bug doesn't happen.
this is very odd.

@fix
2015-12-07 19:56:06 +09:00
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
Mike Blumenkrantz 18fba8e5d7 add e_comp_object_mirror_visibility_check()
can be used to check whether visible mirrors exist for a comp object
2015-11-07 13:09:23 -05:00
Mike Blumenkrantz 50e4a30126 add counter and smart callbacks for comp object visible mirrors
ref T2788
2015-11-07 13:08:12 -05:00
Mike Blumenkrantz cc137f6cd7 move client iconic hint setting into x11 hide function
e_hints should probably be merged into the x11 compositor entirely
at some point
2015-11-07 13:06:23 -05:00
Mike Blumenkrantz f0cc657e4c break out x11 client visibility setting into util functions 2015-11-07 13:05:18 -05:00
Mike Blumenkrantz 4250a14861 set e_comp->gl for wayland compositors based on gl display bind success 2015-11-07 12:23:04 -05:00
Stafford Horne 7bedc8eea6 e/ilist: Fix issue with multiselect returning wrong index
Summary:
I noticed this because the description dialog in "Apps > Startup Application"
was never getting properly populated.

Test Plan:
When selecting items in the "Apps > Startup Applications" config the
description should update if a "Comment" field is available in the
.desktop file.

Reviewers: zmike

Subscribers: cedric, seoz

Differential Revision: https://phab.enlightenment.org/D3297
2015-11-07 12:11:53 -05:00
Mike Blumenkrantz 76276a6c7c adjust efm multi-icon drag positioning by the current pan coords
fixes positioning when dragging multiple icons after scrolling
2015-11-05 15:31:16 -05:00
Mike Blumenkrantz f343a5403d account for window position in efm window drag initial positioning
fix T2819
2015-11-05 15:31:16 -05:00
Mike Blumenkrantz fc01d6a24c check for wayland egl extensions before starting a gl compositor
when running in software mode, evasgl performs no checking to determine
whether gl is available, leading to a crash due to missing extensions
2015-11-04 12:23:05 -05:00
Nicolas Aguirre a8bf439f88 Revert "Adds eglfs to Enlightenment"
This reverts commit ff1e7b5083.
2015-11-03 08:01:58 +01:00
Nicolas Aguirre fe60c4fecd Revert "e_signals.c: Inclues Ecore_DRM only if WL_DRM is built and not only if WAYLAND is built"
This reverts commit 96e304bc90.
2015-11-03 08:01:42 +01:00
Nicolas Aguirre 31ce65a2c4 Revert "Don't load xwayland if it isn't compiled"
This reverts commit 496ae3746f.
2015-11-03 07:57:56 +01:00
Florent Revest 496ae3746f Don't load xwayland if it isn't compiled 2015-11-03 07:50:21 +01:00
Florent Revest 96e304bc90 e_signals.c: Inclues Ecore_DRM only if WL_DRM is built and not only if WAYLAND is built 2015-11-03 07:37:41 +01:00
Florent Revest ff1e7b5083 Adds eglfs to Enlightenment 2015-11-03 07:37:41 +01:00
Mike Blumenkrantz ae6416c27c add wayland egl client support
definitely not a feature, I promise™
2015-11-02 16:25:02 -05:00
Mike Blumenkrantz 35d0279d4f use e_comp->gl flag to set native surface state
e_comp_gl_get() is for determining if gl exists, not if it's being used
2015-11-02 16:25:02 -05:00
Mike Blumenkrantz e7d534ad80 fix comp object native surface config checking for non-x11 compositors 2015-11-02 16:25:02 -05:00
Mike Blumenkrantz b45e16ee23 add native surface (gl) clients to post render list
forgot to add this when I was redoing it for sw

ref 4d30674ab8
2015-11-02 16:24:53 -05:00
Mike Blumenkrantz cea91b111c Revert "queue pending buffers for wayland shm clients"
This reverts commit 1ee825d29c.

this was fixing the wrong problem and was not functioning accurately
in any case
2015-11-02 14:53:15 -05:00
Carsten Haitzler f40e664ec5 e exec tracker - fix tracking to update desktop files on efreet change
efreet will send change events meaning out desktop file icons are
invalid now. we have refs but content is junk. update these to new
desktop ptr handles by using the exec key to look up new ones on the
change event. this fixes ibar gainign a bunch of blank unknown icons
when any desktop files are touched on the system or user dirs

@fix
2015-11-02 12:28:27 +09:00
Mike Blumenkrantz d47252be4a simplify client SMART/EXPAND maximize
calling e_client_resize_limit() here was misleading since the values
were never used
2015-10-30 15:03:29 -04:00
Mike Blumenkrantz 21017889b2 adjust non-x11 client's saved frame geometry when changing csd
this seems to be a more comprehensive solution for retaining previous
window sizes after toggling various csd-affecting window states in wayland
2015-10-29 14:35:02 -04:00
Mike Blumenkrantz b9e51e1c0d Revert "when maximizing a wayland client with csd, use window geometry"
This reverts commit 6e5e51c2b8.

not a complete solution, makes client code somewhat unreadable
2015-10-29 14:34:32 -04:00
Mike Blumenkrantz 5469c3b680 add E_COMP_ENGINE env var to determine sw/gl
accepted values are 1, 2, sw, gl

toggling config options is a hassle when debugging
2015-10-28 12:55:09 -04:00
Mike Blumenkrantz 29a1fe0265 always unalias x11 client parent window <-> pixmap relation during delete
deleted state is not relevant, this should always be removed during deletion
to prevent further referencing of a deleted client

fix T2803
2015-10-26 13:02:34 -04:00
Mike Blumenkrantz 6e5e51c2b8 when maximizing a wayland client with csd, use window geometry
wayland clients which have csd must be resized according to window geometry,
not client (surface) geometry. this is somewhat tricky to handle because x11
clients which have csd work the exact opposite way and must continue to be
managed using client geometry

this is not my ideal solution for this issue, but I can't think of a
better one at this time which fully fixes wayland client maximization
2015-10-23 12:59:45 -04:00
Mike Blumenkrantz 7016c59c6f reject frame theme changes for clients which have CSD 2015-10-23 12:31:24 -04:00
Mike Blumenkrantz 98f418afa9 only apply frame geometry deltas for CSD if the CSD region exists
ref e931e86161
2015-10-22 19:25:07 -04:00
Mike Blumenkrantz 6692cefaf5 set client input rects more accurately, accounting for SSD 2015-10-22 19:24:11 -04:00
Mike Blumenkrantz 6f455ac9c3 enforce cw->obj pass_events state more accurately
changing the edje file of cw->shobj can change the pass_events state
of its child object, cw->obj
2015-10-22 19:22:48 -04:00
Mike Blumenkrantz 633c72f6af clip client input rect to client geometry, not window geometry
when using csd, the window geometry will be smaller than the surface,
resulting in an unusually small input region
2015-10-22 18:44:51 -04:00
Mike Blumenkrantz 14a9318ff9 defer all module error dialogs
due to the (current) synchronous creation of wayland surfaces in efl,
creating these dialogs during startup will result in a crash. the only
way to prevent this and still display the dialogs is to wait a bit and
show the dialogs after init has completed
2015-10-22 14:14:20 -04:00
Mike Blumenkrantz 18484e7eee completely remove access module
as promised almost a year ago, this module has been unmaintained to
the point where it cannot function in any way, and attempting to keep
it in the tree is a futile effort

this module can now be found at devs/discomfitor/e_module-access.git

ref 77717523f3
2015-10-22 13:52:31 -04:00
Mike Blumenkrantz d3f229d450 remove dead modules from whitelist 2015-10-22 13:18:14 -04:00
Mike Blumenkrantz 9bf2438ba9 unconditionally show opengl option in compositor settings
enlightenment is not always running in x11, so making this option
dependent on xlib will break other environments
2015-10-22 12:49:51 -04:00
Mike Blumenkrantz e38051bae0 make comp config unresizable...again
ref 5178197f60
2015-10-21 15:17:25 -04:00
Mike Blumenkrantz 28b022d033 append new keyboard resources for wayland focused-client to the focused list
fixes all cases where applications would fail to receive focus initially
and then be permanently broken
2015-10-21 14:06:31 -04:00
Mike Blumenkrantz a832bb8ded fix typo in wayland keyboard resource unbind list management 2015-10-21 14:06:31 -04:00
Mike Blumenkrantz 6451a65754 do not use x11 input windows for grab dialogs when running in wayland 2015-10-21 14:06:31 -04:00
Chris Michael 7b79e03937 Fix e_menu trying to swallow an object from a different canvas
_e_menu_realize was trying to swallow the menu->container_object into
the menu->bg_object, but the menu->bg_object was being created on the
compositor canvas, and the container object was being created on the
e_comp->elm_win.

With recent EFL changes, this causes an abort inside Evas.

To fix this, set the menu->evas to be the Evas from the e_comp->elm_win.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-21 10:26:18 -04:00
Mike Blumenkrantz e931e86161 update csd using deltas of previous values
when applying new csd to a window which already has csd, the previous
csd must be removed in order to apply any new csd offsets in order to
avoid unwanted moving/resizing
2015-10-20 12:20:24 -04:00
Seunghun Lee b44d4ad339 e-comp-wl-input: don't leak the initial keymap.
Summary: remove xkb_map_ref() for keymap in _e_comp_wl_input_keymap_update().

Test Plan: N/A

Reviewers: devilhorns, zmike

Subscribers: ManMower, cedric

Differential Revision: https://phab.enlightenment.org/D3173
2015-10-19 11:43:07 -04:00
Thierry b9e793053d mouse_config: fix accel threshold and numerator limits.
man xset =>  If the `threshold' parameter is provided and 0, the
`acceleration' parameter will be used in the exponent of a more
natural and continuous formula, giving precise control for slow motion
but big reach for fast motion, and a progressive transition for motions
in between.  Recommended `acceleration' value in this case is 3/2 to 3,
but not limited to that range.
2015-10-16 13:29:19 -07:00
Mike Blumenkrantz 1ee825d29c queue pending buffers for wayland shm clients
due to how deferred rendering works, it's possible for a client to
send a second buffer before enlightenment has rendered the first one.
in this situation, it seems that the best solution is to queue successive
buffers (frames) and pop the queue after each render

ref T2784
2015-10-16 15:48:46 -04:00
Mike Blumenkrantz 1a87463083 force a software render in all cases when finalizing x11 client iconify
since ICCCM requires that clients be unmapped while iconified, it's necessary
for the compositor to perform one last render prior to the unmap in order to
ensure that mirror objects will still appear as expected. this render must use
the pixmap buffer data in order to avoid timing issues due to async/deferred
rendering, and it is only necessary for the case of clients rendering with a
native surface

fix T2788
2015-10-15 15:39:07 -04:00
Mike Blumenkrantz 06f794bfe6 clear x11 client pixmap when returning from iconic
ensure pixmap remains usable during the entire hide process
2015-10-15 15:32:38 -04:00
Mike Blumenkrantz f6245e5535 reject deleted clients from x11 sync alarm event callback
E_Client->comp_data is null after a client has been deleted, so
attempting to handle events which require the dereferencing of this
pointer after a client has been deleted will result in a crash

these events should be rejected after delete regardless, since at this
time the compositor has stopped handling events for the client

ref f42c6aa187
2015-10-15 13:13:18 -04:00
Carsten Haitzler f42c6aa187 e - comps sync - ec client was null - i think, so protect against crash
i got a crash here and the bt was broken and i couldnt check if
_e_comp_x_client_data_get() returned null, but it's the only thing
that would make sense, so protect against this to avoid a crash. as
this was a one-off, i can't find out more,

@fix
2015-10-15 19:29:14 +09:00
Amitesh Singh 71f7720669 e_flowlayout: typecast return value to int
Summary:
return value is small enough, so there is no risk in casting from unsigned int to signed int.

CID: 1267211

Reviewers: devilhorns, raster, cedric, zmike

Subscribers: seoz, sachin.dev

Differential Revision: https://phab.enlightenment.org/D3179
2015-10-14 14:02:07 -04:00
Mike Blumenkrantz 984d664eef trap shaped x11 clients and prevent compositor blocking with high rect count
in the case where a shaped window with many rects exists, there is a high
probability of the damage rect count being huge, leading to massive blocking for
each frame as the compositor attempts to fetch all of these rects from the xserver.

instead, the compositor can shortcut this by forcing a full-window damage any time
the rect count is sufficiently high, trading a blocking socket operation for some
amount of (potential) overdraw.

testing in affected scenarios has shown huge improvements: where previously the entire
compositor would lock up, things work as expected now

see https://bugzilla.mozilla.org/show_bug.cgi?id=1214746 for a sample case
2015-10-14 12:59:14 -04:00
Mike Blumenkrantz 00895ca014 do not return when x11 damage event returns no rects
ensure first_damage flag is set in all cases
2015-10-14 12:59:14 -04:00
Chris Michael d74273f732 enlightenment: Make sure we have a zone before calling
_bgpreview_viewport_update

@fix CID1324753

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-14 10:59:31 -04:00
Chris Michael e856f7acbb enlightenment: #if 0 out an unused variable
NB: The function which actually uses this variable is also #if 0'd out

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-14 10:30:33 -04:00
Chris Michael d72af795ad enlightenment: Use 'fabs' to get absolute value of floating point types
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-14 10:28:38 -04:00
Chris Michael 2814066c39 enlightenment: Fix E_CONFIG_LIMIT to use the proper min & max values
e_config->backlight.idle_dim is actually an unsigned char in the
structure, so use a 0 & 1 for min & max

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-14 10:22:19 -04:00
Chris Michael 59ffe3bed2 enlightenment: Add missing field initializers for Eina_Rectangle
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-14 10:19:43 -04:00
Mike Blumenkrantz 98c44950b1 subtract x11 client damage region even when forcing full override damage
fix T2785
2015-10-13 22:38:50 -04:00
Mike Blumenkrantz f6be761226 force full damage for first frame of x11 override clients
it seems that damages for popup windows in some applications,
namely blink-based browsers, are reported incorrectly, resulting
in sometimes having a blank window
2015-10-13 17:09:00 -04:00
Mike Blumenkrantz e8bcf1016f use correct param ordering for setting wayland client frame geometry
function uses l,r,t,b and not x,y,xx,yy

fix T2624
2015-10-13 13:31:47 -04:00
Mike Blumenkrantz 60a1dfaf4f remove duplicate surface size update for wayland clients during commit
this has already happened in e_comp_wl_surface_attach()
2015-10-13 13:25:15 -04:00
Mike Blumenkrantz 45b7224b42 explicitly disable screensaver for wayland urgency wakeups 2015-10-09 15:23:15 -04:00
Mike Blumenkrantz 277eb14ace make wake-on-urgent apply for all cases of window urgency
in the case that an urgent window is set as urgent again, wakeup should
still occur
2015-10-09 15:21:41 -04:00
Mike Blumenkrantz ddc06559c7 apply _GTK_FRAME_EXTENTS for xwayland clients
not entirely sure this is worthwhile but may as well
2015-10-09 15:03:38 -04:00
Tom Hacohen 252198488c Intl: fix potential stack buffer overflow.
CID 1298051

@fix
2015-10-09 09:26:45 +01:00
Tom Hacohen 981e3f8f31 Client: fix potential out of bounds read.
This is an unsigned int underflow that could lead to an out
of bounds read.

CID 1291837

@fix
2015-10-09 09:19:53 +01:00
Carsten Haitzler acbf4a79b4 e comp data - actually ... NO visibility effect by default is right
so a bit of a config wipe had my comp config reset (some dev
shenanigans) and i got to see what current e "out of box" config is -
and it was horrid for menus. visibilitiy effect was broken. vertial.
default was none - always. forever. like empty. so go back to that. in
fact why do this visibility effect? that was the point of having a
different shadow in the theme - each has its own look + effect. this
makes things far more complex...
2015-10-08 08:27:38 +09:00
Mike Blumenkrantz 95b9770f08 when removing VERTICAL maximize state, also remove LEFT and RIGHT states
LEFT and RIGHT are supersets of VERTICAL which serve no purpose on their own,
so remove them when removing VERTICAL

fix T2770
2015-10-07 15:47:21 -04:00
Carsten Haitzler d99869fed2 e comp - default config was rather broken - fix
default config didnt select menu style shadow - was selecting
vertical/still which meant animation was rather horrible. fix.
2015-10-07 19:54:21 +09:00
Mike Blumenkrantz a68e375479 only use fast-path pixmap size updating after a resize for x11 clients
updating these values after other operations will result in the pixmap size
being set inaccurately, leading to rendering inconsistencies
2015-10-05 17:28:26 -04:00
Mike Blumenkrantz a6408d95a6 attempt to load default e_bindings if initial load fails 2015-10-05 15:56:28 -04:00
Mike Blumenkrantz be49b11bd3 do not set frame geometry on frame-possessing wayland clients 2015-10-05 15:56:04 -04:00
Mike Blumenkrantz 85cf1305be throw an ACK when trying to set comp frame geometry if frame exists 2015-10-05 15:55:44 -04:00
Mike Blumenkrantz e27a0cbeba clear menu cache when saving a menu file
force regeneration of menus after editing them

ref T2271
2015-10-05 13:41:10 -04:00
Mike Blumenkrantz ac9daa55fb make icon selection dialog resizable in .desktop editor
ref T2271
2015-10-05 13:33:13 -04:00
Mike Blumenkrantz 29fb270450 move configure init after intl init has completed
gettext calls will not return the correct language string until after
setup has completed, leading to untranslatable strings

fix T2760
2015-10-05 13:09:38 -04:00
Seunghun Lee 1ce8b362de clear the tiler for input region after setting to comp object.
Summary:
there is no need to set repeatedly input region even if it's already applied.
and this patch remove the code to clear tiler from client's unmapped case.
this fixes that tiler for input region is removed before applying it to comp object in case client is unmmaped yet.

Reviewers: devilhorns, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3076
2015-10-05 12:47:29 -04:00
Chidambar Zinnoury 2a3742a52a e fm: Use correct string length when copying path.
Sometimes, trying to go to the parent directory wouldn’t work and end up showing some garbage. Unfortunately, the code ended up not NULL-ending the path, which made searching for the path separator buggy.
2015-10-04 18:52:03 +02:00
Chidambar Zinnoury c57f2ff611 e menus: Fix invalid comparisons.
Fixes CID 1267215 and 1267216.
2015-10-04 16:46:32 +02:00
Mike Blumenkrantz 4d30674ab8 move client post-update adding into render function
in some cases, it's possible for a client which expects to render on
the next frame to actually render on the frame after. in these cases,
the compositor must not clear the pixmap image until after the render
has occurred in order to avoid inaccuracies. for this reason, the best
place to flag a client for post-render work is at the time of the client's
render

ref T2762
ref D3120
2015-10-02 13:57:29 -04:00
Mike Blumenkrantz 38a8de6a1d unify comp render returns for argb and non-argb clients 2015-10-02 13:57:29 -04:00
Mike Blumenkrantz 588a9766e4 fix comp render return value for failed draws of non-argb clients 2015-10-02 13:57:29 -04:00
Mike Blumenkrantz 269b5fcc0e fix return value of comp render for wayland clients 2015-10-02 13:57:29 -04:00
Mike Blumenkrantz 81b61634c4 add RENDER_DEBUG for forced renders when setting dirty flag 2015-10-02 13:57:29 -04:00
Boram Park b9b650806f should remove a frame resource from pending.frames list also
Summary: Signed-off-by: Boram Park <boram1288.park@samsung.com>

Reviewers: stefan_schmidt, gwanglim, raster, zmike, devilhorns

Reviewed By: zmike, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3079
2015-10-02 12:38:30 -04:00
Mike Blumenkrantz 4b40ad10e5 always apply all randr changes after a screen event
fixes case where plugging an external monitor would cause the screen
to expand onto that display without the display being effectively usable
until after a restart
2015-10-01 13:17:27 -04:00
Mike Blumenkrantz bb5daf2b57 remove remote colorclass editor usage
match current elm function signatures
2015-09-30 16:31:20 -04:00
Mike Blumenkrantz cdf6650a11 redo wayland client buffer referencing
the previous methodology was effectively:
attach -> ref(new buffer) x2 / unref(old buffer) x2
...
...
attach -> ref(new buffer) x2 / unref(old buffer) x2

this resulted in buffer management failures and crashing. now the
buffer gets 1x ref before render and 1x unref after render, ensuring
that the lifetime is accurate (assuming evas doesn't lie to us)

now we still have random crashing during resize, but not as much as
before
2015-09-29 18:53:15 -04:00
Mike Blumenkrantz 89a789fe3d redo CSD for wayland clients to use comp object frame geometry
this fixes issues with client placement and is a more native solution
than the previous hacks
2015-09-29 18:53:03 -04:00
Mike Blumenkrantz ba92337882 never mark wl client pixmaps as dirty or refresh them
this has no meaning for a wl pixmap in the current implementation
2015-09-29 16:35:30 -04:00
Mike Blumenkrantz bd8987c4d9 free x11 damage region rects 2015-09-29 13:03:35 -04:00
Mike Blumenkrantz 0a7c9ad5b9 do not roundtrip for x11 client message DBG if it will not be visible
also free fetched atom name
2015-09-29 13:02:10 -04:00
Mike Blumenkrantz 14a6ac6458 unset E_Client->internal_elm_win before deleting the client in e_win
==24509== Invalid write of size 8
==24509==    at 0x502D00: _e_elm_win_trap_del (e_win.c:39)
==24509==    by 0x509BFC2: _elm_win_evas_object_smart_del (elm_win.c:1886)
==24509==    by 0x91F4643: evas_obj_smart_del (in /usr/lib/libevas.so.1.15.99)
==24509==    by 0x91F5B5C: evas_object_smart_del (evas_object_smart.c:1021)
==24509==    by 0x91E9107: _evas_object_eo_base_destructor (evas_object_main.c:739)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0x5086715: _elm_widget_eo_base_destructor (elm_widget.c:5744)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0xE5443EC: _eo_del_internal (eo_private.h:221)
==24509==    by 0xE5443EC: _eo_unref (eo_private.h:295)
==24509==    by 0xE5443EC: _eo_do_end (eo.c:546)
==24509==    by 0x4D5B1A: _e_obj_dialog_free (e_obj_dialog.c:125)
==24509==    by 0x4D61FB: e_object_free (e_object.c:152)
==24509==    by 0x4D61FB: e_object_unref (e_object.c:152)
==24509==    by 0x4EDC54: _e_sys_logout_after (e_sys.c:750)
==24509==    by 0x4ED7AC: _e_sys_action_do (e_sys.c:925)
==24509==    by 0x4EE348: e_sys_action_raw_do (e_sys.c:311)
==24509==    by 0x4EE43F: _e_sys_comp_done_cb (e_sys.c:66)
==24509==    by 0x6097348: _edje_emit_cb (edje_program.c:1476)
==24509==    by 0x6097348: _edje_emit_handle (edje_program.c:1405)
==24509==    by 0x60924EE: _edje_message_queue_process (edje_message_queue.c:787)
==24509==    by 0x60926A6: _edje_job (edje_message_queue.c:154)
==24509==    by 0xCC5087A: _ecore_job_event_handler (ecore_job.c:121)
==24509==    by 0xCC4B204: _ecore_call_handler_cb (ecore_private.h:390)
==24509==    by 0xCC4B204: _ecore_event_call (ecore_events.c:565)
==24509==    by 0xCC52AE7: _ecore_main_loop_iterate_internal (ecore_main.c:1927)
==24509==    by 0xCC52CD6: ecore_main_loop_begin (ecore_main.c:983)
==24509==    by 0x4383F4: main (e_main.c:1047)
==24509==  Address 0x14fb1a28 is 1,176 bytes inside a block of size 1,352 free'd
==24509==    at 0x4C2A65B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24509==    by 0x4D61FB: e_object_free (e_object.c:152)
==24509==    by 0x4D61FB: e_object_unref (e_object.c:152)
==24509==    by 0x502CED: _e_elm_win_trap_del (e_win.c:37)
==24509==    by 0x509BFC2: _elm_win_evas_object_smart_del (elm_win.c:1886)
==24509==    by 0x91F4643: evas_obj_smart_del (in /usr/lib/libevas.so.1.15.99)
==24509==    by 0x91F5B5C: evas_object_smart_del (evas_object_smart.c:1021)
==24509==    by 0x91E9107: _evas_object_eo_base_destructor (evas_object_main.c:739)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0x5086715: _elm_widget_eo_base_destructor (elm_widget.c:5744)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0xE5443EC: _eo_del_internal (eo_private.h:221)
==24509==    by 0xE5443EC: _eo_unref (eo_private.h:295)
==24509==    by 0xE5443EC: _eo_do_end (eo.c:546)
==24509==    by 0x4D5B1A: _e_obj_dialog_free (e_obj_dialog.c:125)
==24509==    by 0x4D61FB: e_object_free (e_object.c:152)
==24509==    by 0x4D61FB: e_object_unref (e_object.c:152)
==24509==    by 0x4EDC54: _e_sys_logout_after (e_sys.c:750)
==24509==    by 0x4ED7AC: _e_sys_action_do (e_sys.c:925)
==24509==    by 0x4EE348: e_sys_action_raw_do (e_sys.c:311)
==24509==    by 0x4EE43F: _e_sys_comp_done_cb (e_sys.c:66)
==24509==    by 0x6097348: _edje_emit_cb (edje_program.c:1476)
==24509==    by 0x6097348: _edje_emit_handle (edje_program.c:1405)
==24509==    by 0x60924EE: _edje_message_queue_process (edje_message_queue.c:787)
==24509==    by 0x60926A6: _edje_job (edje_message_queue.c:154)
==24509==    by 0xCC5087A: _ecore_job_event_handler (ecore_job.c:121)
==24509==    by 0xCC4B204: _ecore_call_handler_cb (ecore_private.h:390)
==24509==    by 0xCC4B204: _ecore_event_call (ecore_events.c:565)
==24509==    by 0xCC52AE7: _ecore_main_loop_iterate_internal (ecore_main.c:1927)
==24509==    by 0xCC52CD6: ecore_main_loop_begin (ecore_main.c:983)
==24509==    by 0x4383F4: main (e_main.c:1047)
2015-09-29 12:58:13 -04:00
Mike Blumenkrantz b843527a6c do not roundtrip for x11 client message DBG if it will not be visible
also free fetched atom name
2015-09-29 12:53:59 -04:00
Mike Blumenkrantz f94764feec reject client resize attempts for clients with dirty pixmaps
these clients will resize/render correctly only after the next
render loop, so defer until then to avoid #RenderFail

fix T2754
2015-09-29 12:29:41 -04:00
Mike Blumenkrantz b9c4911374 s/EAPI/E_API/ ...again 2015-09-28 15:51:51 -04:00
Mike Blumenkrantz 6732398856 use client window coords for resize-moving without a frame_object
improves placement of csd windows

ref T2750
2015-09-28 15:39:15 -04:00
Mike Blumenkrantz 5f2f1cb67b do not set client window coordinates during a move until after resizing check
fixes case where values would be erroneously updated when they should instead
have been rejected

ref T2750
2015-09-28 15:36:58 -04:00
Mike Blumenkrantz 9b2eb5541c use more accurate math to determine whether to apply a client maximize change 2015-09-28 14:42:21 -04:00
Mike Blumenkrantz 29823dbf1b unset the requested maximize state when receiving a client unmaximize request
not sure why it was always removing VERTICAL here but that's a bug
2015-09-28 14:41:44 -04:00
Mike Blumenkrantz 7e5eb0a96d allow client resizes on axes currently unrestricted by maximize state
if this isn't explicitly blocked by config options then allowing resizes
on the unmaximized axes is necessary in order to avoid accidentally
queuing a full unmaximize
2015-09-28 14:39:42 -04:00
Mike Blumenkrantz 64c4adeca2 unset E_Client->changes.need_unmaximize after calling unmaximize
...just in case
2015-09-28 14:37:57 -04:00
Mike Blumenkrantz f0fc7a12de remove client maximize states during unmaximize only if they are active
do not accidentally remove untested states using bad math operations
2015-09-28 14:36:59 -04:00
Mike Blumenkrantz d641c9d963 force adjustment of client geometry when changing csd frame size
fix T2750
2015-09-28 14:02:02 -04:00
Mike Blumenkrantz 51789af53c _GTK_FRAME_EXTENTS changes using a property, not a client message 2015-09-28 14:01:47 -04:00
Mike Blumenkrantz ed9cd0ea61 reject identical calls to e_comp_object_frame_geometry_set() 2015-09-28 14:01:02 -04:00
Carsten Haitzler d0de6eb4fa e - efm fix. fix eio error handler that is called after eio cancel
so you have to have an error cb - so make it empty as even after a
canel, it is called, and thus accesses an invalid icon we've freed.
2015-09-28 16:49:53 +09:00
Carsten Haitzler f468361817 efm - handle cancel of async eio if icon is freed and eio still active
@fix
2015-09-28 16:29:12 +09:00
Mike Blumenkrantz bb557cbf9f force pixmap clear when hiding an x11 window
failure to refetch this upon remapping the window will result in
a broken pixmap which cannot be rendered
2015-09-25 23:41:29 -04:00
Mike Blumenkrantz 0e3cc2f533 don't call e_client_unignore() when un-withdrawing an x11 window
these clients were not ignored on creation, so they've already triggered
all the relevant events
2015-09-25 22:37:16 -04:00
Mike Blumenkrantz 2c73a0b311 map/unmap x11 client windows when toggling iconic state
ICCCM 4.1.4
2015-09-25 21:57:25 -04:00
Mike Blumenkrantz 80a9240e7a initialize pixmap size vars in comp resize interceptor
these are never uninitialized when they are used, but this
is not obvious to the reader

CID 1324956, 1324956
2015-09-25 21:57:25 -04:00
Mike Blumenkrantz ec7752cc90 set x11 supported atom array size correctly
CID 1324958
2015-09-25 21:57:25 -04:00
Mike Blumenkrantz 1c36bb8333 fix handling of x11 ICCCM WithdrawnState
according to ICCCM 4.1.4:
Only the client can effect a transition into or out of the Withdrawn state

withdrawn windows cannot be shown under any circumstances. the best that can
be done is to try mapping the window and hope it decides to appear.

to prevent any inadvertent showing of the window before it leaves the
withdrawn state, we play games with the E_Client->ignored flag in order
to skip client evals until we get notified that maybe we want to stop
skipping those evals

ref T2745
2015-09-25 21:56:14 -04:00
Mike Blumenkrantz 8a764901c6 check warp_client existence during pointer warp before dereferencing it
ref T2679
2015-09-25 16:26:50 -04:00
Carsten Haitzler 61ba406001 Revert "Revert "Revert "Revert "deskmirror - fix dangling reference to mirror by refcounting it""""
This reverts commit 2373b69c61.

stop crashing on restart
2015-09-25 08:23:39 +09:00
Mike Blumenkrantz 6252ac29da add csd case for compositor frame adjust messages
not 100% perfect, but close enough
2015-09-24 16:33:56 -04:00
Mike Blumenkrantz 7967f9983d move compositor frame adjust messages to pixels_get callback
native surfaces don't call e_comp_object_render()
2015-09-24 16:33:56 -04:00
Mike Blumenkrantz 5efb157c0c set comp object client_inset.calc based on frame_object existence 2015-09-24 16:33:56 -04:00
Mike Blumenkrantz 2b38eb9712 block border-affecting client functions for csd clients 2015-09-24 16:33:56 -04:00
Mike Blumenkrantz 14283ffefa block border-affecting entries from showing up in client menu with csd 2015-09-24 16:33:56 -04:00
Mike Blumenkrantz a4ebee266d fix e_shelf_position_calc() to not set struct members before applying them
fix T2743
2015-09-24 16:33:56 -04:00
Mike Blumenkrantz 39a39a41c8 add util function for determining if a client is allowed to have a frame
returns false if mwm borderless is set or if csd exists
2015-09-24 16:33:56 -04:00
Mike Blumenkrantz b8322b2b0e fully support _GTK_FRAME_EXTENTS
gtk apps set an atom which provides information about the area
where non-window content (eg. shadows) may be drawn; this area
must not be used in placement calculations.

the easiest method for implementing this functionality was to add
a case to the compositor geometry interceptors which effectively
flip the client struct geometry values such that the E_Client->client
is outside of the more commonly used E_Client->x/y/w/h

fix T2744
2015-09-24 16:33:56 -04:00
Mike Blumenkrantz d1454e4e1a broadcast support for _GTK_FRAME_EXTENTS
this is not actually supported yet, so behavior of windows using this
feature will be more wayland-like, eg. geometry determined by area
of window+shadow

fix T2744
2015-09-24 16:33:56 -04:00
Boram Park 6d2572efc0 Creating wl_shm global object before creating other global objects
Summary:
  It's more useful for client to bind wl_shm before receiving other global
  object's events. Then, App can quickly prepare some buffers. i.e. cursor,
  etc.

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

Reviewers: stefan_schmidt, gwanglim, raster, zmike, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3080
2015-09-23 09:15:53 -04:00
Mike Blumenkrantz c9c880ec59 improve client exe_inst creation
ref T2679
2015-09-22 16:00:09 -04:00
Mike Blumenkrantz f1faab997f only init E_EVENT_XKB_CHANGED during xkb init if xkb init hasn't already occurred
allows xkb init to be called repeatedly
2015-09-22 14:16:20 -04:00
Mike Blumenkrantz 8b932b053e update xkb settings and send xkb update event when calling e_xkb_layout_set()
resolves issue where setting a specific kbd would fail to make settings permanent
as well as not propagating the kbd change to the rest of enlightenment

fix T1810
2015-09-22 13:44:18 -04:00
Mike Blumenkrantz 4173bd9977 calculate comp object visibility regardless of pending damages
in the case of clients on non-visible vdesks, this improves the reliability
of mirrored rendering
2015-09-22 13:14:51 -04:00
Mike Blumenkrantz 8399ab4ff9 do not emit client iconify signal when reapplying compositor theme
this has no effect other than breaking the animation counter for the
client and preventing it from being deleted
2015-09-22 13:07:15 -04:00
Mike Blumenkrantz 2373b69c61 Revert "Revert "Revert "deskmirror - fix dangling reference to mirror by refcounting it"""
This reverts commit 6bef668a8f.
2015-09-22 12:54:10 -04:00
Mike Blumenkrantz 32aa812701 redo client maximization when a non-overlap shelf changes geometry
this fixes the annoying case of needing to remaximize all windows when
a shelf resizes in order to account for new geometry
2015-09-22 12:42:39 -04:00
Mike Blumenkrantz f3edf38e49 clamp client geometry to zone during geometry calc
somehow it was possible for client sizes to overflow the zone geometry here
which would end up breaking maximization limits and result in clients
not respecting various geometry boundaries
2015-09-22 12:37:14 -04:00
Mike Blumenkrantz 37c146435d only unpopulate a shelf when applying new settings if the shelf won't be recreated 2015-09-22 12:36:41 -04:00
Mike Blumenkrantz 4eaeabc1c3 block gadcon thaw on unpopulate when gadcon is deleted
saves a huge amount of unnecessary calc time
2015-09-22 12:36:12 -04:00
Mike Blumenkrantz ae919fe716 unset E_Client->want/take_focus flags during client eval
ref 4a33cd7ba0
2015-09-22 12:03:09 -04:00
Carsten Haitzler f0ea0c94ca e config - cache sizes in config don't actually work, so remove
remove several config vars in advanced performance that frankly don't
work (unless you change them int he dialog). they are not set up on
startup or not even used at all. remove things that don't work anymore!

@fix
2015-09-22 14:06:40 +09:00
Carsten Haitzler d948225714 e - fm - flush all evas caches to get rid of open file handles b4 umount
this should fix open file handles on unmount by flushing caches first.
not great, but works. long-term have evas not keep file handles open
for 0 refcount cached items.
2015-09-22 13:17:10 +09:00
Mike Blumenkrantz 498936e417 apply vertical maximize algorithm for LEFT/RIGHT maximized windows 2015-09-21 19:52:14 -04:00
Mike Blumenkrantz bfbdf5106a move focus setting on restart into desk restore function
the focused client on restart needs to be set after desk states
have been restored in order to avoid focusing the wrong client
2015-09-21 19:19:15 -04:00
Mike Blumenkrantz 4a33cd7ba0 only set focus on clients which are visible during client eval
focusing a client will automatically uniconify and desk flip, so
setting focus on a hidden client should be avoided during eval since
these focus-sets are not "user triggered"

this fixes issues where clients could randomly grab focus from other
desks and also restores expected behavior when restarting e on an
empty vdesk
2015-09-21 19:19:01 -04:00
Mike Blumenkrantz 7056d598c4 do not return non-visible clients for e_client_under_pointer_get()
a hidden client should not be considered "under the mouse" since its
geometry is undefined until it becomes visible again

fix T1069
2015-09-21 17:50:48 -04:00
Mike Blumenkrantz 4e811057f3 add eeze watch for backlight events
when using "system" backlight mode, ensure that events are processed
as they occur so that the available backlight level is in sync with
the actual backlight level

fix T2255
2015-09-21 17:22:44 -04:00
Mike Blumenkrantz a04b3e4d94 only lower x11 layer windows for layers which have windows during init 2015-09-21 16:53:29 -04:00
Mike Blumenkrantz 8491e11570 always set alpha for internal wins
due to the presence of color classes on internal windows, e must
ensure that users who set translucent colors for window base objects
get transparency as expected on those parts of the window. it's impossible
to determine in advance whether alpha is needed, so it's best to just
set alpha in all cases

fix T2050
2015-09-21 15:16:30 -04:00
Mike Blumenkrantz 6b1affe6f1 make bgpreview widget work with panoramic wallpapers 2015-09-21 15:03:41 -04:00
Mike Blumenkrantz 3762dd6caf send FLOAT_SET edje messages during desk flip
panoramic wallpapers are created to expect this type of message

ref T2219
2015-09-21 15:03:35 -04:00
Mike Blumenkrantz 7d2a55f7e9 add function to blank out a client's rendered image
when working with Extremely Serious effects, it may be the case that
a user is rendering at such an advanced level that any attempt by
enlightenment to perform rendering will be like a child trying to
reproduce a masterpiece of art while using fingerpaints

https://www.youtube.com/watch?v=tY6qag5KFx0&hd=1
2015-09-17 19:08:27 -04:00
Mike Blumenkrantz e8a9ba34b0 always send CLIENT_SHOW event when clients are shown
I think it was the case for <E19 that uniconifying a client would
not send a show event, but this is not ideal and so the event should
still be sent
2015-09-17 19:08:27 -04:00
Mike Blumenkrantz ad631964f8 remove unused variables in ilist widget 2015-09-17 19:08:27 -04:00
Mike Blumenkrantz e669eb9998 set comp object mirror alpha flag more accurately on creation 2015-09-17 16:54:00 -04:00
Mike Blumenkrantz 554eb76140 add smart callback for comp object damage calls
related to the previous commit, this will allow api users to determine
when a client needs to re-render with the least amount of overhead
2015-09-17 16:54:00 -04:00
Mike Blumenkrantz e01009e1b5 add function for overriding the native surface of a client's comp object
it's a pretty trivial thing to hand-composite a client, so this will
allow someone to do something like render out a gaussian blur to an fbo
using a client's texture and then render the fbo onto the compositor
canvas with minimal overhead
2015-09-17 16:54:00 -04:00
Mike Blumenkrantz f7d3952ec0 add smart callback for comp object hiding animation begin
it's impossible to determine this at the time of calling without adding
some sort of callback here; edje signals are deferred, meaning that
an interested user will not be able to check the state of a client
when it begins to hide
2015-09-17 16:54:00 -04:00
Mike Blumenkrantz e09b0d3e03 create util function for enforcing comp object image alpha setting
this can be set in a couple places, so move all the logic into a single
caller to ensure correct setting
2015-09-17 16:54:00 -04:00
Mike Blumenkrantz 1f3e730964 alias x11 pixmaps to parent windows during reparent
failure to allow pixmaps/clients to be retrived by parent window will
result in api users being greatly inconvenienced after a reparenting has
occurred
2015-09-17 16:54:00 -04:00
Mike Blumenkrantz 441e266a83 add function for getting x11 pixmap from E_Pixmap 2015-09-17 16:54:00 -04:00
Mike Blumenkrantz bff9ae5feb add pre-render callback list for compositor canvas
someone doing fancy effects might want to add a callback to do various
tasks only when a render is about to occur
2015-09-17 16:54:00 -04:00
Mike Blumenkrantz a99bc68baa enable depth+stencil bits for x11 gl compositor canvas creation 2015-09-17 16:54:00 -04:00
Mike Blumenkrantz 14d52506a0 rename E_Comp_Grab_Cb to E_Comp_Cb
this is a super generic global callback type which will never be used
elsewhere, so rename it to make it potentially useful in other places
2015-09-17 16:54:00 -04:00
Mike Blumenkrantz f5657fc6c1 enforce gathering client moveinfo before beginning move/resize action 2015-09-17 16:54:00 -04:00
Mike Blumenkrantz ce78226c0e add ilist method for setting disabled state
ilist widget adds items in a deferred queue, resulting in attempts to
immediately toggle the disabled state having no effect. now there is
a flag so that items added after the disabled flag have been set will
have the correct state

fix T2730
2015-09-15 13:05:21 -04:00
Mike Blumenkrantz 462c2ae151 unset client hidden flag on config dialogs when activating from another vdesk
fix T2731
2015-09-15 12:46:46 -04:00
Carsten Haitzler b73364269b e winlist focus alt-tabbing - fix focus list changes while tabbing
this should fix T2700

@fix
2015-09-12 13:38:38 +09:00
Mike Blumenkrantz ca3a14c059 ensure that non-fullscreen nocomp clients have their layers re-set
in the case where a window is fullscreen without having the 'fullscreen'
flag set, the previously-used layer must be reapplied upon nocomp end
in order to avoid breaking the compositor
2015-09-11 13:06:12 -04:00
Mike Blumenkrantz 3ba247dafd set 'starting' flag for desk show in e_zone_desk_count_set()
as a result of earlier changes which prevented recursive desk flips,
e_desk_show() now rejects some desk show calls which are invalid such as
a show where the "current" desk does not have the visible flag set. this
behavior is overridden in the case of startup, which is functionally the
same effect as changing the desk count

fix T2717
2015-09-11 12:57:15 -04:00
Carsten Haitzler cfdd8a47ef e comp - set rects to null to silence compiler warning
even though n is 0 and we don't use rects, compiler doesn't know, so
to avoid noise - set to null so we can focus on warnings of real errors.
2015-09-10 22:13:57 +09:00
Mike Blumenkrantz 0f3eba5697 add extreme hacks to enforce nocomp stacking policies
if windows set to "Always on Top" exist while the option to allow
windows over fullscreen windows is enabled, enabling nocomp will
result in the above windows being stuck over the nocomp window

instead, force the nocomp window to be the top-most window in all cases,
and then put it back if another object appears on the screen over it

fix T2703
2015-09-08 18:41:49 -04:00
Mike Blumenkrantz cb2ddb736d ensure that normal clients are stacked below overrides when raising
when a client is set to "Always on Top", it will be on the same layer
as override clients. this can cause strange stacking and mouse eventing
in cases where these windows occupy the same space and the normal client
is stacked over the override
2015-09-08 17:47:48 -04:00
Mike Blumenkrantz 8946e3e504 unshade clients when activating
fixes issue where an activated client on another vdesk which was shaded
would appear to be unshaded but was, in fact, shaded
2015-09-08 17:01:36 -04:00
Mike Blumenkrantz 5bd8706bac force-disable refocus during desk flip on client activation
this prevents an infinite focus loop where focus will be constantly
reapplied between multiple windows if the activated window is not the
refocus window
2015-09-08 16:55:21 -04:00
Mike Blumenkrantz 69a29357cb block forced mirror render for clients with native surfaces 2015-09-07 13:15:25 -04:00
Mike Blumenkrantz 92d1c36be7 fix x11 compositor to use damage events
it seems that since the first version of the enlightenment compositor
in e17, damage events in x11 have never been used correctly. using
the event struct members will only give the bounding box/area instead
of the damaged regions; the real regions must be explicitly fetched
from the server

this removes the need for a lot of hacks which were added over the years
to make override windows render correctly, and also probably reduces
rendering overhead slightly
2015-09-07 11:14:34 -04:00
Marcel Hollerbach 64a62e29ca deskmirror: check if ec is not null before accessing it
Summary: ec can be NULL

Reviewers: devilhorns, zmike

Projects: #enlightenment-git

Differential Revision: https://phab.enlightenment.org/D3023
2015-09-07 10:22:44 -04:00
Chris Michael 7c595f7ea1 enlightenment: Fix formatting of Wayland compositor code so it is easily readable in 80 columns
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-09-03 11:16:07 -04:00
Stefan Schmidt 714b84308d e_comp_wl: create global and bind session_recovery interface
Before we can use the session_recovery protocol extension we need to register
its global and bind the interface to our implementation.

The callback for the provide_uuid call from the client is just a stub for now.
2015-08-26 16:09:25 +02:00
Carsten Haitzler 6bef668a8f Revert "Revert "deskmirror - fix dangling reference to mirror by refcounting it""
This reverts commit 466dd8d57d.

sorry - this bug is still there and this tracks references - the
current code DOES NOT DO THIS RIGHT.

No symbol table info available.
No symbol table info available.
out>) at src/bin/e_deskmirror.c:336
        mb = 0x1ed7220
        #3  0x00007f0e3c864a8d in evas_object_smart_del
(eo_obj=0x8000039ae0101eb8) at lib/evas/canvas/evas_object_smart.c:1016
        obj = <optimized out>
        sobj = <optimized out>
        s = 0x220d540
        i = <optimized out>
        __FUNCTION__ = "evas_object_smart_del"
(eo_obj=0x8000039ae0101eb8, obj=0x21432e0) at
lib/evas/canvas/evas_object_main.c:739
        proxy = <optimized out>
        l = <optimized out>
        l2 = <optimized out>
        texture = <optimized out>
        __FUNCTION__ = "_evas_object_eo_base_destructor"
...

and EXACTLY as before p *(mb->m) shows that m is full of garbage.
mb->ec is a garbage pointer, w amd h arte garbage coordinates etc. m
is not tracked. pretty simple. open and close a few windows - mayeb
switch some desktops, THEN restart and see the crashes. its easy
enough to reproduce
2015-08-24 12:00:28 +09:00
Mike Blumenkrantz 40e6f35f2e remove dirty callback for deskmirror clients upon creating visual
if another callback triggered the creation of a deskmirror visual while
the dirty callback was in place, a second mirror object would be created
leading to an orphaned mirror object which retained references to the dm
client and eventually resulting in a crash
2015-08-21 17:13:48 -04:00
Mike Blumenkrantz 26b1e84e6f simplify e_desk_show visibility unsetting, reject recursive desk flips
the currently visible desk for a zone is stored on the zone struct, so
iterating here is unnecessary. furthermore, at the time when a desk is hidden,
a client may begin receiving mouse events which could trigger a focus-set and
lead to another desk flip. at this time and only this time, the "current" desk
will be marked as not visible, and so this sort of desk show must be rejected

fix T2676
2015-08-21 16:42:16 -04:00
Mike Blumenkrantz e426805993 track focus time for x11 canvas focus, unset client focus on x11 canvas focus-in
in the case that the canvas window has just had focus set on it, apply this focus
and ensure that no client retains focus

this resolves a race condition where focusing the compositor canvas <-> client
extremely quickly would result in a client trying to steal focus when it was
not actually focused

a notable (but trivial) side effect is that now when flipping desks at high speed while using
mouse-based focus policies, the user is almost guaranteed to end on a desk which
has open windows on it
2015-08-21 16:41:13 -04:00
Mike Blumenkrantz 6d976ab6e3 reject focus-set attempt if desk flip to client's desk was rejected
in the case of recursive desk flips, toggling a desk's visibility may
erroneously send queued evas events to the client's frame object, leading
to a focus-set (mouse-based focus models) which triggers a desk flip
inside the original desk flip. this "inner" desk flip is spurious and
should be ignored
2015-08-21 15:46:13 -04:00
Mike Blumenkrantz 74d9792e89 add full damage for x11 override clients on resize configure event
it seems that the reported damage events upon resizing an override window
are not accurate, and so we must force a full damage here while avoiding a
render queue in order to ensure that the full contents of the override will
be rendered in the next frame

fix T2045
2015-08-21 14:51:33 -04:00
Mike Blumenkrantz d70667a067 don't watch dirty smart cb for desmirror clients with unusable pixmaps
this seems to fix an extremely rare issue related to both deskmirror artifacts
and crashes in deskmirror during restart; I was only able to reproduce the crash
twice in the span of over an hour of testing and it seemed to disappear after
this change
2015-08-21 14:14:05 -04:00
Mike Blumenkrantz 466dd8d57d Revert "deskmirror - fix dangling reference to mirror by refcounting it"
This reverts commit 5404adc54f.

I'm strongly against adding refcounts/nullchecks to hide bugs which
are caused by failure to properly track object existence. let's try to avoid
this sort of thing in the future
2015-08-21 14:11:29 -04:00
Carsten Haitzler 5404adc54f deskmirror - fix dangling reference to mirror by refcounting it
add deskmirror refs to avoid segv on shutdown/restart due to mb->m
becoming a pointer to freed (now garbage) memory, so trace every
ref/unref and count them to get it right. crash gone!
2015-08-21 15:33:50 +09:00
Carsten Haitzler 10cd94a953 e shelf - small missing set of signals - tell theme when inset scrolls
the shelf theme actually can't know if there is scrollable content in
that direction when a shelf item has autoscroll on and has content in
that direction. this is kind of a missing theme capability that is
incredibly useful if you want to do certain kinds of themes. this is
fairly minor and i'd consider ok for e20 release as we aren't even
doing alphas yet...
2015-08-21 12:43:56 +09:00
Mike Blumenkrantz 10a551c633 only check dirty smart callbacks on non-new_client deskmirror clients 2015-08-20 22:02:36 -04:00