efl/src/modules/evas/engines/software_x11
Guilherme Iscaro 8040d20f90 This series fixes two problems in the VNC implementation.
One deadlock and one segfault.

Patch 1:

Software X11 Evas Engine: Fix deadlock

Summary:
The patch bc6e8d2692 introduced a callback responsible to notify the pixels
that were sent to the X server. Since all EFL rendering is done by another
thread, the callback should be called from the main thread context.
To achieve this behaviour evas_software_x11_region_push_hook_call()
was using ecore_thread_main_loop_begin(), which may cause deadlocks, since
evas mainloop waits for the render thread and the render thread waits
the mainloop.

In order to fix this problem, the function
ecore_main_loop_thread_safe_call_async() will be used to
schedule the callback to run in the main loop context.

Since a callback is schedule to run in async manner, the pixels that
were sent to the X server must not be deleted until the user is informed.
In order to avoid more mallocs(), this patch adds the support for refcounts to the
X_Output_Buffer and Xcb_Output_Buffer.

Patch 2:

Ecore_Evas VNC: Use the image size to create the buffer.

In same cases they may differ and may lead to a segfault, since
memcpy() causes a buffer overrun.

Reviewers: bdilly, raster

Reviewed By: raster

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4323
2016-10-21 13:56:00 +09:00
..
Evas_Engine_Software_X11.h Evas Software X11: Add a callback that informs the current screen content pixels. 2016-09-26 22:06:59 -03:00
evas_engine.c This series fixes two problems in the VNC implementation. 2016-10-21 13:56:00 +09:00
evas_engine.h This series fixes two problems in the VNC implementation. 2016-10-21 13:56:00 +09:00
evas_x_egl.c
evas_x_egl.h
evas_xcb_buffer.c This series fixes two problems in the VNC implementation. 2016-10-21 13:56:00 +09:00
evas_xcb_buffer.h This series fixes two problems in the VNC implementation. 2016-10-21 13:56:00 +09:00
evas_xcb_color.c
evas_xcb_color.h
evas_xcb_image.c Evas x11: Fix warnings and invalid calls in engine 2016-04-04 14:42:34 +09:00
evas_xcb_image.h Evas_Engine: add TBM surface and clean up Native Struct 2016-01-05 17:01:45 +09:00
evas_xcb_main.c
evas_xcb_outbuf.c This series fixes two problems in the VNC implementation. 2016-10-21 13:56:00 +09:00
evas_xcb_outbuf.h evas_engines: Send both surface and buffer damage to outbuf_flush callback 2016-10-19 16:29:05 -05:00
evas_xcb_xdefaults.c
evas_xcb_xdefaults.h
evas_xlib_buffer.c This series fixes two problems in the VNC implementation. 2016-10-21 13:56:00 +09:00
evas_xlib_buffer.h This series fixes two problems in the VNC implementation. 2016-10-21 13:56:00 +09:00
evas_xlib_color.c Evas: fix resource leak. 2014-09-11 12:56:02 +02:00
evas_xlib_color.h
evas_xlib_dri_image.c evas software x11 - dri swapping - fix possible coverity bug 2016-07-11 21:29:32 +09:00
evas_xlib_dri_image.h evas software_x11: use void to force empty function parameters 2015-11-26 17:26:36 +01:00
evas_xlib_image.c Evas x11: Fix warnings and invalid calls in engine 2016-04-04 14:42:34 +09:00
evas_xlib_image.h Evas_Engine: add TBM surface and clean up Native Struct 2016-01-05 17:01:45 +09:00
evas_xlib_main.c
evas_xlib_outbuf.c This series fixes two problems in the VNC implementation. 2016-10-21 13:56:00 +09:00
evas_xlib_outbuf.h evas_engines: Send both surface and buffer damage to outbuf_flush callback 2016-10-19 16:29:05 -05:00
evas_xlib_swapbuf.c evas_engines: Send both surface and buffer damage to outbuf_flush callback 2016-10-19 16:29:05 -05:00
evas_xlib_swapbuf.h evas_engines: Send both surface and buffer damage to outbuf_flush callback 2016-10-19 16:29:05 -05:00
evas_xlib_swapper.c evas and ecore_x shm segment management - fix over allocation and perms 2016-07-26 13:21:50 +09:00
evas_xlib_swapper.h