[EGIT] [core/efl] master 02/03: edje: moved from edje_multisense.c to Ecore_Audio.h for select the type of render.
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c1c424a4075a85375c83f4c137b74c9919c5fc57 commit c1c424a4075a85375c83f4c137b74c9919c5fc57 Author: Ivan Furs <i.f...@samsung.com> Date: Tue Oct 3 11:22:07 2017 -0700 edje: moved from edje_multisense.c to Ecore_Audio.h for select the type of render. Reviewers: NikaWhite, raster, cedric, vtorri, rimmed Reviewed By: NikaWhite, vtorri Subscribers: artem.popov, cedric, jpeg Differential Revision: https://phab.enlightenment.org/D5096 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/lib/edje/edje_multisense.c | 12 +++- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/lib/edje/edje_multisense.c b/src/lib/edje/edje_multisense.c index f8f5ae8317..82c553427f 100644 --- a/src/lib/edje/edje_multisense.c +++ b/src/lib/edje/edje_multisense.c @@ -202,16 +202,12 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, c in = efl_add(ECORE_AUDIO_IN_SNDFILE_CLASS, NULL, ecore_audio_obj_name_set(efl_added, snd_id_str), ecore_audio_obj_in_speed_set(efl_added, speed), ecore_audio_obj_vio_set(efl_added, _data->vio, eet_data, _free), efl_event_callback_add(efl_added, ECORE_AUDIO_IN_EVENT_IN_STOPPED, _play_finished, NULL)); if (!out) { -#if HAVE_PULSE - out = efl_add(ECORE_AUDIO_OUT_PULSE_CLASS, NULL, efl_event_callback_add(efl_added, ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, _out_fail, NULL)); -#endif + out = efl_add(ECORE_AUDIO_OUT_RENDER_CLASS, NULL, efl_event_callback_add(efl_added, ECORE_AUDIO_OUT_RENDER_EVENT_CONTEXT_FAIL, _out_fail, NULL)); if (out) outs++; } if (!out) { -#if HAVE_PULSE - ERR("Could not create multisense audio out (pulse)"); -#endif + ERR("Could not create multisense audio out"); efl_del(in); return EINA_FALSE; } @@ -270,9 +266,7 @@ _edje_multisense_internal_sound_tone_play(Edje *ed, const char *tone_name, const if (!out) { -#if HAVE_PULSE - out = efl_add(ECORE_AUDIO_OUT_PULSE_CLASS, NULL, efl_event_callback_add(efl_added, ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, _out_fail, NULL)); -#endif + out = efl_add(ECORE_AUDIO_OUT_RENDER_CLASS, NULL, efl_event_callback_add(efl_added, ECORE_AUDIO_OUT_RENDER_EVENT_CONTEXT_FAIL, _out_fail, NULL)); if (out) outs++; } --
[EGIT] [core/efl] master 01/03: ecore_audio: a minimal template for playing sound on WINDOWS is added
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7a98f617e94ef42787e06e685a8d5e7be34fff21 commit 7a98f617e94ef42787e06e685a8d5e7be34fff21 Author: Ivan Furs <i.f...@samsung.com> Date: Tue Oct 3 11:21:07 2017 -0700 ecore_audio: a minimal template for playing sound on WINDOWS is added Summary: Realization of audio data playback through WASAPI (Windows Audio Session API).(minimal) WASAPI model: 1. Find a playback device (in the default system) 2. Register the client on the playback device. 3. Create a playback format for audio data. 4. Initialize the client with the created format, and access mode, 5. Take the object-rendering from the client for play the data stream. 6. Play data stream ecore_audio model: 1. create a object for play the data stream(out object) 2. create a object to receive the data stream(in object) 3. register in the out-object the in-object 4. play data stream Necessary: Realize the ecore_audio object to play the data stream using the WASAPI model. How implemented: 1. The object ecore_audio_out_wasapi is implemented 2. object ecore_audio_out_wasapi - the object constructor is find a playback device (in the default system)(WASAPI) 3. _ecore_audio_out_wasapi_ecore_audio_out_input_attach - register in the out-object the in-object 3.1 Register the client on the playback device.(WASAPI) 3.2 Create a playback format for audio data.(WASAPI) 3.3 Initialize the client with the created format, and access mode, (WASAPI) 4. _write_cb - play data 4.1 Take the object-rendering from the client for play the data stream.(WASAPI) 4.2 Play data stream(WASAPI) Reviewers: cedric, vtorri, raster, an.kroitor, NikaWhite, FurryMyad, rimmed, t.naumenko, Jaehyun, bowonryu Reviewed By: vtorri, NikaWhite Subscribers: artem.popov, cedric, jpeg Tags: #windows Differential Revision: https://phab.enlightenment.org/D5029 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- configure.ac | 22 +- src/Makefile_Ecore_Audio.am | 11 +- src/lib/ecore_audio/Ecore_Audio.h | 50 +- src/lib/ecore_audio/ecore_audio_obj.h | 22 - src/lib/ecore_audio/ecore_audio_obj_in.h | 23 - src/lib/ecore_audio/ecore_audio_obj_in_sndfile.h | 23 - src/lib/ecore_audio/ecore_audio_obj_in_tone.h | 23 - src/lib/ecore_audio/ecore_audio_obj_out.h | 23 - src/lib/ecore_audio/ecore_audio_obj_out_pulse.h | 23 - src/lib/ecore_audio/ecore_audio_obj_out_sndfile.h | 23 - src/lib/ecore_audio/ecore_audio_obj_out_wasapi.c | 609 ++ src/lib/ecore_audio/ecore_audio_obj_out_wasapi.h | 22 + src/lib/ecore_audio/ecore_audio_out_wasapi.eo | 18 + 13 files changed, 715 insertions(+), 177 deletions(-) diff --git a/configure.ac b/configure.ac index ff499831ad..93ecf88767 100644 --- a/configure.ac +++ b/configure.ac @@ -3930,6 +3930,8 @@ want_alsa="no" # TODO: and the EFL_OPTIONAL_DEPEND_PKG(), use EFL_DEPEND_PKG() want_sndfile="yes" +want_wasapiaudio="no" + AC_ARG_ENABLE([pulseaudio], [AS_HELP_STRING([--disable-pulseaudio],[disable pulseaudio sound support. @<:@default=enabled@:>@])], [ @@ -3937,7 +3939,12 @@ AC_ARG_ENABLE([pulseaudio], want_pulseaudio="yes" else want_pulseaudio="no" - CFOPT_WARNING="xyes" + if test "x${have_win32}" = "xyes" ; then + want_wasapiaudio="yes" + else + want_wasapiaudio="no" + CFOPT_WARNING="xyes" + fi fi ], [want_pulseaudio="yes"]) @@ -3971,6 +3978,10 @@ if test "x${want_sndfile}" = "xyes" ; then PKG_CHECK_MODULES([ECORE_AUDIO_SNDFILE], [sndfile]) AC_DEFINE([HAVE_SNDFILE], [1], [Sndfile support]) fi +if test "x${want_wasapiaudio}" = "xyes" ; then + EFL_ADD_LIBS([ECORE_AUDIO], [-luuid -lwinmm -lksuser]) + AC_DEFINE([HAVE_WASAPI], [1], [Wasapiaudio support]) +fi dnl EFL_OPTIONAL_DEPEND_PKG([ECORE_AUDIO_ALSA], [${want_alsa}], [ALSA], [alsa]) dnl EFL_OPTIONAL_DEPEND_PKG([ECORE_AUDIO_PULSE], [${want_pulseaudio}], [PULSE], [libpulse]) @@ -3981,6 +3992,7 @@ EFL_EVAL_PKGS([ECORE_AUDIO]) EFL_ADD_FEATURE([ECORE_AUDIO], [alsa]) EFL_ADD_FEATURE([ECORE_AUDIO], [pulseaudio]) EFL_ADD_FEATURE([ECORE_AUDIO], [sndfile]) +EFL_ADD_FEATURE([ECORE_AUDIO], [wasapiaudio]) ### Checks for header files @@ -3997,6 +4009,7 @@ EFL_ADD_FEATURE([ECORE_AUDIO], [sndfile]) EFL_LIB_END_OPTIONAL([Ecore_Audio]) AM_CONDITIONAL([HAVE_ECORE_AUDIO_PULSE], [test "x${want_pulseaudio}" = "xyes"]) AM_CONDITIONAL([HAVE_ECORE_AUDIO_SNDFILE], [test "x${
[EGIT] [core/efl] master 04/05: evil: Fix edc scripts compilation on windows
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f3e9496cd128c20d0d49db5fb72ab7c31f7962d4 commit f3e9496cd128c20d0d49db5fb72ab7c31f7962d4 Author: Ivan Furs <i.f...@samsung.com> Date: Mon Jun 12 11:50:54 2017 +0900 evil: Fix edc scripts compilation on windows Fixes T5410 Summary: should fix the error T5410 Reviewers: vtorri, t.naumenko, cedric, raster, an.kroitor, rimmed, NikaWhite, FurryMyad Subscribers: artem.popov, cedric, jpeg Maniphest Tasks: T5410 Differential Revision: https://phab.enlightenment.org/D4830 --- src/lib/evil/evil_stdlib.c | 4 src/lib/evil/evil_stdlib.h | 4 2 files changed, 8 deletions(-) diff --git a/src/lib/evil/evil_stdlib.c b/src/lib/evil/evil_stdlib.c index bcafb3a924..56d0ede881 100644 --- a/src/lib/evil/evil_stdlib.c +++ b/src/lib/evil/evil_stdlib.c @@ -193,16 +193,12 @@ mkstemps(char *__template, int suffixlen) return -1; } -#if __MINGW64_VERSION_MAJOR < 4 - int mkstemp(char *__template) { return mkstemps(__template, 0); } -#endif - char * realpath(const char *file_name, char *resolved_name) { diff --git a/src/lib/evil/evil_stdlib.h b/src/lib/evil/evil_stdlib.h index 6f98489e51..316347abdd 100644 --- a/src/lib/evil/evil_stdlib.h +++ b/src/lib/evil/evil_stdlib.h @@ -67,8 +67,6 @@ EAPI int unsetenv(const char *name); * */ -#if __MINGW64_VERSION_MAJOR < 4 - /** * @brief Create a unique temporary file name. * @@ -101,8 +99,6 @@ EAPI int unsetenv(const char *name); */ EAPI int mkstemp(char *__template); -#endif - /** * @brief create an unique temporary directory * --
[EGIT] [core/efl] master 01/02: evas_async_events: Integrated Ecore_Pipe in evas_async_events
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9d5a1d098c739f174e359db1837cec36d4c2131b commit 9d5a1d098c739f174e359db1837cec36d4c2131b Author: Ivan Furs <i.f...@samsung.com> Date: Fri Apr 21 11:30:05 2017 +0900 evas_async_events: Integrated Ecore_Pipe in evas_async_events Summary: Integrated Ecore_Pipe in evas_async_events Reviewers: vtorri, artem.popov, cedric, jpeg, raster, #eflete Reviewed By: cedric Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4622 --- src/lib/evas/canvas/evas_async_events.c | 211 +--- 1 file changed, 86 insertions(+), 125 deletions(-) diff --git a/src/lib/evas/canvas/evas_async_events.c b/src/lib/evas/canvas/evas_async_events.c index c15b247..047b2eb 100644 --- a/src/lib/evas/canvas/evas_async_events.c +++ b/src/lib/evas/canvas/evas_async_events.c @@ -7,29 +7,15 @@ #endif #include -#include "evas_common_private.h" -#include "evas_private.h" - #ifdef _WIN32 - # include - -# define pipe_write(fd, buffer, size) send((fd), (char *)(buffer), size, 0) -# define pipe_read(fd, buffer, size) recv((fd), (char *)(buffer), size, 0) -# define pipe_close(fd) closesocket(fd) -# define PIPE_FD_ERROR SOCKET_ERROR - -#else - -# include - -# define pipe_write(fd, buffer, size) write((fd), buffer, size) -# define pipe_read(fd, buffer, size) read((fd), buffer, size) -# define pipe_close(fd) close(fd) -# define PIPE_FD_ERROR -1 - #endif /* ! _WIN32 */ +#include + +#include "evas_common_private.h" +#include "evas_private.h" +#include "Ecore.h" typedef struct _Evas_Event_Async Evas_Event_Async; struct _Evas_Event_Async @@ -62,8 +48,8 @@ static int _thread_id = -1; static int _thread_id_max = 0; static int _thread_id_update = 0; -static int _fd_write = -1; -static int _fd_read = -1; +static Eina_Bool _write_error = EINA_TRUE; +static Eina_Bool _read_error = EINA_TRUE; static pid_t _fd_pid = 0; static Eina_Spinlock async_lock; @@ -71,33 +57,79 @@ static Eina_Inarray async_queue; static Evas_Event_Async *async_queue_cache = NULL; static unsigned int async_queue_cache_max = 0; +static Ecore_Pipe *_async_pipe = NULL; +static int _event_count = 0; + + static int _init_evas_event = 0; +static const int wakeup = 1; + +static void _evas_async_events_fd_blocking_set(Eina_Bool blocking EINA_UNUSED); + +static void +_async_events_pipe_read_cb(void *data EINA_UNUSED, void *buf, unsigned int len) +{ + if (wakeup != *(int*)buf || sizeof(int) != len) + return; + + Evas_Event_Async *ev; + unsigned int ln, max; + int nr; + + eina_spinlock_take(_lock); + + ev = async_queue.members; + async_queue.members = async_queue_cache; + async_queue_cache = ev; + + max = async_queue.max; + async_queue.max = async_queue_cache_max; + async_queue_cache_max = max; + + ln = async_queue.len; + async_queue.len = 0; + + eina_spinlock_release(_lock); + + DBG("Evas async events queue length: %u", len); + nr = ln; + + while (ln > 0) +{ + if (ev->func) ev->func((void *)ev->target, ev->type, ev->event_info); + ev++; + ln--; +} + _event_count += nr; + + _evas_async_events_fd_blocking_set(EINA_FALSE); +} int evas_async_events_init(void) { - int filedes[2]; if (_init_evas_event++) return _init_evas_event; + if ( !ecore_init() ) + { +_init_evas_event = 0; +return 0; + } _fd_pid = getpid(); - if (pipe(filedes) == -1) + _async_pipe = ecore_pipe_add(_async_events_pipe_read_cb, NULL); + if ( !_async_pipe ) { - _init_evas_event = 0; - return 0; +_init_evas_event = 0; +return 0; } - eina_file_close_on_exec(filedes[0], EINA_TRUE); - eina_file_close_on_exec(filedes[1], EINA_TRUE); - - _fd_read = filedes[0]; - _fd_write = filedes[1]; + ecore_pipe_freeze(_async_pipe); + _read_error = EINA_FALSE; + _write_error = EINA_FALSE; -#ifdef HAVE_FCNTL - if (fcntl(_fd_read, F_SETFL, O_NONBLOCK) < 0) ERR("Can't set NONBLOCK on async fd"); -#endif eina_spinlock_new(_lock); eina_inarray_step_set(_queue, sizeof (Eina_Inarray), sizeof (Evas_Event_Async), 16); @@ -131,10 +163,10 @@ evas_async_events_shutdown(void) eina_spinlock_free(_lock); eina_inarray_flush(_queue); - pipe_close(_fd_read); - pipe_close(_fd_write); - _fd_read = -1; - _fd_write = -1; + ecore_pipe_del(_async_pipe); + _read_error = EINA_TRUE; + _write_error = EINA_TRUE; + ecore_shutdown(); return _init_evas_event; } @@ -153,76 +185,19 @@ EAPI int evas_async_events_fd_get(void) { _evas_async_events_fork_handle(); - return _fd_read; -} - -static int -_evas_async_events_process_single(void) -{ - int ret, wakeup; - - ret = pipe_read(_fd_read, , s
[EGIT] [core/efl] master 01/01: ecore_pipe: Fixed dead lock with epoll
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c9469e0b011c1e4ee2f5e86e5df2a334820b6c6a commit c9469e0b011c1e4ee2f5e86e5df2a334820b6c6a Author: Ivan Furs <i.f...@samsung.com> Date: Wed Apr 19 10:29:27 2017 +0900 ecore_pipe: Fixed dead lock with epoll See a76ebea2d840ecc575efb025574c15503225b83f and the following commits on this file. The following test scenario let to easily reproducible application hangs: elementary_test -to "Icon Desktops" # then scroll vigorously with the mouse wheel up/down This patch was applied as a new revision on the below diff: Differential Revision: https://phab.enlightenment.org/D4754 --- src/lib/ecore/ecore_pipe.c | 155 + 1 file changed, 73 insertions(+), 82 deletions(-) diff --git a/src/lib/ecore/ecore_pipe.c b/src/lib/ecore/ecore_pipe.c index 1dfb864..2949f22 100644 --- a/src/lib/ecore/ecore_pipe.c +++ b/src/lib/ecore/ecore_pipe.c @@ -370,11 +370,11 @@ ecore_pipe_full_add(Ecore_Pipe_Cb handler, p->timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC); eina_file_close_on_exec(p->pollfd, EINA_TRUE); - pollev.data.ptr = (void *)(uintptr_t)(p->fd_read); + pollev.data.ptr = &(p->fd_read); pollev.events = EPOLLIN; epoll_ctl(p->pollfd, EPOLL_CTL_ADD, p->fd_read, ); - pollev.data.ptr = (void *)(uintptr_t)(p->timerfd); + pollev.data.ptr = &(p->timerfd); pollev.events = EPOLLIN; epoll_ctl(p->pollfd, EPOLL_CTL_ADD, p->timerfd, ); #endif @@ -535,104 +535,95 @@ _ecore_pipe_wait(Ecore_Pipe *p, { int64_t timerfdbuf; struct epoll_event pollincoming[2]; - double end = 0.0; double timeout; int ret; int total = 0; int time_exit=-1; + Eina_Bool fd_read_found; + Eina_Bool fd_timer_found; struct itimerspec tspec_new; - struct itimerspec tspec_old; EINA_MAIN_LOOP_CHECK_RETURN_VAL(-1); if (p->fd_read == PIPE_FD_INVALID) return -1; - if (wait >= 0.0) - end = ecore_time_get() + wait; timeout = wait; - - while (message_count > 0 && (timeout > 0.0 || wait <= 0.0)) + int sec, usec; + if ( wait >= 0.0) { -time_exit = -1; -if (wait >= 0.0) +if ((!ECORE_FINITE(timeout)) || (EINA_DBL_EQ(timeout, 0.0))) { - /* finite() tests for NaN, too big, too small, and infinity. */ - if ((!ECORE_FINITE(timeout)) || (EINA_DBL_EQ(timeout, 0.0))) - { - tspec_new.it_value.tv_sec = 0; - tspec_new.it_value.tv_nsec = 0; - tspec_new.it_interval.tv_sec = 0; - tspec_new.it_interval.tv_nsec = 0; - time_exit = 0; - } - else if (timeout > 0.0) - { - int sec, usec; -#ifdef FIX_HZ - timeout += (0.5 / HZ); -#endif - sec = (int)timeout; - usec = (int)((timeout - (double)sec) * 10); - tspec_new.it_value.tv_sec = sec; - tspec_new.it_value.tv_nsec = (int)(usec) % 10; - tspec_new.it_interval.tv_sec = 0; - tspec_new.it_interval.tv_nsec = 0; - - } - timerfd_settime(p->timerfd, 0, _new, _old); + tspec_new.it_value.tv_sec = 0; + tspec_new.it_value.tv_nsec = 0; + tspec_new.it_interval.tv_sec = 0; + tspec_new.it_interval.tv_nsec = 0; + time_exit = 0; } - -ret = epoll_wait(p->pollfd, pollincoming, 2, time_exit); - -if (ret > 0) +else { - Eina_Bool fd_read_found = EINA_FALSE; - Eina_Bool fd_timer_found = EINA_FALSE; - - for (int i = 0; i < ret;i++) - { - if ((>fd_read == pollincoming[i].data.ptr)) -fd_read_found = EINA_TRUE; - if ((>timerfd == pollincoming[i].data.ptr)) -fd_timer_found = EINA_TRUE; - } - - p->handling++; - if (fd_read_found) - { - _ecore_pipe_read(p, NULL); - message_count -= p->message; - total += p->message; - p->message = 0; - } +#ifdef FIX_HZ + timeout += (0.5 / HZ); +#endif + sec = (int)timeout; + usec = (int)((timeout - (double)sec) * 10); + tspec_new.it_value.tv_sec = sec; + tspec_new.it_value.tv_nsec = (int)(usec) % 10; + tspec_new.it_interval.tv_sec = 0; + tspec_new.it_interval.tv_nsec = 0; + timerfd_settime(p->timerfd, 0, _new, NULL); + } + } -
[EGIT] [core/efl] master 01/01: ecore_pipe: added epoll
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a76ebea2d840ecc575efb025574c15503225b83f commit a76ebea2d840ecc575efb025574c15503225b83f Author: Ivan Furs <i.f...@samsung.com> Date: Mon Apr 17 12:28:41 2017 +0900 ecore_pipe: added epoll Summary: integration epoll in ecore_pipe Reviewers: cedric, NikaWhite, rimmed, an.kroitor, vtorri, raster Reviewed By: raster Subscribers: artem.popov, cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4754 --- src/lib/ecore/ecore_pipe.c | 139 +++-- 1 file changed, 135 insertions(+), 4 deletions(-) diff --git a/src/lib/ecore/ecore_pipe.c b/src/lib/ecore/ecore_pipe.c index 4bdce6e..d73dd6c 100644 --- a/src/lib/ecore/ecore_pipe.c +++ b/src/lib/ecore/ecore_pipe.c @@ -66,6 +66,8 @@ #else +# include +# include # include # include @@ -95,6 +97,10 @@ struct _Ecore_Pipe unsigned int already_read; void *passed_data; int message; +#ifndef _WIN32 + int pollfd; + int timerfd; +#endif Eina_Bool delete_me : 1; }; GENERIC_ALLOC_SIZE_DECLARE(Ecore_Pipe); @@ -354,6 +360,21 @@ ecore_pipe_full_add(Ecore_Pipe_Cb handler, if (!write_survive_fork) _ecore_fd_close_on_exec(fd_write); +#ifndef _WIN32 + struct epoll_event pollev = { 0 }; + p->pollfd = epoll_create(1); + p->timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC); + _ecore_fd_close_on_exec(p->timerfd); + + pollev.data.ptr = p->fd_read; + pollev.events = EPOLLIN; + epoll_ctl(p->pollfd, EPOLL_CTL_ADD, p->fd_read, ); + + pollev.data.ptr = p->timerfd; + pollev.events = EPOLLIN; + epoll_ctl(p->pollfd, EPOLL_CTL_ADD, p->timerfd, ); +#endif + if (fcntl(p->fd_read, F_SETFL, O_NONBLOCK) < 0) ERR("can't set pipe to NONBLOCK"); p->fd_handler = ecore_main_fd_handler_add(p->fd_read, ECORE_FD_READ, @@ -384,6 +405,12 @@ _ecore_pipe_del(Ecore_Pipe *p) ECORE_MAGIC_FAIL(p, ECORE_MAGIC_PIPE, "ecore_pipe_del"); return NULL; } +#ifndef _WIN32 + epoll_ctl(p->pollfd, EPOLL_CTL_DEL, p->fd_read, NULL); + epoll_ctl(p->pollfd, EPOLL_CTL_DEL, p->timerfd, NULL); + if (p->timerfd >= 0) close(p->timerfd); + if (p->pollfd >= 0) close(p->pollfd); +#endif p->delete_me = EINA_TRUE; if (p->handling > 0) return (void *)p->data; if (p->fd_handler) _ecore_main_fd_handler_del(p->fd_handler); @@ -397,6 +424,7 @@ _ecore_pipe_del(Ecore_Pipe *p) return data; } +#ifdef _WIN32 int _ecore_pipe_wait(Ecore_Pipe *p, int message_count, @@ -437,12 +465,9 @@ _ecore_pipe_wait(Ecore_Pipe *p, int sec, usec; #ifdef FIX_HZ timeout += (0.5 / HZ); +#endif sec = (int)timeout; usec = (int)((timeout - (double)sec) * 100); -#else - sec = (int)timeout; - usec = (int)((timeout - (double)sec) * 100); -#endif tv.tv_sec = sec; tv.tv_usec = usec; } @@ -483,6 +508,112 @@ _ecore_pipe_wait(Ecore_Pipe *p, return total; } +#else +int +_ecore_pipe_wait(Ecore_Pipe *p, + int message_count, + double wait) +{ + int64_t timerfdbuf; + struct epoll_event pollincoming[2]; + double end = 0.0; + double timeout; + int ret; + int total = 0; + int time_exit=-1; + struct itimerspec tspec_new; + struct itimerspec tspec_old; + + EINA_MAIN_LOOP_CHECK_RETURN_VAL(-1); + if (p->fd_read == PIPE_FD_INVALID) + return -1; + + if (wait >= 0.0) + end = ecore_time_get() + wait; + timeout = wait; + + while (message_count > 0 && (timeout > 0.0 || wait <= 0.0)) + { +time_exit = -1; +if (wait >= 0.0) + { + /* finite() tests for NaN, too big, too small, and infinity. */ + if ((!ECORE_FINITE(timeout)) || (EINA_DBL_EQ(timeout, 0.0))) + { + tspec_new.it_value.tv_sec = 0; + tspec_new.it_value.tv_nsec = 0; + tspec_new.it_interval.tv_sec = 0; + tspec_new.it_interval.tv_nsec = 0; + time_exit = 0; + } + else if (timeout > 0.0) + { + int sec, usec; +#ifdef FIX_HZ + timeout += (0.5 / HZ); +#endif + sec = (int)timeout; + usec = (int)((timeout - (double)sec) * 10); + tspec_new.it_value.tv_sec = sec; + tspec_new.it_value.tv_nsec = (int)(usec) % 10; + tspec_new.it_interval.tv_sec = 0; +
[EGIT] [core/efl] master 01/01: eina: For Windows fix crash when the file was opened many times.
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0e7ee821cd404feed38c68cff0b839343eb955e7 commit 0e7ee821cd404feed38c68cff0b839343eb955e7 Author: Ivan Furs <i.f...@samsung.com> Date: Mon Apr 17 11:51:05 2017 +0900 eina: For Windows fix crash when the file was opened many times. Summary: A similar problem as: commit 62b469749a4b Reviewers: NikaWhite, t.naumenko, an.kroitor, FurryMyad, cedric, raster, vtorri, rimmed Reviewed By: raster Subscribers: artem.popov, cedric, jpeg Tags: #windows, #efl Differential Revision: https://phab.enlightenment.org/D4788 --- src/lib/eina/eina_file_win32.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/eina/eina_file_win32.c b/src/lib/eina/eina_file_win32.c index 96d2529..9a5b6fd 100644 --- a/src/lib/eina/eina_file_win32.c +++ b/src/lib/eina/eina_file_win32.c @@ -764,7 +764,6 @@ eina_file_open(const char *path, Eina_Bool shared) { file->delete_me = EINA_TRUE; eina_hash_del(_eina_file_cache, file->filename, file); -eina_file_clean_close(file); file = NULL; } --
[EGIT] [core/efl] master 02/02: eina_file: fixed T2244
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4d13273e3b3090579e11438fd32cbbe1d64db4b4 commit 4d13273e3b3090579e11438fd32cbbe1d64db4b4 Author: Ivan Furs <i.f...@samsung.com> Date: Wed Mar 15 10:49:19 2017 -0700 eina_file: fixed T2244 Summary: dirty fix for 'eet' problems with file deletion on WINDOWS to work with the commit: D4698, D4699 Reviewers: cedric, NikaWhite, rimmed, vtorri, raster Reviewed By: cedric Subscribers: artem.popov, cedric, jpeg Maniphest Tasks: T2244 Differential Revision: https://phab.enlightenment.org/D4701 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/lib/eina/eina_file_win32.c | 20 +--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/lib/eina/eina_file_win32.c b/src/lib/eina/eina_file_win32.c index 9d6bf1b..96d2529 100644 --- a/src/lib/eina/eina_file_win32.c +++ b/src/lib/eina/eina_file_win32.c @@ -383,7 +383,7 @@ eina_file_real_close(Eina_File *file) free(map); } - if (file->global_map != MAP_FAILED && file->handle != NULL) + if (file->global_map != MAP_FAILED) UnmapViewOfFile(file->global_map); if (file->handle != INVALID_HANDLE_VALUE) @@ -730,7 +730,7 @@ eina_file_open(const char *path, Eina_Bool shared) else #endif handle = CreateFile(filename, - GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, + GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); @@ -832,7 +832,21 @@ eina_file_unlink(const char *pathname) if (file->handle != INVALID_HANDLE_VALUE) { CloseHandle(file->handle); - file->handle = INVALID_HANDLE_VALUE; + + file->handle = CreateFile(unlink_path, + GENERIC_READ, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, + NULL); + +if (file->handle != INVALID_HANDLE_VALUE) + { + CloseHandle(file->handle); + file->handle = INVALID_HANDLE_VALUE; + return EINA_TRUE; + } } } --
[EGIT] [core/efl] master 02/03: win32: removed duplicate winsock2.h and added WIN32_LEAN_AND_MEAN in Ecore.h
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c1a2c89ac8ea05552f88134da9e66fb1c4a99bd6 commit c1a2c89ac8ea05552f88134da9e66fb1c4a99bd6 Author: Ivan Furs <i.f...@samsung.com> Date: Thu Mar 9 16:39:42 2017 +0900 win32: removed duplicate winsock2.h and added WIN32_LEAN_AND_MEAN in Ecore.h Summary: winsock2.h is dublicate in src/lib/ecore/ecore_main.c Reviewers: NikaWhite, an.kroitor, cedric, raster, rimmed, vtorri Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4688 --- src/lib/ecore/Ecore.h | 2 ++ src/lib/ecore/ecore_main.c | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/lib/ecore/Ecore.h b/src/lib/ecore/Ecore.h index 99e43e1..58b9e3c 100644 --- a/src/lib/ecore/Ecore.h +++ b/src/lib/ecore/Ecore.h @@ -307,7 +307,9 @@ #endif /* ! _WIN32 */ #ifdef _WIN32 +# define WIN32_LEAN_AND_MEAN # include +# undef WIN32_LEAN_AND_MEAN #elif defined (__FreeBSD__) || defined (__OpenBSD__) # include # include diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c index 125c886..da573cc 100644 --- a/src/lib/ecore/ecore_main.c +++ b/src/lib/ecore/ecore_main.c @@ -5,9 +5,6 @@ #define EINA_SLSTR_INTERNAL #ifdef _WIN32 -# define WIN32_LEAN_AND_MEAN -# include -# undef WIN32_LEAN_AND_MEAN # ifndef USER_TIMER_MINIMUM # define USER_TIMER_MINIMUM 0x0a # endif --
[EGIT] [core/efl] master 01/01: removing duplicates winsock2.h
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3d6212b8f25aa702da5236166ee591a506c38e02 commit 3d6212b8f25aa702da5236166ee591a506c38e02 Author: Ivan Furs <i.f...@samsung.com> Date: Tue Mar 7 13:58:13 2017 +0900 removing duplicates winsock2.h Summary: winsock2.h included in Ecore.h But Ecore.h ' is included in /bin/efreet/efreet_desktop_cache_create.c src/bin/efreet/efreet_mime_cache_create.c src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c Reviewers: NikaWhite, cedric, raster, an.kroitor Reviewed By: raster Subscribers: artem.popov, cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4687 --- src/bin/efreet/efreet_desktop_cache_create.c| 4 src/bin/efreet/efreet_mime_cache_create.c | 4 +--- src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c | 4 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/bin/efreet/efreet_desktop_cache_create.c b/src/bin/efreet/efreet_desktop_cache_create.c index fe4a476..3751f64 100644 --- a/src/bin/efreet/efreet_desktop_cache_create.c +++ b/src/bin/efreet/efreet_desktop_cache_create.c @@ -10,10 +10,6 @@ #include #endif -#ifdef _WIN32 -# include -#endif - #include #include diff --git a/src/bin/efreet/efreet_mime_cache_create.c b/src/bin/efreet/efreet_mime_cache_create.c index 8f8b0a1..e452b98 100644 --- a/src/bin/efreet/efreet_mime_cache_create.c +++ b/src/bin/efreet/efreet_mime_cache_create.c @@ -9,9 +9,7 @@ #include #include #endif -#ifdef _WIN32 -# include -#endif + #include #include diff --git a/src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c b/src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c index 7f15c1f..6dba477 100644 --- a/src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c +++ b/src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c @@ -6,10 +6,6 @@ #ifdef HAVE_SYS_SOCKET_H #include -#else -#ifdef _WIN32 -#include -#endif #endif #include --
[EGIT] [core/efl] master 01/01: eina_file: delete handle->fm(handel of function CreateFileMapping)
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8a10ef10cbc2d7513e8e4600dc26bb696f78dc62 commit 8a10ef10cbc2d7513e8e4600dc26bb696f78dc62 Author: Ivan Furs <i.f...@samsung.com> Date: Mon Mar 6 19:18:46 2017 +0900 eina_file: delete handle->fm(handel of function CreateFileMapping) Summary: CreateFileMapping return handle. The handle before use is always closed. This handle can be immediately closed after use. Reviewers: cedric, raster, vtorri, rimmed, an.kroitor, FurryMyad, NikaWhite Reviewed By: raster Subscribers: artem.popov, cedric, jpeg Tags: #windows Differential Revision: https://phab.enlightenment.org/D4699 --- src/lib/eina/eina_file_common.c | 3 +-- src/lib/eina/eina_file_common.h | 1 - src/lib/eina/eina_file_win32.c | 36 ++-- 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/src/lib/eina/eina_file_common.c b/src/lib/eina/eina_file_common.c index 2c5eeb1..b47cad7 100644 --- a/src/lib/eina/eina_file_common.c +++ b/src/lib/eina/eina_file_common.c @@ -436,8 +436,7 @@ eina_file_virtualize(const char *virtual_name, const void *data, unsigned long l #ifndef _WIN32 file->fd = -1; #else - file->handle = NULL; - file->fm = NULL; + file->handle = INVALID_HANDLE_VALUE; #endif file->virtual = EINA_TRUE; file->map = eina_hash_new(EINA_KEY_LENGTH(eina_file_map_key_length), diff --git a/src/lib/eina/eina_file_common.h b/src/lib/eina/eina_file_common.h index e8241d9..6fcecb2 100644 --- a/src/lib/eina/eina_file_common.h +++ b/src/lib/eina/eina_file_common.h @@ -94,7 +94,6 @@ struct _Eina_File int fd; /**< The file descriptor. */ #else HANDLE handle; /**< A Win32 file handle for this file. */ - HANDLE fm; /**< A Win32 file handle to a file mapping object for this file. */ #endif Eina_List *dead_map; /**< Tracks regions that get a failure from mmap(2). */ diff --git a/src/lib/eina/eina_file_win32.c b/src/lib/eina/eina_file_win32.c index fe83c67..9d6bf1b 100644 --- a/src/lib/eina/eina_file_win32.c +++ b/src/lib/eina/eina_file_win32.c @@ -386,8 +386,8 @@ eina_file_real_close(Eina_File *file) if (file->global_map != MAP_FAILED && file->handle != NULL) UnmapViewOfFile(file->global_map); - if (file->fm) CloseHandle(file->fm); - if (file->handle) CloseHandle(file->handle); + if (file->handle != INVALID_HANDLE_VALUE) + CloseHandle(file->handle); } static void @@ -871,29 +871,26 @@ eina_file_map_all(Eina_File *file, Eina_File_Populate rule EINA_UNUSED) eina_lock_take(>lock); if (file->global_map == MAP_FAILED) { -void *data; DWORD max_size_high; DWORD max_size_low; +HANDLE fm; -if (file->fm) - CloseHandle(file->fm); max_size_high = (DWORD)((file->length & 0xULL) >> 32); max_size_low = (DWORD)(file->length & 0xULL); -file->fm = CreateFileMapping(file->handle, NULL, PAGE_READONLY, +fm = CreateFileMapping(file->handle, NULL, PAGE_READONLY, max_size_high, max_size_low, NULL); -if (!file->fm) +if (!fm) { eina_lock_release(>lock); return NULL; } -data = MapViewOfFile(file->fm, FILE_MAP_READ, +file->global_map = MapViewOfFile(fm, FILE_MAP_READ, 0, 0, file->length); -if (!data) +CloseHandle(fm); +if (!file->global_map) file->global_map = MAP_FAILED; -else - file->global_map = data; } if (file->global_map != MAP_FAILED) @@ -935,8 +932,7 @@ eina_file_map_new(Eina_File *file, Eina_File_Populate rule, map = eina_hash_find(file->map, ); if (!map) { -void *data; - +HANDLE fm; map = malloc(sizeof (Eina_File_Map)); if (!map) { @@ -944,24 +940,20 @@ eina_file_map_new(Eina_File *file, Eina_File_Populate rule, return NULL; } -if (file->fm) - CloseHandle(file->fm); - /* the length parameter is unsigned long, that is a DWORD */ /* so the max size high parameter of CreateFileMapping is 0 */ -file->fm = CreateFileMapping(file->handle, NULL, PAGE_READONLY, +fm = CreateFileMapping(file->handle, NULL, PAGE_READONLY, 0, (DWORD)length, NULL); -if (!file->fm) +if (!fm) return NULL; -data = MapViewOfFile(file->fm, FILE_MAP_READ, +map->map = MapViewOfFile(fm, FILE_MAP_READ, offset & 0x, offset & 0x,
[EGIT] [core/efl] master 01/01: eet_lib: changed unlink to eina_file_unlink
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f7c1ac94f7d154a08660e40b5c0e676d8bd7d8e7 commit f7c1ac94f7d154a08660e40b5c0e676d8bd7d8e7 Author: Ivan Furs <i.f...@samsung.com> Date: Mon Mar 6 17:38:13 2017 +0900 eet_lib: changed unlink to eina_file_unlink Summary: changed unlink to eina_file_unlink Reviewers: cedric, raster, an.kroitor, rimmed, FurryMyad, NikaWhite, vtorri Subscribers: artem.popov, cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4698 --- src/lib/eet/eet_lib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/eet/eet_lib.c b/src/lib/eet/eet_lib.c index 2930b0f..9d491f6 100644 --- a/src/lib/eet/eet_lib.c +++ b/src/lib/eet/eet_lib.c @@ -338,7 +338,7 @@ eet_flush2(Eet_File *ef) int fd; /* opening for write - delete old copy of file right away */ -unlink(ef->path); +eina_file_unlink(ef->path); fd = open(ef->path, O_CREAT | O_TRUNC | O_RDWR | O_BINARY, S_IRUSR | S_IWUSR); if (fd < 0) { --
[EGIT] [core/efl] master 01/06: eina_file: add eina_file_unlink
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=808fcf4daeb8fa7eeef276c72e34c441c09e3214 commit 808fcf4daeb8fa7eeef276c72e34c441c09e3214 Author: Ivan Furs <i.f...@samsung.com> Date: Tue Feb 7 14:50:32 2017 -0800 eina_file: add eina_file_unlink Test Plan: split D4423 - unlink Reviewers: raster, vtorri, an.kroitor, jpeg, reutskiy.v.v, NikaWhite, cedric Reviewed By: cedric Subscribers: artem.popov, cedric, vtorri, jpeg Tags: #windows, #efl Differential Revision: https://phab.enlightenment.org/D4485 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/bindings/luajit/eina/file.lua | 6 ++ src/lib/eina/eina_file.c | 10 ++ src/lib/eina/eina_file_win32.c| 24 +++ src/tests/eina/eina_test_file.c | 41 +++ 4 files changed, 81 insertions(+) diff --git a/src/bindings/luajit/eina/file.lua b/src/bindings/luajit/eina/file.lua index d776047..675b810 100644 --- a/src/bindings/luajit/eina/file.lua +++ b/src/bindings/luajit/eina/file.lua @@ -97,6 +97,7 @@ ffi.cdef [[ Eina_File_Copy_Flags flags, Eina_File_Copy_Progress cb, const void *cb_data); Eina_File *eina_file_open(const char *name, Eina_Bool shared); +Eina_Bool eina_file_unlink(const char *pathname); Eina_File *eina_file_virtualize(const char *virtual_name, const void *data, unsigned long long length, Eina_Bool copy); Eina_Bool eina_file_virtual(Eina_File *file); @@ -315,6 +316,11 @@ M.File = ffi.metatype("Eina_File", { open = function(name, shared) return eina.eina_file_open(name, shared) end, + +unlink = function(self) +return eina.eina_file_unlink(pathname) +end, + virtualize = function(vname, data, length, copy) return eina.eina_file_virtualize(vname, data, length, copy or false) diff --git a/src/lib/eina/eina_file.c b/src/lib/eina/eina_file.c index cb29f28..c378ea5 100644 --- a/src/lib/eina/eina_file.c +++ b/src/lib/eina/eina_file.c @@ -898,6 +898,16 @@ eina_file_refresh(Eina_File *file) return r; } +EAPI Eina_Bool +eina_file_unlink(const char *pathname) +{ + if ( unlink(pathname) < 0) + { +return EINA_FALSE; + } + return EINA_TRUE; +} + EAPI void * eina_file_map_all(Eina_File *file, Eina_File_Populate rule) { diff --git a/src/lib/eina/eina_file_win32.c b/src/lib/eina/eina_file_win32.c index 54b5d90..fe83c67 100644 --- a/src/lib/eina/eina_file_win32.c +++ b/src/lib/eina/eina_file_win32.c @@ -821,6 +821,30 @@ eina_file_open(const char *path, Eina_Bool shared) return NULL; } +EAPI Eina_Bool +eina_file_unlink(const char *pathname) +{ + char *unlink_path = eina_file_path_sanitize(pathname); + Eina_File *file = eina_hash_find(_eina_file_cache, unlink_path); + + if (file) + { +if (file->handle != INVALID_HANDLE_VALUE) + { + CloseHandle(file->handle); + file->handle = INVALID_HANDLE_VALUE; + } + } + + if ( unlink(unlink_path) < 0) + { +return EINA_FALSE; + } + + return EINA_TRUE; +} + + EAPI Eina_Iterator *eina_file_xattr_get(Eina_File *file EINA_UNUSED) { return NULL; diff --git a/src/tests/eina/eina_test_file.c b/src/tests/eina/eina_test_file.c index c82f600..e3c60b6 100644 --- a/src/tests/eina/eina_test_file.c +++ b/src/tests/eina/eina_test_file.c @@ -824,6 +824,45 @@ START_TEST(eina_test_file_mktemp) } END_TEST +int create_file_not_empty(const char *file_name, Eina_Tmpstr **test_file_path, Eina_Bool close_file) +{ + const char *data = "abcdefghijklmnopqrstuvwxyz"; + int data_size = strlen(data); + int wr_size; + int fd = eina_file_mkstemp(file_name, test_file_path); + fail_if(fd <= 0); + wr_size = write(fd, data, data_size); + if(close_file == EINA_TRUE) + { + close(fd); + fd = 0; + } + fail_if(wr_size != data_size); + return fd; +} + +START_TEST(eina_test_file_unlink) +{ + int fd; + Eina_File *file; + Eina_Tmpstr *test_file_path; + const char *tmpfile = "eina_file_test_XX"; + + eina_init(); + + /*If file was not opened as 'eina'*/ + fd = create_file_not_empty(tmpfile, _file_path, EINA_TRUE); + fail_if( !eina_file_unlink(test_file_path) ); + + /*If file was opened as 'eina'*/ + fd = create_file_not_empty(tmpfile, _file_path, EINA_TRUE); + fail_if( !eina_file_open(test_file_path, EINA_FALSE) ); + fail_if( !eina_file_unlink(test_file_path) ); + + eina_shutdown(); +} +END_TEST + void eina_test_file(TCase *tc) { @@ -840,4 +879,6 @@ eina_test_file(TCase *tc) tcase_add_test(tc, eina_test_file_copy); tcase_add_test(tc, eina_test_file_statat); tcase_add_test(tc, eina_test_file_mktemp); + tcase_add_test(tc, eina_test_file_unlink); + } --
[EGIT] [core/efl] master 10/13: evas_async_events: integrated Ecore_Pipe in evas_async_events
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ea0492e0c6912af704b14e51ea80715e2486ef2d commit ea0492e0c6912af704b14e51ea80715e2486ef2d Author: Ivan Furs <i.f...@samsung.com> Date: Tue Feb 7 13:40:48 2017 -0800 evas_async_events: integrated Ecore_Pipe in evas_async_events Summary: Integrated Ecore_Pipe in evas_async_events Reviewers: #eflete, raster, jpeg, vtorri, artem.popov, cedric Reviewed By: cedric Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4622 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/lib/evas/canvas/evas_async_events.c | 182 ++-- 1 file changed, 57 insertions(+), 125 deletions(-) diff --git a/src/lib/evas/canvas/evas_async_events.c b/src/lib/evas/canvas/evas_async_events.c index 32236e8..a3b0303 100644 --- a/src/lib/evas/canvas/evas_async_events.c +++ b/src/lib/evas/canvas/evas_async_events.c @@ -7,29 +7,15 @@ #endif #include -#include "evas_common_private.h" -#include "evas_private.h" - #ifdef _WIN32 - # include - -# define pipe_write(fd, buffer, size) send((fd), (char *)(buffer), size, 0) -# define pipe_read(fd, buffer, size) recv((fd), (char *)(buffer), size, 0) -# define pipe_close(fd) closesocket(fd) -# define PIPE_FD_ERROR SOCKET_ERROR - -#else - -# include - -# define pipe_write(fd, buffer, size) write((fd), buffer, size) -# define pipe_read(fd, buffer, size) read((fd), buffer, size) -# define pipe_close(fd) close(fd) -# define PIPE_FD_ERROR -1 - #endif /* ! _WIN32 */ +#include + +#include "evas_common_private.h" +#include "evas_private.h" +#include "Ecore.h" typedef struct _Evas_Event_Async Evas_Event_Async; struct _Evas_Event_Async @@ -62,8 +48,8 @@ static int _thread_id = -1; static int _thread_id_max = 0; static int _thread_id_update = 0; -static int _fd_write = -1; -static int _fd_read = -1; +static Eina_Bool _write_error = EINA_TRUE; +static Eina_Bool _read_error = EINA_TRUE; static pid_t _fd_pid = 0; static Eina_Spinlock async_lock; @@ -71,53 +57,37 @@ static Eina_Inarray async_queue; static Evas_Event_Async *async_queue_cache = NULL; static unsigned int async_queue_cache_max = 0; +static Ecore_Pipe *_async_pipe = NULL; + static int _init_evas_event = 0; +static const int wakeup = 1; -Eina_Bool -_evas_fd_close_on_exec(int fd) +static void _evas_async_events_fd_blocking_set(Eina_Bool blocking EINA_UNUSED); +static void +_async_events_pipe_read_cb(void *data EINA_UNUSED, void *buf, unsigned int len) { -#ifdef HAVE_FCNTL - int flags; - - flags = fcntl(fd, F_GETFD); - if (flags == -1) - return EINA_FALSE; - - flags |= FD_CLOEXEC; - if (fcntl(fd, F_SETFD, flags) == -1) - return EINA_FALSE; - return EINA_TRUE; -#else - (void) fd; - return EINA_FALSE; -#endif + if (wakeup == *(int*)buf && sizeof(int) == len) + _evas_async_events_fd_blocking_set(EINA_FALSE); } int evas_async_events_init(void) { - int filedes[2]; if (_init_evas_event++) return _init_evas_event; _fd_pid = getpid(); - if (pipe(filedes) == -1) + _async_pipe = ecore_pipe_add(_async_events_pipe_read_cb, NULL); + if ( !_async_pipe ) { - _init_evas_event = 0; - return 0; +_init_evas_event = 0; +return 0; } - - _evas_fd_close_on_exec(filedes[0]); - _evas_fd_close_on_exec(filedes[1]); - - _fd_read = filedes[0]; - _fd_write = filedes[1]; - -#ifdef HAVE_FCNTL - if (fcntl(_fd_read, F_SETFL, O_NONBLOCK) < 0) ERR("Can't set NONBLOCK on async fd"); -#endif + ecore_pipe_freeze(_async_pipe); + _read_error = EINA_FALSE; + _write_error = EINA_FALSE; eina_spinlock_new(_lock); eina_inarray_step_set(_queue, sizeof (Eina_Inarray), sizeof (Evas_Event_Async), 16); @@ -151,10 +121,9 @@ evas_async_events_shutdown(void) eina_spinlock_free(_lock); eina_inarray_flush(_queue); - pipe_close(_fd_read); - pipe_close(_fd_write); - _fd_read = -1; - _fd_write = -1; + ecore_pipe_del(_async_pipe); + _read_error = EINA_TRUE; + _write_error = EINA_TRUE; return _init_evas_event; } @@ -173,64 +142,46 @@ EAPI int evas_async_events_fd_get(void) { _evas_async_events_fork_handle(); - return _fd_read; + return ecore_pipe_read_fd(_async_pipe); } static int _evas_async_events_process_single(void) { - int ret, wakeup; - - ret = pipe_read(_fd_read, , sizeof(int)); - if (ret < 0) - { -switch (errno) - { - case EBADF: - case EINVAL: - case EIO: - case EISDIR: - _fd_read = -1; - } + if (ecore_pipe_wait(_async_pipe, 1, 0.1) != 1) + return 0; -return ret; - } - - if (ret == sizeof(int)) - { -Evas_Event_Async *ev; -unsig
[EGIT] [core/efl] master 01/04: ecore_file: add case to properly rename a file in Windows
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=12ee780653f7d4748fa682e3c9bc0401382721b6 commit 12ee780653f7d4748fa682e3c9bc0401382721b6 Author: Ivan Furs <i.f...@samsung.com> Date: Thu Jan 12 16:24:31 2017 -0800 ecore_file: add case to properly rename a file in Windows Summary: If the file with a new path was created and 'rename' wants to replace the old path to the new path. 'rename' will return: Windows 7: -1 (errno=EEXIST) (EEXIST == 17) Ubuntu: 0 **EEXIST** **Ubuntu**: The link named by new is a directory that is not an empty directory. (https://linux.die.net/man/3/rename) **Windows 7**: Files exist. An attempt has been made to create a file that already exists. For example, the _O_CREAT and _O_EXCL flags are specified in an _open call, but the named file already exists.(https://msdn.microsoft.com/en-us/library/5814770t.aspx) Test Plan: **Sample code to rename in Linux and Windows if the file with the new name already exists:** int main() { const char *_old = "old"; const char *_new = "new"; int fd1 = open(_old, O_CREAT); close(fd1); int fd2 = open(_new, O_CREAT); close(fd2); printf("rename:\t%s -> %s\n", _old, _new); int r = rename(_old, _new); if (r == 0) { printf("GOOD\n"); } else { printf("CODE ERROR:\n" ); printf(" -rename...: %d\n", r); printf(" -errno: %d\n", errno); } return 0; } Reviewers: raster, vtorri, jpeg, NikaWhite, reutskiy.v.v, an.kroitor, cedric Reviewed By: cedric Subscribers: artem.popov, cedric, jpeg Tags: #efl, #windows Differential Revision: https://phab.enlightenment.org/D4561 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/lib/ecore_file/ecore_file.c | 15 +++ 1 file changed, 15 insertions(+) diff --git a/src/lib/ecore_file/ecore_file.c b/src/lib/ecore_file/ecore_file.c index dd53db1..6e341ea 100644 --- a/src/lib/ecore_file/ecore_file.c +++ b/src/lib/ecore_file/ecore_file.c @@ -508,6 +508,21 @@ ecore_file_mv(const char *src, const char *dst) goto PASS; } } +#ifdef _WIN32 + if (errno == EEXIST) +{ + struct _stat s; + _stat(dst, ); + if (_S_IFREG & s.st_mode) + { + ecore_file_unlink(dst); + if (rename(src, dst)) +{ + return EINA_TRUE; +} + } +} +#endif goto FAIL; } --
[EGIT] [core/efl] master 01/01: eio: Correct deletion backend
nikawhite pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3df48e281e44501b797c012c4bef32cd0090fa9c commit 3df48e281e44501b797c012c4bef32cd0090fa9c Author: Ivan Furs <i.f...@samsung.com> Date: Tue Dec 27 16:20:58 2016 +0200 eio: Correct deletion backend Summary: This patch fixes the bug Fileselector. When backend is deleted need to remove event handler from the list. This commit adds ecore_main_win32_handler_del for correct clean handlers for cases when monitor backend was created by eio_monitor_backend_add(Windows method) or eio_monitor_fallback_add. To remove them needed to use eio_monitor_backend_del(Windows method) or eio_monitor_fallback_del. To identify the method which should free backend was added flag monitor->fallback instead of using static _eio_monitor_win32_native. This solves conflicts if 2 monitors was created and the second monitor changed the _eio_monitor_win32_native variable value. When 1 monitor removed it will be deleted correctly . @fix Reviewers: NikaWhite Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4518 --- src/lib/eio/eio_monitor_win32.c | 9 - 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/lib/eio/eio_monitor_win32.c b/src/lib/eio/eio_monitor_win32.c index 60f9aa3..05374f1 100644 --- a/src/lib/eio/eio_monitor_win32.c +++ b/src/lib/eio/eio_monitor_win32.c @@ -56,8 +56,6 @@ struct _Eio_Monitor_Backend Eio_Monitor_Win32_Watcher *watcher_parent; }; -static Eina_Bool _eio_monitor_win32_native = EINA_FALSE; - static Eina_Bool _eio_monitor_win32_cb(void *data, Ecore_Win32_Handler *wh EINA_UNUSED) { @@ -313,6 +311,7 @@ _eio_monitor_win32_watcher_free(Eio_Monitor_Win32_Watcher *w) { if (!w) return; + ecore_main_win32_handler_del(w->h); eina_stringshare_del(w->file); eina_stringshare_del(w->current); CloseHandle(w->event); @@ -402,7 +401,7 @@ void eio_monitor_backend_add(Eio_Monitor *monitor) if (!backend->watcher_parent) goto free_backend_dir; - _eio_monitor_win32_native = EINA_TRUE; + monitor->fallback = EINA_FALSE; monitor->backend = backend; eina_stringshare_del(current); @@ -418,13 +417,13 @@ void eio_monitor_backend_add(Eio_Monitor *monitor) free(backend); fallback: INF("falling back to poll monitoring"); - _eio_monitor_win32_native = EINA_FALSE; + monitor->fallback = EINA_TRUE; eio_monitor_fallback_add(monitor); } void eio_monitor_backend_del(Eio_Monitor *monitor) { - if (!_eio_monitor_win32_native) + if (monitor->fallback) { eio_monitor_fallback_del(monitor); return; --
[EGIT] [core/efl] master 05/05: Eio_monitor: support native monitor for Win32 (T4978)
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1c0b3668e16792ebbcd9e950daf6c79475f3ecc4 commit 1c0b3668e16792ebbcd9e950daf6c79475f3ecc4 Author: Ivan Furs <i.f...@samsung.com> Date: Fri Dec 16 15:27:09 2016 -0800 Eio_monitor: support native monitor for Win32 (T4978) Test Plan: eio_monitor_backend_add() and eio_monitor_fallback_add use different structures **eio_monitor_backend_add() ** struct _Eio_Monitor_Backend { Eio_Monitor *parent; Eio_Monitor_Win32_Watcher *watcher_file; Eio_Monitor_Win32_Watcher *watcher_dir; Eio_Monitor_Win32_Watcher *watcher_parent; }; **eio_monitor_fallback_add()** struct _Eio_Monitor_Backend { Eio_Monitor *parent; Eina_Stat self; Eina_Hash *children; Ecore_Timer *timer; Ecore_Idler *idler; Ecore_Thread *work; int version; Eina_Bool delete_me : 1; Eina_Bool initialised : 1; Eina_Bool destroyed : 1; }; therefore, an error occurs **void eio_monitor_backend_del**(Eio_Monitor *monitor) { if (!_eio_monitor_win32_native) <--_eio_monitor_win32_native is EINA_TRUE { eio_monitor_fallback_del(monitor); <--ignored-- return; <--ignored-- } _eio_monitor_win32_watcher_free(monitor->backend->watcher_parent); _eio_monitor_win32_watcher_free(monitor->backend->watcher_dir); _eio_monitor_win32_watcher_free(monitor->backend->watcher_file); free(monitor->backend); monitor->backend = NULL; } Reviewers: raster, vtorri, an.kroitor, jpeg, reutskiy.v.v, FurryMyad, cedric Reviewed By: cedric Subscribers: vtorri, artem.popov, cedric, jpeg Tags: #windows, #efl Differential Revision: https://phab.enlightenment.org/D4492 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/lib/eio/eio_monitor_win32.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/eio/eio_monitor_win32.c b/src/lib/eio/eio_monitor_win32.c index 43c38f3..60f9aa3 100644 --- a/src/lib/eio/eio_monitor_win32.c +++ b/src/lib/eio/eio_monitor_win32.c @@ -418,6 +418,7 @@ void eio_monitor_backend_add(Eio_Monitor *monitor) free(backend); fallback: INF("falling back to poll monitoring"); + _eio_monitor_win32_native = EINA_FALSE; eio_monitor_fallback_add(monitor); } --
[EGIT] [tools/eflete] master 01/01: [Bug][Hosting][Windows] Project manager: ignore lock file on WIN32
nikawhite pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=fdc2634295e9ffc5b6161c7a5e5b128da96a8b00 commit fdc2634295e9ffc5b6161c7a5e5b128da96a8b00 Author: Ivan Furs <i.f...@samsung.com> Date: Mon Aug 22 19:43:56 2016 +0300 [Bug][Hosting][Windows] Project manager: ignore lock file on WIN32 Reviewers: reutskiy.v.v, cedric, raster, NikaWhite Subscribers: raster, artem.popov Differential Revision: https://phab.enlightenment.org/D4248 --- src/bin/project_manager/project_manager.c | 38 +++ src/bin/project_manager/project_manager.h | 2 +- src/bin/project_manager/project_manager_open.c| 2 +- src/bin/project_manager/project_manager_private.h | 4 +++ 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/bin/project_manager/project_manager.c b/src/bin/project_manager/project_manager.c index bb4769b..012febc 100644 --- a/src/bin/project_manager/project_manager.c +++ b/src/bin/project_manager/project_manager.c @@ -84,30 +84,42 @@ _lock_try(const char *path, Eina_Bool check, int *pro_fd) } #else Eina_Bool -_lock_try(const char *path, Eina_Bool check, HFILE *pro_fd) +_lock_try(const char *path, Eina_Bool check, HANDLE *pro_fd) { - LPOFSTRUCT lpReOpenBuff; - HFILE fd = OpenFile(path, lpReOpenBuff, OF_READWRITE); - if (fd == HFILE_ERROR) + LPCTSTR lpFileName = path; + DWORD dwDesiredAccess = GENERIC_READ|GENERIC_WRITE; + DWORD dwShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE; + LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL; + DWORD dwCreationDisposition = OPEN_EXISTING; + DWORD dwFlagsAndAttributes = 0; + HANDLE hTemplateFile = NULL; + HANDLE fd = CreateFile(lpFileName, + dwDesiredAccess, + dwShareMode, + lpSecurityAttributes, + dwCreationDisposition, + dwFlagsAndAttributes, + hTemplateFile); + + if (fd == INVALID_HANDLE_VALUE) { - ERR("The file '%s' cannot be opened in mode read-write!", path); - return false; +ERR("The file '%s' cannot be opened in mode read-write!", path); +return !check; } if (!check) { - CloseHandle(fd); - return false; +CloseHandle(fd); +return true; } - - if (pro_fd) +if (pro_fd) { *pro_fd = fd; return true; } - CloseHandle(fd); - return false; +CloseHandle(fd); +return false; } #endif @@ -654,7 +666,7 @@ pm_project_close(Project *project) eet_close(project->ef); #ifdef _WIN32 - if (project->pro_fd != HFILE_ERROR) + if (project->pro_fd != INVALID_HANDLE_VALUE) CloseHandle(project->pro_fd); #else if (project->pro_fd != -1) diff --git a/src/bin/project_manager/project_manager.h b/src/bin/project_manager/project_manager.h index ceb07d1..70906a6 100644 --- a/src/bin/project_manager/project_manager.h +++ b/src/bin/project_manager/project_manager.h @@ -58,7 +58,7 @@ struct _Project int version; /** File descriptor of open "*.pro" file. Needed for keep that file locked*/ #ifdef _WIN32 - HFILE pro_fd; + HANDLE pro_fd; #else int pro_fd; #endif diff --git a/src/bin/project_manager/project_manager_open.c b/src/bin/project_manager/project_manager_open.c index 7227761..211367a 100644 --- a/src/bin/project_manager/project_manager_open.c +++ b/src/bin/project_manager/project_manager_open.c @@ -69,7 +69,7 @@ _project_open_feedback_job(void *data, Ecore_Thread *th) int tmp_len; Eina_Stringshare *message = NULL; #ifdef _WIN32 -HFILE pro_fd = -1; +HANDLE pro_fd = NULL; #else int pro_fd; #endif diff --git a/src/bin/project_manager/project_manager_private.h b/src/bin/project_manager/project_manager_private.h index 940276d..27cb6f2 100644 --- a/src/bin/project_manager/project_manager_private.h +++ b/src/bin/project_manager/project_manager_private.h @@ -134,7 +134,11 @@ void _project_open_internal(Project_Thread *ptd); * * @return true - file locked succesfull, else failed to lock. */ +#ifndef _WIN32 Eina_Bool _lock_try(const char *path, Eina_Bool check, int *pro_fd); +#else +Eina_Bool _lock_try(const char *path, Eina_Bool check, HANDLE *pro_fd); +#endif /* Add dummy group with name ___eflete_internal_group___. * This group will be used as pointer to edje_edit object, --
[EGIT] [tools/eflete] master 01/01: [Bug][Hosting][wWindows] Bypass F_GETLK(Linux API) for Windows
nikawhite pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=0aadc6d5c5d988f1b0259c7eced4e07e3be9082d commit 0aadc6d5c5d988f1b0259c7eced4e07e3be9082d Author: Ivan Furs <i.f...@samsung.com> Date: Tue Aug 16 15:42:00 2016 +0300 [Bug][Hosting][wWindows] Bypass F_GETLK(Linux API) for Windows Reviewers: reutskiy.v.v, cedric, raster, NikaWhite Subscribers: artem.popov, raster Tags: #eflete Differential Revision: https://phab.enlightenment.org/D4231 --- src/bin/project_manager/project_manager.c | 15 ++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/bin/project_manager/project_manager.c b/src/bin/project_manager/project_manager.c index 9b88c76..ee9d8f4 100644 --- a/src/bin/project_manager/project_manager.c +++ b/src/bin/project_manager/project_manager.c @@ -48,6 +48,7 @@ _project_dev_file_create(Project *pro) Eina_Bool _lock_try(const char *path, Eina_Bool check) { +#ifndef _WIN32 struct flock lock, savelock; int fd = open(path, O_RDWR); @@ -69,7 +70,19 @@ _lock_try(const char *path, Eina_Bool check) savelock.l_pid = getpid(); fcntl(fd, F_SETLK, ); } - +#else + LPOFSTRUCT lpReOpenBuff; + HFILE fd = OpenFile(path, lpReOpenBuff, OF_READWRITE); + if (fd == HFILE_ERROR) + { + ERR("The file '%s' cannot be opened in mode read-write!", path); + return false; + } + if (!check) + { + CloseHandle(fd); + } +#endif return true; } --
[EGIT] [core/efl] master 01/01: [Bug] EFL memory leak on Windows(handler continuously increasing)
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4387f34b5475bdf6136a12fdf791efe3131d07ac commit 4387f34b5475bdf6136a12fdf791efe3131d07ac Author: Ivan Furs <i.f...@samsung.com> Date: Wed Jul 13 21:01:50 2016 +0900 [Bug] EFL memory leak on Windows(handler continuously increasing) Summary: Fix: event need to clese when create event: event = WSACreateEvent(); Reviewers: bowonryu, herb, Jaehyun, thiepha, Hermet, jaehwan, cedric, raster Reviewed By: raster Subscribers: NikaWhite, reutskiy.v.v, artem.popov Differential Revision: https://phab.enlightenment.org/D4157 --- src/lib/ecore/ecore_main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c index 999b3f8..354edc9 100644 --- a/src/lib/ecore/ecore_main.c +++ b/src/lib/ecore/ecore_main.c @@ -2603,9 +2603,8 @@ _ecore_main_win32_select(int nfds EINA_UNUSED, if (timeout == 0) { -free(objects); -free(sockets); -return 0; +res = 0; +goto err; } result = _ecore_main_win32_objects_wait(objects_nbr, @@ -2701,6 +2700,7 @@ _ecore_main_win32_select(int nfds EINA_UNUSED, res = -1; } +err : /* Remove event objects again */ for (i = 0; i < events_nbr; i++) WSACloseEvent(objects[i]); --
Re: [E-devel] Porting of Evas to a proprietary backend
Hey again, I'm been away from this subject for a while, but last week I got permission to work on this so I'll continue from where I stopped. Talking with cedric at the IRC channel (btw I go by 'haole' there), he suggested that I should use the software buffer engine at first and just implement an ecore_evas and ecore_mybackend layer. That's what I'm aiming for right now. I'm basing my implementation on the ecore_sdl module because it looks similar to my application: just one big window and a dumb framebuffer. As there seems to be no documentation about doing something like this (after all, it's kind of rare and almost never that necessary anyway), I've been mostly reading ecore and ecore_evas code to get a grip on the concepts. But I have some doubts, so let's go: My application is a set top box, so I don't have mouse events - only IR remote ones. That doesn't seem hard to port by looking at ecore_sdl.c. From what I understood, all the fun stuff is done in ecore_evas_sdl and everything from ecore_sdl gets called from there (like ecore_sdl_init and the event handler). I just wanted to confirm that there is nothing like some imported functions from the ecore libs that I need to implement. Things doesn't look complex on the ecore_evas side too. As far as I can tell, I need only to implement an 'ecore_evas_mybackend_new' and that's that! The core stuff that I need to write are the functions defined in the struct of type Ecore_Evas_Engine_Func. Please correct me if I'm wrong. Well, some of my doubts are: - How should I register my window with ecore_event_window_register in a mouseless backend? - I would expect that the dumb framebuffer rendering would happen in a callback related to 'render' or something like that, but in the SDL case it seems to happen in ecore_evas_resize... why is that? Am I understanding this correctly? - What is the best way to integrate my module with EFL's build system (1.7.5 non-merged tree)? Right now, I've just copied most of the applicable autotools code from ecore_sdl to my backend (and I'll add some more stuff to do the linking with my external library). Is this a good approach or is there a better one? I'm sorry for the long e-mail, but I'm considering writing some sort of documentation for this kind of porting and ruminating things like this may help in the future. :) Thanks in advance, Ivan On Thu, 25 Oct 2012 03:43:55 -0200, Vincent Torri vincent.to...@gmail.com wrote: On Thu, Oct 25, 2012 at 3:10 AM, Ivan Reche ivan.re...@gmail.com wrote: I've convinced some managers in the company I work (a huge player in the set top boxes market) to let me build a prototype of a new software using the EFL. I have one month to do so. However, most of our set tops provide an embedded Linux environment with no support to X or anything similar. In fact, some STBs won't even provide us with a Linux environment (we have to run the software in the bare metal, implementing a few basic tools to have the feel of an OS). I've talked a little about this with some nice guys at the IRC channel, but I would like to create this thread so we can give the opportunity to other developers in the same situation to use this as a reference. I've never done a project with the EFL before (I'm creating my first ones right now), so I have some doubts: - is it reasonable to port basic Evas functionality to this proprietary API (that comes with functions to draw lines, rects, bitmaps, etc) in less than a month? I need to setup a simple prototype to prove the concept; - is it reasonable to port this proprietary stuff to Wayland and then use the EFL? Probably not, I guess :) - for Evas and Edje, what would be the order of magnitude of the footprint? A few kilobytes? A few megabytes? There is information about the RAM usage in the site, but I couldn't find numbers about the size of the binaries. Usually we have around 32 MB of FLASH memory and 512 MB of RAM; - as most of our set tops run on MIPS, how well is this architecture supported? From the site, I'd guess that this shouldn't be an issue. i've ported the EFL to pocket pc and i've run it on a ipaq H3970 (48MB ROM, 64MB RAM, 400MHz) I've never done this kind of work before (graphical APIs), although I'm an experienced C programmer. Do you have any material/books/whatever to recommend me to study to ease my learning curve? for the evas part, it's a matter of creating a new engine by implementing some functions. There is no need to know graphical stuff for that part. If you know how to natively display an image with your hardware, you have done 80% of the work. Vincent -- Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct
[E-devel] Porting of Evas to a proprietary backend
I've convinced some managers in the company I work (a huge player in the set top boxes market) to let me build a prototype of a new software using the EFL. I have one month to do so. However, most of our set tops provide an embedded Linux environment with no support to X or anything similar. In fact, some STBs won't even provide us with a Linux environment (we have to run the software in the bare metal, implementing a few basic tools to have the feel of an OS). I've talked a little about this with some nice guys at the IRC channel, but I would like to create this thread so we can give the opportunity to other developers in the same situation to use this as a reference. I've never done a project with the EFL before (I'm creating my first ones right now), so I have some doubts: - is it reasonable to port basic Evas functionality to this proprietary API (that comes with functions to draw lines, rects, bitmaps, etc) in less than a month? I need to setup a simple prototype to prove the concept; - is it reasonable to port this proprietary stuff to Wayland and then use the EFL? Probably not, I guess :) - for Evas and Edje, what would be the order of magnitude of the footprint? A few kilobytes? A few megabytes? There is information about the RAM usage in the site, but I couldn't find numbers about the size of the binaries. Usually we have around 32 MB of FLASH memory and 512 MB of RAM; - as most of our set tops run on MIPS, how well is this architecture supported? From the site, I'd guess that this shouldn't be an issue. I've never done this kind of work before (graphical APIs), although I'm an experienced C programmer. Do you have any material/books/whatever to recommend me to study to ease my learning curve? Thanks in advance for any help. I'll post my results as I advance in this activity here in this thread. Ivan Filgueiras -- Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] E SVN: sachiel IN trunk/eina/src: include tests
On Wed, Sep 9, 2009 at 11:13 AM, Vincent Torrivto...@univ-evry.fr wrote: On Wed, 9 Sep 2009, Enlightenment SVN wrote: Modified: trunk/eina/src/include/eina_inlist.h === --- trunk/eina/src/include/eina_inlist.h 2009-09-09 10:44:25 UTC (rev 42365) +++ trunk/eina/src/include/eina_inlist.h 2009-09-09 14:05:31 UTC (rev 42366) @@ -52,7 +52,7 @@ #define EINA_INLIST Eina_Inlist __in_list #define EINA_INLIST_GET(Inlist) (((Inlist)-__in_list)) -#define EINA_INLIST_CONTAINER_GET(ptr, type) ((type *) ((Eina_Inlist *) ptr - offsetof(type, __in_list))) +#define EINA_INLIST_CONTAINER_GET(ptr, type) ((type *) ((char *) ptr - offsetof(type, __in_list))) Iirc, i have already said that offsetof does not exist on Windows CE That macro was already there, I just fixed the cast to get the right address. I don't think it's used anywhere so it can be replaced by the macros below. Also, I don't know if it is important or not, but on OpenSolaris with suncc, char is a signed type (-128...127) And char *? Vincent EAPI Eina_Inlist * eina_inlist_append(Eina_Inlist *in_list, Eina_Inlist *in_item) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT; EAPI Eina_Inlist * eina_inlist_prepend(Eina_Inlist *in_list, Eina_Inlist *in_item) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT; @@ -67,9 +67,14 @@ EAPI Eina_Iterator *eina_inlist_iterator_new(const Eina_Inlist *in_list) EINA_MALLOC EINA_WARN_UNUSED_RESULT; EAPI Eina_Accessor *eina_inlist_accessor_new(const Eina_Inlist *in_list) EINA_MALLOC EINA_WARN_UNUSED_RESULT; -#define EINA_INLIST_FOREACH(list, l) for (l = (void*)list; l; l = (void*)(l-__in_list.next)) -#define EINA_INLIST_REVERSE_FOREACH(list, l) for (l = (list ? (void*)(list-last) : NULL); l; l = (void*)(l-__in_list.prev)) +/* This two macros are helpers for the _FOREACH ones, don't use them */ +#define INLIST_OFFSET(ref) ((char*)(ref)-__in_list - (char*)(ref)) +#define INLIST_CONTAINER(ref, ptr) (void*)((char*)(ptr) - INLIST_OFFSET(ref)) +#define EINA_INLIST_FOREACH(list, l) for (l = (list ? INLIST_CONTAINER(l, list) : NULL); l; l = (EINA_INLIST_GET(l)-next ? INLIST_CONTAINER(l, EINA_INLIST_GET(l)-next) : NULL)) +#define EINA_INLIST_REVERSE_FOREACH(list, l) for (l = (list ? INLIST_CONTAINER(l, list-last) : NULL); l; l = (EINA_INLIST_GET(l)-prev ? INLIST_CONTAINER(l, EINA_INLIST_GET(l)-prev) : NULL)) + + /** * @} */ Modified: trunk/eina/src/tests/eina_test_inlist.c === --- trunk/eina/src/tests/eina_test_inlist.c 2009-09-09 10:44:25 UTC (rev 42365) +++ trunk/eina/src/tests/eina_test_inlist.c 2009-09-09 14:05:31 UTC (rev 42366) @@ -30,8 +30,8 @@ typedef struct _Eina_Test_Inlist Eina_Test_Inlist; struct _Eina_Test_Inlist { + int i; EINA_INLIST; - int i; }; static Eina_Test_Inlist* @@ -63,13 +63,13 @@ tmp = _eina_test_inlist_build(1664); lst = eina_inlist_append_relative(lst, EINA_INLIST_GET(tmp), lst); fail_if(!lst); - fail_if(((Eina_Test_Inlist*)lst)-i != 42); + fail_if(EINA_INLIST_CONTAINER_GET(lst, Eina_Test_Inlist)-i != 42); prev = tmp; tmp = _eina_test_inlist_build(3227); lst = eina_inlist_prepend_relative(lst, EINA_INLIST_GET(tmp), EINA_INLIST_GET(prev)); fail_if(!lst); - fail_if(((Eina_Test_Inlist*)lst)-i != 42); + fail_if(EINA_INLIST_CONTAINER_GET(lst, Eina_Test_Inlist)-i != 42); lst = eina_inlist_remove(lst, EINA_INLIST_GET(tmp)); @@ -111,16 +111,17 @@ fail_if(eina_error_get() != EINA_ERROR_SAFETY_FAILED); #endif - tmp = (Eina_Test_Inlist*) lst; + tmp = EINA_INLIST_CONTAINER_GET(lst, Eina_Test_Inlist); lst = eina_inlist_demote(lst, lst); - fail_if(lst == (Eina_Inlist*) tmp); + fail_if(EINA_INLIST_CONTAINER_GET(lst, Eina_Test_Inlist) == tmp); lst = eina_inlist_promote(lst, EINA_INLIST_GET(tmp)); - fail_if(lst != (Eina_Inlist*) tmp); + fail_if(lst != EINA_INLIST_GET(tmp)); - tmp = (Eina_Test_Inlist*) eina_inlist_find(lst, EINA_INLIST_GET(prev)); + tmp = EINA_INLIST_CONTAINER_GET(eina_inlist_find(lst, EINA_INLIST_GET(prev)), Eina_Test_Inlist); lst = eina_inlist_remove(lst, EINA_INLIST_GET(tmp)); - tmp = (Eina_Test_Inlist*) eina_inlist_find(lst, EINA_INLIST_GET(tmp)); + prev = eina_inlist_find(lst, EINA_INLIST_GET(tmp)); + tmp = prev ? EINA_INLIST_CONTAINER_GET(prev, Eina_Test_Inlist) : NULL; fail_if(tmp != NULL); while (lst) -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ enlightenment-svn mailing list enlightenment-...@lists.sourceforge.net
[E-devel] Resize with keyboard
Enforcing the window size limit made necessary to grow windows at least by the step, when one is set. Attached patch makes that. Index: src/bin/e_border.c === --- src/bin/e_border.c (revision 37101) +++ src/bin/e_border.c (working copy) @@ -2829,7 +2829,7 @@ _e_border_resize_key_down(void *data, int type, void *event) { Ecore_X_Event_Key_Down *ev = event; - int w, h; + int w, h, dx, dy; if (ev-event_win != action_input_win) return 1; @@ -2842,14 +2842,21 @@ w = action_border-w; h = action_border-h; + dx = e_config-border_keyboard.resize.dx; + if (dx action_border-client.icccm.step_w) + dx = action_border-client.icccm.step_w; + dy = e_config-border_keyboard.resize.dy; + if (dy action_border-client.icccm.step_h) + dy = action_border-client.icccm.step_h; + if (strcmp(ev-keysymbol, Up) == 0) - h -= _e_border_key_down_modifier_apply(ev-modifiers, e_config-border_keyboard.resize.dy); + h -= _e_border_key_down_modifier_apply(ev-modifiers, dy); else if (strcmp(ev-keysymbol, Down) == 0) - h += _e_border_key_down_modifier_apply(ev-modifiers, e_config-border_keyboard.resize.dy); + h += _e_border_key_down_modifier_apply(ev-modifiers, dy); else if (strcmp(ev-keysymbol, Left) == 0) - w -= _e_border_key_down_modifier_apply(ev-modifiers, e_config-border_keyboard.resize.dx); + w -= _e_border_key_down_modifier_apply(ev-modifiers, dx); else if (strcmp(ev-keysymbol, Right) == 0) - w += _e_border_key_down_modifier_apply(ev-modifiers, e_config-border_keyboard.resize.dx); + w += _e_border_key_down_modifier_apply(ev-modifiers, dx); else if (strcmp(ev-keysymbol, Return) == 0) goto stop; else if (strcmp(ev-keysymbol, Escape) == 0) - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[E-devel] Segv inserting text with tags
Attached patch removes an extra strcat that was causing a segv when inserting text with tags. Index: src/lib/canvas/evas_object_textblock.c === --- src/lib/canvas/evas_object_textblock.c (revision 37101) +++ src/lib/canvas/evas_object_textblock.c (working copy) @@ -2909,7 +2909,6 @@ strcpy(ttag2, + ); strcat(ttag2, ttag); } - strcat(ttag2, ttag); evas_textblock_cursor_format_append(o-cursor, ttag2); free(ttag2); } - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] enlightenment-devel Digest, Vol 30, Issue 41
On Fri, Oct 24, 2008 at 11:32 AM, flower-mei [EMAIL PROTECTED] wrote: hi, when the default.edc include icon_item.edc , it works well, that's to say it can't work when they are both included , and I have check that the names of the groups are different. thanks! It will be very hard to help you with your problem without any reference as to what you are doing or even what the exact problem is, what error edje_cc spits. Provide some detail and/or put your code somewhere for the rest to see. - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] enlightenment-devel Digest, Vol 30, Issue 41
2008/10/24 flower-mei [EMAIL PROTECTED]: I find that if my collections include more than one edc file it would be : edje_cc: Error. icon_item.edc:3 unhandled keyword group If It only include one edc file neither first nor the second it both work well, I don't know why it can't include more than one edc file? and I have checked the names of the groups are different thanks! collections { #include main_menu.edc #include icon_item.edc } Use reply-all, so you send to the list too. Again, without a look at your code, it's hard to see what's wrong, but testing here, I get edje to compile the file missing the closing } from the first group, which of course fails if there's a second group. So, check your { and } 在2008-10-24,Ivan [EMAIL PROTECTED] 写道: On Fri, Oct 24, 2008 at 11:32 AM, flower-mei [广告] 特惠尝必胜客26道新品 - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [RFC] Eina need to be renamed
On Fri, Oct 24, 2008 at 2:30 PM, Viktor Kojouharov [EMAIL PROTECTED] wrote: On Fri, 2008-10-24 at 11:30 -0400, Jose Gonzalez wrote: I think the vote is over. The result from http://www.misterpoll.com/polls/362996/results collected the opinion of 52 people. So I will stick with this result (and staying with eina, is sadly not an opinion). So I am going to rename eina with enema next week. You're kidding, right? You do know what enema means? I think raster presented that option out of frustration, and other people just voted on it for a quick laugh. Renaming a library to enema will potentially stop third-party (non oss) people from using it. Just like it's stopping the spreading of GIMP (you know, latex sex slave). I say go ahead and go with the result of the poll. It was presented as an option for the community to vote on. To be serious/responsible or not was their choice to make as well. Yes, lets go ahead and cripple our user base, because of a poorly picked name. Pants off!! And get ready for Enema! Compete with the big boys. Click here to find products to benefit your business. http://thirdpartyoffers.juno.com/TGL2141/fc/Ioyw6i3m7tDoYBjebNBWj8aZq9P1FTKQucTUSdnOhF2NEYXzgCpQzG/ - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] .desktop files for E17 applications
On Sat, Oct 11, 2008 at 3:41 PM, Ariszló [EMAIL PROTECTED] wrote: It seems that attachments are not forwarded to the list. How do you submit text files and png's to Enlightenment development? Sourceforge does not like binary attachments. You either post only text or upload your file somewhere and post the link. On Sat, Oct 11, 2008 at 7:47 PM, Diogo Dutra wrote: What attachment? On Sat, Oct 11, 2008 at 1:12 PM, Ariszló [EMAIL PROTECTED] wrote: The attachment contains xdg .desktop files for 8 E17 applications, 7 of which are new .desktop files. The 8th .desktop file is emphasis.desktop with GenericName added. All of the 8 .desktop files contain GenericName translations. The pixmaps subdirectory contains icons from Enlightenment svn reused as application icons. Some of them are only provided as placeholders but some others are so good and suit the application they represent so well that they could as well be used as final, imho. - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[E-devel] [PATCH] Split Window Manipulation dialog
As suggested when adding the move/resize with keyboard parameters turned this dialog too big, here's a patch that splits it in three simpler, smaller windows. Index: src/modules/conf_window_manipulation/e_int_config_window_manipulation.h === --- src/modules/conf_window_manipulation/e_int_config_window_manipulation.h (revision 36388) +++ src/modules/conf_window_manipulation/e_int_config_window_manipulation.h (working copy) @@ -6,7 +6,9 @@ #ifndef E_INT_CONFIG_WINDOW_MANIPULATION_H #define E_INT_CONFIG_WINDOW_MANIPULATION_H -EAPI E_Config_Dialog *e_int_config_window_manipulation(E_Container *con, const char *params __UNUSED__); +EAPI E_Config_Dialog *e_int_config_window_geometry(E_Container *con, const char *params __UNUSED__); +EAPI E_Config_Dialog *e_int_config_window_stacking(E_Container *con, const char *params __UNUSED__); +EAPI E_Config_Dialog *e_int_config_window_maxpolicy(E_Container *con, const char *params __UNUSED__); #endif #endif Index: src/modules/conf_window_manipulation/e_int_config_window_maxpolicy.c === --- src/modules/conf_window_manipulation/e_int_config_window_maxpolicy.c (revision 0) +++ src/modules/conf_window_manipulation/e_int_config_window_maxpolicy.c (revision 0) @@ -0,0 +1,168 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=5n-3f0^-2{2 + */ +#include e.h + +/* PROTOTYPES - same all the time */ +static void *_create_data(E_Config_Dialog *cfd); +static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); +static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); + +/* Actual config data we will be playing with whil the dialog is active */ +struct _E_Config_Dialog_Data +{ + /*- BASIC -*/ + int maximize_policy; + /*- ADVANCED -*/ + int maximize_direction; + int allow_manip; + int border_fix_on_shelf_toggle; +}; + +/* a nice easy setup function that does the dirty work */ +EAPI E_Config_Dialog * +e_int_config_window_maxpolicy(E_Container *con, const char *params __UNUSED__) +{ + E_Config_Dialog *cfd; + E_Config_Dialog_View *v; + + if (e_config_dialog_find(E, _config_window_maxpolicy_dialog)) return NULL; + v = E_NEW(E_Config_Dialog_View, 1); + + /* methods */ + v-create_cfdata = _create_data; + v-free_cfdata = _free_data; + v-basic.apply_cfdata = _basic_apply_data; + v-basic.create_widgets= _basic_create_widgets; + v-advanced.apply_cfdata = _advanced_apply_data; + v-advanced.create_widgets = _advanced_create_widgets; + /* create config diaolg for NULL object/data */ + cfd = e_config_dialog_new(con, + _(Window Maximize Policy), + E, _config_window_maxpolicy_dialog, + enlightenment/window_manipulation, 0, v, NULL); + return cfd; +} + +/**--CREATE--**/ +static void +_fill_data(E_Config_Dialog_Data *cfdata) +{ + cfdata-maximize_policy = (e_config-maximize_policy E_MAXIMIZE_TYPE); + if (cfdata-maximize_policy == E_MAXIMIZE_NONE) + cfdata-maximize_policy = E_MAXIMIZE_FULLSCREEN; + cfdata-maximize_direction = (e_config-maximize_policy E_MAXIMIZE_DIRECTION); + if (!cfdata-maximize_direction) + cfdata-maximize_direction = E_MAXIMIZE_BOTH; + cfdata-allow_manip = e_config-allow_manip; + cfdata-border_fix_on_shelf_toggle = e_config-border_fix_on_shelf_toggle; +} + +static void * +_create_data(E_Config_Dialog *cfd) +{ + /* Create cfdata - cfdata is a temporary block of config data that this +* dialog will be dealing with while configuring. it will be applied to +* the running systems/config in the apply methods +*/ + E_Config_Dialog_Data *cfdata; + + cfdata = E_NEW(E_Config_Dialog_Data, 1); + _fill_data(cfdata); + return cfdata; +} + +static void +_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + /* Free the cfdata */ + E_FREE(cfdata); +} + +/**--APPLY--**/ +static int +_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + /* Actually take our cfdata settings and apply them in real life */ + e_config-maximize_policy = cfdata-maximize_policy | cfdata-maximize_direction; + e_config_save_queue(); + return 1; /* Apply was OK */ +} + +static int +_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + /* Actually take our cfdata settings and apply them in real life */ + e_config-maximize_policy = cfdata-maximize_policy | cfdata-maximize_direction; + e_config-allow_manip = cfdata-allow_manip; + e_config-border_fix_on_shelf_toggle = cfdata-border_fix_on_shelf_toggle; + e_config_save_queue(); + return 1; /* Apply
Re: [E-devel] Enlightenment 17 from SVN requires CVS to configure
Is not E, but autopoint (a part of gettext) which requires cvs, so not much to do about it. On Tue, Sep 30, 2008 at 5:24 PM, Eric Sandall [EMAIL PROTECTED] wrote: Hey all, In the last week or so when trying to compile enlightenment (E17) from SVN, I receive this error: $ ./autogen.sh Running autopoint... autopoint: *** cvs program not found autopoint: *** Stop. Running aclocal... /usr/share/aclocal/autotrace.m4:7: warning: underquoted definition of AM_PATH_AUTOTRACE /usr/share/aclocal/autotrace.m4:7: run info '(automake)Extending aclocal' /usr/share/aclocal/autotrace.m4:7: or see http://sources.redhat.com/automake/automake.html#Extending-aclocal Running autoconf... Running autoheader... Running libtoolize... Running automake... configure.ac:164: required file `./config.rpath' not found config/Makefile.am:12: `%'-style pattern rules are a GNU make extension config/default/Makefile.am:28: `%'-style pattern rules are a GNU make extension If I install cvs, the above succeeds and E17 begins to configure: $ ./autogen.sh Running autopoint... Copying file ABOUT-NLS Copying file config.rpath Copying file m4/codeset.m4 Copying file m4/gettext.m4 Copying file m4/glibc21.m4 Copying file m4/iconv.m4 Copying file m4/intdiv0.m4 Copying file m4/inttypes-pri.m4 Copying file m4/inttypes.m4 Copying file m4/inttypes_h.m4 Copying file m4/isc-posix.m4 Copying file m4/lcmessage.m4 Copying file m4/lib-ld.m4 Copying file m4/lib-link.m4 Copying file m4/lib-prefix.m4 Copying file m4/nls.m4 Copying file m4/po.m4 Copying file m4/progtest.m4 Copying file m4/stdint_h.m4 Copying file m4/uintmax_t.m4 Copying file m4/ulonglong.m4 Copying file mkinstalldirs Copying file po/Makefile.in.in Copying file po/Makevars.template Copying file po/Rules-quot Copying file po/boldquot.sed Copying file po/[EMAIL PROTECTED] Copying file po/[EMAIL PROTECTED] Copying file po/insert-header.sin Copying file po/quot.sed Copying file po/remove-potcdate.sin Running aclocal... /usr/share/aclocal/autotrace.m4:7: warning: underquoted definition of AM_PATH_AUTOTRACE /usr/share/aclocal/autotrace.m4:7: run info '(automake)Extending aclocal' /usr/share/aclocal/autotrace.m4:7: or see http://sources.redhat.com/automake/automake.html#Extending-aclocal Running autoconf... Running autoheader... Running libtoolize... Running automake... config/Makefile.am:12: `%'-style pattern rules are a GNU make extension config/default/Makefile.am:28: `%'-style pattern rules are a GNU make extension checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no ... Other EFL packages compile without cvs installed (e.g. evas). Thanks, -sandalle -- Eric Sandall | Source Mage GNU/Linux Developer [EMAIL PROTECTED] PGP: 0xA8EFDD61 | http://www.sourcemage.org/ http://eric.sandall.us/ | http://counter.li.org/ #196285 - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[E-devel] Remove of fake_mouse_up
Two simple patches to get rid of the fake_mouse_up calls (and its log polluter). One for E and its core modules, the other for E-MODULES-EXTRA. Index: src/bin/e_fm.c === --- src/bin/e_fm.c (revision 36177) +++ src/bin/e_fm.c (working copy) @@ -5177,8 +5177,6 @@ { if (!ic-selected) _e_fm2_mouse_1_handler(ic, 0, ev-modifiers); _e_fm2_icon_menu(ic, ic-sd-obj, ev-timestamp); - e_util_evas_fake_mouse_up_later(evas_object_evas_get(ic-sd-obj), - ev-button); } } @@ -5432,8 +5430,6 @@ e_drag_xdnd_start(d, ic-drag.x + ic-x + ic-sd-x - ic-sd-pos.x, ic-drag.y + ic-y + ic-sd-y - ic-sd-pos.y); - e_util_evas_fake_mouse_up_later(evas_object_evas_get(ic-sd-obj), - 1); } } } @@ -5708,8 +5704,6 @@ else if (ev-button == 3) { _e_fm2_menu(sd-obj, ev-timestamp); - e_util_evas_fake_mouse_up_later(evas_object_evas_get(sd-obj), - ev-button); } } Index: src/bin/e_gadcon.c === --- src/bin/e_gadcon.c (revision 36177) +++ src/bin/e_gadcon.c (working copy) @@ -1695,7 +1695,6 @@ } e_menu_activate_mouse(mn, zone, cx, cy, 1, 1, E_MENU_POP_DIRECTION_DOWN, ev-timestamp); - e_util_evas_fake_mouse_up_later(gcc-gadcon-evas, ev-button); } } @@ -2305,8 +2304,6 @@ e_util_zone_current_get(e_manager_current_get()), cx + ev-output.x, cy + ev-output.y, 1, 1, E_MENU_POP_DIRECTION_DOWN, ev-timestamp); - e_util_evas_fake_mouse_up_later(gcc-gadcon-evas, - ev-button); } else if (ev-button == 1) { Index: src/bin/e_border.c === --- src/bin/e_border.c (revision 36177) +++ src/bin/e_border.c (working copy) @@ -5314,7 +5314,6 @@ e_drag_resize(drag, w, h); e_drag_start(drag, bd-drag.x, bd-drag.y); - e_util_evas_fake_mouse_up_later(bd-bg_evas, 1); } bd-drag.start = 0; } Index: src/bin/e_actions.c === --- src/bin/e_actions.c (revision 36177) +++ src/bin/e_actions.c (working copy) @@ -1468,7 +1468,6 @@ e_menu_post_deactivate_callback_set(m, _e_actions_cb_menu_end, NULL); e_menu_activate_mouse(m, zone, x, y, 1, 1, E_MENU_POP_DIRECTION_DOWN, ev-time); - e_util_container_fake_mouse_up_all_later(zone-container); } } } Index: src/bin/e_entry.c === --- src/bin/e_entry.c (revision 36177) +++ src/bin/e_entry.c (working copy) @@ -545,7 +545,6 @@ e_menu_activate_mouse(sd-popup, e_util_zone_current_get(man), x, y, 1, 1, E_MENU_POP_DIRECTION_DOWN, event-timestamp); - e_util_evas_fake_mouse_up_later(e, event-button); } #ifdef HAVE_ECORE_IMF Index: src/bin/e_toolbar.c === --- src/bin/e_toolbar.c (revision 36177) +++ src/bin/e_toolbar.c (working copy) @@ -290,7 +290,6 @@ ecore_x_pointer_xy_get(zone-container-win, x, y); e_menu_activate_mouse(mn, zone, x, y, 1, 1, E_MENU_POP_DIRECTION_DOWN, ev-timestamp); - e_util_evas_fake_mouse_up_later(tbar-gadcon-evas, ev-button); } static void Index: src/bin/e_shelf.c === --- src/bin/e_shelf.c (revision 36177) +++ src/bin/e_shelf.c (working copy) @@ -1233,7 +1233,6 @@ e_util_zone_current_get(e_manager_current_get()), cx + ev-output.x, cy + ev-output.y, 1, 1, E_MENU_POP_DIRECTION_DOWN, ev-timestamp); - e_util_evas_fake_mouse_up_later(es-gadcon-evas, ev-button); break; } } Index: src/bin/e_utils.c === --- src/bin/e_utils.c (revision 36177) +++ src/bin/e_utils.c (working copy) @@ -18,61 +18,16 @@ EAPI int starting = 1; EAPI int stopping = 0; -typedef struct _E_Util_Fake_Mouse_Up_Info E_Util_Fake_Mouse_Up_Info; - -struct _E_Util_Fake_Mouse_Up_Info -{ - Evas *evas; - int button; -}; - /* local subsystem functions */ static int _e_util_cb_delayed_del(void *data); -static void _e_util_container_fake_mouse_up_cb(void *data); static int _e_util_wakeup_cb(void *data); /* local subsystem globals */ static Ecore_Timer *_e_util_dummy_timer = NULL; /* externally accessible functions */ -EAPI void -e_util_container_fake_mouse_up_later(E_Container *con, int button) -{ - E_OBJECT_CHECK(con); - E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE); - printf(FIXME: NO MORE CONTAINER FAKE UP! MUST REMOVE CODE\n); - e_util_evas_fake_mouse_up_later(con-bg_evas, button); -} - EAPI void -e_util_container_fake_mouse_up_all_later(E_Container *con) -{ - E_OBJECT_CHECK(con); - E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE); - - e_util_container_fake_mouse_up_later(con, 1); -
Re: [E-devel] segfault in shelf configuration
Won't segv today, it's been fixed some weeks ago. On Fri, Sep 19, 2008 at 10:12 PM, The Rasterman Carsten Haitzler [EMAIL PROTECTED] wrote: On Sat, 30 Aug 2008 17:22:00 +1200 jochen schroeder [EMAIL PROTECTED] babbled: Hi all, I experience a segfault when configuring shelf contents. To reproduce: create a new shelf, right click select shelf-configuration (advanced). Configure shelf contents, add ibar remove ibox, remove pager - segfault. This is with my existing configuration. If I do the same after erasing my configuration directory and go to configure shelf contents of the existing shelf I cannot remove items. If I close the window and go to the shelf configuration again I don't see any items at all in the list and trying to add an item I get a segfault. This is on ubuntu hardy. Svn of yesterday. I've attached a backtrace of the first case. hmm - backtrace unfortunately just says memory going screwed by someone walking over ti writing where they shouldn't. who did ti and when it doesn't say... so i tried repeating what you did.. and no segv :( admittedly this is today - not 3 weeks ago :( -- - Codito, ergo sum - I code, therefore I am -- The Rasterman (Carsten Haitzler)[EMAIL PROTECTED] - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [PATCH] Move and Resize using only the keyboard
On Sun, Sep 14, 2008 at 3:20 PM, Gustavo Sverzut Barbieri [EMAIL PROTECTED] wrote: On Sun, Sep 14, 2008 at 2:07 AM, Gustavo Sverzut Barbieri [EMAIL PROTECTED] wrote: On Sun, Sep 14, 2008 at 1:53 AM, Gustavo Sverzut Barbieri [EMAIL PROTECTED] wrote: Guys, I really miss a feature from other window managers, at least KWin and WindowMaker, that is the option to move and resize windows using just the keyboard. Basically you activate a shortcut to enter the action mode, in which you use the keyboard arrows to move or resize the window and then you hit Enter to confirm or Escape to rollback, if you wait some seconds it will also confirm, since it's not a dangerous option, it is more intuitive (you don't even need to know you need to confirm)... if you say Oh, sh*t then you usually hit Escape and you'll learn it will rollback. This is implemented in the attached patch. It's very rough and needs some review, but it works nicely, except: - we'll have 2 items in the bindings for each action: Move and Move with keyboard, etc. - offsets are not configurable, they're fixed in 5px in each direction for each operation; - timeout is not configurable, it's 5s; - no geometry window while moving or resizing windows. The first point is really easy to remove, but then I guess it would impact the mouse bindings, anyone with more experience in that can confirm? The second and third are easy to add, but maybe it's too much. I'll add if required, but I want to avoid too much useless options going in. The last point I haven't looked at it, but I guess i can learn it from existing code. hints are welcome, of course. Ok, 4th point done, also fixed the check for locks (was using stack due copypaste) and added that check on the api entrance as well. PS: funny that in less than 15min after mailing this at least 2 guys replied to me on IRC saying they liked the idea! Awesome :-) Ok, found one issue but no clue on how to fix it: on the first move/resize the first move/resize popup is at a wrong position... e_{move,resize}_begin() is correct, the values are correct, just the position of the popup is off. -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -- MSN: [EMAIL PROTECTED] Skype: gsbarbieri Mobile: +55 (19) 9225-2202 - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel You forgot to set the position of the popup as the normal move/resize do. Here is v3 Index: src/bin/e_border.c === --- src/bin/e_border.c (revision 35985) +++ src/bin/e_border.c (working copy) @@ -2607,7 +2607,239 @@ return borders; } +static Ecore_X_Window action_input_win = 0; +static E_Border *action_border = NULL; +static Ecore_Event_Handler *action_handler = NULL; +static Ecore_Timer *action_timer = NULL; +static Ecore_X_Rectangle action_orig; + +static int +_e_border_action_input_win_del(void) +{ + if (!action_input_win) + return 0; + + e_grabinput_release(action_input_win, action_input_win); + ecore_x_window_del(action_input_win); + action_input_win = 0; + return 1; +} + +static int +_e_border_action_input_win_new(E_Border *bd) +{ + if (!action_input_win) + { + Ecore_X_Window parent = bd-zone-container-win; + action_input_win = ecore_x_window_input_new(parent, 0, 0, 1, 1); + if (!action_input_win) + return 0; + } + + ecore_x_window_show(action_input_win); + if (e_grabinput_get(action_input_win, 0, action_input_win)) + return 1; + + _e_border_action_input_win_del(); + return 0; +} + +static int +_e_border_action_finish(void) +{ + _e_border_action_input_win_del(); + + if (action_timer) + ecore_timer_del(action_timer); + action_timer = NULL; + + if (action_handler) + ecore_event_handler_del(action_handler); + action_handler = NULL; + + action_border = NULL; +} + +static int +_e_border_action_timeout(void *data) +{ + _e_border_action_finish(); + return 0; +} + +static void +_e_border_action_timeout_add(void) +{ + if (action_timer) + ecore_timer_del(action_timer); + action_timer = ecore_timer_add(5.0, _e_border_action_timeout, NULL); +} + +static void +_e_border_action_init(E_Border *bd) +{ + action_orig.x = bd-x; + action_orig.y = bd-y; + action_orig.width = bd-w; + action_orig.height = bd-h; + + action_border = bd; + + _e_border_action_timeout_add(); +} + +static void
[E-devel] Efm_nav history
Hello, attached patch corrects behaviour of the efm_nav history and buttons' state. Index: src/e_mod_main.c === --- src/e_mod_main.c(revision 35796) +++ src/e_mod_main.c(working copy) @@ -328,6 +328,8 @@ if ((!inst) || (!inst-tbar)) return; o_fm = e_toolbar_fm2_get(inst-tbar); if (!o_fm) return; + // Don't destroy forward history when refreshing + inst-ignore_dir = 1; e_fm2_path_set(o_fm, NULL, e_fm2_real_path_get(o_fm)); } @@ -350,7 +352,7 @@ p = t; if (p[0] == 0) p = /; e_fm2_path_set(o_fm, NULL, p); -edje_object_signal_emit(inst-o_up, e,state,enabled, e); +//edje_object_signal_emit(inst-o_up, e,state,enabled, e); } else edje_object_signal_emit(inst-o_up, e,state,disabled, e); @@ -398,15 +400,29 @@ if (!inst-ignore_dir) { const char *t; -t = ecore_list_first(inst-history); +t = ecore_list_current(inst-history); if(!t || strcmp(t, path)) { +if (t) + { + int i, current; + current = ecore_list_index(inst-history); + ecore_list_first_goto(inst-history); + for(i = 0; i current; i++) + ecore_list_remove_destroy(inst-history); + } ecore_list_prepend(inst-history, strdup(path)); ecore_list_first_goto(inst-history); } } inst-ignore_dir = 0; + if (!strcmp(path, /)) +edje_object_signal_emit(inst-o_up, e,state,disabled, e); + else +edje_object_signal_emit(inst-o_up, e,state,enabled, e); + edje_object_message_signal_process(inst-o_up); + count = ecore_list_count(inst-history); i = ecore_list_index(inst-history); @@ -420,7 +436,10 @@ } else { - edje_object_signal_emit(inst-o_back, e,state,enabled, e); + if (i == (count - 1)) + edje_object_signal_emit(inst-o_back, e,state,disabled, e); + else + edje_object_signal_emit(inst-o_back, e,state,enabled, e); edje_object_message_signal_process(inst-o_back); if (i == 0) edje_object_signal_emit(inst-o_forward, e,state,disabled, e); - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100url=/___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[E-devel] Fix recent breakage on modules menus
Let's see if the patches make it to the list now. - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[E-devel] Shelf/Toolbar menus
Attached patch fixes a segfault with the efm modules' menu. It also re-enables the post callback, as the menu was working only once per gadget. - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[E-devel] Engage, and Taskbar module...
Hello. I have updated e17 after 6 months of using it almost without modifications. Advances are impressive. .eap are working much better, .desktop files are recognized (a really good thing) and so, it looks much more in it's way. But engage, is getting older or so. It dies when i try to enable the module with a undefined smbol: e_gadman_mode_set error. But the Shelf is now taking a central role (no more modules on the desktop, everything inside a shelf) and probably it's the best place to put an engage-like tool. What would be useful, is a kind of iBox that shows both minimized and not minimized apps. What we could call a Taskbar. To reduce space it can use the same innovative engage way to manage different instances of the same app, creating a bunch of mini-icons when cursor is over the app. I have seen a Taskbar module already on the new modules, but it still has too much to grow, and i thing that empowering iBox is the best direction. That's all. A big congratulation to all the developers that are making e17 better ! Ivan Hernandez - Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] Usabilty hack as enlightenment_remote options [patch]
Thanks you Frederick. I had in mind that an option is what we needed, but had no time and knowledge to implemente it. With your work my style of winlist has the enlightenment style of freedom of choice to the end user. I hope there are more people looking for this! Ivan Hernandez (aka zaikxtox) El Mar 27 Sep 2005 17:58, Frederick Reeve escribió: After reading Ivan Hernadez usabilty hacks message hacked up four new options for enlightenment remote: -winlist-list-raise-while-selecting-set 1=default -winlist-list-raise-while-selecting-get -winlist-list-focus-while-selecting-set 1=default -winlist-list-focus-while-selecting-get I hope I got everything. It works fine on my system but it should be looked at. Also I'm not sure if this is how everyone thinks this should be handled (or if it should be handled) but I did it anyway. Have a look. :-) If its bad tell me and I'll work on it or throw it out a your disgression. Why I did this I don't know I like things the way they are... but if it helps someone else great. Thanks for all your work Frederick --- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[E-devel] Two usability hacks... specially for CLICK focus model.
Hello. i have been using enlightenment e.DR17 for a while and found sloppy and mouse focus model very confusing... but, CLICK model... is almost unusable in it's current status. So there where two main problems with my desktop. The first was that the winlist (alt-tab) raised and focused windows while cicling them,so they were never orderer in the stack in the way i use. Suppouse, you have windows [A, B, C, D] You switch from [A] - [C] back and forth because you are on your editor at [A] and reading the reference library at [C]. As winlist does not alter the stack order, you always must to jump over [B]. This can be corrected removing focus while cicling windows in the winlist so when you switch from [A] - [C] the stack changes to [C, A, B, D] Whe you come back to the previous app, stack comes to [A, C, B, D] That means, that the most used apps, keep on top of the stack, while your monitoring terminal with iptraf keeps on the bottom, no matter in which order it started. This is also the way that MS Windows works, and is useful for me, and many people likes that way. To achieve this i have just commented some lines at e_winlist.c, function static void _e_winlist_activate(void) Where it says if (ok) { if (e_config-winlist_warp_while_selecting) { ecore_x_pointer_xy_get(winlist-zone-container-win, warp_x, warp_y); warp_to_x = ww-border-x + (ww-border-w / 2); warp_to_y = ww-border-y + (ww-border-h / 2); warp_to = 1; if (!warp_timer) warp_timer = ecore_timer_add(0.01, _e_winlist_warp_timer, NULL); if (!animator) animator = ecore_animator_add(_e_winlist_animator, NULL); } if (!ww-border-lock_user_stacking) e_border_raise(ww-border); if (!ww-border-lock_focus_out) e_border_focus_set(ww-border, 1, 1); } We comment the last four lines: if (ok) { if (e_config-winlist_warp_while_selecting) { ecore_x_pointer_xy_get(winlist-zone-container-win, warp_x, warp_y); warp_to_x = ww-border-x + (ww-border-w / 2); warp_to_y = ww-border-y + (ww-border-h / 2); warp_to = 1; if (!warp_timer) warp_timer = ecore_timer_add(0.01, _e_winlist_warp_timer, NULL); if (!animator) animator = ecore_animator_add(_e_winlist_animator, NULL); } //if (!ww-border-lock_user_stacking) // e_border_raise(ww-border); //if (!ww-border-lock_focus_out) // e_border_focus_set(ww-border, 1, 1); } Voila, winlist now works as wanted, ordering windows in the stack as you use them. There is a seccond annoyance.. with engage. When you switch apps with the mousewheel, it raises them... but... why it does not give them focus??? if you use CLICK focus model that can be really annoying, because you have a raised window and the focus on any other window in the background. To solve that i have added a single line in src/module/e_mod_main.c on the function: static void _engage_icon_cb_mouse_wheel(void *data, Evas *e, Evas_Object *obj, void *event_info) where it says: e_border_raise(ai-border); e_desk_show(ai-border-desk); _engage_bar_motion_handle(ic-eb, ev-canvas.x, ev-canvas.y); it should say: e_border_raise(ai-border); e_desk_show(ai-border-desk); e_border_focus_set(ai-border, 1, 1); _engage_bar_motion_handle(ic-eb, ev-canvas.x, ev-canvas.y); Well... wish someone can benefit from this! Sorry for my bad english. Ivan Hernandez (aka zaikxtox) --- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42 plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] Re: [e-users] Some feedback
I really thin most e users use the sloppy or mouse model... but most PC users, use click model. that's just because the 3 big players on the PC desktop are using it. Win32, KDE and Gnome. Anyway, there is a path to give users the focus model they like without the need to swim deep into the enlightenment_remote tool. A welcome wizard. KDE has one... and a really good one. Enlightenment DR16 also has one, but it's merely informative. I think that grouping common settings together, and giving 2 or 3 common setups at the first run, is a good thing. Also... someone know if is there some effort to implemente the move and resize just with borders (not opaque) ? It's really slow opaque moves on a P233. Thanks again Ivan Hernandez (aka zaikxtox) El Mar 27 Sep 2005 11:30, Andreas Volz escribió: Am Tue, 27 Sep 2005 10:20:39 -0400 (EDT) schrieb dan sinclair: Useability is also a question of good defaults. I'm not sure, but do you really think there're more users that use this sloopy mouse function (which is default) than the focus by click mode? ;-) yes Hm, I didn't know this. Perhaps there should be a poll system where users could vote for those questions on E's (or get-e.org's) website. The developers aren't forced to follow this votes, but perhaps it chould answer such questions. How could you say yes? Do you really know how many people use E(17)? I think not... ;-) regards Andreas --- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42 plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel --- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] Re: [e-users] Some feedback
Very interested, but i'm in the opinion that to create a project firt one needs some code! else you can start to promise Duke Nukem Forever... for the next year ;) Thanks Ivan Hernandez (aka zaikxtox) El Mar 27 Sep 2005 14:49, Blake Barnett escribió: edevelop.org --- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel