* efreet_desktop_command_build(): should consider the first
run. Before had a "first" toggle variable, which vanished with eina
port. I changed it to do {} while (), making it work again.
* exec string is already freed by callback (in e_exec.c), to keep old
behavior, just free the list with eina_list_free(). Just pay
attention to ecore_list and double check if they had a free
function set or not. If it didn't, then we should not free nodes!
SVN revision: 39228
now EINA_INLIST_GET(bla)->next will work, before it was like
&bla->__in_list->next
which is wrong, since __in_list is not a pointer, rather the memory itself.
SVN revision: 39210
* etk,
* PROTO/exalt,
* E-MODULES-EXTRA/diskio,
* E-MODULES-EXTRA/drawer,
* E-MODULES-EXTRA/penguins,
* E-MODULES-EXTRA/slideshow,
* E-MODULES-EXTRA/mail,
* E-MODULES-EXTRA/forecasts,
* E-MODULES-EXTRA/iiirk,
* E-MODULES-EXTRA/places,
* e,
* ewl,
* ecore,
* elitaire,
* entrance,
* e_dbus,
* efreet: Here we go, move from Ecore_List to Eina_List.
NOTE: This patch is huge, I did test it a lot, and I hope nothing is
broken. But if you think something change after this commit, please
contact me ASAP.
SVN revision: 39200
this fix a problem on Windows: the ecore main loop
hanged because of GetMessage() if next_time had a
random value.
patch by Lars Munch
SVN revision: 39178
* mainly unused parameters
* in src/lib/imaging/evas_imaging.c, set font to NULL
* in src/lib/canvas/evas_object_gradient.c, add unititialized member
there are a *lot* of reported warnings by llvm, i'll fix them later
there are also *lots* of unused parameters (compile evas with -W). I'll
fix them later too
SVN revision: 39172
* src/lib/evil_unistd.c:
* src/lib/evil_unistd.h:
Use high resolution timer for gettimeofday() and
export a convenient function for ecore_time_get(),
to save some computations.
* src/lib/evil_pwd.c:
Use the correct name for GetUserNameEx() according
to the platform.
SVN revision: 39148
This patch adds gstreamer v4l support to emotion. If you got a webcam it can
be tested by doing:
emotion_test -gstreamer v4l://
This will use the first video device /dev/video0.
If you do not have a webcam, you can also try it using the Virtual Video driver
By: Lars Munch <lars@segv.dk>
SVN revision: 39147
Do not spam the user if no length available from gstreamer. This is the case
for webcams, streaming audio and video etc.
By: Lars Munch <lars@segv.dk>
SVN revision: 39146
Use calloc instead of malloc. This will ensure that length in set to zero if no
length is provided from gstreamer.
By: Lars Munch <lars@segv.dk>
SVN revision: 39145
2. make gl engine able to use cutouts - in some cases its faster, some
slower. it's a mixed bag. not sure what to make of it. it's #defined to be
disabled atm.
SVN revision: 39114
* evas/src/lib/engines/common/evas_font.h,
* evas/src/lib/engines/common/evas_font_draw.c,
* evas/src/lib/engines/common/evas_font_load.c,
* evas/src/lib/engines/common/evas_font_query.c: Add cache for font kerning.
This patch give something around 2% for all tests around text in expedite,
except for Textblock Intl where it give a 3 times boost.
Regarding text rendering speed, something is strange when used by evas_pipe.
All tests using Styles are around 40% faster without evas_pipe. 30% faster
for Text Change. But Text Basic 7% slower. So it should be possible to have
faster rendering when using evas_pipe for font rendering.
SVN revision: 38993
* eet/src/lib/eet_lib.c,
* eet/src/lib/eet_cipher.c,
* eet/src/lib/Eet_private.h: Add a function to retrieve SHA1 of an associated Eet_File.
Note: Sadly GnuTLS doesn't seem to provide a gnutls_x509_crt_verify_hash function.
SVN revision: 38982
Often requested for animations that want to grow or shrink text
quickly. This is a faster alternative to using geometry with rel1/rel2
and "text.fit: 1 1;" since it does not need to figure out which size
fits better into that object.
I tested and it does not seem to introduce any regression. Also
checked with scale and text_class variations.
SVN revision: 38958
For some unknown reason evas was informing EVAS_CALLBACK_* even if the
original call did not changed the internal object state, that is, new
value is already equal to current value.
This is specially costly since Edje, Box, Table and possible other
layout engines will call evas_object_resize(), move(), show(), hide()
even if the state has not changed, assuming evas will ignore the call
(as it does). The real overhead might come if there are listeners
attached to these events, that in turn might do lots of other stuff,
leading to a torrent of useless calls.
I marked it for removal, please test it and uncomment '#define
CALLBACK_NOOPS' to get the old behavior back. It does seems to work
with e17 and edje_editor. If problems appear, let's try to fix the
real problem instead of getting this code back, it's a performance
penalty.
SVN revision: 38955
* add vim header
* include config.h when necessary
* fix the order of some include
* move the standard header in ecore_private.h to the source files
I have recompiled all the efl and e17, and e17 seems to work fine with these changes.
If you encounter problems with that commit, let me know.
SVN revision: 38864
If one want to load image at a given height or width and the other
dimension should be large enough to make it possible, give -1 as the
other coordinate and this will happen.
SVN revision: 38845
for app dialogs etc. yes - it uses ram. thats next - make it leaner on ram
usage. its simple enough now where that shouldnt be a problem.
SVN revision: 38839
we should just remove entries pending preload from the cache being
shutdown, not all of them.
this is untested as it is hard to force this situation, but should be
more correct than the previous.
SVN revision: 38747
before, when no more images were to be preloaded asynchronously, the
thread exited, but were not collected. This leads to a huge leak if
the process is doing aggressive use of image preloading (ie: photo
wall).
collecting dead threads in a proper way (read: without race
conditions) is a bit harder than keeping just one thread alive,
forever. As we do that for evas_pipe (the renderer), let's do the same
with preload and save code.
SVN revision: 38746
users of buffer engine (ie: e_thumb_main.c) were broken since when
they resize the canvas they would implicitly call engine->setup()
again, which would destroy output and create it again. However the
cache could be destroyed and images using it would be bogus.
This does not happen if the process have other cache users, but
e_thumb is just one canvas live at time.
By reordering, we have the cache reference to go to 2 and then back to
1, not destroying it.
SVN revision: 38739
in case Evil is not installed in /usr/local
* define fullscreen default values for the win ce engines in ecore_evas:
- gdi engine is windowed
- the other engines are fullscreen
SVN revision: 38647
1. get rid of grammar mistake
2. refer to COPYING-PLAIn correctly as the filename
3. be more explicit on "shipping source" due to ambiguity (this makes it what
it was intended to be and that is GPL compatible).
this does not modify the LGPL libs... or GPL apps etc. - only those using the
original COPYING from e. author and dates at the top remain the same.
SVN revision: 38569
from the fact that we put a definition of a function in the
body of main(). Moving it outside fixes it. In addition, the
extra flag i added in configure.ac is useless.
SVN revision: 38565
fix doc
* ecore_file/Makefile.am:
add Windows cflags
* ecore_file/ecore_file_private.h:
move Evil.h so that EAPI is correctly defined
* ecore_wince:
make window_new windowed by default. other backend that gdi might have problems.
add title_set and fullscreen_set functions.
do not use aygshell features anymore for fullscreen (it's not free and not always available)
include missing config.h
* ecore_evas:
move Evas.h and Ecore_Getopt.h so that EAPI is correctly defined
add title_set and fullscreen_set functions.
SVN revision: 38540
check returned value
* src/bin/evil_test_memcpy.c:
define getpagesize() for vc++
* src/lib/evil_unistd.c:
move inclusion of time.h after windsock2.h
include direct.h for vc++
use _WIN32_WCE for Windows CE compilers in evil_getcwd()
* src/lib/Evil.h:
* src/lib/evil_unistd.h:
move getcwd() define from Evil.h to evil_unistd.h
add some C99 types to Evil.h for vc++ (will be used in eina)
* src/lib/evil_fcntl.c:
include io.h for vc++
* src/lib/evil_link_xp.cpp:
use full name for symlink(). Fix symlink on Windows XP with
the DOS prompt or the debugger of Visual Studio.
* src/lib/evil_mman.c:
don't include unistd.h if vc++ is used
* src/lib/evil_stdio.h:
formatting
* src/lib/evil_stdlib.h:
* src/lib/evil_stdlib.c:
define putenv only for mingw32ce
move the returned value of setenv()
SVN revision: 38333
safety checks will report null pointers and other error conditions on
public api's and can be disabled by compile time check.
note that in order to have these checks working we need to make
EINA_ARG_NONNULL() void, otherwise GCC can remove these checks since
they're known to be false.
This commit also make two minor changes:
* list and hash accessors and iterators are created even for empty
entities. This is correct in my point of view since NULL should
indicate error. Having these in were an optimziation, but not
worth it, these are not the most common case and hitting this path
is not of much cost.
* unmarked some parameters as nonnull, mainly on list and inlist.
SVN revision: 38327
this should help with optimizations and code correctness, please see
"info gcc" for detailed explanation on these.
if you experience some functions not working as expected, please
double check if they're not marked with EINA_PURE or EINA_CONST, maybe
I misused them. Remove the macro and try again.
brief explanation:
* EINA_WARN_UNUSED_RESULT: if you forgot to use the return of some
function, it will emit a warning (and -Werror will make it an
error). This way it will be harder to miss the attribution
"l = eina_list_append(l, v)".
* EINA_ARG_NONNULL(index, index...): if you give it an explicit NULL
argument, or some tool (ie: clang) finds it could get a NULL but
this is not accepted by API, then a warning will be emitted. This
will help those that still use eina_hash_add() as if it is
evas_hash_add().
* EINA_MALLOC: any non-NULL pointer it returns cannot alias any other
pointer valid when function returns.
* EINA_PURE: function have no effects other than the return and this
return just depend on parameters and/or globals. You might call
this function in a loop a thousand times and it will return the
same value, thus you may move this function outside the loop and
remove it.
* EINA_CONST: stricter version of EINA_PURE, it will not check for
global parameters, that is, you cannot consider pointer
arguments. Use it for math things like "int sqrt(int)".
* EINA_PRINTF(fmt, arg): will check format parameter specified in
position "fmt" and passed arguments starting at position "arg", it
will check for things like giving integers where short or strings
were expected.
* EINA_SCANF(fmt, arg): similar to eina_printf().
* EINA_FORMAT(fmt): for use with things like dgettext(), it will get
a printf-like format string and modifies it.
Please review and test it with your software, make sure you make clean
before you install the new version so it has any effect.
If you find some functions are missing EINA_WARN_UNUSED_RESULT and
EINA_ARG_NONNULL or others, please add them.
SVN revision: 38323
1 - use inlist as regular list uses non-thread safe mempool;
2 - lock around image loading, so if main thread requests pixels right
before worker thread is loading them, you don't get ie->info.module
to NULL while it would be used (triggered from engines/common).
Maybe this should be handled by a global mutex elsewhere instead of
per-image mutex, but it has more granularity now.
3 - emit "preloaded" callback if it was canceled to be loaded from main
thread.
Please someone review these changes.
SVN revision: 38312
image preload will use modules from threads, there is a possibility to
crash due wrong reference counting.
actually much more can fail, we need to check modules don't keep that
needs exclusive access in globals or per-Evas_Module, but that's
another issue.
TODO: replace spinlocks with atomic operations.
SVN revision: 38309
We had some problems with preload and after running LLVM's CLang
Static Analyser we found out that current->target could be NULL after
loop.
Also fixed some GCC and CLang warnings, kudos to these wonderful tools
that "Saved The Day".
PS: we should put some CLang Static Analyser results so others can
help fix other parts of E.
SVN revision: 38293
fix fullscreen
* ecore_evas_win32.c:
add fullscreen (d3d and ddraw) and shape (d3d) support
minor formatting
* configure.ac:
enable direct3d support
SVN revision: 38248
ecore_evas_list_engines and geometry_parse, they're used in almost all
applications using ecore_getopt, let's avoid replicating code.
SVN revision: 38247
evas_object_image_preload() should not use object as const because it
will mdofiy the object state (so it's semantic makes more sense).
if data was already loaded, then callback before ignored it (return).
SVN revision: 38246
fast direct3d engine written by Dmitriy Mazovka. You rock !
* m4/evas_check_engine.m:
* m4/evas_check_loader.m4:
use m4_popdef for each macro (otherwise, fail if aclocal is too old)
* src/lib/canvas/evas_font_dir.c:
include evas_common.h and evas_private.h after Eet.h and Evil.h
so that EAPI is correctly defined
SVN revision: 38244
if image was already preloaded, inform user.
regular use case is to have image hidden, ask for preload and then
show image on callback, if there is no callback, image is never shown.
SVN revision: 38236
But is so big i fear i could have broken some piece of code. So report any wrong
behaviour to me (cedric on #edevelop).
So moving e17 and efreet to eina_hash. With a little efreet API break so they
must come together.
SVN revision: 38185
as reported, elicity triggers an infinite loop by calling
edje_object_part_geometry_get(), which in turns calls
_edje_recalc_do() which in turns calls the elicit code that requests
edje_object_part_geometry_get() and since it's still marked as
"dirty", it enters the loop...
the real fix is just the move of ed->dirty = 0; before calling
recalcs, but I also unmarked object as need_recalculate so we can even
avoid requesting object to recalculate from evas.
SVN revision: 38139
* src/bin/evil_test_gettimeofday.c:
fix unit test; now all tests pass, finally
* src/lib/evil_unistd.c:
fix gettimeofday() on mingw32ce
SVN revision: 38130
* src/bin/evil_test_dlfcn.c:
* src/bin/evil_test_dlfcn.h:
add dflcn unit test
* src/bin/evil_suite.c:
show result of the unit tests and add dlfcn unit test
* src/bin/evil_test_environment.c:
remove debug
* src/bin/evil_test_gettimeofday.c:
debug, not working yet :/
* src/bin/evil_test_link.c:
* src/lib/evil_link_ce.c:
fix link support on Windows CE
SVN revision: 38126
Wow, this was tricky to find since it is hard to trigger, thanks to
Canola complex edje files we could spot it!
In some cases we end with object being marked as dirty while
calculating its state (ie: edje), then we need to run smart calculate
again.
This has a drawback however: we cannot check for need_recalculate()
inside smart calculate anymore, we must assume it is only called if
the flag is set. To avoid that we could mark a shadow member and use
that or use a counter, that has the problem of using more data.
SVN revision: 38108
give the possibility to write small code like :
it = eina_hash_iterator_tuple_new(hash);
eina_iterator_foreach(it, do_something_cb, NULL);
eina_iterator_free(it);
If hash is empty, but valid it will return a NULL iterator for this
example.
SVN revision: 38104
Eina hash api must get non NULL pointer allocated with
eina_hash_new(), but Evas hash started with NULL and would allocate
and destroy the hash as required by operations.
To do a proper wrapper we must ensure we don't call Eina hash API with
NULL, we must handle that outside Eina.
PLEASE do not remove this code again (it's the second time I add it),
this is the correct approach. Other than that is going after evas_hash
usage and converting directly to eina_hash.
SVN revision: 38091
Unset value is now 0x0 and this is handled as invalid, with an error message.
1x1 is a valid fill, but it is very slow and often system hangs while
it scale the whole thing... usually nobody want it at 1x1, we just end
using that for unset values. With unset value at 0x0 it will not
happen and we'll know when we forgot to do so!.
SVN revision: 38071
add output
* src/bin/evil_test_link.c:
add a unit test for readlink()
* src/lib/evil_link_xp.cpp:
fix readlink() and symlink() on Windows XP
SVN revision: 38070
destroyed by _edje_cache_coll_unref. So moving the call to _edje_cache_coll_unref
after the last use of Edje_Real_Part should be better.
SVN revision: 38020
* evas: if we automatically destroy hash, check for NULL before
handling it to eina api, which expect elements to be created with
eina_hash_new() and thus will fail on NULL.
* eina: add magic checking for eina_hash and eina_hash_iterator, this will
help spot when NULL is used.
* eina_hash_foreach: do not try to create the iterator if hash is NULL.
SVN revision: 37982
By using simpler functions for hash element deletion we can avoid the
hack to shut up GCC warking about hash_num not being used. As these
simple functions are more often needed than the catch-all, expose them
as well.
SVN revision: 37962
Keep EINA_MAGIC at the end of the structure (WHEN POSSIBLE! Watch out
flexible arrays like char str[] at the end!)
this way if parts use EINA_MAGIC and others do not, it will possible overflow and valgrind can help us.
WARNING: make uninstall before update! Then make clean and make install, check if everything is working with "make check".
SVN revision: 37961
eina_magic.h MUST include eina_config.h, otherwise it will not
consider EINA_MAGIC stuff. Worse than that, some files were including
that directly and were considering EINA_MAGIC attribute even if the
file that alloc'ed the memory were not!
Also add missing EINA_MAGIC_SET() to iterators and accessors.
SVN revision: 37960
Many places in EFL we just create walk something, create a list with
walked data, return, then the user walks it again and then deletes
(which will walk again). For such cases it's way better to define
iterators or accessors.
I'm not moving any EFL code to it now, but if people are interested,
things like evas_render_method_list(), evas_font_available_list(),
evas_objects_at_xy_get(), evas_objects_in_rectangle_get(),
evas_object_smart_members_get() are good candidates. If the subject is
already using Eina list, then you can just use
eina_list_iterator_new() and return it, otherwise you can define your
own iterator, which is very easy.
SVN revision: 37956
* Fix buffer overflow with EDJE_PROGRAM_CACHE (not tested since I don't use it).
* break_prog should always unset walking_callbacks and do after-tasks.
* Fix list walking! ouch!!!
SVN revision: 37944
replace evil_gettimeofday by gettimeofday
* src/lib/evil_string.c:
* src/lib/evil_string.h:
add strcoll() "port" to Windows CE OS. Note it's
just strcmp, no locale stuff is used onn that OS.
SVN revision: 37910
- add shape support in ecore_win32
- add drag'n drop support in ecore_win32 (reworked)
* remove strange character (ecore_evas_win32.c)
* include Eina.h before defining EAPI (Ecore_Data.h)
* add -lole32 as lib for DnD, minor thing (configure.ac)
next steps will be the new direct3d engine, and full support
of DnD, shapes and fullscreen for the directdraw engine and
in ecore_evas.
SVN revision: 37831
* group the want_* variables related to engines and loaders at the beginning
of configure.ac
* use -no-undefined directly instead of a flag checked wrt the host
* some clean up in Makefile.am files
Please report any problem
SVN revision: 37784
Create a parser description and give it the parameters, that's it. You
can store values (automatically converting types!), count occurrences,
make it true or false, create a list, choose from a list of items or
even specify your own callback to process arguments!
It was inspired by Python's optparse: http://www.python.org/doc/2.5.2/lib/module-optparse.html
SVN revision: 37781
* src/bin/evil_suite.c:
* src/bin/evil_test_gettimeofday.c:
* src/bin/evil_test_gettimeofday.h:
add a small test for gettimeofday
* src/bin/evil_test_memcpy.c:
fix warning
* src/lib/Evil.h:
* src/lib/Makefile.am:
* src/lib/evil_main.c:
* src/lib/evil_main.h:
* src/lib/evil_unistd.c:
* src/lib/evil_unistd.h:
* src/lib/evil_private.h:
add gettimeofday for Windows CE natively. It is necessary
to initialise evil with evil_init() now, to have that
feature.
* src/lib/evil_stdio.c:
* src/lib/evil_string.c:
fix warnings
SVN revision: 37734
but some other people can help me now with that code in svn
* expedite is working but sometimes crashes. Maybe a big mem leak ?
* maybe moving the creation of the bitmap in
evas_software_wince_gdi_output_buffer_paste()
to
evas_software_wince_gdi_output_buffer_new()
so that the memcpy is not necessary anymore
SVN revision: 37709
giving an extra void *user_data to layout function is now easy to
write bindings, just give the callback to be a generic function that
will call the language/binding specific function handled as user_data.
Example, for python we can use:
void _layout_dispatcher(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) {
PyObject *pyobj = data, *args;
args = PyTyple_New(1);
PyTuple_SET_ITEM(args, 0, Evas_object_from_instance(o));
PyObject_Call(pyobj, args, NULL);
Py_DECREF(args);
}
evas_object_box_layout_set(o, _layout_dispatcher, pyobj, Py_DecRef);
SVN revision: 37640
This makes use of new Evas_Smart_Class calculate() callback to
postpone calculations until render time, possible saving lots of
calculations to happen.
It is another try, with Cedric's changes to force recalculations when
requried (ie: just before doing some edje_object_*_get()), let's see
if this one solve found issues.
SVN revision: 37620
One can now configure the maximum acceptable delay to be introduced by
Ecore so possibly more timers will be dispatched together, reducing
wakeups and saving more power.
SVN revision: 37607