delfn's on desks being referred to as profile.wait_desk were never
cleared when client was freed. als the desk itself never got an obj
reference - fix that and ref/unref it.
es->cfg->desk_show_mode if false (default) implies a shelf is always
visible - true, as it's sticky (visible on all desktops). but this
didn't check zone. check zone first THEN this.
sometimes while quickly moving the cursor through menu items with submenus
the visibility flag would toggle more quickly than the menu object's visibility.
this is no longer the case
fixes issues where a new child added would appear above other child objects
if the new child was meant to be stacked below other children
mostly noticeable in deskmirror
moderately certain I originally wrote this to work in the other direction
and then failed to remove it when I switched to setting parents instead of
children. regardless, pixmap hash should not be changed here
this speed sup dir listing in efm drastically. first the e fm back end
uses an io thread that just spools through everything fast and sends
it over the mainloop to then send by ipc to e.
and on the e side we no longer use the heavy file internal magic using
api calls that wander all over a file for magic numbers - this is
insanely slow and brings listing to a crawl.
this came in a patch that I take full responsibility for not adequately reviewing at the time.
the names are confusing and counterintuitive, and it does not properly include the client namespace.
backported to avoid future backport conflicts
the problem is something changes window gravity... what i don't know,
but hey - just forcibly move window to 0,0 which is where we expect it
anyway when resizing.
@fix
the previous patch(es) had a number of issues which made them unsuitable for general use:
* only checking "/usr" and "/usr/local" paths, despite this only being accurate if e was installed into /usr or /usr/local
* only checking if the paths were at the beginning of the string, when it's possible that they could be anywhere
* failure to also check XDG_CONFIG_DIRS
* improper formatting: this is a bit of a nitpick, but there are no correct instances of 'strcmp(a, b) == 0' in the e codebase.
@fix
this should fix T1988. after some looking here is what i think is
happening. he is asking the system (sysvinit or systemd) to
halt/reboot, but these end up killing the e process before it can save
its config that is lurking around still in ram as opposed to on disk,
so puttting in a config flush before beginning such a system action
will ensure everything is on disk.
init of e_screensaver sets up an event handler for the
powersave_update event (which would be 0 unless powersave is init
first).
Thanks to dt9 for the report ! ;)
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This reverts commit 4aef218d28.
Revert "randr: remember crtcid for fast lookup on reconnect"
This reverts commit 55b4ad41d1.
Revert "randr: further cleanup"
This reverts commit 3e02824663.
these make nvidia randr resolution changing work again. sorry seb.
even though cleanups might be nice... this code is FIDDLY and every
driver seems to work differently, so take it easy and be very careful
- make no assumptions. i know it works on my intel desktop and nvidia
deskop atm. once i get a vga cable i'll fix up intel laptop with
external display that has problems. i can try radeon too later. but
right now - this stuff needs to work. being clean is far less
important than working. :)
When an output is set inactive, it is disconnected from a crtc. Now we
remember the id of the last crtc it was connected to, so we get a faster
lookup on reconnect.
the dp checks were looking for edp stuff. but due to naming they appeard as
eDP or maybe edp or EDP - thus were simplified to dp. put more explicit
checks there.
Primarly two things removed:
1. crtc->outputs should only contain outputs which should be enabled
So looping them twice in e_randr_apply is definitly wrong.
2. _e_randr_crtc_find should find a crtc for an output
So looping our crtcs again in _active_set is definitly wrong. If
_e_randr_crtc_find does not find us a crtc, it should be fixed there.
i've spent a while testing randr on my nvidia box and drviers. it now
works - i can turn screens on and off. i couldn't before. e_randr was
trying to be too smart for its own good. it wasnt matching up outputs
to crtcs, was thinking outputs active when they were not, etc. etc.
etc. - reality is e_randr could do witha lot of simplification, but
at this stage i'm just going to hammer it into shape to work across as
many drivers and setups as i can test against.
Summary:
Otherwise the mouse up event is emitted to the evas but the evas does
not work with it, because it does not know the window it is from. This
leads to a evas_event_down_count_get bigger than 1 which leads to a
missing mouse_out event. With this missing mouse_out event _post_up_handle
in evas_event.c is not called anymore, this means all the click events
are getting emitted to the object which was last clicked.
This fixes T1894.
Test Plan: Drag and Drop a icon somewhere and click somewhere after that, the evas will not get stuck anymore
Reviewers: raster
Subscribers: cedric, abyomi0, zmike, raster
Maniphest Tasks: T1894
Differential Revision: https://phab.enlightenment.org/D1771
according to the shape extension protocol, the number of rectangles returned should be checked to determine a client's shape. if 0 is returned, the client has no shape, meaning that it either should not be drawn or should have no input region. this improves behavior with various client window types such as tooltips
ref T1820
so e was storing randr config using XIDs to match outputs etc. this is
all kinds of wrong. XIDs are NOT STATIC. they change from xserver to
xserver and from run to run. they MAY be the same. they may not. so
this was just broken.
use output name + edid as a big "string" (name.edid) as a way ofr
identifying config for a specific combination of output plus monitor
and to find/identify the corrent output+monitor to apply it to (of
course missing edid gets replaced with ??? and missing output name is
??? too - i have never seen a missing output name so you get this at
least).
so this FIXES "restore" of screen mode on login for starters. this
does nothing to "fix" the screen setup dialog in any way. there are
separate issues there.
this also breaks e_randr config compat so i bumped epoch so your old
config is rejected. i don't see a sensible way of porting the config
forward.
Summary:
The loop E_CLIENT_REVERSE_FOREACH was used to iconify and uniconify the
icons. The worked well for uninconify.
But if the first client with the focus gets iconifyed the lower one in
the stack will get the focus and will be raised to the top, but the loop
will continue with the next of the now iconifyed e_client, so this one
will be skipped.
Now the forward loop is used to iconify and the reverse to uniconify the
e_clients.
This fixes T1797
Reviewers: zmike
Reviewed By: zmike
Subscribers: cedric, cippp
Maniphest Tasks: T1797
Differential Revision: https://phab.enlightenment.org/D1655
This reverts commit b41dbbe9cf.
Revert this ... it works, but it's not the "proper" fix as it just
causes the crash(s) to happen elsewhere ... time to dig deeper
This was a cause of some memleaks/crashes in the wayland compositor
because the compositor was trying to access properties of the E_Pixmap
after it had already been freed. By setting the user_data to NULL, the
functions in the compositor which were failing will now stop trying to
access the pixmap after it's been freed.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
We are checking for the various mount options here given by configure.
-Wundef showed that we might not have the defines right so better
include config.h here.
all eina hash functions are now useless for any case where the hashed value needs to be stored, so it's necessary for e to provide its own hash function to use for password storage
When running in Wayland only mode we don't have XCB available so a
xcb_connection would fail and we would restart endlessly.
I have been bitten by that often enough now. Better shutdown E cleanly and don't
use the watchdog functionality for now. This needs a wayland specific solution
anyway.
when doing wayland windows (internal dialogs), and in such a case
don't free the window pointer on window hide/destroy.
NB: This fixes the case when running wayland-only and dialogs would
actually show 2 pointers.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
wayland-only and also not working with an X client.
bugfix: Fix case of pointers_size_set not adjusting pointer structure
fields with new size when rendering wayland pointers.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: When we commit a subsurface from cache, we should adjust the
client's shape rectangles so that they get applied when rendering.
Signed-off-by: vivek <vivek.ellur@samsung.com>
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1412
Summary: mobile policy module provides user interface for small mobile devices like phones.
Test Plan: N/A
Reviewers: raster, devilhorns, zmike
Subscribers: seoz, zmike, cedric
Differential Revision: https://phab.enlightenment.org/D817
Summary: since maximized valuable is used in _e_client_frame_update, so the valuable should be updated.
Test Plan:
(1) run any application.
(2) Maximize the app by key binding.
(3) Change the border type.
(4) Unmaximize the it by key binding.
(5) try to maximize it again, but couldn't
Reviewers: zmike
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1357
Summary:
Because attached buffer can be NULL for removing surface content,
check of pending.buffer should be done before getting resource value of the buffer.
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1370
This fixes an issue where internal dialogs were not using the e
cursors but would default back to an x cursor
Signed-off-by: Chris Michael <cp.michael@samsung.com>
If we don't do this, then when we run in X11 with wl client support,
we crash in various places (iconify, etc) when trying to work with
normal X clients.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Lock subsurface border type to borderless.
Remove commented out code.
Don't mark border.changed during pre_frame callback.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
- When we are doing client eval, don't check for Just changes in
property OR fetching. Rather we will check using an AND.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Whenever any client requests new selection_set,
the data is saved to server-side clipboard directly on this revision.
So data device is able to keep data which is copied from client app have closed already
and is able to provide those data to new focused surface before coming new selection_set request.
Reviewers: devilhorns
Subscribers: cedric, gwanglim
Differential Revision: https://phab.enlightenment.org/D1165
Summary: Support subsurface interface of wayland.
Test Plan:
1. Build enlightenment on devs/devilhorns/e_comp_wl branch.
2. Run enlightenment.
3. Run weston-subsurfaces
- should be built after removing code of gl surface (not yet implemented)
- just comment out the line egl_state_create in function of demoapp_create()
Reviewers: gwanglim, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1182
Summary:
There are no resource free codes in xdg shell destroy handler
and xdg popup destroy handler. e should delete wayland resource as
client requested.
Test Plan:
1. run e as wayland server
2. run weston-stacking in e
3. click with right mouse button to create xdg popup surface
4. click main surface area to delete xdg popup surface
Reviewers: devilhorns, zmike, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1196
Summary:
we need to set ec->parent before eval time.
that's because client can request to commit surface calling shell.configure() before eval time.
in this case, ec->parent isn't set yet, configure(move) will be failed.
in order to fix it, we have to set ec->parent in _e_shell_surface_parent_set() before eval time,
but we should check if ec already have parent, and if so, remove its parent's transients before change the value of ec->parent.
Test Plan: N/A
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1177
Summary:
This revision fixed failure to create damage area using Eina_Tiler on surface damage callback.
It was caused by trying to create Eina_Tiler with 0x0 size which is from size of E_Client.
Test Plan:
1. Run elementary_test.
2. Select one of the test apps.(no more magic fail message)
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric, gwanglim
Differential Revision: https://phab.enlightenment.org/D1171
Summary:
To enable copy and paste between clients,
wayland data device requires to know what surface is focused.
So this revision have make keyboard get focused surface when client is focused or unfocused,
and create data_offer for new focused surface in order to let new focused surface be able to get data from current selection data_source.
Test Plan:
1. Run wayland server
2. Run elementary_test -to entry5 on wayland server.
3. Run elementary_test -to entry5 on wayland server again. (preparing two clients)
4. Copy text on one of clients, and paste to the other.
Reviewers: devilhorns
CC: gwanglim, cedric
Differential Revision: https://phab.enlightenment.org/D1157
Summary: this patch will provide to launch the application based on XRGB8888 like weston-simple-shm.
Test Plan: launch weston-simple-shm
Reviewers: devilhorns, zmike, raster
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1137
Summary: that's because weston sample client supposed that the time passed by frame callback is milli-second.
Reviewers: devilhorns, zmike, raster
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1133
Summary:
There is a case that client do commit twice after one wl_surface_attach.
In this case, even if no buffer attached, unmapping the surface.
Because server already clear the buffer in first commit.
This patch fixes it.
Reviewers: devilhorns, zmike, raster
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1115
Summary: It supports selection copy & pasete with wl_data_device_manager, wl_data_device, wl_data_offer and wl_data_source.
Test Plan:
1. Build enlightenment on devs/devilhorns/e_comp_wl branch.
2. Run enlightenment.
3. Run elementary_test -to entry5 (or any entry samples).
4. Select any block of text.
5. Do copy the block and Copy anywhere you want.
Reviewers: gwanglim, devilhorns
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1094
Summary:
since the size of wl_array is determined based on one byte,
so in order to compare with uint32_t, the size of wl_array should be divided by uint32_t's size.
and when calculate the size of wl_array by difference between two address,
address should type cast char* as one byte.
Test Plan:
(1) run terminology
(2) input any key several time.
Reviewers: devilhorns, zmike, raster
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1089
NB: Each different build (x11/wl-only) had various unused variables.
This is a squash of the commits to fix all that.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Move parent->modal setting from the shell module to the compositor.
Support setting of various window types (dialogs, menus, etc).
Handle setting of internal properties (min size, max size, etc).
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Don't try to ping clients that we are forceably killing.
Implement e_grabinput calls during focus_set.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Ungrab mouse & wheel bindings when we delete the client.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
remove client stacking code (apparently handled in e_client already)
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: When the client resized, it need to resize tilers for surface region also.
Reviewers: devilhorns, zmike, raster, gwanglim
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1020
Summary: E_Comp_Wl_Buffer's busy value should be updated after initialization as zero.
Reviewers: devilhorns, zmike, raster
Reviewed By: devilhorns
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1011
Summary:
since the data as a key of hash is 64bit integers, clients_win_hash should be created to int64.
if not, loss of data can occur when add or delete data from hash table.
Test Plan:
(1) run any application. (added ec to hash table)
(2) close the application. (try to delete ec from hash table, but couldn't)
(3) after that, if _e_comp_wl_cb_render_post is called, since refer to ec which was already freed, enlightenment had been crashed.
Reviewers: devilhorns, zmike, raster
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1006
Add code to hold references to 'buffers'.
- Release 'buffers' After they have been rendered by the compositor.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
remove memcpy of wl_buffer data.
NB: This Is REALLY not needed in ANY compositor !!!
NB: This DOES cause lots of current Failures within the existing X Compositor ... ie: Wayland Clients inside X do NOT work at this point :(
Signed-off-by: Chris Michael <cp.michael@samsung.com>
- post a wl_buffer release After rendering is completed.
- change code to follow compositor structure name
- when creating compositor (inside X), set input keymap
- don't set "reparent" for all new clients
Signed-off-by: Chris Michael <cp.michael@samsung.com>
update compositor structure for ability to run X and Wayland Clients.
update wayland compositor data & input file(s) for data structure rename.
NB: Both the X compositor and the Wayland compositor have different
"client data" to store, so e_client structure needs different fields
Signed-off-by: Chris Michael <cp.michael@samsung.com>
- reduce variable usage for non-x
- remove need to memcpy wayland buffer image data
- add function for setting pixmap buffer resource
- add shm_buffer access calls around getting wl_buffer data
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Additional authors: zmike
* if unplaced, place centered on transient-for on initial placement
rather that screen centered
* if transient.move and transient.resize options follow options are on
make transients floow as intended
Summary:
There were a few crash cases during drag and drop.
- move file in Desktop using efm,
- move file in same directory using differnt efm
The root cause is icon finding logic. efm finds icons based on URI string.
But, the found icon could be different with selected one since there could be multiple efm in same directory.
Therefore, this patch filter out icon which is not selected icon.
Fixes T1364
Test Plan:
case 1. open efm -> goto desktop -> move file from ~/Desktop to ~/Desktop/folder
case 2. open two efm -> goto same directory in two efm -> move file to {currentdirectory}/folder in any efm
Reviewers: raster, zmike
Subscribers: cedric, seoz
Maniphest Tasks: T1364
Differential Revision: https://phab.enlightenment.org/D1331