Commit Graph

3672 Commits

Author SHA1 Message Date
Vitalii Vorobiov 405e56ac55 svg_parse: parse linear gradient variables accroding to gradientUnits
There are difficult cases according to
https://www.w3.org/TR/2000/CR-SVG-20000802/pservers.html
2017-11-07 11:54:09 +09:00
Vitalii Vorobiov 6139aa78d5 svg_parse: implement <length> parse
Accodring to https://www.w3.org/TR/SVG/types.html#Length
length ::= number ("em" | "ex" | "px" | "in" | "cm" | "mm" | "pt" | "pc" | "%")
This is still work in progress since some of lengths should be treated
differently, for example gradient lengths
2017-11-07 11:54:09 +09:00
Vitalii Vorobiov 1354c1c8ab svg_parse: save global size variable to use when gradient size recalc
For example while userSpaceOnUse it uses not figure's x,y,w,h
but entire canvas, so we need to save it publically and recalc while
parsing (or after)
2017-11-07 11:54:09 +09:00
Vitalii Vorobiov fac649c7f4 vg_common: parse and store userSpaceOnUse (for gradient) when it is set
So it can be calculated during the draw later on
2017-11-07 11:54:09 +09:00
Vitalii Vorobiov 532557cabd vg_loaders/svg: set up default focal values for radialGradient
Since when not specified, focal values same as center points
fx = cx, fy = cy by default

@fix
2017-11-07 11:54:09 +09:00
Vitalii Vorobiov 78bc406640 saver/svg: parse loaded tree data into svg XML file and save it
Just base source code which will parse all structures of svg tree into
xml text to save current vector image into file

@feature
2017-11-07 11:54:09 +09:00
Vitalii Vorobiov 7d9c1256a3 vg_savers/svg: empty (for now) module that will save svg in original file
Just as a starter to make a working background that, later on, will go
through Svg_Node's and build a certain source code to be saved in SVG
picture as a file
2017-11-07 11:54:09 +09:00
Jean-Philippe Andre a75b3dcdfb elm: Try to fix compilation (link) for OSX 2017-11-07 10:43:07 +09:00
Chris Michael 01920b996a emotion: Fix data race condition
Coverity reports that we access vfmapped here without holding a lock.
This patch implements eina_lock_take/release while accessing
priv->vfmapped.

Fixes Coverity CID1381624

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 10:07:48 -05:00
Chris Michael fd79e32dbd evas-wayland-shm: Do not dereference a potentially freed pointer
Coverity reports that _evas_dmabuf_buffer_init function here can
potentially free the surface that was passed into it. If that happens,
we should not be calling the _fallback function with surface as the
parameter as that will directly dereference the freed pointer.

Fixes Coverity CID1381707

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 10:02:35 -05:00
Chris Michael de1e18ef7d evas-gl-cocoa: Remove need for useless region_free function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:28:53 -05:00
Chris Michael 3ae469e648 evas-gl-drm: Remove need for useless region_free function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:27:39 -05:00
Chris Michael 85a9716c8f evas-gl-sdl: Remove need for useless free_region function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:26:13 -05:00
Chris Michael c8e5614830 evas-gl-x11: Remove need for useless free_region function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:25:19 -05:00
Chris Michael e04ad61ab4 evas-wayland-egl: Remove need for useless free_region function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:23:13 -05:00
Chris Michael 39184e78af evas-wayland-shm: Remove need for useless free_region function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:21:59 -05:00
Chris Michael 31a7963196 evas-software-x11: Remove need for useless free_region function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:19:20 -05:00
Chris Michael 5edae8b9c1 evas-software-gdi: Remove need for useless free_region function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:17:02 -05:00
Chris Michael f32c1ece7e evas-software-ddraw: Remove need for useless free_region function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:15:54 -05:00
Chris Michael 9f5555a887 evas-eglfs: Remove need for useless free_region function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:14:14 -05:00
Chris Michael 5f897542aa evas-drm: Remove need for useless free_region function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:13:12 -05:00
Chris Michael 6016ce8133 evas-software-generic: Check for render engine function before calling
In most engines which inherit from software_generic, they do not
implement the outbuf_free_region_for_update function. Most engines
have it as an unused function. If we simply add a check here, then we
can reduce the need for having useless function in multiple engines.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-06 09:10:28 -05:00
Chris Michael 0a25543ed5 evas-wayland-shm: Fix formatting
Make this line readable in 80 columns

NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-01 12:39:09 -04:00
Chris Michael 945764eb7c evas-drm: Fix formatting
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-11-01 12:38:44 -04:00
Jean-Philippe Andre 824792f09d elm: Major cleanup of EO files
This prevents legacy EO classes from being exposed through .eo.h headers
or .eo in share/eolian/includes. Also removes a slew of useless xxx_eo.h
intermediate headers.

Notes:
 - elm_systray has no proper API: it's not clear if the EO API should be
   released (in which case it needs to be renamed to efl_something) and
   there is no legacy API to create a systray object.
 - Some files have been placed in a "FIXME" section, as I believe they
   are necessary within EO land, but at the same time still don't
   conform to the interfaces (eg. name starts with elm_).
 - elm_interface_scrollable is required by photocam. This means photocam
   needs to be adapted to fit the EO scroller API (still to be
   completed, I believe).

Bugs:
 - This breaks most C++ examples. I KNOW. And I'm working on it.

Ref T5301
2017-11-01 21:23:31 +09:00
Jean-Philippe Andre 9cec14918c evas: Move evas_canvas.eo to legacy-only
This isn't meant to be installed. The canvas API in EO is based around
the interfaces Efl.Canvas and the widget Efl.Ui.Win. Anything else is
not EO (eg: ecore_evas, evas, ...)

Note: evas_canvas3d is the last remaining thing that is installed along
EO files, but those are all beta APIs.
2017-11-01 11:22:33 +09:00
Derek Foreman 059613222a ecore_evas_wayland: Fix session recovery
Turns out when apps reconnect to the compositor they don't always
realize they need to redraw themselves.  Force a manual render
at startup if we end up in a state where an update is needed but
has probably been dropped on the floor.
2017-10-30 14:23:07 -05:00
Subhransu Mohanty bf79ec359d vg_savers/eet: Added implementaion of vg saver to eet file 2017-10-27 14:58:38 +09:00
Subhransu Mohanty 24ac2d6516 vg_loaders/svg: Copied svg loading implementation from edje_cc 2017-10-27 14:58:38 +09:00
Subhransu Mohanty 079838e926 vg_loaders/eet: Added implementaion for loading from eet file 2017-10-27 14:58:38 +09:00
Cedric BAIL abd41c93ea evas: image_native_set actually receive a context, not an output. 2017-10-26 13:01:56 -07:00
Mike Blumenkrantz f375661e0b wayland: use eina array for ecore-evas event handlers
thx to @jpeg for reporting how dumb this was
2017-10-25 10:44:16 -04:00
Mike Blumenkrantz ffac7fc539 wayland: fix window stack implementation
ref T5350
2017-10-25 10:44:16 -04:00
WooHyun Jung c1094da0f4 efl_ui_clock: changed property name from value to time 2017-10-25 16:44:25 +09:00
Jean-Philippe Andre 1b481f0ae8 widget: Rename events to EFL_UI_WIDGET_EVENT_XXX
This only affects the events (and the data type has an alias).

Ref T5363
2017-10-24 14:37:45 +09:00
Jean-Philippe Andre 98622623a0 evas: Prevent crash with image_data_get
If the image has no data, it may get an allocated surface of 1x1 but it
is not sane to return the pointer to that data, as the user would expect
a normally sized image (in my case, 1920x1080).

I do not fully understand what is going on with this image. But at least
this transforms a crash into a simple ERR in ~/.xessions-errors

Two similar crashes happened:
 - SIGSEGV by writing data outside of the image data
 - abort() in free() because the malloc metadata has been overridden
   when writing outside of the image data (newly allocated 1x1).

Fixes T5957

@fix
2017-10-18 22:12:57 +09:00
Derek Foreman 3dd90f61a9 ee_wayland: Don't use wrong window size
Borderless windows, such as internal windows, need to be the exact size
they're passed by a configure event.
2017-10-16 16:17:29 -05:00
Carsten Haitzler 6cd3d4026c jp2k module - dont print ERR on llading if format wrong
this is normal - brute force trying loaders until one succeeds is
normal is etn doesnt help identify it or it fails the first
guess-by-extension. printing errors is not good as this is an ok and
EXPECTED error. slience!

@fix
2017-10-16 08:42:13 +09:00
Cedric Bail 7e00ab4222 evas: mark parameter unused now that it is not necessary anymore. 2017-10-13 12:58:01 -07:00
Prince Kumar Dubey df5f404f09 evas: to avoid warning unused variable and unnecessary assignment is removed.
Reviewers: raster, cedric

Subscribers: rajeshps, jpeg

Differential Revision: https://phab.enlightenment.org/D5305

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-10-13 12:14:26 -07:00
Prince Kumar Dubey 41197981ab efl: unsigned int/long never be less than zero. Fixed.
Reviewers: raster, cedric

Subscribers: rajeshps, jpeg

Differential Revision: https://phab.enlightenment.org/D5300

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-10-13 12:07:28 -07:00
Prince Kumar Dubey cb4a17ab22 ecore_evas: preprocessor flag "BUILD_ECORE_EVAS_SOFTWARE_GDI" is not closed properly, if not defined, leads to build break.
Reviewers: raster, cedric

Reviewed By: cedric

Subscribers: rajeshps, jpeg

Differential Revision: https://phab.enlightenment.org/D5299

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-10-13 12:05:43 -07:00
Derek Foreman 10b6383640 ecore_wl2: Synchronize state with surface commits
This is really several inseparable commits mashed together, as doing this
a piece at a time would introduce broken intermediate revisions.

Double buffer incoming "configure" state from the compositor so it's held
back during asynchronous render and processed at frame completion.

Hold off on certain requests if their API has been invoked during async
render.

This should fix a lot of races, cosmetic issues, issues where weston can
kill our clients for acking configure (or not) at bad times, etc.
2017-10-12 12:24:03 -05:00
Derek Foreman 159a5beb27 wayland_dmabuf: Clean up unused variable
Pending is useless now that we use immediate buffer creation.
2017-10-12 12:24:03 -05:00
Derek Foreman b93319b10e wayland_dmabuf: Use create_immed
We've really always needed to do immediate creates.  On a surface resize
there's no place to wait for the round trip for the new buffers to exist.

We've gotten away with this until now by good luck because we dispatch
wayland events during asynchronous render.  However, with async render off
or if schedule happens in an unfortunate order, we can end up with
tearing.
2017-10-12 12:24:03 -05:00
Derek Foreman 64b36c6767 ecore_evas_wayland: Use ecore_wl2_false_commit to trigger frame callbacks
This will allow us to receive a tick without changing any other state.
2017-10-12 12:24:03 -05:00
Derek Foreman 0a185d3efd ecore_wl2: Add new API to latch window state for updates
Add an API to call at the beginning of render to latch state at
that moment, and use it for the wayland engine.
2017-10-12 12:24:03 -05:00
Derek Foreman 0badc0522b ecore_wl2: Split configurations into client set and compositor requested
This should lead to clearer and more maintainable code than having one
pile of state that's asynchronously fiddled with by both client and
compositor.
2017-10-12 12:24:03 -05:00
Derek Foreman 10b3a41ab0 ecore_wl2: Move some state into its own struct
These need to be double buffered, and that will be done in a follow up
patch.
2017-10-12 12:24:03 -05:00
Derek Foreman a3ac6043ab ecore_wayland: Use ecore_wl2_window_resizing_get() to get resizing
Use the getter instead of directly accessing the structs.
2017-10-12 12:24:03 -05:00
Derek Foreman 7f27237171 wayland_shm: Make some function static
Only used in this file.
2017-10-12 12:24:03 -05:00
Derek Foreman 46146caa43 wayland_shm: Kill stale comment
This comment doesn't make sense now, as all the frame callback stuff
is in ecore_wl2.
2017-10-12 12:24:03 -05:00
Derek Foreman 9bcc24dbb8 wayland_dmabuf: make dlsym queried symbols static
We only need these in this file.
2017-10-12 12:24:03 -05:00
Derek Foreman e207e05067 wayland_shm: Remove hidden from the outbuf
Outbuf shouldn't have to track its hidden status, that should be ecore_evas
problem.  Until now we were doing this because our kludgey wayland
ticking made things difficult, but I think it's safe to remove now.
2017-10-12 12:24:03 -05:00
Derek Foreman 656d892581 wayland_shm: Remove hidden from surface posting calls
Now that we tick based on frame callbacks it should be impossible to post
an update while hidden.
2017-10-12 12:24:03 -05:00
Derek Foreman c72b0b44ad wayland_shm: stop storing wl_display in dmabuf_surface
Query it through the engine info's ecore_wl2_display instead.
2017-10-12 12:24:03 -05:00
Derek Foreman ceb90779ff evas_shm: Remove wl_dmabuf and wl_shm from engine info
All queries for these are now on the ecore_wl2_display
2017-10-12 12:24:03 -05:00
Derek Foreman 4a23e69bcc wayland_shm: Remove surface_set function
Now that we use the display's shm and dmabuf pointers we don't need to
update them.
2017-10-12 12:24:03 -05:00
Derek Foreman 2b9a22e3a9 wayland_dmabuf: Query zwp_linux_dmabuf_v1 from display
Get it from the display instead of using our stored copy.
2017-10-12 12:24:03 -05:00
Derek Foreman f421521bed evas_shm: query wl_shm from ecore_wl2_display
Stop using the internally stored copy, always query from active display.

This fixes session recovery.
2017-10-12 12:24:03 -05:00
Derek Foreman 3f576e8436 wayland_shm: Add Outbuf to Surface struct
We're going to need that soon.
2017-10-12 12:24:03 -05:00
Derek Foreman 5fa7263440 wayland_shm: Pass Surface instead of Shm_Surface
Surface has some variables we'll need later.
2017-10-12 12:24:03 -05:00
Derek Foreman 7faa20f3c8 wayland_shm: Handle dirty bit outside of the backends
We don't have to query that deeply to know whether we need to redraw the
buffer or not, we can make that decision in more generic code.
2017-10-12 12:24:03 -05:00
Derek Foreman 2a15d7b730 wayland_shm: Store the ecore_wl2_display in the Outbuf
We'll need it soon.
2017-10-12 12:24:03 -05:00
Chris Michael 5a93b22d50 ecore-evas-drm: Reduce code duplication
Minor code cleanup to reduce duplicated function calls.

NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-10-11 13:07:09 -04:00
Chris Michael 6701bd162d emotion: Properly unmap video frame
Calls to gst_video_frame_unmap should take a GstVideoFrame as a
parameter (not a buffer). I believe this was the intended function
here (to unmap the video frame), so fix the call to not pass a
GstBuffer.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-10-11 09:21:48 -04:00
Carsten Haitzler 0d7b967f45 emotion gst1 - handle null imagwe data returrn and dont crash
fix crash i spotted thanks to getting img obbj data returning null.
@fix
2017-10-07 18:25:19 +09:00
Cedric BAIL fc7e244e99 evas: remove unused fonction evas_gl_common_image_load. 2017-10-05 09:36:45 -07:00
Chris Michael 7b7161ea13 evas-gl-image: Fix dereference after null check
Coverity reports passing a null pointer 'im->gc' to
evas_gl_common_context_flush which directly dereferences it, so lets
be sure that 'im->gc' is valid before passing it to context_flush

Fixes CID1374273

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-10-05 09:54:03 -04:00
Chris Michael cec6793db4 evas-gl-common: Fix dereference after null check
Coverity reports that there may be a null pointer dereference here so
check that 'error' exists before trying to set it.

Fixes CID1374272

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-10-05 09:51:00 -04:00
Cedric Bail 867d826395 evas: remove image_load from the engine. 2017-10-04 21:48:26 -07:00
Chris Michael 5e36b1c7c1 ecore-evas-drm: Implement support for hardware output rotations
This patch adds support for doing output rotations via hardware. This
is implemented inside the Ecore_Evas engine so that it is transparent
to the caller of ecore_evas_rotation_set.

ref T5999

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-10-04 11:41:59 -04:00
Carsten Haitzler 246d8dbda5 evas ector gl - fix leak of image data on data put
@fix

fix coverity found leak CID 1374645
2017-09-29 12:26:57 +09:00
Carsten Haitzler 9f91d0d284 evas ector gl - make coverity happy about leaks on data put
fix CID 1374646
2017-09-29 12:26:57 +09:00
Carsten Haitzler 92e8935fa6 ecore evas - wayland - avoid divide by 0 if height is 0
fixes CID 1379247
2017-09-28 15:28:00 +09:00
Youngbok Shin 1750410650 evas: Add scale feature for embedded bitmap fonts.
Summary:
When evas selects a strike of embedded bitmap font,
calculate ratio and use it for scaling embedded bitmap.
@feature

Reviewers: jpeg, tasn, woohyun, raster, herdsman

Reviewed By: raster

Subscribers: charlesmilette, Francesco149, cedric

Differential Revision: https://phab.enlightenment.org/D2713
2017-09-26 11:31:31 +09:00
Vincent Torri 0cdd501246 EFL For WIN32: Replace HAVE_EVIL define with _WIN32 2017-09-22 05:06:10 -05:00
Chris Michael b1d831c552 evas-drm: Fix uninitialized variables
Small patch to fix Coverity reported issues of uninitialized variables

Fixes CID1381306, CID1381305, CID1381304, CID1381303

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-09-20 06:26:05 -04:00
Chris Michael 9efac538cc ecore-evas-drm: Implement actual evas engine rotations in drm
This patch implements handling of evas output rotation for the
ecore_evas drm engine.

ref T5999

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-09-19 13:10:33 -04:00
Chris Michael 7198fe568b evas-drm: Support rotations other than 0
This patch adds support for software rotation in the evas drm engine.
This is a fallback codepath in case hardware rotation is not supported
for a given rotation amount. This patch also fixes a leak of and
pending updates during output buffer free.

ref T5999

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-09-19 13:10:33 -04:00
Chris Michael 8a516c4d4f evas-drm: Override eng_output_resize function
This patch provides an override in the evas drm engine for the output
resize function. We override this function so that we can reconfigure
the output buffer.

ref T5999

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-09-19 13:10:27 -04:00
Chris Michael 7bbafe034b ecore-evas-drm: Formatting
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-09-19 09:04:34 -04:00
Jean Guyomarc'h 96ab58fb8e eina: prevent memory corruption in chained mempool
The chained mempool uses eina trash to dispose and retrieve memory
blobs. Problem is that eina trash requires the memory blobs to be at
least of the size of a pointer. If the size of an element in the mempool
is less than the size of a pointer, which _is_ possible as no minimal
size is enforced, eina_trash will silently corrupt the memory pool.

To prevent memory corruption while still allowing small elements, the
size of an element defaults to the size of a pointer if it was smaller.
This comes at the cost of consuming slightly more memory in these cases,
but at least the memory pool can be safely be used.

@fix
2017-09-16 14:28:39 +02:00
Amitesh Singh 3984148b8e efl.ui.clock: correct value_set/get & value_min/max APIs signature.
We could just pass Efl_Time value as copy by value to set time in setter APIs
and return Efl_Time value in getter APIs.

Thanks to @JackDanielZ for the report.

Fixes T6008
2017-09-13 20:38:52 +09:00
Jean-Philippe Andre 4b10cf2e40 filters: Fix GL support aka. cedric's bork 2017-09-06 09:12:28 +09:00
Cedric Bail 743c80ad8b eina: properly mark memory for valgrind before accessing it in one_big mempool. 2017-09-05 17:01:03 -07:00
Amitesh Singh 373e6a0918 eina: fix compilation after b0rking in c9a0237770
Ref T5966
2017-09-05 16:22:33 +09:00
Cedric Bail c9a0237770 eina: properly track valgrind use of the mempool.
T5966
2017-09-04 03:12:57 -07:00
Carsten Haitzler d42ec53154 wayland_shm - clean out ptrs after free - seeing invalid mem/ptr access
enlightenment internal windows insta segv e on rpi. after much hunting
it seems a fallback is happening and bunk ptrs are being used. this at
least will make the problems more reliable with null ptrs.
2017-09-02 21:53:23 +09:00
Derek Foreman 6e30535a3c wayland_shm: Try a little harder to verify exynos dmabuf capabilities
Turns out the "device_open" function pretty much just tests calloc
functionality, and doesn't open any device.  So let's allocate a
tiny bo and discard it to make sure we're actually on exynos.
2017-09-01 14:50:40 -05:00
Mykyta Biliavskyi 8c4e4811fd Software gdi: fix build on Windows.
Summary:
Function argument was renamed, but in function body still uses old
variable name.

Test Plan: Build on Windows host

Reviewers: cedric, vtorri

Reviewed By: vtorri

Subscribers: jpeg

Tags: #windows, #efl

Differential Revision: https://phab.enlightenment.org/D5152
2017-09-01 13:50:34 +03:00
Derek Foreman f886a76dae wayland: Force a display flush when committing surfaces
We had a hack in place to flush the display from an idle enterer instead
of after a surface commit.  This led to a problem where the idle
enterer dispatch order was:

renderer for main canvas
wayland dispatch idle enterer
renderer for mouse cursor canvas

The surface commit for the mouse cursor was never dispatched, so the mouse
cursor animation would only update at the rate other events occurred.

By flushing at the appropriate times instead we ensure a proper update.

ref T5850
2017-08-30 14:11:47 -05:00
Derek Foreman 388f8c41c8 wayland: Store Ecore_Wl2_Display instead of wl_display in engines
We'll need to call ecore_wl2 functions on it soon, and anything that
really needs the wl_display can query it.
2017-08-30 14:11:47 -05:00
Derek Foreman f2756f92e8 walyand_shm: Remove unused variable
Nothing in here actually cares about the wl_display anymore.
2017-08-30 14:11:47 -05:00
Reynaldo H. Verdejo Pinochet 2cf1fd3be9 emotion: gst: use proper GStreamer time-unit macros
Summary:
Do not harcode numbers that make no immediate sense.

Additionally: add some wont-hurt doc note and fix
two related typos.

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5145

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-08-29 17:08:05 -07:00
Reynaldo H. Verdejo Pinochet 835fd7a485 emotion: gst: drop Frenglish from English messages
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5144

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-08-29 17:03:11 -07:00
Jean-Philippe Andre fc0d2cb6a7 access: Fix crash in ecore
We use a temporary file for espeak (the accessibility text-to-speech
engine we use), and then we remove and close the file. But the fd was
not reset to -1 which meant that later on the previous fd was closed
again (this is kinda weird), but that fd was now invalid. Or rather it
was reused by ecore animator, closing the read-end of the pipe
(timer_fd_read). This caused SIGPIPE in the animator code.

Thanks strace and gdb for helping me figure out this. :)

@fix
2017-08-29 13:33:49 +09:00
Cedric Bail 5e935a8ca9 evas: handle new API use correctly for gl_drm backend. 2017-08-28 11:32:13 -07:00
Cedric Bail 2ac0a755e1 evas: fixup warning. 2017-08-28 11:13:40 -07:00
Cedric BAIL 6d1d47d50d evas: fix build with egl. 2017-08-25 15:55:26 -07:00
Cedric BAIL 7453980ccf evas gl: fix glview by avoiding make current
gl_generic_context_find() returns the gl shared context struct but
this is not just a read-only operation. It in turn calls window_use
which may call make_current. This can invalidate the work of evas gl
when the API tried to switch to a specific context.

This fixes evas gl with multiple outputs.

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-08-25 10:54:55 -07:00
Cedric BAIL 545c1a70f4 evas: make Evas_GL work with multi output. 2017-08-25 10:54:19 -07:00
Cedric BAIL 84c6d3332e evas: remove unused engine data from error set/get code. 2017-08-25 10:52:26 -07:00
Cedric BAIL e682f64193 evas: make vector graphic support multi output. 2017-08-25 10:52:14 -07:00
Cedric BAIL a0c58276c3 evas: do not use default output or any other during render pre. 2017-08-25 10:52:10 -07:00
Cedric BAIL 68b846c1f4 evas: remove unecessary use of output in filter code. 2017-08-25 10:52:07 -07:00
Cedric BAIL cc4d41c890 evas: make image_native_set use engine context not output. 2017-08-25 10:52:03 -07:00
Cedric BAIL 39d4e343b0 evas: make all window GLES3 or none. 2017-08-25 10:51:59 -07:00
Cedric BAIL 89c34cda21 evas: make function to find evas gl context from engine shared across backend. 2017-08-25 10:51:56 -07:00
Cedric BAIL f3f6a7e535 evas: make Evas_GL start to use engine and output separately. 2017-08-25 10:51:47 -07:00
Cedric BAIL bf0ad88144 evas: convert Evas3D use of output to engine when meaningful. 2017-08-25 10:51:44 -07:00
Cedric BAIL e9cd3e4c7c evas: remove image_content_hint_get from backend as it is unused. 2017-08-25 10:51:27 -07:00
Cedric BAIL ef55155e0e evas: switch font backend function to rely on engine instead of output. 2017-08-25 10:51:24 -07:00
Cedric BAIL d8871109d3 evas: convert evas backend cache function call to use Engine context. 2017-08-25 10:51:17 -07:00
Cedric BAIL fc603df8d1 evas: remove image_surface_noscale_region_get from engine backend as it is unused. 2017-08-25 10:51:13 -07:00
Cedric BAIL 1d57cb2627 evas: move all image object related function to use the engine instead of the output. 2017-08-25 10:51:10 -07:00
Cedric BAIL c436cf6931 evas: gl_common should not segv on freeing a NULL gl_image. 2017-08-25 10:50:59 -07:00
Cedric BAIL b6296c6fb4 evas: add infrastructure to find a gl_context from a GL_Engine. 2017-08-25 10:50:45 -07:00
Cedric BAIL 3a8d98a54f evas: introduce a engine_new/free in gl_generic backend. 2017-08-25 10:50:35 -07:00
Cedric BAIL 46e2e103d7 evas: refactor the call to window_use. 2017-08-25 10:50:31 -07:00
Cedric BAIL 326ff87216 evas: refactor gl_generic use of window_use with context_get. 2017-08-25 10:49:59 -07:00
Cedric BAIL 28397e7206 evas: differentiate engine from output. 2017-08-25 10:49:53 -07:00
Cedric BAIL 94dbcf3e0d evas: simplify drm output cleanup code. 2017-08-25 10:49:46 -07:00
Cedric BAIL 1626b5b8cd evas: refactor ddraw engine to have less useless indirection function call. 2017-08-25 10:49:42 -07:00
Cedric BAIL aa88a4f6ab evas: refactor gdi to have less useless function redirection. 2017-08-25 10:49:37 -07:00
Cedric BAIL 8b95fdbfd3 evas: refactor drm engine to have useless function redirection. 2017-08-25 10:49:32 -07:00
Cedric BAIL 262ab2bd54 evas: refactor wayland_shm backend to have less useless function redirection. 2017-08-25 10:49:28 -07:00
Cedric BAIL 8c16402a2c evas: refactor fb engine to have less useless function redirection. 2017-08-25 10:49:23 -07:00
Cedric BAIL 93531868c7 evas: refactor buffer engine to have less indirect useless call. 2017-08-25 10:49:19 -07:00
Cedric BAIL 3e88aa37bc evas: Render_Engine_Swap_Mode is actually about output swap. 2017-08-25 10:49:15 -07:00
Cedric BAIL e31707743a evas: Render_Engine_Merge_Mode is actually about output. 2017-08-25 10:49:11 -07:00
Cedric BAIL f4afd5f1bd evas: reduce duplication of merge_mode getenv logic. 2017-08-25 10:49:06 -07:00
Cedric BAIL d179a5c2a9 efl: remove PS3 backend.
This backend has received no patch and maintenance from anyone who could
actually test it over the last few years. After talking with KaKaRoTo it
is best to remove it. If anyone want to take over its maintenance, you
are welcome to revert this patch.
2017-08-25 10:48:42 -07:00
Cedric BAIL e6b4878a9e evas: follow all other engines convention and use ORD macro. 2017-08-25 10:48:37 -07:00
Cedric BAIL 29cde0ee81 evas: make the info size a parameter of the function to make it safer to roll in. 2017-08-25 10:48:20 -07:00
Cedric BAIL 46e1df839b evas: factorize call to info and info_free. 2017-08-25 10:48:13 -07:00
Cedric BAIL 1e2bbf8fea evas: all this function (info, setup and update) are really output related. 2017-08-25 10:48:09 -07:00
Cedric BAIL 8017fab100 evas: nobody actually call the tile size set API. 2017-08-25 10:48:05 -07:00
Cedric BAIL 6f3980f55e evas: Render_Engine_GL_Generic is actually an output. 2017-08-25 10:48:00 -07:00
Cedric BAIL cac667e402 evas: do not loose tile size when resizing output. 2017-08-25 10:47:56 -07:00
Cedric BAIL 8ffc0f2b9e evas: prevent double tilebuf creation/destruction during window resize. 2017-08-25 10:47:52 -07:00
Cedric BAIL 600a5fa76c evas: all GL backend require strict tilebuf, let's make that the default. 2017-08-25 10:47:48 -07:00
Cedric BAIL 741ecaf2cf evas: no need to double init tilebuf as it is created by software generic. 2017-08-25 10:47:39 -07:00
Cedric BAIL bf2439b501 evas: Render_Engine_Software_Generic is actually Render_Output_Software_Generic. 2017-08-25 10:47:11 -07:00
Cedric BAIL 268d9984b4 evas: engine should not access Evas canvas directly. 2017-08-25 10:47:03 -07:00
Jean-Philippe Andre 9da7e98dcf evas gl: Improve GL_ERRORS (internal debug code) 2017-08-21 13:53:30 +09:00
Jean-Philippe Andre d3f2696838 eina: Add EINA_UNUSED in eina_pass_through_from
Fixes a warning
2017-08-21 13:53:28 +09:00
Derek Foreman 8c917daa06 wayland: Tick like a boss
Instead of the clever but awful manual_render_set hack, actually do ticks
based on frame callbacks.

Fix T5850
2017-08-18 14:27:32 -05:00
Derek Foreman f95f17ae37 wayland_egl: Call ecore_wl2_window_buffer_attach
This lets ecore_wl2 know that there's a buffer attached - even if we don't
know what it is because it's hidden by gl.
2017-08-18 14:27:32 -05:00
Derek Foreman 3290e6da10 wayland_shm: Use ecore_wl2_window_buffer_attach
No longer calling wl_surface_attach directly.
2017-08-18 14:27:32 -05:00
Derek Foreman 5f0fa08467 wayland_shm: Don't attach null buffers from surface_post
This is protected against elsewhere.
2017-08-18 14:27:32 -05:00
Derek Foreman 90a032587a wayland_egl: Add ecore_wl2_window_commit
Use ecore_wl2_window_commmit() in addition to eglSwapBuffers in order
to set up a frame callback and handle pending update tracking.
2017-08-18 14:27:32 -05:00
Derek Foreman a8c44938f3 wayland: Switch to ecore_wl2_window_commit()
Use ecore_wl2_window_commit() instead of directly calling wl_surface_commit
2017-08-18 14:27:32 -05:00
Derek Foreman 972633e7e8 wayland_shm: Remove direct access to wl_surface
Querying it through Ecore_Wl2_Window now
2017-08-18 14:27:32 -05:00
Derek Foreman e3b9fbaed8 wayland: Put Ecore_Wl2_Win instead of wl_surface into the engines
We'll need to track some state in a common way, so attaching it to the
window seems like a good idea.
2017-08-18 14:27:31 -05:00
Derek Foreman ccc4ffc80d wayland: Make the wayland evas engines dependent on ecore_wl2
Seems like the best place to put some common code.
2017-08-18 14:27:31 -05:00
Jean-Philippe Andre a43740c074 ecore_evas_extn: Fix socket & plug windows
Socket & Plug were broken after 38e6780262.
Multiple problems here:
 - The invalid path was used for the lock file.
 - The invalid buffer ID was used for unlock in render_post. That's
   because the buffer was switched during output_flush which happens
   before render_post. So the buffer would remain locked forever on the
   server side (unless maybe some animation was happening there).

@fix
2017-08-18 14:53:20 +09:00
Bryce Harrington 67fff04cc7 evas: Fix spelling/grammar errors
Summary:
Fixes some basic punctuation and grammar errors, corrects spelling and
word order/choice in various places.

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5098
2017-08-17 10:45:35 -04:00
Jean-Philippe Andre b3722c05f9 evas: Fix crash with filters
Since the EO APIs are defined as weak symbols, invalid definitions of
EAPI lead to runtime crashes on non-public APIs. This is a fix following
a series of changes wrt. EAPI definitions.
2017-08-16 14:06:51 +09:00
Cedric BAIL 30816a0cf1 eina: add support for from in pass through 2017-08-15 13:46:37 -07:00
Cedric BAIL 04010f7307 eina: add support for from in one big. 2017-08-15 13:46:37 -07:00
Cedric BAIL 5bec2415c9 eina: add support for from in chained mempool. 2017-08-15 13:46:36 -07:00
Vincent Torri c2abb9a946 ecore_evas: win32 module - fix possibly uninitialized variables
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-08-14 10:16:59 -07:00
Vincent Torri ff0d8ef0a4 evas GDI engine: improve speed
expedite mean value goes from ~125 to ~205

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-08-14 10:16:05 -07:00
Jihoon Kim 723dfaebd1 ecore_imf/wayland: Check the return value of memory allocation function 2017-08-12 10:24:36 +09:00
Mike Blumenkrantz 5ffb7d423c wayland: set min/max size hints to surface before show
with deferred surface creation the first canvas change of hints may not
be able to trigger protocol methods for size hints, so ensure that hints are
set
2017-08-11 18:43:13 -04:00
Mike Blumenkrantz f00a49835d wayland: remove xdg5 support
this has not been used or tested since last year and there are no major
compositors which lack xdg6 support
2017-08-11 18:43:12 -04:00
Mike Blumenkrantz 398ffe40a3 wayland: fix xdg-shell popup windows
@fix
2017-08-11 18:43:12 -04:00
Derek Foreman cb57ea7587 ecore_evas_drm: Tick from the animator registration callback
If we're not ticking already when a new animator is started then we have
to wait for a vblank to get a tick.  That's not great.

If we can, use the time of the last vblank to generate an immediate tick
to avoid this latency.
2017-08-11 17:11:12 -05:00
Derek Foreman e893d7de7d ecore_evas_drm: Let ecore_drm2 track pending page flips
Since the engines can call the flip functions, we need to protect the
ticker from missing those flips.  Thus, we let ecore_drm2, which obviously
sees all flips, track them.
2017-08-11 17:11:12 -05:00
Derek Foreman 5ecfe6a8b5 ecore_drm2: Remove ecore_drm2_output_crtc_size_get()
Replaced with ecore_drm2_output_info_get()
2017-08-09 14:56:59 -05:00
Derek Foreman 846db0e0e7 ecore_drm2: Remove ecore_drm2_output_geometry_get()
Replaced with ecore_drm2_output_info_get()
2017-08-09 14:56:59 -05:00
Derek Foreman afd65a8a99 ecore_drm2: Merge ecore_drm2_device_free and _close
There's no reason to have them be separate, all callers must do them
back to back, so let's just combine them.
2017-08-09 14:56:58 -05:00
Derek Foreman d8a9b895bb ecore_drm2: Merge ecore_drm2_device_find and ecore_drm2_device_open
There's never a reason to find a device and not open it, so all callers
end up calling these two functions back to back.
2017-08-09 14:56:58 -05:00
Derek Foreman 135ac29817 gl_drm: Remove some stale comments
We do planes now, so this comment isn't helpful anymore.
2017-08-09 14:56:58 -05:00
Derek Foreman 8ff59b2c55 ecore_drm2: Pass Ecore_Drm2_Device instead of fd to most functions
Intended to simplify the upcoming commit that merges device find and
device open into a single function that returns a device.

The fd is something callers shouldn't really need to get their hands on,
right now there are still a few places where it's needed, but those will
be gone soon too.
2017-08-09 14:56:58 -05:00
Jean-Philippe Andre 5d1e959f92 elm: Fix modules due to a missing EAPI
I recently added an undef EAPI which wasn't in fact the best idea ever.
The EAPI needs to remain defined as is for elementary modules and
edje_externals.

Ping @vtorri

See ad6e3ce3df
2017-08-09 17:08:24 +09:00
Jean-Philippe Andre 2450038436 widget: Remove sub_obj arg to resize_object_set
This removes an argument that was false only for a single widget:
naviframe. Hopefully this logic is now simpler, even though it involves
a small hack within naviframe itself.

Ref T5363
2017-08-09 12:21:42 +09:00
Chris Michael 4cf448274c ecore-evas-wayland: Add handler for Iconify State Change event
Small patch to add a handler for catching Window Iconify State Change
events

'#divergence'

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-08-08 10:00:11 -04:00
Vincent Torri db29ee1cd6 Evas Jpeg2000 loader: port it to openjpeg 2.*
Test Plan: files in https://github.com/uclouvain/openjpeg-data/tree/master/baseline/nonregression

Reviewers: jpeg, raster, cedric

Differential Revision: https://phab.enlightenment.org/D5033
2017-08-08 11:46:35 +09:00
Mike Blumenkrantz 15126b2f4f ecore-evas wayland: remove move() function
this is conceptually wrong to include in a wayland engine
2017-08-07 13:26:50 -04:00
Mike Blumenkrantz a827f418d9 ecore-evas wayland: clamp max size hints to 0 2017-08-07 11:05:58 -04:00
Mike Blumenkrantz bc28c4b579 evas wayland: always create gl context when non-existent 2017-08-07 10:50:08 -04:00
Mike Blumenkrantz 77c4ee161d evas wayland: call makecurrent before querying gl attrs
fix T5845
2017-08-07 10:50:08 -04:00
Carsten Haitzler d954510b10 ecore evas wayland - add explicit falltrhough tags for warning removal 2017-08-06 11:50:49 +09:00
Mike Blumenkrantz 64754b682e ecore-evas-wayland: rework window hint calcs to be more accurate
this is still pretty broken for some directions, client-side aspect fml
2017-08-04 16:17:33 -04:00
Mike Blumenkrantz ef5812188a ecore-evas-wayland: update size when size hints are changed
ensure hinted size is used

@fix
2017-08-04 16:10:45 -04:00
Mike Blumenkrantz f03028d22f wayland: fix min/max size setting
also don't set arbitrary hints on init

@fix
2017-08-04 16:10:42 -04:00
Carsten Haitzler 800b877ed7 evas model loader - restructure code to silence warning
keep our build quiet warnings-wise and change the code to be so... so
we see real warnings. not a bug... just a warning.
2017-08-02 18:48:06 +09:00
Derek Foreman d4e69af383 wayland-shm: Set CLOEXEC for dmabuf
Stop leaking the render node fd to child processes.
2017-07-31 10:55:47 -05:00
Derek Foreman 1a175cd537 ecore_evas_drm: Only check for gpu time offset if env var set
Since most systems shouldn't need this, and it's possible
that it's causing trouble for some systems, make it off by
default.

Fix T5806
2017-07-29 08:52:16 -05:00
Carsten Haitzler a0ed0483fc evas gl gnenric engine - dont check w and h ptrs - will never be null
analyser unhappiness.

found by PVS studio
2017-07-29 12:06:20 +09:00
Carsten Haitzler 2eb46302a2 emotion gst1 module - remove extra unneded if's
not a bug, but don't need these

found by PVS studio
2017-07-29 10:56:53 +09:00
Carsten Haitzler 157caee2c0 evas psd loader - remove unneeded extra check in if
one if condition is always true by virtual of previous if statements
and drop-through so can remove. not actually any bug but analysers
don't like it

found by PVS studio
2017-07-29 10:37:51 +09:00
Carsten Haitzler c0764e153e evas git loader - move findo reset inside else as only that changes it
only the else changes finfo so reset inside there. not really any bug
at all byt style-wise a bit better and analysers don't like it

found by PVS studio
2017-07-29 09:42:44 +09:00
Carsten Haitzler 2930bc0b06 evas pmap loader - remove pointless extra assign of end of string to 0
not an actual bug - just analysis impacting

found by PVS studio
2017-07-29 09:08:40 +09:00
Carsten Haitzler 64dc6ab056 evas bmp loader - fix warnings about same type handled twice
so a type we handle earlir inan if we re-handle as invalid later. this
wouldnt lead to a crash or bugs as the if's would ned to be evaluated
in order normally, but it's good to get it right.

found by PVS studio
2017-07-29 09:08:40 +09:00
Derek Foreman 2b16fc4278 ecore_evas_drm: Calculate gpu blank time offset once at startup
So vmware's graphics driver reports the MONOTONIC drm cap, yet uses
CLOCK_REALTIME instead.  This leaves us with a gigantic offset between the
gpu timestamp and the times ecore_time_get() gets from CLOCK_MONOTONIC.

Since ticking screws directly with loop time this results in some long
distance clock jumping.

This commit fixes drm/gl_drm operation under vmware.
2017-07-28 15:35:03 -05:00
Mike Blumenkrantz 6bb56b3f56 ecore-wl2: implement support for aux hints
this is a direct copy of a feature from tizen git with no modifications other
than what was required for compilation and functionality

https://review.tizen.org/git/?p=platform/upstream/efl.git;a=commitdiff_plain;h=01e72b7e3484ece4b589f95315990ba2c366c231
https://review.tizen.org/git/?p=platform/upstream/efl.git;a=commitdiff;h=670d84b579f248ae0e3df48e9953fe8128da9468

fix T5780

@feature
2017-07-28 15:43:48 -04:00
Derek Foreman 8e500c6835 ecore_drm2: Allow picking a sequence number for blanktime_get
This lets us do a blocking wait for a vsync.  Something we should try to
do as infrequently as possible, but in some cases we need it one time at
startup to catch graphics driver bugs.
2017-07-28 10:41:11 -05:00
Jiyoun Park 6d4ebf9bc6 ecore_evas_wayland: fix bug ecore_evas cannot update the evas when rotation
usecase:
    show -> rotation -> hide -> show
    ecore_evas_wayland didn't check the rotation.
    when ee is landscapemode, it cannot update the right area of evas.
2017-07-26 15:28:02 +09:00
Mike Blumenkrantz 337f3796d6 ecore-evas-wayland: destroy frame callback on hide
ensure cursor surfaces can render again after being hidden

 #TheDisappointer

@fix
2017-07-21 16:17:54 -04:00
Mike Blumenkrantz 93bac8ce4a wayland: stop creating 1x1 surfaces on init
fix T5226

 #IGot99TicketsBut1x1AintOne
2017-07-21 16:17:54 -04:00
Mike Blumenkrantz 9a56b267cd evas sw x11: formatting 2017-07-21 16:17:53 -04:00
Derek Foreman 736c63be34 gl_drm: half fix eglGetPlatformDisplayEXT usage
Just because the #define is present doesn't mean the extension is, so we're
BAILing on egl completely on some systems for no good reason at all. (saw
this on an SGX stack)

This is still wrong.  I don't want to try too hard until after the upcoming
release, though.

We should actually be testing for the presence of client extensions before
attempting to do any of this.  It's entirely possible that a gl stack will
return bogus functions for these from eglGetProcAddress
2017-07-21 14:34:50 -05:00
Carsten Haitzler 97c3eedbab evas xpm loader - don't error print for files that cant be mmaped
no point complaining because we can't mmap... it'd be an unloadable
file.
2017-07-21 16:35:21 +09:00
Jean-Philippe Andre 7bb14727af evas: Fix a crash in emotion with GL
Ooops! When mapping for writing we can't use the same code
path as when tofree is true. This restores the path for image
writing. This basically fixes rage with GL engine.

See also 45c8e5e983
2017-07-20 16:43:52 +09:00
Jean-Philippe Andre d6c95d1e4b evas gl: Rename secsym_ to eglsym_
eglDestroyImage has nothing to do with SEC...
This is a cosmetic change.
2017-07-20 13:31:34 +09:00
Jean-Philippe Andre 0c78783045 evas gl: Check EGL version before using dlsym
A recent commit broke texture_from_pixmap for NVIDIA EGL
(again), because eglCreateImage is a symbol in libEGL.so
but isn't in fact implemented by the driver.

That's because eglCreateImage() is exposed by libglvnd but
the underlying EGL implementation is NVIDIA and its version
is only 1.4, not 1.5 (where the API was introduced as core).

Instead of reverting the patch, it's better to cover our
bases properly and use dlsym() only if the version is right.

Note that GetProcAddress() may return garbage function
pointers for ALL functions as dynamic virtual functions may
be created on the fly by libglvnd. So it is absolutely
necessary to check the extension string as well.

See 0255f14dc2
2017-07-20 13:31:15 +09:00
Derek Foreman ef9bd41831 gl_common: extsn is no longer unused
Also, we should throw an error when it's NULL, since it's important
for finding symbols for extended egl/gl.
2017-07-19 13:05:53 -05:00
Derek Foreman 0255f14dc2 gl_common: Prefer unextended eglCreateImage
eglCreateImage is objectively better than eglCreateImageKHR - it allows
attributes large enough to hold pointer values.  We should use it when
available and only use the older extension version as fallback.

Also, eglCreateImage is core EGL functionality so don't depend on extensions
to be present to use it.  Theoretically we should be testing for
EGL version >= 1.5 but it's probably safe not to.
2017-07-19 12:24:19 -05:00
Derek Foreman d31f5038e2 gl_common: Remove fallback hack for wayland
This was only necessary due to bugs in the wayland_egl and gl_drm engine
that have been corrected.

Wayland has no bizarre requirements making this necessary.
2017-07-19 12:09:33 -05:00
Derek Foreman eda81c6dff gl_drm: Defer gl symbol lookups until they're possible
See previous commit for details.
2017-07-19 12:02:03 -05:00
Derek Foreman c7fe083a57 wayland_egl: Defer gl symbol lookups until they're possible
Commit 2e6587a14b adds a gl extension string to glsym_evas_gl_symbols()
to prevent using functions that are provided by extensions that aren't
available in the current gl context.

However, we can't query the extension strings until after we create an egl
context.

Split the regular symbol lookup stuff from the gl symbol lookup stuff so
we can query at the appropriate time.
2017-07-19 12:00:07 -05:00
Derek Foreman 86377caa0e wayland_egl: de-wtf the eglGetProcAddress prototype 2017-07-19 11:44:00 -05:00
Derek Foreman 7fd66e84d9 gl_drm: de-wtf the eglGetProcAddress prototype
This doesn't seem to serve any purpose other than rigorous proof that
typecasts can make literally anything compile.
2017-07-19 11:43:25 -05:00
Derek Foreman 855f59da8d gl_common: Stop looking for eglCreate/DestroyImageOES
These aren't a thing.  the GL_OES_EGL_image_base extension doesn't exist
and the GL_OES_EGL_image extension doesn't extend egl, because it's a gl
extension.

So let's stop being the only google match for these nonsense strings.
2017-07-19 10:33:06 -05:00
Jean-Philippe Andre 897d81acb1 evas engine gl: Add missing image unlock
This is a rare error path. Unlikely and not very important as
the lock/unlock doesn't actually perform any meaningful operation.
2017-07-19 13:59:42 +09:00
Carsten Haitzler 1a16a4f10b emtoion gst1 - workaround gst break between 1.10 and 1.12
so emotion was using a much older (pre 1.0) buffer map mechanism for
getting video data. a new frame map api was added to gst in 1.0 but we
didnt use it. gst broke the old buffer direct mapping for some codecs
paths between 1.10 and 1.12. since we were using a very old method/api
this broke us. this also happens to fix some vaapi issues (except
where the buffer is simply never mappable ever). so this is kind of a
fix (updating us to as more modern api) and a workaround.

@fix
2017-07-19 11:07:47 +09:00
Jean Guyomarc'h 2f9cbb3a35 evas-gl_cocoa: fix compilation
Booo for commit 2e6587a14b.
2017-07-16 17:26:41 +02:00
Carsten Haitzler 2e6587a14b evas gl - fix compositing/native surface with egl/gles after glvnd
this fixes an issue that has cropped up in the past few months - only
nvidia drivers with egl/gles in x11... and compositing won't work
(native surface) and the introduction of libglvnd

it's a combination of libglvnd lying that it has symbols it can't
later find, new features to get core functions via procaddress that we
hadn't migrated to use AND use preferring core functions that libglvnd
will expose, so switching to KHR extensions by preference. we also
need to symmetrically use destroy image khr too...

oddly enough using procaddress purely for create/destroy image makes
wayland fail ... sofor now i'm taking advantage of the fact that
wayland has no extensions string passed in at the moment and still
doing dlsym... this is odd though.

@fix
2017-07-16 15:56:02 +09:00
Carsten Haitzler ff67dd25e3 evas mesh save - use alloca for tmp strings instead of heap
this reduces code and means we dont have to handle NULL exceptions as
alloca always "works".

@fix
2017-07-16 15:56:02 +09:00
Derek Foreman e53b0c262a ecore_evas_drm: Provide a last_tick_get callback
Allow the drm engine to provide a tick timestamp for the previous vblank
interval.

ref T5462
2017-07-13 18:07:42 -05:00
Derek Foreman aa8d9c1829 ecore_evas: Add a function pointer for last_tick_get
Engines that provide their own tickers may need to be able to provide the
time of the last tick even if they weren't sending ticks to EFL at the
time.

This is a feature added during freeze as it's necessary to resolve a bug.

ref T5462
2017-07-13 18:07:42 -05:00
Derek Foreman e69cc0f552 ecore_evas engines: Add some nulls to the func arrays
Purely cosmetic, but gets the comments back in sync with reality.
2017-07-13 18:07:41 -05:00
Derek Foreman d3c10fb1eb ecore_evas_drm: Partially revert "Refuse to start a ticker for a manually rendered canvas"
BAILing here can break animators permanently, so best to just log the
issue and move on (and potentially allow the ticker to wake us from DPMS).

ref T5462

Partially reverts a795629e8c
2017-07-11 16:50:23 -05:00
Derek Foreman a795629e8c ecore_evas_drm: Refuse to start a ticker for a manually rendered canvas
With atomic mode setting this has the hilarious side effect of waking
up the display from dpms.

Attempting to tick when manual render is set is likely a bug, so
log an ERR.

fix T5462
2017-07-10 16:25:59 -05:00
Vincent Torri 937a0d6411 Ecore_Evas win32 module: fix memory leak 2017-07-09 13:34:19 +02:00
Vincent Torri bdb62b6bbe Add ecore_win32_cursor_show() API and ecore_evas_win32_cursor_(un)set() functions
This fixes double mouse cursor in elm entries on Windows (for example)

@feature
@fix
2017-07-09 13:34:09 +02:00
Uma Devika d4ab6ff90a Evas and Eolian : Freed string buffer
Summary:
Summary : String buffer returned by eina_strbuf_new() is not freed in some cases

@Fix

Signed-off-by: Uma Devika <u.bodapati@samsung.com>

Reviewers: cedric, tasn, jpeg, raster, singh.amitesh

Subscribers: tanwar.umesh07, yashu21985, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5000
2017-07-07 13:22:53 +09:00
Jean-Philippe Andre 76a668f022 ecore_evas_x: Track changes in framespace size
If the framespace size has changed and by accident (or in fact, by
design) the evas size + framespace size is equal to the size sent
by the X server, ecore_evas_x was skipping the resize event. This
patch adds a tracking of the framespace size so that we redraw the
canvas if it changed.

This will fix issues with the main menu (since it's in the framespace,
23 pixels tall with the default theme & scale).

Note that all this is partly because the ecore evas size is the size
without the framespace, so weird calculations are made during resize...

Ref T5482
2017-07-05 17:43:59 +09:00
Uma Devika 19df2cd34f Emotion: freed allocated string.
Summary:
GStreamer API gst_caps_to_string returns allocated memory which needs to be freed with g_free() after use.

@fix

Signed-off-by: Uma Devika <u.bodapati@samsung.com>

Reviewers: cedric, tasn, singh.amitesh, raster, jpeg

Subscribers: tanwar.umesh07, yashu21985, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4996
2017-07-04 11:33:11 +09:00
Jean-Philippe Andre b0caec04fb drm: Fix compilation warnings 2017-07-03 16:23:41 +09:00
Derek Foreman 81420d76e0 software_generic: Improve dmabuf validity tests
Now that upper layers set load errors this can be less gruesome.

Also, add some checks that were in E here where they belong.
2017-06-30 14:54:12 -05:00
Derek Foreman b8165098dc gl_drm: Improve dmabuf validity test
Now that higher layers are setting load errors this can be less gruesome.
2017-06-30 14:52:54 -05:00
Derek Foreman fbb676584e drm: Implement hardware plane support
Adds the ability for drm to place native surfaces on harware planes.

ref 33b50238d2
2017-06-29 17:20:23 -05:00
Derek Foreman dc3873c8db software_generic: fix eng_image_native_get
This has been a stub for a long time, but now we have a native_set, so
we should have a native_get too.

This is required for hw plane usage on the software engine.
2017-06-29 17:20:23 -05:00
Derek Foreman 944a4065e8 gl_drm: Check dmabuf attribute version before trusting attributes
We shouldn't do anything with a dmabuf structure until confirming the
version matches the one we know.
2017-06-29 16:12:35 -05:00
Derek Foreman 2e0e017b87 software_generic: Check dmabuf attribute version during set
We should check here instead of only at time of usage.
2017-06-29 16:11:45 -05:00
Derek Foreman 892bfe7c98 dmabuf: Make a define for the version of the dmabuf attribute struct
I should've done this in the first place, and the version checks are
starting to spread out a bit.
2017-06-29 13:51:07 -05:00
Jean-Philippe Andre 1ef1c04f42 gl_drm: Fix a few compilation warnings
warning: expression which evaluates to zero treated as a null
pointer constant of type 'void *' [-Wnon-literal-null-conversion]
2017-06-29 16:02:36 +09:00
Derek Foreman 33b50238d2 gl_drm: Implement hardware plane support
Adds the ability for gl_drm to place native surfaces on hardware planes.
2017-06-23 08:15:42 -05:00
Derek Foreman 7e2c8c1cbd software_generic: Add plane assign/release function pointers
Functions to assign a plane for a native surface, and release a plane
that's been assigned to a native surface.

These are empty for now as they'll need to be overridden in any backend
that can handle planes.
2017-06-23 08:15:42 -05:00
Derek Foreman 4d058ad323 gl_drm ee: Move to new per fb status callbacks
Switch over to the per fb status callbacks as the old per output api is
about to be removed.
2017-06-23 08:15:40 -05:00
Derek Foreman bd0774206f gl_drm ee: move release fb callback
No functional change, just code motion.
2017-06-23 08:15:40 -05:00
Chris Michael 09375bf5b5 Revert "ecore-evas-wayland: Add support for setting window stack mode"
This commit reverts support for setting window stacking mode from
ecore_evas_wayland as per IRC dicussion with cedric

This reverts commit a3cf0d3a54.
2017-06-15 13:08:39 -04:00
Chris Michael a3cf0d3a54 ecore-evas-wayland: Add support for setting window stack mode
This patch adds support for updating ecore_wl2_window stack mode when
the ecore_evas_layer_set is called.

"#divergence"

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-15 11:39:27 -04:00
Chris Michael 8b29ae7609 ecore-evas-wayland: Add support for focus_skip_set
This patch adds support for ecore_evas_focus_skip_set in the wayland
engine.

"#divergence"

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-15 10:42:28 -04:00
Carsten Haitzler 205ef8a756 evas xpm loader - remove tabs and clean up formatting
just non-code changes here...
2017-06-14 17:15:49 +09:00
Carsten Haitzler 4a9f28a677 evas xpm loader - remove the rgb txt file db loading and compile in
so modern systems seem to have abandoned rgb.txt files. this leads to
us breaking the loading of xpm files tha use color names ... i added
the rgbt.txt from vim but that didn't seem to help... odd... so to just
stop adding path after path to load... ship our own. we could ship the
file... but then we'd still have to load and parse it... every time we
look up a color. so i munged the data with awk and now we compile it
in. it should consume the same space the rgb.txt does in the shared lib
binary. if not read it shouldn't be paged in. it should end up cheaper
than our floaing of the file and mmaping it when xpm module is
loaded/initted... so either way more efficient, uses a little less ram
(12306 bytes vs 17780 for the rgb.txt) ... and bonus - dont have
an extenral out-of-code data blob to find, manage install etc...

this means we should load xpms with colornames correctly again on
systems without an rgb.txt provided by x11 ... which seems to be the
common case now. :(

@fix
2017-06-14 17:04:43 +09:00
Chris Michael 522ee10b45 ecore-evas-wayland: Add support for setting auxiliary hints
This patch adds function pointers to the Wayland Interface that can be
used for supporting auxiliary hints on a given window

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-13 12:57:29 -04:00
Amitesh Singh e5922c0720 elm: rename elm slider to Efl.Ui.Slider
ref T5361
2017-06-12 16:45:47 +09:00
Jean-Philippe Andre e8f9f109a6 evas: Rename device Class to Type, remove Sub_Class
1. The word "class" is a pain point with many languages where
   it's a keyword. Type is a little better. Also, the property
   was already named "device_type" and not "device_class".

2. Remove Efl.Input.Device.Sub_Class
   It's not used inside EFL upstream codebase, and unlikely to
   be used anywhere else (even in Tizen).

Hopefully no one used the Efl_ enum types. So far only the Evas_
types should be in used.

Ref T5540
2017-06-12 15:21:55 +09:00
Chris Michael 53bfe00351 ecore-evas-drm: Remove borrowed fourcc_code from source file
As we will now use static_libs/libdrm for building ecore_evas_drm, we
no longer need to include this bit of borrowed four_cc code from libdrm

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 13:47:47 -04:00
Chris Michael cb94befb9d ecore-evas-wl: Add support for Window Manager rotations
This patch adds support to Ecore_Evas_Wayland for Window Manager
Rotations so that window managers which do support rotations are able
to rotate an EFL wayland application.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:42 -04:00
Chris Michael d57bdb5fbc ecore-evas-x: Remove blank line
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-08 14:29:02 -04:00
Chris Michael c0458aae38 ecore-evas-wayland: Fix potential null dereference
Quick patch to fix a potential null derefence in render_flush_pre
callback.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-08 10:01:52 -04:00
Chris Michael 2aa9538f73 evas-gl-drm: Fix uninitialized variable
Small patch to fix an uninitialized variable when using
eglGetConfigAttrib()

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-08 10:01:52 -04:00
Chris Michael faf6041ca7 evas-gl-drm: Be sure to initialize ncfg variable
This could lead to an uninitialized variable or use of ncfg variable
without a value.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-08 10:01:52 -04:00
Thiep Ha 4f77bb2f5a evas_map: support map with number of points as multiples of 4
Currently, in evas map, we only support map with 4 points.
This patch adds support for map with number of points as
multiples of 4.

@feature
2017-06-08 16:53:45 +09:00
Carsten Haitzler cc0e17d32b evas xpm loader - add more rgb.txt file locations...
2 more. /etc/X11/rgb.txt /usr/share/vim/vim80/rgb.txt  ...what i do notice
is that this file seems to have vanished from modern systems... so we'll have
lots of un-fun loading old xpm's with colornames if we cant figure out what
color names map to what colors...
2017-06-08 12:11:43 +09:00
Chris Michael 45656ccb80 evas-gl-drm: Fix potential memory leak
If/When we exit _evas_outbuf_egl_setup function, we should be freeing
the allocated cfgs variable else we leak it.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-07 12:38:12 -04:00
Chris Michael 0a77b4e922 ecore-evas-wl: Don't check window visibility on raising
As we won't get a request from a server to raise a window which is not
visible anyway, this check is useless.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-07 11:08:48 -04:00
Cedric BAIL f3370549d2 ecore_evas: reuse code by relying on switch case statement fallthrough for key offset case. 2017-06-05 12:07:57 -07:00
Cedric BAIL fd38c09735 evas: reuse code for colorspace logic by using switch case statement fallthrough. 2017-06-05 12:07:57 -07:00
Cedric BAIL 447a9056d0 evas: use switch case statement fallthrough to handle colorspace logic reuse. 2017-06-05 12:07:57 -07:00
Cedric BAIL 7832e02b2d evas: TGA does use switch case statement fallthrough to factorize code. 2017-06-05 12:07:57 -07:00
Bryce Harrington 2f025184f7 evas: document the wayland ecore_evas constructors
Reviewers: cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D4896

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-06-05 12:07:56 -07:00
Bryce Harrington aa9bda8b83 ecore_evas: correct error message reporting incorrect engine name
Summary:
_ecore_evas_wl_common_new_internal() creates both wayland_egl and
wayland_shm backed windows, so reporting that the failure was in looking
up "Wayland_Shm" could be misleading.

Also, this routine can be called with any arbitrary string as
engine_name, so including what was received in the error message might
be helpful for diagnosing bugs.

Reviewers: cedric

Reviewed By: cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D4897

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-06-05 12:07:56 -07:00
Bryce Harrington e0a6eaeaa3 ecore-imf-wayland: Check xkb_keysym_to_utf8
Summary:
Coverity reports an error "Calling "xkb_keysym_to_utf8" without checking
return value (as is done elsewhere 4 out of 5 times)."

fixes: cid1375673

Reviewers: zmike

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4936
2017-06-02 19:06:31 -04:00
Mike Blumenkrantz cb18ce4a90 ee drm: null elput device pointer when deleting device 2017-06-02 18:23:42 -04:00
Mike Blumenkrantz 1e6e5047be ee engines: update engines for per-seat cursor objects
ref 5856d3b52f6124ad5b4cfe47b21f28ab6f380002
2017-06-02 18:23:42 -04:00
Mike Blumenkrantz cde843438d ee wayland: only handle events for ee with matching display object
ensure apps with multiple client connections don't mix events from different
connections

@fix
2017-06-02 18:23:42 -04:00
Derek Foreman cc70806497 ecore_evas_drm: Send a spurious pageflip when showing a canvas
This is a quick and harmless hack to make sure we don't come back to a
dead compositor on a vc switch.

A proper fix will follow eventually, I promise.

Really.  Would I lie?
2017-06-02 15:50:09 -05:00
Jean-Philippe Andre 07da746194 drm: Fix build warning (invalid enum type) 2017-05-31 17:48:26 +09:00
Jean-Philippe Andre ebb9cad1ed evas gl: Add an env var to debug GLSL version issues
Set this env var to "300 es" to test GLSL 300 ES as shader
version. This is for brokenshakles.

Example:
  export EVAS_GL_GET_PROGRAM_BINARY=0
  export EVAS_GL_SHADER_GLSL_VERSION="300 es"
  export ELM_ACCEL=gl
  elementary_test
2017-05-30 11:15:41 +09:00
Mike Blumenkrantz ed4e54ebe2 wayland/drm: create evas_devices and add device pointer to input events
this is still semi-broken if a seat has many pointer-ish type devices since
pointer devices in ecore-evas were never correctly implemented to be 1:1 with
seat:cursor relationships

@feature
2017-05-26 16:27:43 -04:00
Derek Foreman a5fae67e9c dmabuf: Drop requirement that buffer be writeable
We don't need to write to it, and some clients don't create their buffers
in a way that we can.

@fix
2017-05-19 16:59:27 -05:00
Mike Blumenkrantz 2fe7878235 wayland: move pointer-related functions to ecore_wl2_input namespace
windows do not have pointers or cursors under wayland, seats do. due to
lack of multiseat support, most components simply use the "default" seat
with these functions, but this should make the corresponding code more
easily adaptable
2017-05-19 12:41:17 -04:00
Mike Blumenkrantz 5ebdf8f341 wayland: use shell activated state to indicate focus in csd
the current (v6) xdg-shell spec reads as follows:

	  Client window decorations should be painted as if the window is
	  active. Do not assume this means that the window actually has
	  keyboard or pointer focus.

so this is not equivalent to receiving/losing input focus and should not
be propagated as such

@fix
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz 1bc837c3de ecore-wl2: redo ecore_wl2_window_move() to take a seat instead of coords
this triggers a move operation and is seat-dependent
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz d7d3c9adab ecore-wl2: redo ecore_wl2_window_resize() to take a seat instead of size
this triggers a resize operation and is seat-dependent
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz d0f707ef91 ecore-evas-wayland: do not trigger resize operation when performing rotation
@fix
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz 2c291f5bb8 ee wl engines: set seat id when creating seats 2017-05-19 12:41:16 -04:00
Mike Blumenkrantz 535ceaafd8 ee vnc thingy: set seat id for vnc seat 2017-05-19 12:41:16 -04:00
Jean-Philippe Andre 55b529cebc evas/elm: Make group_add/group_del internal functions
This hides those two legacy functions from the EO API.
2017-05-19 14:07:00 +09:00
Derek Foreman 1c60ac3bc9 ee_drm: Remove some commented out code
I think this was intended as a reminder to do something that's already
been done.  Or something.
2017-05-12 17:51:34 -05:00
Derek Foreman edcbff59b7 ecore_drm2: refcount fbs
Removes the previous "busy" flag, as now we might have an fb attached to
multiple outputs at once, and need to be careful to destroy them only
after they've been removed from all outputs.

Removed the old "busy_set" API which nothing used, and renames fb_destroy
to fb_discard to make it more clear that it's not immediately destroyed.

It's all beta api, so I can do this.
2017-05-12 17:51:34 -05:00
Cedric BAIL 69b941f018 evas: simplify fb engine. 2017-05-12 15:24:45 -07:00
Cedric BAIL a660ee9e19 evas: simplify buffer engine. 2017-05-12 15:24:45 -07:00
Cedric BAIL 35e54acc46 evas: stat introducing a concept of engine and output in the backend. 2017-05-12 15:24:45 -07:00
Jean-Philippe Andre 7e2e6e8aa4 evas gl: Fix typo and revert hack (GLES 3.1)
Omg... Thanks Daekwang Ryu for pointing me to my error. I remember
struggling a lot with this OpenGL API and libGLdispatch (glvnd) when
in fact this was all just a typo in the code.

GLES 3.1 and the upcoming 3.2 support need a proper test case...

See c68a409874

@fix
2017-05-12 16:34:38 +09:00
Derek Foreman 2653fd3fda gl_drm: Fix rendering problems with dmabuf
Somehow this long standing bug wasn't obvious until wayland 1.13.0 made
some additions to an opaque structure.

This changed the frequency that new buffers came to us with the exact
same pointer value of a buffer that had just been freed.

This shortcut in eng_image_native_set has always been wrong - we need to
proceed to the end to make sure we pick up new dmabuf attributes.
2017-05-10 16:24:11 -05:00
Chris Michael f160d41539 ecore-evas-wayland: Remove unused variable
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-05-09 11:47:04 -04:00
Vincent Torri 94509a3d86 Ecore_Evas (Win32): add geometry_get() method and fix dpi_get(), using the new API in Ecore_Win32.
This fixes fullscreen feature in Elm on Windows as the geometry of the desktop
was not known.

In case of multiple displays, the desktop, where the window is displayed, is used for fullscreen.

@fix

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-05-08 15:09:11 -07:00
Cedric BAIL 122c34b2ce ecore_evas: refactor win32 backend to use generic render infrastructure. 2017-05-08 15:04:09 -07:00
Cedric BAIL e541c4f500 ecore_evas: refactor wayland backend to use generic render infrastructure. 2017-05-08 15:03:51 -07:00
Cedric BAIL db1e8e2d92 ecore_evas: refactor sdl backend to use generic render infrastructure. 2017-05-08 15:03:31 -07:00
Cedric BAIL 83513f0933 ecore_evas: refactor psl1ght backend to use generic render infrastructure. 2017-05-08 15:03:10 -07:00
Cedric BAIL 3a5de3c4eb ecore_evas: refactor fb backend to reuse generic render infrastructure. 2017-05-08 15:02:50 -07:00
Cedric BAIL 727b61218b ecore_evas: refactor extn backend to use generic rendering infrastructure. 2017-05-08 15:02:15 -07:00
Cedric BAIL 3fd01561ae ecore_evas: refactor drm backend to use generic render infrastructure. 2017-05-08 15:01:49 -07:00
Cedric BAIL c24d077b6a cocoa: refactor cocoa backend to use generic render infrastructure. 2017-05-08 15:01:30 -07:00
jiin.moon c89bf7b2d8 evas: Fix can't open tiff file on loader
Summary:
Evas can't open tiff file because of no implement in client read api.
I wrote codes simply for open.

Test Plan: self

Reviewers: jpeg, cedric, jypark

Subscribers: stefan_schmidt

Differential Revision: https://phab.enlightenment.org/D4857
2017-05-08 15:20:01 +02:00
Cedric Bail 73592d4e72 ecore_evas: first step into refactoring x backend. 2017-05-05 17:55:06 -07:00
Cedric Bail 103dfc5ba4 ecore_evas: first step into refactoring wayland backend. 2017-05-05 17:55:06 -07:00
Cedric Bail 11cf280cfa ecore_evas: first step into refactoring win32 backend. 2017-05-05 17:55:06 -07:00
Cedric Bail cc139b70f8 ecore_evas: first step into refactoring sdl backend. 2017-05-05 17:55:06 -07:00
Cedric Bail 081a134449 ecore_evas: first step into refactoring psl1ght backend. 2017-05-05 17:55:06 -07:00
Cedric Bail d1dc3b0dc5 ecore_evas: first step into refactoring fb backend. 2017-05-05 17:55:06 -07:00
Cedric Bail 042fd1dda8 ecore_evas: first step into refactoring extn backend. 2017-05-05 17:55:06 -07:00
Cedric Bail 9129adc993 ecore_evas: first step into refactoring drm backend. 2017-05-05 17:55:06 -07:00
Cedric Bail fe316636fd ecore_evas: first step into refactoring cocoa backend. 2017-05-05 17:55:06 -07:00
Derek Foreman 699ed066ea ecore_drm2: Require x and y value in plane assign
Saves us a flip test, and gaurantees that we're always testing with a
reasonable x, y and not something leftover from a previous assignment.
2017-05-05 12:53:25 -05:00
Derek Foreman 769271a66a drm-ee: Use a plane for the evas
Assign a plane at startup and update it in flip.
2017-05-05 12:53:24 -05:00
Derek Foreman 27fc7d5f83 gl_drm: Support atomic updates
Grab a plane and lock it down for displaying the canvas, update it on
page flip.
2017-05-05 12:53:24 -05:00
Vincent Torri cf2786a849 ecore_evas: fix test in the hide callback in Windows module
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-27 09:56:23 -07:00
Derek Foreman 755577c423 wayland engines: Don't store evas in engine info
We don't need it anymore.
2017-04-26 14:20:47 -05:00
Derek Foreman 92e65ba3c7 wayland_shm: Stop using the evas directly to block for async render
Use the new fence function instead.

This makes Cedric less unhappy.
2017-04-26 14:16:37 -05:00
Derek Foreman a4ed205071 gl_drm:Rename import_simple_dmabuf to gl_import_simple_dmabuf
There's also an ecore_drm2 function to import dmabuf as fb, so it's a
little less confusing to be a little more explicit here.
2017-04-26 13:47:46 -05:00
Derek Foreman 0f581cb745 ecore_evas_wayland: Make local functions static 2017-04-26 13:47:46 -05:00
Derek Foreman c5550f9320 ecore_evas_wayland: Remove unused functions 2017-04-26 13:47:46 -05:00
Derek Foreman 489b87edc9 ecore_evas_wayland: Remove unnecessary function prototypes 2017-04-26 13:47:46 -05:00
Derek Foreman dcd9e09472 ecore_evas_wayland_common: Reorder functions
Try to put these in order so we don't need prototypes

No functional changes
2017-04-26 13:47:46 -05:00
Stefan Schmidt 40f30f0f31 evas: gl_filters: fix leak of evas image
Make sure we free the allocated use_map evas image before leaving scope.

CID: 1374275
2017-04-26 14:27:30 +02:00
Vincent Torri 540de0e254 Ecore_Evas: use window states and event property to fix ecore_evas_fullscreen_set()
This implies that elm_win_fullscreen_set() is also fixed

@fix
2017-04-26 15:07:38 +09:00
Vincent Torri 24c756b9f2 Ecore_Evas: clean up Windows module 2017-04-26 15:07:29 +09:00
Cedric BAIL 7f5ec0c8ea evas: do not rely on Evas canvas for Evas Ector engine backend. 2017-04-25 16:16:30 -07:00
Cedric BAIL 55e1b3f205 evas: remove engine.data.output.
This is the first step toward handling multi output. This patch
remove engine.data.output from Evas structure and use an Eina_List
for it instead. It also start moving code around to fetch an output
or an engine context (which are the same at the moment, but will be
split in a later patch).
2017-04-24 15:10:48 -07:00
Carsten Haitzler b9991b045c evas gl filter blur - fix uninitialized vare warning for sum 2017-04-21 16:40:36 +09:00
Carsten Haitzler d5848d0dc4 gl filter blur - fix warning about possible uninit vars by initting them 2017-04-21 16:39:20 +09:00
Derek Foreman fddbf75fc9 Fix sed error that changed "video" to "videfl"
commit c662934be8 seems to have accidentally
renamed a few instances of _video_ to _videfl_, this hopefully changes
them all back.
2017-04-17 17:06:28 -05:00
Carsten Haitzler a85494a5b2 emotion - gstreamer1 - fix yuv import funcs to use gst stride + offset
so our yuv import funcs for gstreamer 1.x engine were ignoring the
plane offsets and strides provided by gstreamer. though this nicely
shows that these numbers provided are actually wrong - at least in the
testing with vaapi back-ends with gst.

so this fixes emotions' badness but there is still badness in gst
apparently. the numbers provided if used are just simply wrong for teh
image data. commented code in the src to show how to "Fix it up" by
forcing some alignment of content to get it to work.

@fix
2017-04-16 12:56:11 +09:00
Jean-Philippe Andre d87a65e825 evas gl: Fix compilation for EGL 2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 30ac315631 evas filters: Cleanup unused buffers
This might not be used as over two consecutive runs all the
same buffers should be used. But it could happen if some
parameters in the filter change (eg. blur radius).

Fixes major (GPU) memory leaks. Reuse mode is still leaking.
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 01a4ecd92c evas filters: Adjust downscale coordinates to avoid artifacts
This avoids sampling artifacts when moving or resizing a
snapshot object over a region with sharp content (eg. text).
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 5467d1eb3e evas filters: Fix artifacts when scaling up & down
An odd-sized image scaled down by 2 was losing 1 pixel during the
downscale, and it was not restored after scaling up. The same
happened with downscaling by 4 except the effect was even more
visible.

This meant that a moving snapshot with a large blur would trigger
some really ugly sampling issues if the content below was precise
(such a text).
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre fc92a1c0f6 evas filters: Enable down scaling with GL blur
This dramatically improves the performance and now seems
to give acceptable results. Eventually we need a quality flag
in order to enable this or not. Alternatively, "gaussian" blur
mode would skip this optimization, while "default" would trigger
it.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 45548e8358 evas filters: Implement obscure support for gl blur
This can help with performance when a large region of the
filtered image (eg. snapshot) is fully hidden by an opaque
object. For instance the window border is hidden by the
opaque window content.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre c53f1526f1 evas: Make save() work on snapshots
This make save() work on snapshot objects, provided the call
is done from inside render_post.

Also, this saves the filtered output of an image, rather than
its source pixels. Any call to save() on a filtered image must
be done from post-render as well.

Fixes T2102

@feature
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre e7eb97f3b0 evas gl: Make sure a deleted image can't be the target
If we delete the image that was the target surface for gl
rendering, a crash would occur on the next render cycle.
Unlikely but not impossible to trigger from app side.

@fix
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 06a7beec52 evas filters: Switch to uniforms in GL blur
This was a poor attempt at improving the performance but
obviously the root cause isn't fixed (too many texel fetches).

Uniform should (theoretically) work better than an attribute
the for loop. Just a guess here.

This also makes GL blur use a float value as radius, allowing
future extension to non-integer blur radii, as well as using
linear scaling as a fast blur approximation.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 7407a0d073 evas filters: Reduce one log level 2017-04-14 11:26:44 +09:00
Jean-Philippe Andre ebeead4681 evas filters: Optimize GL blur with interpolation
This optimizes the GL blur algorithm by reducing the number of
texel fetches (roughly half the number of before this patch). This
works by exploiting GL's interpolation capabilities.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 6af3c20aeb evas filters: Pass gaussian values to GL blur shader 2017-04-14 11:26:43 +09:00
Jean-Philippe Andre a9ddeeb4fb evas filters: Use GL downscaling for blur
This will improve the performance a lot. Now remains to figure
out the best values for downscaling and improve the actual blur
shader as well.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre e52a04ef8f evas filters: Use obscured region in box blur (SW)
Box blur is used by the default blur (in 2 or 3 passes) so it
is one of the most important and cpu-consuming filters in the
software engine.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre b90246a619 evas: Improve blur filter perf by using 2 passes
By simply splitting X and Y blurs in two passes we can improve
the performance of the blur filter a lot.

There is still much to be done to make it really fast and nice
looking:
- implement true gaussian blur (not sine-based approximation,
  right now the actual blurs look different in SW and GL)
- exploit linear interpolation for R tap instead of R*2+1 taps
  (a tap being a texel fetch)
- downscale & upscale large images with large blur radii
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 5bce7120f1 evas filter: Implement blur filter in pure GL
Wait a second though, this implementation is not only incomplete
(no support for box vs. gaussian blur), it's also insanely bad in
terms of performance. Small radii may work fine, but at least blurs
render properly in GL with this patch (no more glReadPixels!).

The shader needs a lot of love, including in particular:
- support for 1D box blur single pass
- support for 1D gaussian (or sine) blur
- use linear interpolation and N-tap filters
- separation of 2D blur in two passes (high-level logic)
- potentially separation of large 1D blurs in 2 or more passes
  knowing that 2sigma == sigma + sigma when it comes to the gaussian
  bell curve.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 125c7d956e evas filters: Implement displace filter in pure GL
This one was a bit more... "fun". I had to add a new vertex
attribute and obviously using a VertexAttribPointer led to
incomprehensible crashes. But a simple glVertexAttrib2fv makes
it work like a charm!

A rare option is not handled yet.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre ac8812665b evas filters: Implement fill filter in pure GL
Now that one was trivial. Could also be done with glClear and
glScissor instead, but the rectangle infrastructure works well
enough.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 3d2f1a3d9b evas filters: Implement mask filter in pure GL
This reuses the existing mask infrastructure, but adds a color
flag to use the whole RGBA range, rather than just the Alpha
channel.

Filters are still very slow (glReadPixels and non-optimized use of
GL buffers...), but this is progress :)
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 92dfe1831c evas filters: Fix blur logic and GL buffer handling
This corrects two things:
- the blur filter high-level logic, that lead to reusing some
  temporary buffers which contained garbage;
- the versatile gl buffer implementation so that it now properly
  switches between the RGBA_Image and the FBO content (yes, this
  is insanely slow and inefficient... but it works and that was
  the only point).
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 2ef8d6f39a evas filters: Refactor ector and gfx filters A LOT
Alright, so this is a massive patch that is the result of
trying to get rid of unused or poorly implemented classes in
ector. Originally ector was meant to support VG but extend to
things like filters as well. At the moment, ector's design
makes it quite hard to plug in the filters.

For now I think it's easier to implement the GL support for
the filters directly in the engine, where I hope to interfere
as little as possible.

This massive patch keeps only the required minimum to support
a versatile gl buffer that can be mapped, drawn or rendered to (FBO).
It's extremely inefficient as it relies on glReadPixels and lots
of texture uploads, as well as conversions between ARGB and Alpha.

Another type of GL buffer is a wrap around an existing GL image,
but that one is read-only (map or draw: no write map, no FBO).

No, all the filters run fine, and the high-level implementation
(evas_filters.c) does not need to know whether the underlying engine
is SW or GL. One problem though appears with the blending or blurring
of some Alpha buffers, the colors are wrong.

This patch removes more lines than it adds so it must be good ;)
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre fb52c15e85 evas filters: Prepare GL support for blend operation
No implementation yet, this is just the skeletton!
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 190d84e84b evas: Rename software filter function type
From Evas_Filter_Apply_Func to Software_Filter_Func.
Also fix include dir for out-of-tree builds of non-static sw generic.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre a8d283567a evas filters: Move blur to software generic (8/8)
This completes the series of refactoring patches, where only the
filter implementation is moved to the engine rather than inside
evas itself.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 46542ea748 evas filters: Move transform to software generic (7/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre 1b95d22c2c evas filters: Move bump to software generic (6/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre b56a788e96 evas filters: Move displace to software generic (5/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre c9eec74002 evas filters: Move fill to software generic (4/8)
This also moves the header evas_engine_filter.h to its subdir.
2017-04-14 11:26:42 +09:00
Jean-Philippe Andre b6df13b024 evas filters: Move curve to software generic (3/8)
This moves the RGBA premul/unpremul functions to static_libs/draw.
2017-04-14 11:26:42 +09:00
Jean-Philippe Andre 09ff5f419e evas filters: Move mask to software generic (2/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre 0740010a06 evas filters: Move blend to software_generic (1/8)
This is an attempt at refactoring the filters code so I can
later implement GL support. This patch adds a few extra changes
to remove avoid calling functions of libevas from the software
engine: use the draw functions from static_libs/draw rather
than evas_common APIs.
2017-04-14 11:26:42 +09:00
Cedric BAIL 12fcaf77d6 evas: remove pixels hook from x11 backend now that we don't use it anymore 2017-04-12 15:13:19 -07:00
Cedric BAIL 323063a370 evas: remove pixels hook from fb now that we don't use it anymore. 2017-04-12 15:13:19 -07:00
Cedric BAIL e0bb9d6134 ecore_evas: change VNC API and use snapshot internally. 2017-04-12 15:13:19 -07:00
Minkyoung Kim 78d266e189 EvasGL: Do internal make current if context changed.
Summary:
Before, rsc->current_ctx is always same with ctx.
So checking context change was meaningless.
From now, it has meaning.

Test Plan: App call evas_gl_make_current more than twice in pixels callback. Those surfaces are indirect rendering surface.

Reviewers: jpeg, dkdk, wonsik

Reviewed By: jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D4773
2017-04-11 16:20:07 +09:00
Youngbok Shin 1ab87367d8 evas: give width offset when Evas tries to find ellipsis position
Summary:
If the last item before ellipsis item has bigger width than its advance,
evas_common_font_query_last_up_to_pos() function can find wrong ellipsis position.
When Evas finds a position for non last item, Evas must care about additionally
available space for glyph's width of the given x position.

ex) the last item's glyph before ellipsis item has a tail to draw above the ellipsis item.

@fix

Test Plan:
Test case will added as comment.
(Becasue of font license problem.)

Reviewers: herdsman, raster, jpeg, woohyun

Subscribers: cedric, Blackmole

Differential Revision: https://phab.enlightenment.org/D4727
2017-04-10 12:15:20 +09:00
Al Poole 36ab489a6f Fixes latest crash w/rage
Summary:
eina_file_virtualize is causing issues.

memfile_set is better but see attached bt.

What to do???

Reviewers: raster, cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D4743
2017-03-31 11:13:04 +09:00
Carsten Haitzler 02a7e00c01 ecore_evas extn - fix buffer n check for lock files with untrusted val
the code added by minkyoung has a definite security flaw here trusting
e->response to be within a small range when all it is is an int -
range is not limited other than that... so fix the code to check for
range like further code below does.

this commit went in 2 days ago... so not an existing bug fix.
2017-03-23 16:27:19 +09:00
Jean-Philippe Andre 2787f0fe5d evas: Fix a rare issue with GL and map and mask
The things you learn to love...

The situation was:
- An object is mapped (naviframe in an animation)
- One of its children has a mask
- The window is rotated by 90 or 270 degrees (landscape)

The mask glsl code to invert the x,y coordinate depends on the
screen rotation and this somehow was wrong.

Tested on Tizen and in elm_test "Masking", made with @jiin.moon.

@fix
2017-03-22 14:29:02 +09:00
Minkyoung Kim 38e6780262 ecore_evas_extn: do not update plug image when lockfile is invalid.
Summary:
This prevent invalid shared memory access.
Invalid access occur when server is resized sequentially from now to A-size
to B-size, and client receive A resize message after resizing B.
Then client try to render plug image with A-size, but shared memory is B-size
buffer. Size are mismatch. This makes segmentation fault when uploading texture(gl)
or rendering image(sw).

Test Plan: Indicator rendering on Tizen3.0 platform.

Reviewers: jypark, wonsik, dkdk, scholb.kim, jiin.moon, jpeg, cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4711

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-03-21 11:05:58 -07:00
Jean-Philippe Andre bcb8a7e8b8 evas gl: Fix a compilation warning
The fallback lib handle is not required unless EGL/GLES is used.
2017-03-20 12:51:50 +09:00
Derek Foreman 7b687c1a25 gl_drm: Fix KHR partial update support
I fixed this in other engines but missed this one.  The result is some
terrible flickering on gl_drm on recent mali drivers.
2017-03-17 15:32:26 -05:00
Derek Foreman 39da430878 ecore_drm2: Move function call after the NULL check
Was dereferencing ob before NULL checking it.  What could possibly go
wrong?
2017-03-17 15:06:39 -05:00
Derek Foreman 3b50c86985 gl_drm: Properly disable EGL_EXT_buffer_age when we don't have it
If we don't have EGL_EXT_buffer_age then we don't have buffer age - it's
a completely independent extension to KHR partial update.

This partially fixes partial update on recent mali drivers.
2017-03-17 15:04:47 -05:00
Jean-Philippe Andre c68a409874 evas gl: Add a hack for GLES 3.1 with NVIDIA + GLVND
I believe there's a limitation in libglvnd where it doesn't
propagate the calls to eglGetProcAddress() properly to the vendor
library.

See also 265c851a8f
2017-03-14 17:01:24 +09:00
Jean-Philippe Andre c15fee9bcc evas gl: Fix usage of OSMesa
It seems OSMesa was recently updated to not expose symbols statically,
so dlsym() returns invariably NULL. GetProcAddress must be used. Note
though that the extension "EGL_KHR_get_all_proc_addresses" is not
present (OSMesa is OpenGL, not GLES), and there is anyway no list
of extensions in OSMesa (at the WSI level, glGetString() returns a
ton of GL extensions as expected).

My OSMesa version is 11.2.0 (mesa 17.0.1).

This fixes make check.

@fix
2017-03-14 15:03:25 +09:00
Mike Blumenkrantz 9d8bc92c4a ecore-evas-wayland: update no-op configure commit case for new acking method
ref 1b9970658f
ref 5e7456a315
2017-03-10 16:11:19 -05:00
Mike Blumenkrantz 57412cba94 ecore-evas-x: set flag for maximized state
fixes initial maximize state
2017-03-10 15:54:21 -05:00
Mike Blumenkrantz 1b9970658f ecore-evas-wayland: commit on no-op configure events
this handles the case of a window configure not triggering any visible change

fix T5192
2017-03-10 15:54:21 -05:00
Carsten Haitzler 09f132b556 evas - gl - remove warning for unused var with opengl vs gles 2017-03-10 10:56:19 +09:00
Jean Guyomarc'h c1604cdac8 ecore_evas_cocoa: better debugging log 2017-03-09 23:16:16 +01:00
Derek Foreman aedf55073a ecore_wl2: Rename badly named API
Oops, I broke naming convention with this, but it's unreleased and beta so
I hope nobody notices as long as I change it now...
2017-03-09 12:21:09 -06:00
Derek Foreman a1b90cf4d7 Revert "ecore-evas-wayland: Fix issue of apps not starting up in fullscreen mode"
This reverts commit dfb1877500.

This did fix the problem of "rage -f" not starting properly, but it
broke toggling between fullscreen and !fullscreen for other apps.

They'd resize to a large, but not quite fullscreen, size, then render with decor
present, and big black bars on the right/bottom edges (which were offscreen due
to the client size and position)

This isn't really the right place to fix this - it's a protocol usage bug, not
a canvas bug.
2017-03-09 12:21:08 -06:00
Jean Guyomarc'h 27a62edd68 gl_cocoa: use triple buffering
Interestingly enough, this makes some graphical artifacts vanish...
2017-03-09 00:57:56 +01:00
Jean Guyomarc'h f6a44e6bc1 ecore_evas_cocoa: fix invalid initial requested width 2017-03-09 00:57:56 +01:00
Jean Guyomarc'h 863077ce9a ecore_evas_cocoa: use ecore_event to match windows 2017-03-09 00:57:55 +01:00
Jean Guyomarc'h 79e7e2628a ecore_evas_cocoa: remove more pointless code 2017-03-09 00:57:55 +01:00
Youngbok Shin f83ce20e1c evas: clean up GL images for emojis when GL context is free'd
If GL context is free'd before processing font shutdown,
textures for emoji glyph's GL images will be free'd without clean
up its GL images. It causes eina mempool infinite loop issue when
emoji's GL images are free'd in shutdown process.

So, the patch will make a list for emoji's GL images in context and
clean up them when the context is free'd. Just like font textures in
context.

@fix

Differential Revision: https://phab.enlightenment.org/D4695

Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
2017-03-08 19:35:03 +09:00
Jean Guyomarc'h b9ab5f68af ecore_evas_cocoa: remove a lot of useless code
I still don't know what's going on with the rendering problems, but
at least now  I have less dead code in my way...
2017-03-08 08:59:59 +01:00
Jean Guyomarc'h 1c772ddd3d ecore_evas_cocoa: set the render func at initialization 2017-03-08 08:59:59 +01:00
Jean-Philippe Andre 265c851a8f evas gl: Fix version detection for GLES 3.1
It was assumed that GLES 3 would only work with EGL but in fact
OpenGL 4.3 & 4.5 are supersets of GLES 3.0 & 3.1 respectively. So
GLX should also support GLES 3.0 or GLES 3.1 for evas gl, if the
driver supports it, of course.

Of course while doing this patch things didn't go like they were
supposed to go. I'm currently using NVIDIA's proprietary driver,
that conveniently provides EGL with GLES 3.2. But wait, there's
a catch: GL_VERSION is "OpenGL ES 3.2 NVIDIA" except that none
of the functions of GLES 3.1 or GLES 3.2 are actually supported.
Those functions are only present in the GLX/OpenGL variant of the
driver. Thanks so much for making my life easier...

So yeah, this patch contains a hack for those invalid versions
of GLES 3.x. What was supposed to be a small fix became a huge
mess.

Also add a comment about the possibly invalid auto-upgrade from
GLES 2 to GLES 3.

This adds a test case in elm_test, but only to verify that
elm_glview_version_add(3) actually works. We need a proper GLES 3
test case, eventually (and 3.1, 3.2 of course).
2017-03-08 15:44:39 +09:00
Jean Guyomarc'h 566b23dcb8 ecore_evas/x: don't mark as unused a used parameter 2017-03-07 20:23:12 +01:00
Jean Guyomarc'h 6f80616a4d ecore_evas/cocoa: fix cursor's visibility
Fixes T5238
2017-03-07 20:23:12 +01:00
Jean-Philippe Andre 38446d8daf tests: Remove CPU affinity from all threads
I believe that all the threads created in our test suite should
be spawned without any special CPU affinity. The default parameter
is not 0 (corresponds to the first CPU, known as CPU 0) but -1.

Similarily the default priority is NORMAL (1), not 0 (URGENT).

This also affects two unused code paths: evas render2 and gl preload.

@fix
2017-03-06 17:03:47 +09:00
Jiyoun Park a6c0e9b067 ecore_evas_extn: add shared lock mode to the ecore_extn.
Currently, ecore_evas_extn only use exclusive lock.
so if there are many ecore_extn_plugs , there is competition among the ecore_extn_plugs.
since the ecore_extn_plugs dont need to use exclusive lock, add the shred lock mode.
2017-03-06 12:39:53 +09:00
Derek Foreman 3c3808acc5 ecore_evas_wayland: fix session recovery crash with async render
We need a display unset path for software render to prevent an async
render completing after a disconnect from posting a frame and crashing
us.

As of this commit both software and gl session recovery work for me.

fix T5005

 #SessionRecoveryWorksHere
2017-03-03 13:30:01 -06:00
Derek Foreman 706a1a33a4 ecore_evas_wayland: Use surface from engine info
Calling ecore_wl2_window_surface_get() has the side effect of creating
a new wayland surface if we don't already have one.  If we do that
during a session recovery, we can try to create a new surface while
we have no connection to a compositor - that's Bad.

So we just use the one we already have stored - which we NULL out on
disconnect.
2017-03-03 13:30:01 -06:00
Derek Foreman f53f873b58 wayland_egl: recreate outbuf on session restore
If we get an eng_update with no outbuf, try to create one.
2017-03-03 13:30:00 -06:00
Derek Foreman 18224858f3 wayland_egl: Destroy the outbuf when we lose our surface
This way we properly shut down when we get disconnected from the
compositor, and can reconnect later.
2017-03-03 13:30:00 -06:00
Derek Foreman eacd67498c wayland_egl: Don't crash when asked to dump with no outbuf
Another session recovery corner case.
2017-03-03 13:30:00 -06:00
Derek Foreman 1639e99305 wayland_egl: Don't crash if gl context queried when no outbuf
We can get here on session restore when we haven't had a chance
to recreate the outbuf yet.
2017-03-03 13:30:00 -06:00
Derek Foreman 49e7932c86 gl_generic: Add null checks in some cache functions
When wayland session recovery happens, we can end up down this path
with no gl context when elm reprocesses its config file.

That callback fires long before we've re-set up our wayland connection
so we can't possibly have a valid gl context yet.

Prevent that from crashing.
2017-03-03 13:30:00 -06:00
Jiyoun Park ffa2d37462 ecore_evas_wayland: remove useless code 2017-03-03 12:44:35 +09:00
Jiyoun Park 89c6a316f6 ecore_evas_wayland: remove useless code 2017-03-03 11:28:52 +09:00
Jiyoun Park fb730c1fd7 ecore_evas_wayland: fix bug ee's width and height were updated wrong place.
ecore evas manages the width and height using the ee->w/h and ee->req.w/h.
but sometimes only ee->req value can be updated.
2017-03-03 11:06:50 +09:00
Jihoon Kim 591db71120 ecore_imf/xim: Fix memory leak
64 bytes in 1 blocks are definitely lost in loss record 152 of 258
   at 0x4C2AB80: malloc (vg_replace_malloc.c:296)
   by 0xC786A77: ??? (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
   by 0xC78747B: _XimDecodeIMATTRIBUTE (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
   by 0xC77A7EF: ??? (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
   by 0xC767771: XGetIMValues (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
   by 0x113CFE09: ???
   by 0x113D08F7: ???
   by 0x83DD329: ecore_imf_context_client_window_set (ecore_imf_context.c:240)
   by 0x530779D: _edje_entry_real_part_init (edje_entry.c:2937)
   by 0x5311C20: _edje_object_file_set_internal (edje_load.c:1079)
   by 0x5328665: _edje_object_efl_file_mmap_set (edje_smart.c:438)
   by 0x775BD3A: efl_file_mmap_set (in /usr/local/lib/libefl.so.1.18.4)
2017-03-03 10:12:30 +09:00
Carsten Haitzler 9f535a3f3c emotion - fix empty video data frame update when using vdpau accel
fixes a segfault when using vdpau+gst and where the first frame seems to
be empty/zero.

@fix
2017-03-02 15:31:07 +09:00
Jihoon Kim 777b9beb23 ecore_imf/ibus: Fix memory leak allocated by ibus_bus_new 2017-03-02 10:19:53 +09:00
Derek Foreman b7f1c66d3a ecore-evas-wayland: Fix yet another wayland session recovery break
commit 81783ec75c combined two "identical"
pieces of code that weren't identical.  The removed code never checked
if the evas was visible before performing operations to make it so,
the code left behind would bail if the evas was visible.

Reset the visible status during disconnect to make sure we properly show
windows after a session recovery.

ref https://phab.enlightenment.org/T5005

@fix

Session works on the software engines at this point.  Use this as a bisect
point next time someone fubars it.

GL still broken.  Window geometry seems like it doesn't get updated right
either, but at least clients reconnect again.

 #SessionRecoveryWorksHere
2017-03-01 14:47:21 -06:00
Chris Michael ce65b59d5a Revert "ecore-evas-wayland: Don't register animators until window gets shown"
Reverting this as apparently it broke session recovery for some odd
ass reason...

This reverts commit 38f3854f45.
2017-03-01 13:13:46 -05:00
Chris Michael 81783ec75c ecore-evas-wayland: Remove duplicated code
As we already call the same functions inside
_ecore_evas_wl_common_show, there is no need to duplicate the same
code when we have defer_show set...just call the show function.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-01 11:43:11 -05:00
Chris Michael dfb1877500 ecore-evas-wayland: Fix issue of apps not starting up in fullscreen mode
Calls to make a window fullscreen do require the window to already
have a shell surface with which to fullscreen. If an app sets the
window fullscreen property when the window is not shown yet, then the
app would never startup fullscreen. This patch fixes that issue by
adding a 'defer_fullscreen' flag to Ecore_Evas (wayland) so that when
the window does finally get shown, we can show it in fullscreen.
Addresses part of the T5044 ticket...

ref T5044

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-01 11:30:15 -05:00
Chris Michael e6b26d2279 ecore-imf-wayland: Reduce calls to set_cursor_rectangle
Avoid calls to zwp_text_input_v1_set_cursor_rectangle if we do not
need to. Previous code here would always call this function even if
the cursor rectangle was in the same position. Now we set a flag on
the cursor_location field to let us know that it needs updating.

ref T5226

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 10:22:58 -05:00
Chris Michael f877c46ad8 ecore-imf-wayland: Remove duplicate header include
wayland_imcontext.h already includes this header, so no need to
re-include. Also add missing (void) to function declaration

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 09:28:24 -05:00
Chris Michael 6d4357d943 ecore-imf-wayland: Formatting fixes
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 09:16:22 -05:00
Jean-Philippe Andre 02bff22d8f evas: Reset state to GL_TEXTURE_2D
This should fix an ERR message under gl_drm and probably an
actual bug.

This reverts 8f2cfdf490.

I don't think the texture target should be part of the context
information. It should instead be a property of the texture.

Fixes T5171
2017-02-28 13:07:13 +09:00
Jihoon Kim 82188e12b5 ecore_imf/ibus: fix memory leak 2017-02-28 11:24:39 +09:00
Cedric BAIL 5420ebaf32 emile: rename emile_image_register to emile_image_callback_set.
This fix ABI report according to discussion on the mailing list.
2017-02-27 15:05:35 -08:00
Chris Michael 38f3854f45 ecore-evas-wayland: Don't register animators until window gets shown
Small patch to not call _ecore_evas_register unless we are showing the
window. This stops creation of rogue animators on cursors until the
window is actually going to be shown.

Fixes T5209

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-27 11:33:57 -05:00
Jihoon Kim 73ff3e07a2 ecore_imf/ibus: Fix memory leak 2017-02-27 21:32:07 +09:00
Jihoon Kim a1da126220 ecore_imf/wayland: Fix memory leak in immodule
==1321== 156 bytes in 1 blocks are definitely lost in loss record 7,687 of 9,703
==1321==    at 0x4847E64: calloc (vg_replace_malloc.c:623)
==1321==    by 0x92EA7E9: wayland_im_context_new (wayland_imcontext.c:1094)
==1321==    by 0x92E66DD: im_module_create (wayland_module.c:132)
==1321==    by 0x4D521E7: ecore_imf_module_context_create (ecore_imf_module.c:152)
==1321==    by 0x4D51EF7: ecore_imf_context_add (ecore_imf_context.c:141)
2017-02-27 21:31:07 +09:00
Carsten Haitzler 473d431241 evas gl common - fix nv12 text upload with upack row length
we segv'd because our testure width was wrong... i was row span
length in bytes and we use luminance+alpha texture... this fixes it.

@fix
2017-02-26 11:44:38 +09:00
Carsten Haitzler 7d4e417ea8 emotion XXX - make nv12 709 streams work even with slightly off colors
ther eis no 709 nv12 support support in evas but there is 601, so use
that for now until we add the feature of 709 nv12 support.
2017-02-23 11:46:53 +09:00
Jiyoun Park 78feb9decb ecore_evas_wayland_common: fix bug that window is not rotated when app request rotate.
In landscape mode, width & height of evas are different with ecore's.
so diff is checked differently according to the  portrait & landscape mode.
2017-02-20 11:15:59 +09:00
Godly T.Alias 48627996d7 efl: fix memory leak in edje and evas.
Summary:
Signed-off-by: Godly T.Alias <godlytalias@yahoo.co.in>
Signed-off-by: Ayush Srivastava <ayush.sriv@samsung.com>

Test Plan: EFL apps

Reviewers: cedric, raster

Subscribers: rajeshps, ayush.sriv, jpeg, prince.dubey

Differential Revision: https://phab.enlightenment.org/D4660

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-02-15 16:29:07 -08:00
Jean-Philippe Andre 45d846814f evas gl: Fix memory tracking
See b16c961680 which by "fixing" indentation changed the
logic of the code. Yes the indentation was misleading (because of
the #if / #else) but the logic was correct. Anyway this is was not
a harmful issue as those memory trackers aren't really used.
2017-02-14 10:56:15 +09:00
Chris Michael 6aad6d27f2 ecore-evas-drm: Fix setting rotation during async render
If we are in async render and a call to rotation_set has been made,
then we should delay setting that rotation until rendering is
completed. This patch fixes that issue by setting ee->delayed.rotation
and handling it during _drm_render_updates

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-13 13:43:21 -05:00
Chris Michael 60c7891598 ecore-evas-wayland: Fix setting rotation during async render
If we are in async render when a call to set rotation happens, we
should not be setting the engine info->rotation until we have actually
handled the rotation. Old code here would set delayed.rotation on the
ecore_evas itself, but then it would tell the engine to rotate. What
we actually want here is If in async render, set the delayed rotation
property and let render_updates deal with any delayed setting.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-13 13:37:06 -05:00
Chris Michael b16c961680 evas-gl-common: Fix misleading indentation
gcc reports that the 'else' here does not guard the latter
statement...seems like a cause of some missing parens so fix.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-13 10:34:13 -05:00
Jean-Philippe Andre 0a2d8d834a evas gl: Partially fix MSAA for GLES 3 drivers
MSAA (multisampled_render_to_texture) support was implemented with
GLES 2 in mind, but for GLES 3 it comes as a core feature, not as
an extension. Also it relies on renderbuffers, not textures. GL
is awesome.

Note: MSAA still doesn't work!
2017-02-13 20:11:22 +09:00
Minkyoung Kim c2e1eb7c54 EvasGL: For depth&stencil&msaa, use renderbuffer instead of texture
Summary:
glFramebufferTexture2DMultisampleEXT() supports color attachment only.
so depth&stencil attachment should be bound via renderbuffer not texture.

According to http://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture.txt
In order to allow the use of multisampled depth and stencil buffers
when performing multisampled rendering to a texture, the extension
also adds the command RenderbufferStorageMultisampleEXT.
target, textarget, texture, and level correspond to the same
parameters for FramebufferTexture2D and have the same restrictions.
attachment must be COLOR_ATTACHMENT0.

Test Plan: Evas GL on GLES 3

Reviewers: jpeg, raster, dkdk, wonsik

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D4648
2017-02-13 19:54:29 +09:00
Jaeun Choi 95d83e8040 evas: fix bugs in gif image loader
gif's logical screen size (which is considered the image size)
might be different from the size of each frame.
when decoding a frame, the width and height of the decoded data should be
based on the size of the frame, not on the size of the logical screen size.
if a frame is decoded into a buffer of screen size, this might happen

(frame = 6 X 3, logical screen = 5 X 3)
OOOXXX      OOOXX
OOOXXX  =>  XOOOX
OOOXXX      XXOOO

@fix
2017-02-13 14:28:43 +09:00
Carsten Haitzler 243e8a678b evas gl common - make render op explicitly signed as we set it to -1
this just is cleaner and now also matches types for render_op in gl
common context.
2017-02-12 15:48:51 +09:00
Carsten Haitzler ff05e39904 evas wayland egl engine - fix warning about struct wl_resource not used
this struct is not actually used other than in this func ptr decl and
it's warning-land for gcc, so .. make it void * and do things like
pretty much all other gl extn func ptrs... be very generic
2017-02-12 00:29:50 +09:00
Carsten Haitzler 6b59dbfdb4 evas gl drm engine - fix warning about struct wl_resource not used
this struct is not actually used other than in this func ptr decl and
it's warning-land for gcc, so .. make it void * and do things like
pretty much all other gl extn func ptrs... be very generic
2017-02-12 00:29:50 +09:00
Carsten Haitzler 73a5b84b8f evas wl shm - fix warning with unused variable 2017-02-11 10:24:42 +09:00
Carsten Haitzler 0356b1eb5e vpath usage - simplify to bare minimum to make gustavo happy
since these are only local path resolves, the do and wait are
technically not needed. also remove any other tmp strings
and use the vpath string resolving feature to avoid
printfs/strjoins/cats etc. etc. as well.

also remember to remove old name string from evas shm code - it worked
for me. i guess i was lucky and it happened to be NULL thus free was
fine.
2017-02-10 19:27:15 +09:00
Derek Foreman 2800038ee2 Revert "vpath usage - simplify to bare minimum to make gustavo happy"
This reverts commit 2037474dc0.

This causes the wayland_shm engine to seg fault immediately at
startup when attempting to create shm buffers.

Please make sure when committing changes to the wayland_shm engine to
test on intel, exynos, and at least one platform without dmabuf
capabilities - or using the EVAS_WAYLAND_SHM_DISABLE_DMABUF env var
to disable dmabuf on intel or exynos.

Anyone without the time or hardware to fully test changes to wayland_shm
can submit a patch to phabricator and assign it to me so I can fully
test it before landing.
2017-02-09 09:17:38 -06:00
Carsten Haitzler 2037474dc0 vpath usage - simplify to bare minimum to make gustavo happy
since these are only local path resolves, the do and wait are
technically not needed. also remove any other tmp strings and use the
vpath string resolving feature to avoid printfs/strjoins/cats etc.
etc. as well.
2017-02-09 22:06:16 +09:00
Carsten Haitzler 5c431b14de evas fb dev env var - allow in setuid processes with sanitizing
this allows only /dev/fb[0-0] or /dev/fb/something where somthing does
not begin with a . - thus no way to break out of the fb subdir... so
it should be ok... this keeps setuid safety and allows this env var to
work now as intended in this situation.
2017-02-09 18:38:28 +09:00
Carsten Haitzler 9eee1f80fc evas wayland shm engine - use vpath for getting xdg runtime dir
this should make the wayland shm engine safe to use from setuid
processes. it shouldnt depend on getenv of specific file paths if
setuid. vpatrh takes care of this in one central place
2017-02-09 18:38:28 +09:00
Carsten Haitzler 3bcd788c7d ecore buffer module - use vpath for xdg runtime for setuid safety
this should make ecore buffer module safe to use in setuid processes
2017-02-09 18:38:28 +09:00
Jean-Philippe Andre 2a239c211c evas: Fix invalid current state (invalid bool value)
newframe() resets some of the gl context properties, so match them
to our shadow copy in the gc state.

target_surface_set() also resets some of those properties but only
in our shadow copy, not in the actual GL context. As a consequence
we can't rely on setting a bool to 0 or 1 unless we also call the
equivalent GL function. Expand bitfields to 2 bits allows us to
set a bool to the invalid value of -1 (yes, that's not a real bool).

Also there is no need to reset the target surface to NULL during
newframe. It will be reset during target_surface_set.

This fixes some issues I encounter while working on GL filters.
2017-02-09 11:39:20 +09:00
Carsten Haitzler 8f2cfdf490 when resetting tex_target, set it to -1 so we force a reset 2017-02-08 22:59:37 +09:00
Carsten Haitzler 876c407977 evas gl commonnon - context - expand fields to 2 bits for invalid vals
we use invalid values (-1 or 0xff or 0x3 etc. invalid vals to know to reset
some state). expand fields out in size a little bit to allow that to
work again.
2017-02-08 22:57:28 +09:00
Carsten Haitzler 09e1a75f4f evas gl generic - remove dead code else case
plane limits are checked at top of function so no need to check in the
middle again. it's dead code. fixes CID 1362729
2017-02-08 21:19:39 +09:00
Carsten Haitzler 98aac6118d evas gl generic - comment switch fallthrough as intended
this is intended. document as such.
2017-02-08 21:19:39 +09:00