* handle error code and print out error message, this should remove
invalid access traces from valgrind.
* give "0" as pid to get self affinity, this is documented in the man
page.
SVN revision: 41118
The pointer type is really confusing, it was expecting pointer to
pointer what is really weird.
Cedric just added a stringshared variant that should be as fast
(removing the strcmp()) and is the api one would expect.
This fix a long standing bug I introduced (sorry!) when added the
cache, but it was bit hard to hit as if you didn't find a collision
you'd be adding to cache and never finding it. But I recently started
to use icons on desktop and for some weird reason the PDF icons
started to show in TAR :-P
SVN revision: 41113
automake was "smart enough" to include in DIST_SUBDIRS even when 'if'
clause didn't add it to SUBDIRS, that was causing modules like XPM be
added twice, resulting maintainer-clean to double-clean the directory
(one from src/modules/loaders and other from src/lib), failing on the
second time.
SVN revision: 41060
the parent.
When we insert object inside a smart object, they could be attached to
another layer. As long as ref counting work, nothing wrong will happen.
But during destruction of an Evas, we were just looping over all layers,
destroying each of them, without checking for refcounting. This could
cause SEGV.
This patch introduce a third loop for wiping out all layers after
destroying all Evas_Object. So no more SEGV, and no performance
regression.
Note: Do not rely on evas_object_layer_get on smart object's child, it
could give you the wrong answer.
SVN revision: 41046
The dbus api has a "flags" parameter that is now unused but may be in
future, it was missing and dbus was giving method mismatch.
I forgot to commit this but changed Ethumb_Client, then Viktor "fixed"
it by reverting such change. Now going back to my code and adding "0"
as flag.
SVN revision: 40968
and configure.ac)
* include eina_config.h explicitely in files where the macros
of eina_config.h are used
* define eina_magic_string_init() and eina_magic_string_shutdown()
even when the mugle option is set (magic disabled)
* formatting and fix in configure.ac
SVN revision: 40962
we still guess it was up and try to get its name, if not possible then
try to start it and then get is name.
another way to do it would be to always request start and just then
get its name and just then start to listen to NameOwnerChanged. But
the current way is good enough and should save some roundtrips for
good cases (server is up).
SVN revision: 40955
If there are no other main loop activity than a idlers and one idler
adds a timer, the new (and unique) timer would be ignored since it's
flagged as "just_added" and thus next iteration will not consider it,
possible entering an infinite wait as it could be the only thing to do
in main loop.
Antognolli found this nasty bug while handling timeout-and-die in
Ethumb, where the "disconnect" event is dispatched by EDBus from idler
and it was adding a timer to shutdown the daemon after a while without
clients.
By: Rafael Antognolli <antognolli@profusion.mobi>
SVN revision: 40923
ethumbd is a server waiting for requests of thumbnails via dbus. A client
library is also provided, avoiding dbus burocracy (and with an API similar
to ethumb).
SVN revision: 40899
the connection from the fork (the cserve connection). it won't catch
threads... most of the time, but i need something else for that i think.
SVN revision: 40869
The old way we could run endless with the following case:
int my_buggy_idler(void *data) {
ecore_idler_add(my_buggy_idler, NULL);
return 0;
}
since it would append to that list, then the list would never end.
Now we just dispatch up to the last know idler, then go back to
regular processing, if nothing happens we'll be back to dispatch
again.
I tested it here and works fine, but might show issues with ecore
enterers/exiters of some applications that rely on the old (broken)
behavior.
SVN revision: 40847
hence we must use closesocket() to close a socket instead of
close(). In addition, we should improve the closing of the
socket (see http://tangentsoft.net/wskfaq/newbie.html#howclose)
* use PIPE_FD_INVALID for invalid fd / socket
* use PIPE_FD_ERROR for invalid result when sending / receiving
data on fd / sockets
next step is to manage correctly errno on Windows with WSAGetLastError()
(see http://tangentsoft.net/wskfaq/articles/bsd-compatibility.html)
SVN revision: 40846
* fix the way AC_INIT macros are parsed to consider [] as well.
* set both LDFLAGS and CFLAGS on the libs I use and I know support -fvisibility=hidden.
SVN revision: 40838
The ethumb_generate() function now just returns 0 if there is already a
generation in progress (and in that case, the callback isn't called).
SVN revision: 40738
none (ie default) and the engines actually understand it and use it.
2. fixes to scalecache and cserver too. more toto's done and its now been
stress tested by me - and i think cserve is ready to go gold. just enable it
with export EVAS_CSERVE=1 in your env for any eflapps - and run evas_cserve
(cmd-line options avalable plus cmd-line tol to query settings change on the
fly and query statsitics and state)
SVN revision: 40536
- don't package directfb, it's for specific systems like embedded
where it is required to build manually, maybe define some tweaks.
- don't build with no-dither-mask as it will completely disable
dithering on 16 and 8bpps, that's wrong! This is supposed to be
enabled on embedded devices only, like maemo.
SVN revision: 40518
starting to implement xrandr 1.3 support, now we support all events
and their fields.
This commit also fix way that extensions register their ids and
base. The way it was, ids was being added to the last event id, that
was wrong! Fortunately, those that were wrong had just one event and
always added "0", making no harm.
SVN revision: 40492
ecore_events are asynchronous and can be dispatched after the server
is deleted (ecore_con_server_del()). In this case, server will flag
"delete_me" and avoid doing double-free. When the event is dispatched
and the server is deleted, we still need to free resources and so we
need to call _ecore_con_server_free(). But we cannot do that by means
of ecore_con_server_del() since it will check "delete_me" flag and
will return.
This patch calls _ecore_con_server_free() directly when events are
dispatched and server is deleted. It fixes problems with
forecasts/weather modules exhausting file descriptors, a long standing
issue that bring problems with pam/desklock authentication.
Thanks to manio to point out #305 and testing.
SVN revision: 40490
Today signals emitted inside GROUP sub-parts are delivered to parent
group as "part-name:original-source". This is good and allow edje
groups to be reused. But no counter part to send events to inside
sub-groups existed.
This patch allows one to send a signal "signal" to inside a part
"part" that is of type GROUP by prepending signal emission with part name:
emission: "part:signal"
source: "source"
this is the same as:
o = edje_object_part_swallow_get(ed);
edje_object_signal_emit(o, "signal", "source");
but can be done all in themes, no need to go to application c/c++/python.
Based on patch by Pieter, see mail list.
SVN revision: 40489
This was affecting ecore_con users, specially modules that keep
polling the network, like forecasts or weather.
patch by manio, see bug #305.
SVN revision: 40488
is it ok?
1. it can be --disabled in evas's configure, but i think it works WITHOUT
disabling it (runtime) as it falls back to the old way of loading
2. it may cause build problems on some platforms - without it being enabled
we won't find out, so enable.
3. it needs enabling runtime to make use of it so it should be safe for now
until you enable it.
what is it?
it is a SHARED cache server - that means images loaded are loaded BY the
cache server (not by the actual process using evas). images are shared via
shared memory segments (shm_open + mmap). this means only 1 copy is in all
ram at any time - no matter how many processes need it , and its only loaded
once. also if another app has already loaded the same data - and its in the
cache or active hash, then another process needing the same stuff will avoid
the loads as it will just get instant replies from the cache of "image already
there". as it runs in its own process it can also time-out images from the
cache too.
right now you enable it by doing 2 things
1. run evas_cserve (it has cmd-line options to configure cache etc.
2. export EVAS_CSERVE=1 (im the environment of apps that should use the cache
server).
it works (for me) without crashes or problems. except for the following:
1. preloading doesnt work so its disabled if cserve is enabled. thisis
because the load threads interfere withthe unix comms socket causing
problems. this need to really change and have the cserve know about/do
preload and let the select() on the evas async events fd listen for the
unsolicited reply "load done". but it's not broken - simple preloads are
syncronous and forced if cserve is enabled (at build time).
2. if cserve is killed/crashes every app using it will have a bad day. baaad
day. so dont do it. also cserve may be vulnerable to apps crashing on it - it
may also exit with sigpipe. this needs fixing.
3. if the apps load using relative paths - this will break as it doesnt
account for the CWD of the client currently. will be fixed.
4. no way to change cache config runtime (yet)
5. no way to get internal cache state (yet).
6. if cache server exist - it wont clean up the shmem file nodes in /dev/shm
- it will clean on restart (remove the old junk). this needs fixing.
if you fine other issues - let me know.
things for the future:
1. now its a separate server.. the server could do async http etc. loads too
2. as a server it could monitor history of usage of files and images and
auto-pre-load files it knows historically are loaded then whose data is
immediately accessed.
3. the same infra could be used to share font loads (freetype and/or
fontconfig data).
4. ultimately being able to share rendered font glyphs will help a lot too.
5. it could, on its own, monitor "free memory" and when free memory runs
load, reduce cache size dynamically. (improving low memory situations).
6. it should get a gui to query cache state/contents and display visually.
this would be awesome to have a list of thumbnails that show whats in the
cache, how many referencesa they have, last active timestamps etc.
blah blah.
please let me know if the build is broken asap though as i will vanish
offline for a bit in about 24hrs...
SVN revision: 40478
* fix fullscreen_set() and borderless_set() functions in ecore_win32
* change SetWindowLong() to SetWindowLongPtr() as it is deprecated
* better error management when dealing with SetWindowLongPtr()
* remove useless SendMessage() calls
* other minor fixes
SVN revision: 40354
thx, but you committed rev 1 of the patch. I send out an updated patch
since the function naming did not follow "e" style. Attached patch
renames the functions accordingly. Please apply.
SVN revision: 40322
Hi
This patch adds two new functions, ecore_pipe_close_read and
ecore_pipe_close_write, to ecore_pipe. The purpose it to enable
ecore_pipe to be used together with fork (see example below).
The patch also handles if the read or write end of the pipe closes.
SVN revision: 40305