Summary: Wayland windows should follow X11 windows fairly closely,
thus only set withdrawn property if they are override windows. If not,
internal dialogs do not show up in Enlightenment (wayland-only).
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
so this is a re-try at the evas gl destination alpha fix. this is what
cedric tried, but done RIGHT. it required adding an ecore_x call to
create a window with correct visual/colormap. it requires doing
visuals totally correctly all the way from ecore_evas to the evas
gl_x11 core. nvidia drivers are very picky about visuals. i also had
to vid the egl/gles code too to do the same thing. nvidia gles/egl
drivers are also picky, mesa is not. this all requires a lot of code
changes. it's far from trivial
this isn't backported for a few reasons:
1. verify this fix doesn't break for anyone.
i tested:
nvidia glx + egl/gles
intel glx + egl/gles
radeon glx
it needs wider testing. nouveau, fglrx for starters and maybe
some other gles/egl drivers.
2. have some review time
3. time to settle before blasting to stable branches
@fix
Summary: Since we have a field inside the engine info structure to
store a reference to the Ecore_Drm_Device, then let's set it.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
xdg_shell protocol supports minimizing surfaces. When elm apps request
iconification, they will call ecore_evas_iconified_set which in turn
will make use of the newly added ecore_wl_window_iconified_set function.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: If no device name was passed in to ecore_drm_device_find
function, then if we fail to find the default drm device on the first
call, there is No point in calling the same function again to get the
same result.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This implements ecore_evas_pointer_xy_get for the drm engine, However
this is simply using evas_pointer_output_xy_get for the moment because
I need to add ecore_drm functions for getting pointer position.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
While it is bad that the given device is not found we fall back here
to the default one. Still good to mention it in the error message as
it can be confusing when we read that the device could not be found
be it still works.
This adds the ecore_evas function pointer for
ecore_evas_screen_geometry_get. This will be used from the drm
compositor to return the current screen geometry.
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Get rid of the old NSApplicationLoad() which was aimed to be use with Carbon. Unless the NSRunLoop is strictly integrated to the ecore_main_loop() (where cocoa events would be checked when entering the ecore_main_loop) I think the poller is the only option left.
Reviewers: raster, naguirre, raoulh, stefan_schmidt, cedric
@feature
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1222
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This #ifdef does not belong here. The interface_new functions Is Still
Used for normal drm ecore_evas.
Bad Gwanglim, no cookie ;)
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
@fix
Summary:
This fixes following build script problems for ecore_evas_drm engine module.
1. Missing link to gbm for ecore_evas_drm if '--enable-gl-drm' option is given.
ecore_evas_drm engine is using gbm function if it builds with that config option.
To be more exact, ecore_evas_gl_drm_new_internal function needs gbm.
Thus we need to add gbm library linking '-lgbm' to ecore_evas_drm engine module
if '--enable-gl-drm' option is given. I've added this build script to
m4/ecore_check_module.m4 file.
2. Wrong gbm dependency check code in configure.ac
EFL_OPTIONAL_INTERNAL_DEPEND_PKG m4 macro function is designed for checking
dependency of efl internal libraries. Thus we should remove gbm pkg name when
configuring ecore_evas_drm engine module. It would be better to move dependency
check for gbm to m4/ecore_check_module.m4 file. And one more thing want_drm
value has to be changed to want_gl_drm in ECORE_EVAS_MODULE([gl-drm]...).
3. BUILD_ECORE_EVAS_OPENGL_DRM macro is always defined in configure.ac.
This kind of macro, BUILD_EFL_MODULE_NAME, has to be defined only if given module
is enabled. But this macro value was just defined with no test.
And it is even useless, we can use BUILD_ECORE_EVAS_GL_DRM macro which is defined
by ECORE_EVAS_MODULE([gl-drm], [${want_gl_drm}],...) function.
So I've removed that from configure.ac.
Test Plan:
1. Configure with --enable-gl-drm:
$ ./autogen.sh --enable-drm --enable-gl-drm
2. Build:
$ make && make install
3. Check module.so of ecore_evas_drm engine whether it has a library dependency with gbm:
$ readelf -a $EFL_GIT/src/modules/ecore_evas/engines/drm/.libs/module.so | grep NEEDED
Reviewers: raster, stefan_schmidt, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1379
Summary:
When ee is trying to do rotation, ee should check whether given rotation value
is portrait or not. Then it sets output size of evas canvas according to rotation value.
But, ECORE_EVAS_PORTRAIT macro used in ee x engine only checks ee's rotation value, even
if ee's rotation value is not updated yet. Thus we should change the logic to compare with
given rotation value, not ee's rotation, before setting output size of evas.
This fixes T1371 problem.
@fix
Test Plan:
1. run elementary_test -to "window states"
2. check resize
3. rotation 0 ~ 270
Reviewers: jpeg, raster, cedric, zmike, devilhorns, Hermet
Reviewed By: Hermet
Subscribers: cedric
Maniphest Tasks: T1371
Differential Revision: https://phab.enlightenment.org/D1351
Recent expedite changes have uncovered an issue where the ecore_evas
(under wayland) was not supporting async rendering correctly. This
fixes the issue so we can run expedite with -y and get redraws again.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This fix a case where when doing asynchronous rendering and no update was done,
the post render evas event would never be triggered and so no call to ecore evas
post render callback were made. Now the async X backend follow all other backend
behavior.
@fix
Summary: This is the first step to introduce a gl-drm backend.
Test Plan: "ecore evas" create with ecore_evas_gl_drm_new(). It creates "ecore evas" with gl_drm evas backend.
@feature
Reviewers: raster, Hermet, cedric, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1187
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Plug image is displayed incorrect after connect to socket.
Test case: Run ecore_evas_extn_socket_example -> run ecore_evas_extn_plug_example -> click Change bg to change bg color.
Run 2nd ecore_evas_extn_plug_example. The plug area image of 2nd plug is incorrect display (different with 1st plug image).
Reason: When a plug connects to socket, socket sends incorrect buffer information.
Fix: Change buffer information.
@fix
Reviewers: Hermet, huchi
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1232
Summary: Add support for canvas resizing: the window was resizable but its content was not resized.
Reviewers: raster, raoulh, naguirre, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1163
Summary:
When a client is added to socket server, socket server sends NBUF (2) times of OP_RESIZE, OP_UPDATE, OP_UPDATE_DONE messages to client. However, only one message of OP_RESIZE, OP_UPDATE, OP_UPDATE_DONE is enough.
This patch removes redundant OP_RESIZE, OP_UPDATE, OP_UPDATE_DONE sending.
Reviewers: raster, Hermet
Reviewed By: Hermet
CC: woohyun, huchi
Differential Revision: https://phab.enlightenment.org/D1141
ecore_evas_cursor_object_set
NB: Previously, if we mad calls to ecore_evas_cursor_object_set to update the
mouse cursor hotspot, the mouse cursor would be repositioned at 0,0 on
the canvas due to x & y being set to 0,0. We fix that here by fetching
the current mouse position Regardless if we are changing the object or
not (ie: perhaps we are just updating the hotspot and not the object)
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
NB: Don't recall what the initial point was here, but I don't see one
now lol. No real usage for checking the ecore_wl_init count anymore so
remove the variable as we don't need to do that.
@fix
Signed-off-by: Chris Michael <devilhorns@comcast.net>
In some cases, the image has a format different from RGBA,
so image_data_set will be invalid as the new data is expected to
be RGBA. This happened with ETC2 images.
@fix: As it turns out, we cannot just blindly set the regions here
during resize. Elementary apps will set the opaque region to account
for any edj frames, and having the region_set calls Here was
causing issues....
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
plug image object was not cleaned after server disconnection.
specifically, image data was cleaned (NULL), but it was not updated for real on screen
--> set dirty of plug image object
@fix
Test Plan: elementary_test -> open window socket -> open window plug -> close window socket -> plug should be cleaned up
Reviewers: raster, cedric
Reviewed By: raster
CC: seoz, cedric
Differential Revision: https://phab.enlightenment.org/D703
Summary:
Since plug sends message by using deleted server handle (dangling pointer),
I could see glorious error message as below:
*** ECORE ERROR: Ecore Magic Check Failed!!!
*** IN FUNCTION: ecore_con_server_send()
ERR<842>:ecore lib/ecore/ecore.c:729 _ecore_magic_fail() Input handle pointer is NULL!
ERR<842>:ecore lib/ecore/ecore.c:740 _ecore_magic_fail() *** NAUGHTY PROGRAMMER!!!
*** SPANK SPANK SPANK!!!
*** Now go fix your code. Tut tut tut!
Therefore, I initialized server handle on server deletion
@fix
Test Plan: create socket -> create plug -> destroy socket -> mouse move on plug area
Reviewers: raster, cedric
Reviewed By: raster
CC: seoz, cedric
Differential Revision: https://phab.enlightenment.org/D701
and update input & opaque regions after resizing.
@bugfix: We do not need to call ecore_wl_window_damage & commit here.
The damages are already handled in the evas engine for both shm & egl.
Those damages are sent to the compositor Already from the evas engine,
so we don't need to send the same damages twice. This reduces more
useless compositor redraws as we are not constantly sending damages &
calling commit twice for every frame.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
extn send ecore event when plug is connected/disconnect
(ECORE_EVAS_EXTN_CLIENT_ADD/ECORE_EVAS_EXTN_CLIENT_ADD)
By the way, the event data is currently "Ecore_Evas_Engine_Buffer_Data" which should be hidden
Moreover, when I make multiple sockets,
I need a event data to distinguish which socket is connected by client.
Therefore, I recommend to use Ecore_Evas as event data.
@fix
Reviewers: raster, Hermet, woohyun, cedric, seoz
Reviewed By: raster
CC: seoz, cedric
Differential Revision: https://phab.enlightenment.org/D690