These look like simple copy-paste issues however coverity was
reporting null pointer dereferences here so fix those.
Fixes Coverity CID1382959
Signed-off-by: Chris Michael <cp.michael@samsung.com>
several override redirect windows are being forcibly re-placed by e.
they should not be. ever. this affects scim's IM panel i see and
chromium's menus. it probably affects more than this. this fixes both
of these cases for sure. probably more.
@fix
find_program() did not detect the eldbus-codegen binary in a given
prefix. Which is a situation we have on Jenkins builds. Make it an
option that can be set like we already do with edje_cc.
If there is a more meson-like approach to this I do not know feel free
to enlight me.
setting desk after e_client_new() completes is too late, as a desk will have
been automatically set by this time and any existing positioning data will
have been mangled in the process
fix T6317
previously this resulted in attempting to move the comp object before it
was created, but evas does not throw any errors when null is passed and so
it was never noticed
fix T6317
ref T6326
this was incorrectly referenced from weston's x11 compositor, which directly
uses xcb events and sends them as wl_pointer events. efl translates all input
events to use the same button scheme numbering, coincidentally enabling the use
of this code for all backends
this works around an apparently atexit() handler in nvidia drivers
that if you fork() a parent and do NOT exec() then the child process
will end up messing with the parent processes access to the nvidia
devices/display/whatever i believe via an atexit() handler because
moving from exit() to _exit() solves the issue. fixes T6197
@fix
If we pass in screen geometry here when trying to set an output mode,
we can encounter "out of memory" errors from libdrm with outputs that
have a high resolution. As it turns out, we should be passing 0, 0 for
the x/y values when trying to set an output mode.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Currently e_comp_util_has_x() will still return true after the X
machinery is shut down - this can lead to crashes on logout under
wayland when xwayland apps are running. Clearing the root window
id resolves this.
@ref T5593
XWayland likes to set a buffer on the cursor surface then delete it before
we release it. I'm pretty sure when a client does that we're within spec
to just kill it, but users will likely find this response ungratifying.
So, instead, just gracefully fail to render the undefined surface.
@ref T5593
cancel may destroy the selection source, resulting in invalid access
==10735== Invalid write of size 8
==10735== at 0x87C8095: wl_list_remove (wayland-util.c:56)
==10735== by 0x2EE745: _e_comp_wl_data_device_selection_set (e_comp_wl_data.c:506)
==10735== by 0x2EF241: _e_comp_wl_data_device_cb_selection_set (e_comp_wl_data.c:714)
==10735== by 0x1021F037: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==10735== by 0x1021EA99: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==10735== by 0x87C70C0: wl_closure_invoke (connection.c:935)
==10735== by 0x87C13C8: wl_client_connection_data (wayland-server.c:406)
==10735== by 0x87C4483: wl_event_source_fd_dispatch (event-loop.c:90)
==10735== by 0x87C4DE4: wl_event_loop_dispatch (event-loop.c:423)
==10735== by 0x85AE346: _cb_create_data (ecore_wl2_display.c:399)
==10735== by 0x946857A: _ecore_call_fd_cb (ecore_private.h:347)
==10735== by 0x946AE51: _ecore_main_fd_handlers_call (ecore_main.c:2015)
==10735== by 0x946B823: _ecore_main_loop_iterate_internal (ecore_main.c:2403)
==10735== by 0x946935E: ecore_main_loop_begin (ecore_main.c:1308)
==10735== by 0x151139: main (e_main.c:1088)
==10735== Address 0x222ca980 is 16 bytes inside a block of size 136 free'd
==10735== at 0x4C2CE1B: free (vg_replace_malloc.c:530)
==10735== by 0x2F076F: e_comp_wl_clipboard_source_unref (e_comp_wl_data.c:1291)
==10735== by 0x214C6A09: _xwayland_send_cancelled (dnd.c:149)
==10735== by 0x2EE71D: _e_comp_wl_data_device_selection_set (e_comp_wl_data.c:504)
==10735== by 0x2EF241: _e_comp_wl_data_device_cb_selection_set (e_comp_wl_data.c:714)
==10735== by 0x1021F037: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==10735== by 0x1021EA99: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==10735== by 0x87C70C0: wl_closure_invoke (connection.c:935)
==10735== by 0x87C13C8: wl_client_connection_data (wayland-server.c:406)
==10735== by 0x87C4483: wl_event_source_fd_dispatch (event-loop.c:90)
==10735== by 0x87C4DE4: wl_event_loop_dispatch (event-loop.c:423)
==10735== by 0x85AE346: _cb_create_data (ecore_wl2_display.c:399)
==10735== by 0x946857A: _ecore_call_fd_cb (ecore_private.h:347)
==10735== by 0x946AE51: _ecore_main_fd_handlers_call (ecore_main.c:2015)
==10735== by 0x946B823: _ecore_main_loop_iterate_internal (ecore_main.c:2403)
==10735== by 0x946935E: ecore_main_loop_begin (ecore_main.c:1308)
==10735== by 0x151139: main (e_main.c:1088)
==10735== Block was alloc'd at
==10735== at 0x4C2DC05: calloc (vg_replace_malloc.c:711)
==10735== by 0x2F0520: e_comp_wl_clipboard_source_create (e_comp_wl_data.c:1231)
==10735== by 0x214C71C9: _xwl_selection_notify (dnd.c:286)
==10735== by 0x946130C: _ecore_call_handler_cb (ecore_private.h:331)
==10735== by 0x94626BC: _ecore_event_call (ecore_events.c:629)
==10735== by 0x946B83E: _ecore_main_loop_iterate_internal (ecore_main.c:2408)
==10735== by 0x946935E: ecore_main_loop_begin (ecore_main.c:1308)
==10735== by 0x151139: main (e_main.c:1088)
so if you closed the lid ANd didn't have external screens ANd had ac
plugged in ... e would suspend even if youdidn't have "suspend on ac"
checked in blanking dialog. respect this and handle it properly.
@fix
side note... i've notced acpid no longer reporting lid events on one
of my systems. this is very sucky. you now have to open
/dev/input/event2 (this may vary from device to device) to get lid
events... it's an input device. this means elput needs to start doing
this as we cant get power button or lid events anymore .... and we may
have to do this for x11 too.
comp_type is not set during initial pointer creation on startup but will be set at
the point of xwl startup, so use a check which will succeed
fix T6157
ref 2b8c70fe98
this laptop wakes from suspend if you plug or unplug it while
suspended. this leads to bad things. fix nthis by checking lid state
and resuspending if this happens.
@fix
This reverts commit 9e3b8b7528.
this only affects runtime in wayland-only environments while not preventing the option
from taking effect, meaning it affects nobody and prevents nothing
this function is mainly for rescaling maximized/fullscreen clients to fit new
dimensions, so don't call on other clients since this can trigger unwanted resize
events
This reverts commit 40e8bb044c.
EFL master solves this properly
EFL stable currently has a bug that solves this accidentally
so there's a window of about 3 commits in git where it's a problem,
and nobody should run those commits in production :)
This fix caused some problems when restarting E, as stdin would
cloexec and then the following startup would try to set cloexec
on an invalid fd and generate an err that generated a cri because
of an invalid log domain.
Someone should probably figure out the log domain thing.
Summary:
This implements support for Connman's proxy configuration.
The 'all_proxy', 'http_proxy', 'https_proxy' environment
variables are set to the first value of the 'proxy_servers' set.
The 'no_proxy' environment variable is set to a concatenated string
of all the 'proxy_exclude' values.
Reviewers: zmike!
Subscribers: cedric
Maniphest Tasks: T5442
Differential Revision: https://phab.enlightenment.org/D4833
modified by zmike
commit b9d166f804 introduced
safer exe functions that both prevent a child from having E's
stdin/stdout/stderr and ensure the child's fd 0 (and 1 and 2) are
"valid" file descriptors (to work around some buggy software that
assumes 0 is an invalid file descriptor)
This commit uses the safer functions when launching child programs from
the desktop menu as well.
ref T5606
@fix
this is specifically needed for wayland but is relevant to x with
startx too ... dont let processes that e runs like apps inherit
stdin/out/err as it may be a tty and thus allow apps to do nasty
things with that tty.
@fix
Turns out ecore_animator_add() can randomly pick the wrong canvas to use as
a tick source. Using EFL_EVENT_ANIMATOR_TICK on the compositor evas instead
will ensure we don't accidentally pick an internal window for a tick source.
Fix T6070
"
I have a directory at the head of my PATH that contains alternate
versions of command line utils like grep, ls, etc., but E puts
/usr/bin ahead of it, overriding my tools of choice with the system
defaults.
If my understanding is correct, the only way currently to have
directories that E prepends to your PATH appended instead is to use
-i-really-know-what-i-am-doing-and-accept-full-responsibility-for-it.
I'd like to see a more sane option if there isn't one already.
Alternatively, I wonder if it wouldn't be a better idea to only
prepend directories to PATH if they aren't already contained within
it--thereby preserving the user's desired search order.
"
this should fix T5953
@fix
in any case where client needs to be rescaled to use new screen geometry
certain things must happen, such as handling shaded state and forcing the
new geometry to be applied
This adds the icon associated with the file type to the preview.
If there's no artwork available the audio preview will no longer
be a large void, the mimetype icon will display.
so some other clients like mpv also try to explicitly position their
windows (like centering on screen 0 ALWAYS) and this now gets caught
up in trying to detect libreoffice doing the same thing for
presentations. so only support this is the app has explicitly
requested initial positionin explicitly and then use pending configures.
This isn't very accurate but seems to be what other tools that check at slower rates than every second do. For instance if you are checking every 10 seconds and in that time frame 500 kb was received, was the throughput for each second 50 kb? No, not likely, but that is the result you will see here. I guess this is one of those close enough things. Thanks to @davemds for reporting this issue.
It looks like the only way we can get here with NULL resource data
is when we explicitly cleared it in the del hook, meaning the client
is dead to us. In this case it's ok to ignore the cursor set request.
ref T4988
The engage feature was mainly there as a demo of the capabilities of bryce. Now that we are nearing release we need to clean up our gadgets. The engage style for the luncher gadget is not complete, and does not work adequately, and quite honestly better belongs as a feature of bryce itself not luncher.
Previously we immediately kicked back the frame callback when a client
sent a surface frame without damage. This let clients that use frames
for timing proceed, but they generally just send another frame right
away and spin in this way until they reach their intended render time.
Now we use animators so the frame callbacks will be limited to the
animator tick source's frequency.
ref T5850
if the window being moved to a new desktop is focused, then ensure
after the move to restore focus to the last focused in the focus stack
for this desk to something stays focused.
@fix
Small patch which adds the screen geometry to the output of drm2 randr
apply so we can test mutli-output setups and know which screen is where.
NB: No functional changes
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Previously when we were getting the output size, the resulting
geometry was being placed in the wrong variables which resulting in
randr screen config modes being set to zero. This patch also fixes the
issue where when setting drm2 output mode, we were always passing in
0x0 as the output geometry.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
when opening a popup with an in-progress transaction the progressbar need to be created with the last received Progress value. Otherwise it will stay at zero until the next Progress change
this is actually broken, as is entire the concept of using mixed e+elm configs.
if a user manually changes the profile, e.g., for a single app, then this will
overwrite the global profile name. similarly, setting the profile in this manner
overwrites the global profile, causing all existing apps to switch to that profile
this is a rectangle which dynamically resizes based on the available space
in the bar. it can only be added when autosize is disabled, and setting
autosize will remove all spacers
fix T5914