[EGIT] [core/efl] master 02/03: edje: moved from edje_multisense.c to Ecore_Audio.h for select the type of render.

2017-10-03 Thread Ivan Furs
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

2017-10-03 Thread Ivan Furs
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

2017-06-11 Thread Ivan Furs
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

2017-04-21 Thread Ivan Furs
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

2017-04-18 Thread Ivan Furs
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

2017-04-16 Thread Ivan Furs
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.

2017-04-16 Thread Ivan Furs
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

2017-03-15 Thread Ivan Furs
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

2017-03-09 Thread Ivan Furs
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

2017-03-06 Thread Ivan Furs
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)

2017-03-06 Thread Ivan Furs
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

2017-03-06 Thread Ivan Furs
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

2017-02-07 Thread Ivan Furs
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

2017-02-07 Thread Ivan Furs
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

2017-01-12 Thread Ivan Furs
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

2016-12-27 Thread Ivan Furs
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)

2016-12-16 Thread Ivan Furs
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

2016-08-22 Thread Ivan Furs
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

2016-08-16 Thread Ivan Furs
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)

2016-07-13 Thread Ivan Furs
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

2013-02-06 Thread Ivan Filgueiras
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

2012-10-24 Thread Ivan Reche
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

2009-09-09 Thread Ivan Briano
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

2008-10-25 Thread Ivan
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

2008-10-25 Thread Ivan
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

2008-10-24 Thread Ivan
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 Thread Ivan
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

2008-10-24 Thread Ivan
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

2008-10-11 Thread Ivan
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

2008-10-01 Thread Ivan
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

2008-09-30 Thread Ivan
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

2008-09-22 Thread Ivan
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

2008-09-19 Thread Ivan
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

2008-09-14 Thread Ivan
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

2008-09-02 Thread Ivan
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

2007-11-25 Thread Ivan
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

2007-11-24 Thread Ivan
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...

2006-09-25 Thread Ivan Hernandez
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]

2005-09-28 Thread Ivan Hernandez
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.

2005-09-27 Thread Ivan Hernandez
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

2005-09-27 Thread Ivan Hernandez
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

2005-09-27 Thread Ivan Hernandez
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