path: root/src/lib/evas/cserve2 (unfollow)
AgeCommit message (Collapse)Author
2014-09-11cserve2: Check retrun of fcntl and print a message if we fail.Stefan Schmidt
CID 1039707
2014-09-04evas/cserve2: Check return value of fcntlStefan Schmidt
Print an error when not able to set non-blocking but continue. CID 1039707
2014-08-14fix possible focket fd of -1 in cserveCarsten Haitzler (Rasterman)
this fixes CID 1193207 where a server fd may be -1, connect fail and still be -1 due to failed connect.
2014-03-18Evas cserve2: Fix client crashes when a file changedJean-Philippe Andre
Clients must ignore changed file entries as they are not valid anymore. The server will also mark the entry as invalid in case of file update. @fix
2014-03-04Evas cserve2: Fix excessive warnings during shutdownJean-Philippe Andre
The global index for fonts will be freed after cserve2 shutdown but Evas keeps trying to free all its fonts after that.
2014-01-17Evas cserve2: Fix invalid memory accessJean-Philippe Andre
In case of load error, we free the file entry, but forgot to reset the pointer to it in the image entry.
2014-01-14Evas/cserve2: Stop looking at those dirty pics!Jean-Philippe Andre
What I mean is erm... images marked as dirty don't have a cache_key, and that's perfectly fine when the image file has changed.
2014-01-14Evas/cserve2: Keep image_id when reopening a changed fileJean-Philippe Andre
If a file had changed, a new OPEN message was sent, and the client image ID was then changed, but the LOAD message was sent with the previous image ID. So cserve2 would not be able to honor that request.
2014-01-14Evas/cserve2: Rename "invalid" field to "changed"Jean-Philippe Andre
This flag indicates that a file changed, not that the entry is invalid. There is another "valid" flag already.
2014-01-14Evas/cserve2: Improve error messages a bitJean-Philippe Andre
2014-01-13evas - fonts - move to using 4bit and rel 4 bit compressed font glyphsCarsten Haitzler (Rasterman)
this changes the internal encoding of font glyphs in evas to use 4bit uncompressed if small, or 4bit rle (run length encoded) if larger. this caves at least 50% of memory on fonts - and more if bigger. with large fonts (40-80pixel size) we can save in the region of 80% of memory used for glyphs. this also happesn to allow speedups in rendering too.
2014-01-09Evas/cserve2: Fix valgrind warning about uninitialized memoryJean-Philippe Andre
In cserve2, a shortcut was taken to check if two images were the same, using memcmp() on the Evas_Image_Load_Opts struct. But it seems some empty areas in the struct are uninitialized, potentially making memcmp() fail when the images were actually the same. This is a minor issue since this function is called only when bypassing the socket wait. Also, memset load_opts to 0 and copy all the fields to avoid the same warning in socket send(). I'm just wondering about the performance impact vs. memcpy/memcmp.
2014-01-08fix mingw build for setuid fix/checksCarsten Haitzler (Rasterman)
2014-01-08setuid safeness - ensure if an app that is setuid doesn't do bad thingsCarsten Haitzler (Rasterman)
this makes efl ignore certain env vars for thnigs and entirely removes user modules (that no one ever used) etc. etc. to ensure that *IF* an app is setuid, there isn't a priv escalation path that is easy.
2014-01-07Evas: Fix some clang warnings in evas_cs2_client.cJean-Philippe Andre
- Invalid alloc size (typo) - Initialized value never read (set twice) - Potential memleak (call free(msg) in case of send error) - Null pointer dereference (check nullity) There are still other warnings, but I believe these are false positives.
2013-12-26efl: Unified eina critical manro to CRI.Daniel Juyung Seo
Being annoyed by different types of eina critical macros - CRI, CRIT, CRITICAL -, I concluded to unify them to one. Discussed on IRC and finally, CRI was chosen to meet the consistency with other macros - ERR, WRN, INF, DBG - in terms of the number of characters. If there is any missing bits, please let me know.
2013-12-09Evas/cserve2: Fix crash during shutdownJean-Philippe Andre
If an image failed to load, and cserve2 returned an error message, then the File_Entry was freed, but not removed from the hash. Solution: remove entry from the hash, let the callback free the data.
2013-11-29evas/cserve2: Fix interrupt on select in edje_ccJean-Philippe Andre
Summary: Block SIGCHLD during select(). This fixes a bug with edje_cc when EVAS_CSERVE2=1: Fixes T464. select() used to return prematurately with EINTR because the app received some unexpected signals. In particular SIGCHLD is received when a child terminates, but this is not a reason to cancel the image load. In theory, all blocked signals in pselect() should be pending until pselect returns, so any SIGCHLD should still trigger the app's signal handler. Reviewers: cedric CC: raster, cedric Maniphest Tasks: T464 Differential Revision:
2013-10-29evas/cserve2: Fix CID 1039286 (Resource leak)Jean-Philippe Andre
Close socket in case of connection failure.
2013-10-29evas/cserve2: Fix new Coverity issuesJean-Philippe Andre
Nothing extraordinary here. Most potential crashes are extremely unlikely. - Fix CID 1113444 - Fix CID 1113442 - Fix CID 1113441 (Logically dead code, can not be NULL) - Fix CID 1113440: Explicit null dereferenced This is actually an impossible situation. Fixed by checking for nullity and printing out some error messages instead of just crashing. - Fix CID 1113439: Dereference after null check Logically impossible code as both idxpath and datapath must be either set or null at the same time. Change the if logic to tell Coverity there's no bug. - Fix CID 1113438 (Argument cannot be negative) Fix wrong check of return value from shm_open. - Fix CID 1113437 (Argument cannot be negative) Fix wrong check of return value from shm_open. - Fix CID 1113436 (Dereference null return value) This case really shouldn't happen. But the extra check does not hurt. - Fix CID 1113435 (Dereference before null check) Check for nullity after map open. - Fix CID 1113434 (Extra sizeof expression) Debug buggy debug tool :) - Fix CID 1113433 (Uninitialized scalar variable) Insignificant issue: only prints wrong debug logs :) - Fix CID 1113431 (Uninitialized scalar value) Check if (!found) only to print out logs. Not a big deal if found was invalid. - Fix CID 1039462 (Logically dead code)
2013-10-28evas/cserve2: Merge Glyph_Data and mempool indexJean-Philippe Andre
Glyphs were previously using 3 shared buffers, now reduce to 2: - Memory pool (mempool) containing the glyph drawable data - Index table (Shared_Index / array) containing only the indexes of the buffers in the mempool - Glyph_Data table (array) containing the glyphs descriptors AS WELL as the buffer indexes. So, we just merge the two index tables into one by using directly objects of type Glyph_Data for the referencing of the mempool buffers.
2013-10-28evas/cserve2: Add debug and reduce number of GLYPHS_USED messagesJean-Philippe Andre
One socket message was sent per each glyph used ... which means a LOT of messages when text is being redrawn. Reduce this flow of messages by triggering send() only when 50+ items are being used. Btw, USED is a bit useless as there is no UNUSED equivalent. Also, slightly improve debug logs.
2013-10-28evas/cserve2: Use Eina_Refcount instead of intJean-Philippe Andre
Use the refcount macros instead of manually handling integers. Not sure if it really helps since the refcounting in cs2 client is a bit special :)
2013-10-28evas/cserve2: prevent unwanted remap of strings tableJean-Philippe Andre
In the client, string_get() can cause a remapping of the strings index & mempool. This means that all pointers to string data are invalid past that call. Solution: add a safe_get() function that prevents remap during search. It might prove faster also, but will return NULL more often.
2013-10-28evas/cserve2: Fix font reloading after cserve2 restart.Jean-Philippe Andre
Well it LOOKS like it's working properly. Clients can safely keep running after cserve2 crashed and restarted.
2013-10-28evas/cserve2: Fix refcount for glyphs & glyph buffersJean-Philippe Andre
Maybe a little overkill on the iterations (ref/unref), but at least we can really track down which glyphs are currently being used.
2013-10-28evas/cserve2: Reconnect to cserve2 in case of server crashJean-Philippe Andre
Try to reconnect to cserve2 if the socket connection was lost. Resend some messages if necessary. Images reload seems to be working. Actually, the images don't change over time, so the clients just keep the previous references to their images. FONT RELOAD IS NOT WORKING: - Crashes - Invalid glyph data - Infinite loop in _glyph_map_remap_check() Root cause: When new glyphs are requested from the server, they are added to the mempool. So it is necessary to remap the font. Unfortunately, in case of server reboot, we did not keep the mempool so the old glyphs that were not requested again will not be valid.
2013-10-28evas/cserve2: Fix CList usageJean-Philippe Andre
In some error cases, the list could become a cycle. Foreach would then loop forever!
2013-10-28evas/cserve2: Fix invalid file referencing in clientJean-Philippe Andre
Fixes elementary_test "Bg Image": - Various load_opts (jpeg geometry) where not handled properly by the client.
2013-10-28evas/cserve2: Add alpha flag to Image_dataJean-Philippe Andre
2013-10-28evas/cserve2: Use scalecache with cserve2Jean-Philippe Andre
Let's reuse the logic from scalecache and call cserve2 functions when the scalecache should be used. So, now, cserve2 server will not scale any image... This is too computationally intensive for the server's main thread. This is not optimal but makes a hell of a lot more sense for the moment. (since cserve2 manages the SHM segments)
2013-10-28evas/cserve2: Add cache hit count on image dataJean-Philippe Andre
2013-10-28evas/cserve2: Fix images indexing (File_Entry stuff)Jean-Philippe Andre
High-level problem: cserve2 does not support load_opts properly when opening an image. As a result, when (pre)loading a JPEG file with specific load options (eg. w, h, region and orientation), the image buffer might have the wrong dimensions. So, we need to use load_opts when computing file hash key. And, pass these load options to the loader slave, and use them while OPENING the image. This will set properly the geometry. Fixes test "Preload and Prescale" in elementary_test.
2013-10-28evas/cserve2: Fallback to normal cache for animated gifsJean-Philippe Andre
Pass around "animated" flag for images that can be animated. Fallback to local cache if the image is animated. Implementing support for animated images in cserve2 does not seem to make a lot of sense considering each frame must be requested independently in real time,... and to be honest there doesn't seem to be any valid use case anyway :)
2013-10-28evas/cserve2: Reuse file entries when possibleJean-Philippe Andre
For some reason, a new File_Entry was created whenever a new image is loaded, even if that file was already opened by the client.
2013-10-28evas/cserve2: Reduce debug logs (s/INF/DBG)Jean-Philippe Andre
2013-10-28evas/cserve2: Fix font hintingJean-Philippe Andre
cserve2 was not handling font hints properly in the server side Add some consistency checks and separate glyphs per hinting value
2013-10-28evas/cserve2: Reset pointers to NULL after closeJean-Philippe Andre
2013-10-28evas/cserve2: Add TIMEOUT macro for cs2 clientJean-Philippe Andre
This will help debugging as we can disable the timeout on demand.
2013-10-28evas/cserve2: Small performance fixesJean-Philippe Andre
2013-10-28evas/cserve2: Fix crashes in E17/cserve2Jean-Philippe Andre
When remapping the glyph data buffer, we need to reposition the glyph pointers as well.
2013-10-28evas/cserve2: Scan glyphs and add to fashJean-Philippe Andre
This will save (just) a few socket waits.
2013-10-28evas/cserve2: Remap glyph mempool if resizedJean-Philippe Andre
2013-10-28evas/cserve2: Use only one Glyph_Map per fontJean-Philippe Andre
In the new cs2 model, only one shared buffer is allocated for a font, and it resizes on demand.
2013-10-28evas/cserve2: Remap indexes when count is wrongJean-Philippe Andre
When advertised count is wrong, try to remap the index. This will avoid errors with string_get().
2013-10-28evas/cserve2: Add valid flag on Image_Data and File_DataJean-Philippe Andre
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).
2013-10-28evas/cserve2: Remap string entries when size changedJean-Philippe Andre
Lots of files can't be found by the client when the strings table changed, because it was not remapped properly.
2013-10-28evas/cserve2: Optimize shared stringsJean-Philippe Andre
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.
2013-10-28evas/cserve2: Add glyph shm names to Font_DataJean-Philippe Andre
2013-10-28evas/cserve2: Add proper tags to shm arraysJean-Philippe Andre
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