platform/upstream/efl.git
8 years agoeio_eet: Added test suite for eio eet module.
Vivek Ellur [Mon, 6 Jun 2016 14:47:49 +0000 (16:47 +0200)]
eio_eet: Added test suite for eio eet module.

Summary:
Added new test suite for eio eet module

Signed-off-by: Vivek Ellur <vivek.ellur@samsung.com>
Reviewers: cedric

Subscribers: stefan_schmidt, jpeg, cedric

Tags: #efl

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

8 years agoedje: Fix memory overflow on svg loader.
Jaehyun Cho [Tue, 13 Sep 2016 08:49:36 +0000 (17:49 +0900)]
edje: Fix memory overflow on svg loader.

Initialize temporary index not to cause memory overflow on svg loader.

8 years agoRemove leftover evas_out usage from legacy
Daniel Hirt [Tue, 13 Sep 2016 07:38:02 +0000 (10:38 +0300)]
Remove leftover evas_out usage from legacy

Build failed after b5456893ee8a1a86a9b7e0342f644f3785711e06 due to
a missing header.

8 years agoevas: Fix possible crash in evas_model_save_eet.c
Oleksandr Shcherbina [Tue, 13 Sep 2016 06:17:53 +0000 (15:17 +0900)]
evas: Fix possible crash in evas_model_save_eet.c

Summary: @fix

Reviewers: cedric, raster, Hermet

Reviewed By: Hermet

Subscribers: artem.popov, jpeg

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

8 years agoelm_calendar: Fix header text bug.
Woochan Lee [Tue, 13 Sep 2016 06:13:45 +0000 (15:13 +0900)]
elm_calendar: Fix header text bug.

Summary:
There is a bug. when calendar showing very first time.
the some of the headers(weekday name) is blank.

Because of elm_layout_text_set() called with NULL value.

Need to insert all of the weekday names before set text.

@fix

Test Plan:
Execute elementary_test
Open calendar sample.
See the all of the header names there.

Reviewers: cedric, jpeg, Hermet

Reviewed By: Hermet

Subscribers: cedric, jpeg

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

8 years agoSync mailmap
Simon Lees (SUSE) [Tue, 13 Sep 2016 05:42:58 +0000 (15:12 +0930)]
Sync mailmap

8 years agoevas: start working on efl_canvas_output.
Cedric BAIL [Mon, 12 Sep 2016 23:18:08 +0000 (16:18 -0700)]
evas: start working on efl_canvas_output.

This should when done enable the possibility for multi screen in wayland
along with remote display, wireless display and screencasting.

8 years agoeio: properly track destruction of all Eet eio request.
Cedric BAIL [Mon, 12 Sep 2016 18:19:10 +0000 (11:19 -0700)]
eio: properly track destruction of all Eet eio request.

@fix T4550

8 years agoefl_net_dialer_tcp: add connect timeout.
Gustavo Sverzut Barbieri [Mon, 12 Sep 2016 17:48:03 +0000 (14:48 -0300)]
efl_net_dialer_tcp: add connect timeout.

8 years agoefl_net_dialer_websocket: close and emit EOS on error.
Gustavo Sverzut Barbieri [Mon, 12 Sep 2016 16:44:35 +0000 (13:44 -0300)]
efl_net_dialer_websocket: close and emit EOS on error.

On errors we should close the websocket and if it's in streaming mode
emit an EOS.

8 years agoefl_net_dialer_tcp: emit EOS on errors.
Gustavo Sverzut Barbieri [Mon, 12 Sep 2016 16:21:20 +0000 (13:21 -0300)]
efl_net_dialer_tcp: emit EOS on errors.

I/O copier and others may depend on end-of-stream to stop processing,
then emit the EOS on failures.

8 years agoefl_net_dialer_http: emit eos only at the end.
Gustavo Sverzut Barbieri [Mon, 12 Sep 2016 15:46:05 +0000 (12:46 -0300)]
efl_net_dialer_http: emit eos only at the end.

http copiers were never finishing since eos was being reset to FALSE
before the I/O copier job executed.

8 years agoefl_net_socket_fd: fail early on double close.
Gustavo Sverzut Barbieri [Mon, 12 Sep 2016 16:17:50 +0000 (13:17 -0300)]
efl_net_socket_fd: fail early on double close.

8 years agoefl_io_closer: add close_on_exec and close_on_destructor properties.
Gustavo Sverzut Barbieri [Mon, 12 Sep 2016 15:23:29 +0000 (12:23 -0300)]
efl_io_closer: add close_on_exec and close_on_destructor properties.

the purpose of these properties are to make it more uniform the
handling of these auto-close behavior.

8 years agoconfig: Add Escape key binding to naviframe.
Jaehyun Cho [Mon, 12 Sep 2016 11:30:50 +0000 (20:30 +0900)]
config: Add Escape key binding to naviframe.

Naviframe item is popped when Escape key is pressed.

8 years agoEdje_Edit: check returned value edje_edit_edje_file_save function.
Mykyta Biliavskyi [Mon, 12 Sep 2016 11:31:08 +0000 (14:31 +0300)]
Edje_Edit: check returned value edje_edit_edje_file_save function.

In edje_edit_group_copy() for case when save routine is failed
still returned EINA_TRUE. Now will be returned result of save routine.

@fix
CID: 1362727

8 years agotests: eo_cxx: make sure new header files is included in dist tarball
Stefan Schmidt [Mon, 12 Sep 2016 11:01:48 +0000 (13:01 +0200)]
tests: eo_cxx: make sure new header files is included in dist tarball

This new file is available in the src tree but as we do not reference it in the
Makefile it is never put into the dist tarball making distcheck fail.

8 years agoexamples: elementary: fix build for cxx examples needing ecore_cxx includes
Stefan Schmidt [Mon, 12 Sep 2016 08:05:12 +0000 (10:05 +0200)]
examples: elementary: fix build for cxx examples needing ecore_cxx includes

The elementary cxx examples now need Ecore_Manual.hh from the cxx bindings.
Make sure we setup the include paths accordingly.

8 years agoevas map: fix the rendering problem.
Hermet Park [Mon, 12 Sep 2016 07:50:00 +0000 (16:50 +0900)]
evas map: fix the rendering problem.

I got an issue report about map rendering.
After investigated, I found that was introduced by data overflow.

For fast computation, evas map uses integer data type rather than float,
that gives up some range of data size.

So, if vertex range is a little large but still reasonable,
polygon won'be properly displayed due to the integer overflow.

We can fix this by changing FPc data type to 64 bits (ie, long long)
But I didn't do yet though I can simply fix this costlessly.

By the way, my test case map points are below.

0: -1715, -5499
1: -83, -1011
2: 1957, 5721
3: 325, 1233

and gl result is perfect but sw is totally broken.

@fix

8 years agoelementary test_glview: guide ELM_ACCEL rather than ELM_ENGINE
Hermet Park [Mon, 12 Sep 2016 04:09:17 +0000 (13:09 +0900)]
elementary test_glview: guide ELM_ACCEL rather than ELM_ENGINE

Specifying explicit engine name is not honored now
because backened engine name depends on the system.
We prefer to guide accelerator rather than engine.

8 years agoeolian-cxx: Implement future template class for C++
Felipe Magno de Almeida [Sun, 7 Aug 2016 19:52:48 +0000 (16:52 -0300)]
eolian-cxx: Implement future template class for C++

8 years agoembryo_cc: fix memory overflow in str
WooHyun Jung [Mon, 12 Sep 2016 01:09:32 +0000 (10:09 +0900)]
embryo_cc: fix memory overflow in str

After for-loop i can have value 11. So the str should be longer than 11.

@fix

8 years agoelm: don't show our elm_code popup if ctrl pressed
Andy Williams [Sun, 11 Sep 2016 18:10:04 +0000 (19:10 +0100)]
elm: don't show our elm_code popup if ctrl pressed

8 years agoelm: Add popup edit menu in elm_code
Andy Williams [Sun, 11 Sep 2016 17:47:05 +0000 (18:47 +0100)]
elm: Add popup edit menu in elm_code

8 years agoEcore_con_ssl: fix return value of ecore_con_ssl_client_upgrade.
Mykyta Biliavskyi [Sun, 11 Sep 2016 17:15:50 +0000 (20:15 +0300)]
Ecore_con_ssl: fix return value of ecore_con_ssl_client_upgrade.

In case when _ecore_con_ssl_client_init_(gnutls/openssl) finished
successful a enum ECORE_CON_SSL_ERROR_NONE value (0) returned. Function
ecore_con_ssl_client_upgrade return Eina_Bool and in case of success
EINA_FALSE was returned.

@fix

8 years agoeio: finish port to new efl_io_manager API.
Cedric BAIL [Fri, 9 Sep 2016 23:22:20 +0000 (16:22 -0700)]
eio: finish port to new efl_io_manager API.

8 years agoecore: shutup unused arguments warning.
Cedric BAIL [Fri, 9 Sep 2016 23:21:47 +0000 (16:21 -0700)]
ecore: shutup unused arguments warning.

8 years agoecore: fix reference counting of promise value for efl_future_race and efl_future_all.
Cedric BAIL [Fri, 9 Sep 2016 23:20:52 +0000 (16:20 -0700)]
ecore: fix reference counting of promise value for efl_future_race and efl_future_all.

8 years agoefl_net_dialer_tcp: make asynchronous resolve and connect.
Gustavo Sverzut Barbieri [Fri, 9 Sep 2016 23:09:51 +0000 (20:09 -0300)]
efl_net_dialer_tcp: make asynchronous resolve and connect.

both resolve (getaddrinfo()) and connect() are now done in
Ecore_Thread, avoid to block the main loop.

My plan is to always use the threaded connect() using a blocking
socket, only set it to non-blocking after the socket is returned to
the main thread and before it's accessible to the user. It will make
the connect behavior more uniform.

Some errors were moved from HTTP to Dialer as they are more generic.

8 years agoecore-drm2: Rename output_fb_release to just fb_release
Chris Michael [Fri, 9 Sep 2016 19:08:40 +0000 (15:08 -0400)]
ecore-drm2: Rename output_fb_release to just fb_release

As this function releases FBOs on a given output, lets just shorten
the API function name so it can stay grouped into the ecore_drm2_fb.c
file ... leaving it as ecore_drm2_output_fb_release reads like it
should have gone into the ecore_drm2_output.c file...

NB: No real function changes here, just an API rename.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
8 years agoecore-drm2: Add missing EINA_SAFETY checks for public facing API
Chris Michael [Fri, 9 Sep 2016 19:05:00 +0000 (15:05 -0400)]
ecore-drm2: Add missing EINA_SAFETY checks for public facing API
functions

Signed-off-by: Chris Michael <cp.michael@samsung.com>
8 years agogl_drm_ee: Remove repulsive hack and do proper gbm buffer accounting
Derek Foreman [Fri, 9 Sep 2016 18:35:22 +0000 (13:35 -0500)]
gl_drm_ee: Remove repulsive hack and do proper gbm buffer accounting

We no longer need this hack as we now have a way to properly handle the
buffer locking in the engine, and don't currently deal with multi-head.

8 years agoecore_drm2: Add ecore_drm2_output_fb_release way to force buffer release
Derek Foreman [Fri, 9 Sep 2016 18:33:15 +0000 (13:33 -0500)]
ecore_drm2: Add ecore_drm2_output_fb_release way to force buffer release

Adds an api to attempt to release an fb from an output.  This will try
to first free any queued but not display buffers, which may harmlessly
give us a render target.

However, if that fails it will try to get buffers that have been sent to
scanout, which can lead to tearing.

8 years agoecore_drm2: Add release handlers for buffers
Derek Foreman [Fri, 9 Sep 2016 18:31:20 +0000 (13:31 -0500)]
ecore_drm2: Add release handlers for buffers

Allow the engine to register a callback for buffer release.  This lets us
do appropriate buffer bookkeeping (for example, gbm locking) in the
engine.

8 years agoecore_drm2: Store gbm_bo for Fbs and add a getter function for it
Derek Foreman [Fri, 9 Sep 2016 18:18:41 +0000 (13:18 -0500)]
ecore_drm2: Store gbm_bo for Fbs and add a getter function for it

This will aid with proper locking in gl_drm later

8 years agoremove TODO/hacks for eo, it's fixed now.
Gustavo Sverzut Barbieri [Fri, 9 Sep 2016 17:53:11 +0000 (14:53 -0300)]
remove TODO/hacks for eo, it's fixed now.

Tasn fixed https://phab.enlightenment.org/T4418 so these are not needed anymore.

8 years agodocs: fix editable section writer erasing wrong fields
Daniel Kolesa [Fri, 9 Sep 2016 12:48:33 +0000 (14:48 +0200)]
docs: fix editable section writer erasing wrong fields

8 years agodocs: add editable sections where possible
Daniel Kolesa [Fri, 9 Sep 2016 12:43:02 +0000 (14:43 +0200)]
docs: add editable sections where possible

8 years agoeolian: properly add < in struct/enum field docs
Daniel Kolesa [Fri, 9 Sep 2016 11:04:04 +0000 (13:04 +0200)]
eolian: properly add < in struct/enum field docs

Fixes T4443.

8 years agoEo: Remove the EO_DEBUG env check. We have DBG for that.
Tom Hacohen [Fri, 9 Sep 2016 10:38:07 +0000 (11:38 +0100)]
Eo: Remove the EO_DEBUG env check. We have DBG for that.

8 years agoUpdate the EFL according to new Eo API changes.
Tom Hacohen [Fri, 9 Sep 2016 10:24:37 +0000 (11:24 +0100)]
Update the EFL according to new Eo API changes.

I didn't expect it (my bad), but why the hell is this done manually
instead of using Eolian?! People, use Eolian.

8 years agoevas drm engine - fix build if gl not enabled for drm engine build
Carsten Haitzler (Rasterman) [Fri, 9 Sep 2016 10:11:06 +0000 (19:11 +0900)]
evas drm engine - fix build if gl not enabled for drm engine build

this fixes the build after a derek b0rk :)

8 years agoEo: Merge in changes in how functions are registered to classes.
Tom Hacohen [Fri, 9 Sep 2016 10:14:45 +0000 (11:14 +0100)]
Eo: Merge in changes in how functions are registered to classes.

More information in the relevant commit itself:
7ebf9d879d41169beda06b0195e4a3b3c60818e1

Breaks ABI and API

8 years agoEo: Change the way functions are registered to classes
Tom Hacohen [Fri, 9 Sep 2016 09:53:58 +0000 (10:53 +0100)]
Eo: Change the way functions are registered to classes

This change lets us remove a field from the structure that leads to
around 20KiB more of saving in private dirty pages in elementary.

This also looks a bit better and feels a bit cleaner.

Breaks API and ABI.

8 years agoeolian: separate ops struct for normal and class funcs (to match new API)
Daniel Kolesa [Thu, 8 Sep 2016 14:38:52 +0000 (16:38 +0200)]
eolian: separate ops struct for normal and class funcs (to match new API)

8 years agoEo: don't allow object override to introduce previously undefined functions.
Tom Hacohen [Fri, 9 Sep 2016 09:53:45 +0000 (10:53 +0100)]
Eo: don't allow object override to introduce previously undefined functions.

8 years agoeo - move eoid lookup to ptr indir file and clean up some code
Carsten Haitzler (Rasterman) [Fri, 9 Sep 2016 09:44:21 +0000 (18:44 +0900)]
eo - move eoid lookup to ptr indir file and clean up some code

this improves the readability of some of the new domain related and
ptr indir code..

8 years agoeo test suite - finish off the tests so we're testing all the features
Carsten Haitzler (Rasterman) [Fri, 9 Sep 2016 09:42:21 +0000 (18:42 +0900)]
eo test suite - finish off the tests so we're testing all the features

testing all the core features of eo domains now. yes it could be a lot
more extensive but it tests the important day to day cases. this is
the case across most of our tests too - they dont really stress things
out a lot.

8 years agoeo - we actually steal the 3rd highest bit for classes - fix
Carsten Haitzler (Rasterman) [Fri, 9 Sep 2016 03:50:56 +0000 (12:50 +0900)]
eo - we actually steal the 3rd highest bit for classes - fix

we now just lost another bit from generation count. down to 6 in 32bit
and 26 in 64 bit. this sucks but is necessary. now we are using the
bits just below ref and super bits the code was just maskign off the
next bit as a class marker. this was so so so so wrong. it was the ide
table space. we just never used numbers high enough to start using it.
since i added domain there now those bits can be used easily with
thread domain or other domain. argh! existing eo bug found and fixed.
annoying! :) i added another #define there just to be clear we use
that bit for classes.

8 years agoeo class add - dont always call getenv as this is epxensive. get once
Carsten Haitzler (Rasterman) [Fri, 9 Sep 2016 02:19:01 +0000 (11:19 +0900)]
eo class add - dont always call getenv as this is epxensive.  get once

so class creation is possibly a little slower thanks to always calling
getenv. get once then store rsult from there on out.

8 years agom4: fix the name for ecore-sdl in the pkconfig files.
Stefan Schmidt [Fri, 9 Sep 2016 09:09:48 +0000 (11:09 +0200)]
m4: fix the name for ecore-sdl in the pkconfig files.

Like some other libs we need to have a special handling here to get ecore-sdl
into the pc file instead ecore_sdl.

Fixes T4397

8 years agoeo: avoid redefinition of type Efl_Promise
Jean Guyomarc'h [Fri, 9 Sep 2016 06:39:02 +0000 (08:39 +0200)]
eo: avoid redefinition of type Efl_Promise

clang complained about type redefinition being a C11 feature, throwing a
warning for each compiling unit including Eo.h.

8 years agoefl: add documentation and last cleanup of the API.
Cedric BAIL [Thu, 8 Sep 2016 21:51:13 +0000 (14:51 -0700)]
efl: add documentation and last cleanup of the API.

8 years agoeio: implement efl_io_manager_xattr_ls
Cedric BAIL [Wed, 7 Sep 2016 23:20:52 +0000 (16:20 -0700)]
eio: implement efl_io_manager_xattr_ls

8 years agoeio: add an internal function for getting xattr in bulk.
Cedric BAIL [Wed, 7 Sep 2016 23:20:23 +0000 (16:20 -0700)]
eio: add an internal function for getting xattr in bulk.

8 years agoeio: make xattr list packed for better performance.
Cedric BAIL [Wed, 7 Sep 2016 22:57:25 +0000 (15:57 -0700)]
eio: make xattr list packed for better performance.

8 years agoeio: fix allocation in eio_dir to reuse common safer infra.
Cedric BAIL [Tue, 30 Aug 2016 23:31:41 +0000 (16:31 -0700)]
eio: fix allocation in eio_dir to reuse common safer infra.

8 years agoecore: fix parenting to be done right on promise and future.
Cedric BAIL [Tue, 30 Aug 2016 23:21:30 +0000 (16:21 -0700)]
ecore: fix parenting to be done right on promise and future.

8 years agoecore: fix optional future promise to not complain of there destruction.
Cedric BAIL [Tue, 30 Aug 2016 23:20:36 +0000 (16:20 -0700)]
ecore: fix optional future promise to not complain of there destruction.

8 years agoeio: fix manager tests.
Cedric BAIL [Fri, 26 Aug 2016 23:52:11 +0000 (16:52 -0700)]
eio: fix manager tests.

8 years agoeio: rework efl_io_manager to use efl_future.
Cedric Bail [Mon, 1 Aug 2016 04:41:05 +0000 (21:41 -0700)]
eio: rework efl_io_manager to use efl_future.

8 years agoeo: add Eina.Binbuf native type.
Cedric Bail [Tue, 2 Aug 2016 21:04:24 +0000 (14:04 -0700)]
eo: add Eina.Binbuf native type.

8 years agoeio: add internal function able to build array instead of triggering a callback per...
Cedric Bail [Mon, 1 Aug 2016 04:39:39 +0000 (21:39 -0700)]
eio: add internal function able to build array instead of triggering a callback per files.

8 years agoeio: track length of resulting operation to be reported by futures.
Cedric Bail [Mon, 1 Aug 2016 04:37:25 +0000 (21:37 -0700)]
eio: track length of resulting operation to be reported by futures.

8 years agoecore: test efl_future_link.
Cedric Bail [Thu, 28 Jul 2016 00:17:20 +0000 (17:17 -0700)]
ecore: test efl_future_link.

8 years agoecore: add efl_future_iterator_race.
Cedric BAIL [Tue, 30 Aug 2016 23:30:52 +0000 (16:30 -0700)]
ecore: add efl_future_iterator_race.

8 years agoecore: add test for efl_future_race.
Cedric Bail [Wed, 27 Jul 2016 21:28:19 +0000 (14:28 -0700)]
ecore: add test for efl_future_race.

8 years agoecore: add efl_future_race.
Cedric Bail [Wed, 27 Jul 2016 16:56:07 +0000 (09:56 -0700)]
ecore: add efl_future_race.

8 years agoecore: add efl_future_iterator_all.
Cedric BAIL [Tue, 30 Aug 2016 23:29:49 +0000 (16:29 -0700)]
ecore: add efl_future_iterator_all.

8 years agoecore: add tests for efl_future_all.
Cedric Bail [Tue, 26 Jul 2016 19:08:48 +0000 (12:08 -0700)]
ecore: add tests for efl_future_all.

8 years agoecore: add efl_future_all.
Cedric Bail [Tue, 26 Jul 2016 19:08:30 +0000 (12:08 -0700)]
ecore: add efl_future_all.

8 years agoefl: add a possibility to link death of Eo object with a future.
Cedric BAIL [Thu, 14 Jul 2016 00:07:47 +0000 (17:07 -0700)]
efl: add a possibility to link death of Eo object with a future.

8 years agoecore: add tests for Efl.Promise.
Cedric Bail [Fri, 8 Jul 2016 01:01:38 +0000 (18:01 -0700)]
ecore: add tests for Efl.Promise.

8 years agoecore: add support for optional futures.
Cedric Bail [Fri, 8 Jul 2016 21:00:43 +0000 (14:00 -0700)]
ecore: add support for optional futures.

8 years agoecore: add Efl.Promise.
Cedric BAIL [Thu, 30 Jun 2016 23:51:06 +0000 (16:51 -0700)]
ecore: add Efl.Promise.

8 years agoefl: remove unecessary legacy_prefix set to null.
Cedric BAIL [Wed, 29 Jun 2016 23:05:52 +0000 (16:05 -0700)]
efl: remove unecessary legacy_prefix set to null.

8 years agoeolian: add a builtin to handle a free callback.
Cedric BAIL [Wed, 29 Jun 2016 22:25:22 +0000 (15:25 -0700)]
eolian: add a builtin to handle a free callback.

8 years agoeolian: add support for future.
Cedric BAIL [Wed, 29 Jun 2016 22:00:17 +0000 (15:00 -0700)]
eolian: add support for future.

Future is the read only side of a Promise. For now, I am not removing
Eina_Promise until everything is in place, but eventually the promise
type of eolian will be gone.

8 years agoeo: add abstract efl.future.
Cedric BAIL [Wed, 29 Jun 2016 21:09:40 +0000 (14:09 -0700)]
eo: add abstract efl.future.

8 years agoexamples: elementary: ignore generated codegen example files
Stefan Schmidt [Thu, 8 Sep 2016 09:52:54 +0000 (11:52 +0200)]
examples: elementary: ignore generated codegen example files

8 years agoefl_net_socket_fd: make it more win32 friendly.
Gustavo Sverzut Barbieri [Thu, 8 Sep 2016 19:12:18 +0000 (16:12 -0300)]
efl_net_socket_fd: make it more win32 friendly.

it seems that on windows read() and write() won't work with sockets,
so use recv() and send().

Note that this code is still untested on windows, at least the errors
must be fetched using WSAGetLastError() instead of errno directly, but
I don't have a Windows machine I can test.

8 years agoee_gl_drm: Stop calling fb_dirty
Derek Foreman [Thu, 8 Sep 2016 18:21:32 +0000 (13:21 -0500)]
ee_gl_drm: Stop calling fb_dirty

So yeah, fb_dirty is for marking dirty regions when rendering
directly into the front buffer attached for scanout on a manually
updated display.  Absolutely none of those things apply here, so
let's stop doing it.

8 years agoecore_drm2: Remove get/set for next fb
Derek Foreman [Thu, 8 Sep 2016 16:41:03 +0000 (11:41 -0500)]
ecore_drm2: Remove get/set for next fb

We no longer needs these at all.

8 years agoecore_drm2: simplify API to get latest FB
Derek Foreman [Thu, 8 Sep 2016 16:40:11 +0000 (11:40 -0500)]
ecore_drm2: simplify API to get latest FB

What we've always wanted when getting the "current" FB is to get
the most recently submit one - this may be current, next, or pending.

Replace ecore_drm2_output_current_fb_get() with a function that gets the
most recent one - ecore_drm2_output_latest_fb_get().  Now callers don't
have to check the next buffer themselves first, and we don't have to
add an API for pending.

8 years agoee_drm: simplify flipping
Derek Foreman [Thu, 8 Sep 2016 03:25:43 +0000 (22:25 -0500)]
ee_drm: simplify flipping

We no longer have to track draw and display buffers - the display buffer
is completely handled by ecore_evas_drm's busy tracking.

8 years agoecore_evas_drm: Use pageflips, not vblanks, to drive animation
Derek Foreman [Fri, 2 Sep 2016 20:38:32 +0000 (15:38 -0500)]
ecore_evas_drm: Use pageflips, not vblanks, to drive animation

This should sort some timing problems.

8 years agoecore_drm2: Add a page flip completion call
Derek Foreman [Thu, 8 Sep 2016 03:24:45 +0000 (22:24 -0500)]
ecore_drm2: Add a page flip completion call

Add a function for ecore_evas_drm to call after a page flip happens so
ecore_drm2 can track busy status for fbs itself (including for the fb
that's currently being flipped to scanout)

Also, call the completion function from ecore_evas_drm

8 years agoecore_drm2: distinguish real flip failure from flip deferral
Derek Foreman [Thu, 8 Sep 2016 03:16:10 +0000 (22:16 -0500)]
ecore_drm2: distinguish real flip failure from flip deferral

If we try to flip too soon we get EBUSY and should queue up the buffer
for later presentation.  Only the other errors need to be dealt with
elsewhere.

8 years agoecore_drm2: make flip to NULL buffer mean something
Derek Foreman [Thu, 8 Sep 2016 03:13:34 +0000 (22:13 -0500)]
ecore_drm2: make flip to NULL buffer mean something

When triple buffering we'll have a buffer in ecore_drm2's "next" position.
Until now we've had to query it from the engine then try to re post it.

Also, when generating ticks we need to flip to the current buffer when no
changes have been made to get another callback.

Now a NULL fb to fb_flip will either flip to next, if available, or current
if there's nothing new to flip to.

8 years agoee_drm: Get page flips out of the render thread
Derek Foreman [Thu, 8 Sep 2016 02:31:08 +0000 (21:31 -0500)]
ee_drm: Get page flips out of the render thread

Now that we have redraws_clear exposed through software generic, we can
use that to do the final buffer swap from the main thread instead of doing
it in outbuf_flush which runs from the render thread.

This becomes more important later when other call sites in the main thread
will perform buffer flips.

8 years agoee_drm: Improve next buffer selection algorithm
Derek Foreman [Thu, 8 Sep 2016 02:25:32 +0000 (21:25 -0500)]
ee_drm: Improve next buffer selection algorithm

When triple buffering it's possible that we'll only need two buffers at
a time for long durations.  When we finally call upon a third buffer it
hasn't been used recently enough to do a partial redraw.

By picking the oldest available buffer when multiple buffers are free we
can increase the likelihood of doing partial redraws.

8 years agoevas_engines: Add a redraws_clear callback
Derek Foreman [Tue, 6 Sep 2016 22:01:37 +0000 (17:01 -0500)]
evas_engines: Add a redraws_clear callback

This gives us a callback from the main thread after outbuf_flush occurs -
this is useful to get timing right on the drm and wayland engines.

8 years agoecore_drm2: Implicitly set buffer busy status when flipping
Derek Foreman [Fri, 2 Sep 2016 20:24:24 +0000 (15:24 -0500)]
ecore_drm2: Implicitly set buffer busy status when flipping

This simplifies other code that shouldn't need to deal with this.

8 years agoee_drm: Move all ticking into ecore_evas_drm and use new tick system
Derek Foreman [Fri, 2 Sep 2016 19:47:49 +0000 (14:47 -0500)]
ee_drm: Move all ticking into ecore_evas_drm and use new tick system

Combines all the gl_drm and drm ticking code into one set in
ecore_evas_drm and uses the new evas tick register/unregister callbacks
to set it up.

8 years agoecore_drm2: Add a function to set the pageflip callback data once
Derek Foreman [Fri, 2 Sep 2016 18:59:12 +0000 (13:59 -0500)]
ecore_drm2: Add a function to set the pageflip callback data once

Instead of passing the user data for the page flip callback every time,
set it just once.

This will make it easier to push tick logic into ecore_evas_drm, as there
will be a transitional period where page flips are driven in two places
that don't have access to the same pointers.

8 years agoee_drm: use the ecore_drm2_fb busy bit
Derek Foreman [Fri, 2 Sep 2016 17:18:06 +0000 (12:18 -0500)]
ee_drm: use the ecore_drm2_fb busy bit

Use the new busy getter/setter on the fb instead of keeping state in the
outbuf

8 years agoecore_drm2: Add busy status to ecore_drm2_fb
Derek Foreman [Fri, 2 Sep 2016 17:17:01 +0000 (12:17 -0500)]
ecore_drm2: Add busy status to ecore_drm2_fb

We've been tracking this in the outbuf code, but that logic is going to
be moved into ecore_evas_drm to use the new ticking paradigm.

8 years agoecore_evas_drm: Refactor common code
Derek Foreman [Fri, 2 Sep 2016 16:07:17 +0000 (11:07 -0500)]
ecore_evas_drm: Refactor common code

ecore_evas_gl_drm_new_internal and ecore_Evas_drm_new_internal are huge
functions differing in very few lines.  Combined them.

8 years agoecore_evas_drm: check for libglapi presence first
Derek Foreman [Thu, 1 Sep 2016 19:53:47 +0000 (14:53 -0500)]
ecore_evas_drm: check for libglapi presence first

Minor refactor

8 years agoevas_engines: Add fn_evas_changed callback
Derek Foreman [Tue, 30 Aug 2016 20:47:17 +0000 (15:47 -0500)]
evas_engines: Add fn_evas_changed callback

To allow using the pageflip completion event to drive timing in the DRM
engine we need to know as soon as possible that a render has been after
a render has been considered if it will cause a page flip or not.

The fn_evas_changed callback sends this information.