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...
- 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.
- 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
This reverts commit bd5a5e7fce.
sorry about this... all fine eina mkstemp use and all... but this
*BREAKS EFREET*! ibar icons stop working (vanish). efreet no longer
issues a desktop file update event to e etc. etc. etc. ... so let's
keep code that works for now even if it uses mkstemp and not eina...
:) working is better. :)
It is quite common that in an image sets each image has different border size.
This patch permit to define the border value on a per image basis in the set.
NB: If we are going to exit data_thread_script function due to malloc
failure or fread failure, then we should close the previously fdopen'd
file so that we do not leak 'f'.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
If we have file And fname, then we can call the source_fetch_file
function, HOWEVER we may only have One or the Other in which case we
still need to potentially free the other.
NB: Fixes Coverity CID1039296
Signed-off-by: Chris Michael <cp.michael@samsung.com>
In its current model, cserve2 will reopen, reload and scale an
image whenever a new scaled version is requested by the client.
Instead, we can load the original image when too many scaled
versions are requested, and place the original in the LRU.
Remove Image_Load_Opts and use Evas_Image_Load_Opts for cs2 master to
slave communication.
2 things to note:
- The struct size is bigger (but at the same time we removed a memcpy)
- The scale_load field is not passed to the slave
When opening an image, OPEN and SETOPTS were always sent
consecutively. Merging these two messages may improve the
performance a bit (not measured), but also simplify the
whole thing.
Note: cserve2 debug tools have not been fixed yet.
Since the load options are not copied but the pointer is simply
stored by the module, we need to move the struct higher in the
stack.
Signed-off-by: Cedric Bail <cedric.bail@samsung.com>
Most of the time, the SETOPT message is sent only
to carry 0 data. Let's add a flag to the OPEN message to
avoid useless socket calls.
Server-side: implement with message faking.
Also, fix image ID logic on client side:
- alloc data entry asap,
- assign image_id during call to OPEN
Signed-off-by: Cedric Bail <cedric.bail@samsung.com>
Some hashtable lookups failed because the keys were added
either with eina_stringshare_add() or e_s_add_lenth() but
looked for with e_s_add_length() only.
Signed-off-by: Cedric Bail <cedric.bail@samsung.com>
Evas_Common.h should be used for the public header, and rather rename
evas_common.h internal header to another name.
Sa:
Evas_Common_Header.h -> Evas_Common.h
evas_common.h -> evas_common_private.h
Shouldn't have both Evas_Common.h and evas_common.h because of case
insensitive filesystems.
The missing free was only for one of the paths to the end label. The other one
freed it before already. Take this into account to avoid the double free.
If a slave is still alive during shutdown, then it will be killed
and the dead callback should be called. This would then trigger
a request failed callback on invalid data.
But there's no point in calling the dead_cb since we're shutting
down already.
glibc double free happens when shutting down cserve, while
requests are being processed. this is because the entry is
being deleted from the hash but the cancel request fails
(so it should be deleted again from the hash)
Another patch going to fix the double free.
Switch from absolut microseconds since epoch to a monotonic clock with
realtive values. Switch from unsigned long long to double.
This aligns it with how we present time in efl. ecore_time_get is used
when possible. For the tizen modules we convert the the epoch timestamp
we get into a double. This is still a working monotone clock source.
As this will be released the first time with 1.8 we don't have any API
break here.
No runtime changes. This makes it possible to set mouse_events on a
group, and it will use this value as the default for mouse_events on
every part of that group. It defaults to 1 if not set, to keep things
working as they do now.
That is, instead of setting mouse_events: 0; on every single part you
don't want to receive events, it's now possible to set it for the group
and only use mouse_events: 1; explicitly on those that should handle
events.
This is particularly useful when using table and replicating the
same group all over the place. At least for many games I have in mind
this will save a lot of lines !
Dynamic memory stored in 'ptr2' allocated through function 'malloc' at
line 653 can be lost at line 1022. Also there is one similar error on
line 1029.
Signed-off-by: Christopher Michael <cp.michael@samsung.com>
The follow are left:
{{{
bin/embryo/embryo_cc_sc1.c: In function ‘dowhile’:
bin/embryo/embryo_cc_sc1.c:3524:24: warning: declaration of ‘wq’ shadows a global declaration [-Wshadow]
bin/embryo/embryo_cc_sc1.c:115:21: warning: shadowed declaration is here [-Wshadow]
bin/embryo/embryo_cc_sc1.c: In function ‘dodo’:
bin/embryo/embryo_cc_sc1.c:3546:24: warning: declaration of ‘wq’ shadows a global declaration [-Wshadow]
bin/embryo/embryo_cc_sc1.c:115:21: warning: shadowed declaration is here [-Wshadow]
bin/embryo/embryo_cc_sc1.c: In function ‘dofor’:
bin/embryo/embryo_cc_sc1.c:3565:24: warning: declaration of ‘wq’ shadows a global declaration [-Wshadow]
bin/embryo/embryo_cc_sc1.c:115:21: warning: shadowed declaration is here [-Wshadow]
}}}
looking at their code, they say to alloc a local "wq", but then they
call functions such as delwhile() that changes the global... VERY suspicious!!
SVN revision: 82734
This one was a painful bitch. The edbus2 port was quite broken, mainly
leaking eina_stringshare and also not adding the '\0' to the strings
that are represented as bytearray (paths cannot be utf8 to avoid
translations).
Emotion plugin was also quite bogus and the video thumbnail as edje
(animated) is not working yet due bug in Edje_Edit api -- someone
needs to investigate this, seems strange.
Emotion plugin also had a bug that it was deleting the object from
inside object callback.
Now it seems to work. Please report if it does not.
SVN revision: 82675
These binaries are called by efreetd and should be under MODULE_ARCH
dir.
And actually fix the path to efreet_desktop_cache_create that was wrong.
SVN revision: 82489
this is still in progress, mostly the multisense stuff is pending.
it seems that when we merge ecore_audio in edje the libremix and
similar are gone, at least from Edje, and will be in ecore_audio
itself (or pulseaudio).
Changes:
* __UNUSED__ to EINA_UNUSED
* binaries (epp, embryo_cc, edje_cc) now consider EFL_RUN_IN_TREE and
will assume the binaries are still not installed, running from
build tree location (needs more testing, maybe doesn't work with
srcdir != builddir, still doesn't solve cross compile builds)
SVN revision: 82139
Changes also in this commit:
* fix missing EAPI in symbols used by modules
* removed old libudev and libmount support as agreed by discomfitor/zmike
* replaced __UNUSED__ with EINA_UNUSED
* fixed docs hierarchy
SVN revision: 82100
Use eina_strbuf_string_steal() instead of strdup() +
eina_strbuf_string_get().
Patch by: José Roberto de Souza <zehortigoza@profusion.mobi>
SVN revision: 82073
many distros deprecate libexec and it's better to keep our stuff
together inside /usr/lib/evas.
cserve2 binaries now lives in /usr/lib/evas/cserve2/bin
SVN revision: 81897
The _request_failed() function is called by error responses from slaves,
and iterating over references of a entry and removing each of them must
be done with EINA_LIST_FOREACH_SAFE(), since _entry_free_cb() calls
_entry_reference_del() which then removes the reference that is used in
the next iteration in for-loop from _request_failed().
Signed-off-by: Paulo Alcantara <pcacjr@profusion.mobi>
SVN revision: 81580
I've tested it and I can confirm that it's working fine with the new
scalecache support on Cserve2. So, let's use it again.
Signed-off-by: Paulo Alcantara <pcacjr@profusion.mobi>
Patch by: Paulo Alcantara <pcacjr@profusion.mobi>
SVN revision: 80177
I've tested make -j 3 install and it works nicely
I've tested expedite with software and opengl xlib,
and it works. Not tested other engines, so please
report any problems (engines or other) on the ML.
TODO: examples and tests, I'll add them later
ISSUE: Eina_Unicode size check. It indirectly depends on
eina_config.h, which is created at the end of the
configure script. So its size is always 0. I don't
know how that size is used, so I can't do a lot,
for now.
SVN revision: 78895
Please check.
note1: Only lib and bin for now, but should be extended to other stuff
note2: distcheck does not work because eo_suite is failing.
SVN revision: 78758
it's pointless to have this and may cause problems or complex
configure.ac when we have libraries that use 'eet' during its compile
phase (like elementary generates its profile/configuration).
SVN revision: 77815