Commit Graph

46872 Commits

Author SHA1 Message Date
Jean-Philippe Andre 4b7ca8846d Elm_test/Ui.Box: Implement example custom layout function
This shows how to implement a layout function, with the
required Eo class boilerplate (note: could probably be
simpler with the appropriate macros, or a better solution
to create classes on the fly in C).

The layout function itself is awful, but shows that "it works".
2016-04-20 10:47:40 +09:00
Jean-Philippe Andre a84468cf4b Elm_test: Add test case for Ui.Grid
Right now the proper layout functions for Ui.Grid are not
implemented, so most controls don't work. This tests that the
grid works fine as a table.
2016-04-20 10:47:40 +09:00
Jean-Philippe Andre 548efd7fa4 Efl.Ui.Box: Implement flow layouts
This reuses the Evas.Box code, since we are still using the
box internally. The flow layout function is far from perfect
(it works well only with items of same height).

This shows how to use specific layouts provided by EFL.
2016-04-20 10:47:40 +09:00
Jean-Philippe Andre 24eccb6d62 Efl.Ui.Box: Implement way to override layout function
So, since we don't have function pointers, all the solutions
to reimplementing the layout function are quite convoluted:

1. use events
2. reimplement layout func
3. use an extra object
4. use a generic class (non instanciated)

Promises don't apply here (layout will run multiple times).

Problems:

1. Multiple event callbacks will be called, resulting in
   potential performance impact, extra events, etc...
   Also, there is no way to define standard implementations
   that would be provided by the framework.

2. Reimplementation of a function requires extra EO work
   (create an EO class, etc...), doesn't allow on-the-fly
   change of the layout method.

3. Probably the best solution is to have an object implementing
   the layout. But this means creating an extra object along
   with the container.

4. To avoid the extra object, use a class, and reimplement
   a @class function. This unfortunately requires extra
   EO work.

Solution 4. has been selected, but it's not very nice...
2016-04-20 10:47:40 +09:00
Jean-Philippe Andre 94228d2683 Elm_test: Add basic test case for the new box api 2016-04-20 10:47:40 +09:00
Jean-Philippe Andre 11403a4ec4 Elm: Compile in box and grid
Ui.Grid is definitely not complete.
Ui.Box still needs a few adjustments:
- alternative layout
- aspect ratio support
- RTL support
- remove evas box
2016-04-20 10:47:40 +09:00
Jean-Philippe Andre 2343aa7900 Efl.Ui.Grid: Add implementation of a grid/table
This is only a partial implementation, work in progress.

The grid object should be a replacement for evas and elementary's
table and grid. Only the layout of items inside the container
is different, otherwise the API should be the same.

For now, this widget is based on an evas table but the full
layout logic will need to be reimplemented, eventually.

@feature
2016-04-20 10:47:40 +09:00
Jean-Philippe Andre b18a993dc0 Efl.Ui.Box: Add implementation of a simple box
This should be the only linear packing container.
This replaces: evas box and elm box.

Edje box needs to be kept around for compatibility,
but it stays an EDC object only (for apps).

Lots of things are still to be fleshed out in this
box implementation:
- Simplify smart object / elm widget code
- Maybe stop using evas object box altogether
- Implement other layout strategies

@feature
2016-04-20 10:47:40 +09:00
Jean-Philippe Andre 57e64ee65b Efl: Add skeletton for new containers "Pack" API
I chose the name "pack" instead of containers because it
is shorter, and allows out-of-the-box short C names like
efl_pack_end() instead of efl_container_pack_end().

All Pack interfaces will use the same efl_pack eo prefix.

This is still work in progress.

@feature
2016-04-20 10:47:40 +09:00
Derek Foreman bb036dbceb wayland_shm: Remove debug detritus
Should've been removed before push.  Oops.
2016-04-19 16:40:27 -04:00
Derek Foreman 45a662c91c wayland_shm: Add dmabuf support
This adds a separate backend to the "shm" engine that allows allocation
of buffers via libdrm that can be turned into dmabuf handles and used
with the wayland dmabuf extension.

Currently only the intel buffer manager is supported.

The benefit of dmabuf buffers is that they don't require a texture upload
like shm buffers do, and when we have plane support they can be dropped
directly into a plane without a memcpy.
2016-04-19 15:11:10 -04:00
Derek Foreman baad0d50db static_libs: Add libdrm headers (for wayland_shm)
wayland_shm's dmabuf implementation needs acess to libdrm headers for
doing GPU specific memory allocations.  We search for these libraries
at runtime with dlopen, so we don't need to find them at build time,
however certain struct definitions and defines are still required.
2016-04-19 15:11:10 -04:00
Derek Foreman 0d684d4559 wayland_shm: Refactor surface creation
Split this into two parts, one that makes the base surface, one that
calls the potential back ends.

Once the dmabuf backend is added this will allow a fallback path to
re-initialize the surface as wl_shm if dmabuf fails.
2016-04-19 15:11:10 -04:00
Derek Foreman 8635f56aeb wayland_shm: pass engine info to shm_surface_create
Gratuitous change to pass less parameters and make some code prettier.
2016-04-19 15:11:10 -04:00
Derek Foreman 0ada4d3d56 wayland_shm: Pull the damage stuff out of evas_shm
This doesn't really care what the buffers were allocated with, so
let's make this chunk of code useful to both the shm method and the
upcoming dmabuf one
2016-04-19 15:11:10 -04:00
Derek Foreman 11cf0206e4 wayland_shm: Minor clean up of _evas_shm_surface_post
Some gratuitous cosmetic fixes
2016-04-19 15:11:10 -04:00
Derek Foreman 2c33bae2d5 wayland_shm: Don't pass num_buff to reconfigure
We can't really reconfigure the number of buffers after they're created,
there's nothing above us that would try to do it...
2016-04-19 15:11:10 -04:00
Derek Foreman e5fb4cada7 wayland_shm: Gratuitous code simplification
Refactor evas_outbuf_setup a bit so there's only one call to
_evas_shm_surface_create.

Also makes the NULL return on unhandled rotation a lot more obvious.
2016-04-19 15:11:09 -04:00
Derek Foreman 405b278528 wayland_shm: Pass Evas_Engine_Info_Wayland_Shm directly to setup functions
We pretty much pass all its contents anyway.
2016-04-19 15:11:09 -04:00
Derek Foreman 34e539a3c1 wayland_shm: Add dmabuf to engine info
Get the dmabuf protocol object from ecore_wl2 and store it in engine info
2016-04-19 15:11:09 -04:00
Derek Foreman f7cbb12fd4 ecore_wl2: Add API to get dmabuf protocol object 2016-04-19 15:11:09 -04:00
Derek Foreman ed665ee6ee wayland_shm: Abstract the actual shm operations
Make the Surface carry function pointers and the shm surface create
function set them.  This refactor makes implementing dmabuf operations
simpler.
2016-04-19 15:11:09 -04:00
Derek Foreman 63a255750b wayland_shm: Remove outbuf_reconfigure function pointer
We only ever call it from one place, and we only ever initialize it
to one value, so there's no need for a function pointer.
2016-04-19 15:11:09 -04:00
Derek Foreman 4c61ec5e05 wayland_shm: Remove unused dx, dy params from resize functions
We don't appear to actually use these for anything except long term storage
2016-04-19 15:11:09 -04:00
Derek Foreman 7cd2693075 wayland_shm: Drop ifdefs around damage_buffer
We now depend on wayland 1.10.0 so damage_buffer is always going to be
present in the headers - we no longer need ifdef checks.
2016-04-19 15:11:09 -04:00
Derek Foreman f59c52520d build: Bump wayland version dependency
Anything that needed wayland now needs wayland 1.10.0
2016-04-19 15:11:09 -04:00
Derek Foreman cd124f938f wayland_shm: Make new Surface abstraction to wrap Shm_Surface
Wraps the Shm_Surface allocator in a new Surface type that will
potentially use different allocators, such as dmabuf in a future commit.
2016-04-19 15:11:09 -04:00
Derek Foreman d6e5bdf428 ecore_wl2: Bind dmabuf global if available
Bind the dmabuf global so we can make use of it later.
2016-04-19 15:11:09 -04:00
Derek Foreman 7514d08ae6 ecore_wl2: Add generated dmabuf files
This adds the framework for the dmabuf protocol for wayland - the files
are generated with wayland-scanner.
2016-04-19 15:11:09 -04:00
Derek Foreman 78688b226f wayland_shm: Move Shm private structures into evas_shm
Refactor all the shm specific stuff into evas_shm so it can better
co-exist with upcoming dmabuf allocations
2016-04-19 15:11:09 -04:00
Derek Foreman 7e2f5e759e wayland_shm: Remove flags
We only used this for resize, and didn't actually even need it then.
2016-04-19 15:11:09 -04:00
Derek Foreman 745435deab wayland_shm: Don't use number of buffers in swap mode calculation
The number of allocated buffers shouldn't change a thing...
2016-04-19 15:11:09 -04:00
Derek Foreman f92c2d2330 wayland_shm: Return buffer age from shm_surface_assign
This makes refactoring the Surface abstraction a little easier.
2016-04-19 15:11:09 -04:00
Cedric BAIL 7c743b6754 Revert "Set the name for table, box items"
This reverts commit 6f7608befd.

Item in table and box do not need names as they have an index. This
is breaking ABI for edje application that rely on getting the index
properly when a signal is emitted. To be precise, this did break
elemines.
2016-04-19 11:56:17 -07:00
Cedric BAIL eb408809ad eo: fix borkage. 2016-04-19 11:28:36 -07:00
Tom Hacohen daed567e3c Merge strict eolian type checking branch.
In this branch I turned on strict eolian type checking and silenced all
of the errors that came to be because of it (fixed some).

I did it so new code will not introduce new errors. We've had more
errors introduced recently, and I believe it's because of ignorance. No
more excuses, compilation will now fail if you fail to handle types
correctly.

We need to fix my workarounds. Many of the .eo files that I worked
around on need to be removed anyway, and a lot of the rest need a lot of
changes, so there was no point wasting my time into fixing it properly.
2016-04-19 17:16:20 +01:00
Tom Hacohen cfd7b57006 Eolian: Turn on strict type checking.
Thanks to q66 for the code.
I'm stealing credit here because:
1. I'm lazy.
2. He's lazy and doesn't deserve it.
2016-04-19 17:15:28 +01:00
Tom Hacohen 6f4f9bd051 Elm glview: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen fb110d2de8 Elm box: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen bd14c3ffd3 Elm web: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen 4264a58a11 Elm app server view: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen 7d5bcd1a2c Elm slideshow: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen 8b6948fa42 Elm app client view: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen 64cb0942d4 Elm app server: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen aa577541e8 Elm gengrid: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen 8cfa381452 Elm map: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen 86720888fa Elm calendar: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen 8425b07fbf Elm eo: Make Eina_Compare_Cb accessible to all widgets. 2016-04-19 17:15:28 +01:00
Tom Hacohen 1bddce0113 Elm sys notify interface: Fix eo type errors. 2016-04-19 17:15:28 +01:00
Tom Hacohen 5e670d05af Elm prefs: Fix eo type errors. 2016-04-19 17:15:28 +01:00