Images and Files can be discovered by the client scanner before they
are valid (aka. loaded or opened). We want clients to ignore all
shared objects that are not ready yet, as they are in an undefined
state (values and memory might be invalid).
Shared string indexes are not repacked, since they live in a
memory pool (where the indexes can be reused).
So, the index in the table is equal to their ID. Add initial
test to check if the item at index n has the ID n.
Use tags such as INDX, FONT, IMAG, FILE.
These can help debugging and for robustness, as they will
be visible in the memory dump.
Update generation_id after repack as well
Also, print shared arrays usage as it is sent as first message
upon connection to the server.
Add fonts to LRU and flush LRU as needed.
Seems to work okay. Could probably be finetuned a bit.
- Create one Glyph_Data array per Font_Entry
- Copy Font_Source descriptors in shared array
- Copy font entries in shared index
- Send font index path over socket
- Merge Font_Source and Font_Data in shared memory
- Send font index path on client connect
- Repack font index after free
- Pass font shm name to clients
DBG and INF messages pollute the logs and performance reports
from valgrind, let's disable them at build-time for better
benchmarking.
Fix other compilation warnings and clean code a bit
If the client exits while the server is loading fonts,
the font entry objects are accessed after being freed.
Note: This is not a proper fix. The race condition should still
be fixed, but delaying client deletion a bit might help for a while...
Read Image descriptors from the shared arrays
But, accessing the shared index can be a bit expensive, so
try to read from the socket before scanning the index,
without blocking.
- Send paths to all connected clients
- Send paths upon connection from a new client
- Client side:
- Fast find opened images
- Fast find loaded images
- Optimize load by skipping socket wait
Also, remap indexes when needed (file size changed)
When index file grows, the clients are not notified, so they
must constantly check that their mapping matches the current array
size.
- Move required struct definitions to common evas_cs2.h
- Open/close shm and map arrays to memory
Pretty stupid for now as it will close & reopen the shm files
even when unchanged.
- Check shm size and array header consistency
- Implement message send
- Send messages from server when calling repack()
Only import the C file for now.
Implement the following features:
- Shared Arrays
Store arrays of elements of fixed size in shm.
- Shared Mempool
Store random sized buffers in shm.
These buffers are indexed in a Shared Array and are
referred to using their index only.
- Shared Strings
Store strings in a shm in a way similar to Eina_Stringshare
(except strings are referred to using an int index).
- Include evas_cserve2_index.c to the compilation.
- Declare shared index functions in header file.
- Call init() and shutdown() on the shared index subsystem.
- Add find and foreach functions
- cserve2_shm_segment_request()
Creates a new shm segment (Shm_Handle) from an existing file,
without changing the current mmap.
- cserve2_shm_resize()
Grows the file and remaps in memory (new virtual address).
- cserve2_shm_id_get()
Returns the shm creation ID.
Summary:
Some of the files in the "efl" package (emotion engine and others IIRC) were linked to libs in the efl_x11 package. This created a circular dep requiring both to be installed. Should just be one package in that case.
LGPL2 is actually LGPL2.1.
Added 'custom' to license array to cover COPYING.SMALL.
There is no 'dbus-core' package, it's part of 'dbus' now.
Doesn't build without 'check' installed.
provides_efl doesn't work, changed to just provides.
Got rid of tabs in depends and provides, replaced with spaces.
No need to add default 'strip', 'docs', and 'zipman' options, if someone want to override them, there's no reason to stop them.
buildflags doesn't work as a variable, added them to CFLAGS and CXXFLAGS manually. -O2 and -g are already included by default, if someone wants to change them on their system, there's no reason to override them.
Add install script to update mime database.
Change shebang on eina-bench-cmp so it runs with python2, python is 3 on Arch.
make dist doesn't tar Makefile, so we need to check that it exists before running "make clean distclean". Otherwise the build just fails.
Building of docs should be done in the build function.
Quoted all uses of $pkgdir and $srcdir
Each package function gets it's own $pkgdir, so rm-ing them at the beginning of the function isn't needed.
Use cp -a instead of cp -r to make sure permissions are preserved.
Set correct pkgdesc, arch, license, depends, provides, and install for the doc package.
Reviewers: raster
Reviewed By: raster
CC: cedric
Differential Revision: https://phab.enlightenment.org/D240
this fixes https://phab.enlightenment.org/T182 as it is an issue with a
surface alloc overwriting an already allocated surface entirely inside
the general software image infra.
Evas GL direct rendering mode didn't properly take into account
the image object's clipping information and clip the region that
it was directly rendering to. Hence there were issues with the
direct rendering region drawing over the objects that are sitting
on top of it.
Also, cleaned up the direct rendering coordinate computation code
and a nasty dependency with image object that should have been
removed a long time ago. Basically the evas-gl engine was directly
accessing the image object data structure for its data when it
really should have just passed along necessary information.
- Store result from mkstemp so we don't leak file descriptor
- No need to chmod, as we set correct umask before createing file
- Use fdopen to open file from file descriptor, not from path
time 0
for ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED we use a timerfd on linux (and
also support talking to systemd) to detet time/date changes. the
timerfd was set up to go off at the absolute time of 0. since that is
almost always... in the past.. lets set a REAL time in the future.
(almost end of time)