Re: [E-devel] [EGIT] [core/efl] master 01/01: ecore_con/efl_net - dedicated threads for network i/o not from the pool

2017-02-03 Thread The Rasterman
On Sat, 4 Feb 2017 12:47:54 +0900 Carsten Haitzler (The Rasterman)
 said:

> by default the MAX # of threads is number of cpu cores detected. it's settable
> though.
> 
>_ecore_thread_count_max = eina_cpu_count();
>if (_ecore_thread_count_max <= 0)
>  _ecore_thread_count_max = 1;
> 
> 
> but it actually uses that + 1 * 16 
> 
>if (_ecore_thread_worker_count > ((_ecore_thread_count_max + 1) * 16))
>  {
> _ecore_thread_worker_count--;
> free(worker);
> return;
>  }
> 
> for shutting down, but startup up it's limited. i think there's something a
> bit wrong here... :/

ok i had a read... it keeps a pool of spare threads worker structs around:
Ecore_Pthread_Worker up to ((_ecore_thread_count_max + 1) * 16)) of them. which
is reasonable as these are the queued work items... so avoid reallocating them
as much - keep a pool of spares in trash. :)

but default thread pool size is # of cpu cores detected (with a minimum of 1).

actually i think this is a bit ... low. maybe we should change the default? 4 *
# of cores? i'll put this in and see if anything "goes bad".

-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [EGIT] [core/efl] master 01/01: ecore_con/efl_net - dedicated threads for network i/o not from the pool

2017-02-03 Thread The Rasterman
On Fri, 3 Feb 2017 08:42:58 -0200 Gustavo Sverzut Barbieri 
said:

> On Fri, Feb 3, 2017 at 4:01 AM, Carsten Haitzler  wrote:
> > raster pushed a commit to branch master.
> >
> > http://git.enlightenment.org/core/efl.git/commit/?id=eab798c753e72eece526ceccf3c9beb441b5f5ff
> >
> > commit eab798c753e72eece526ceccf3c9beb441b5f5ff
> > Author: Carsten Haitzler (Rasterman) 
> > Date:   Fri Feb 3 14:57:49 2017 +0900
> >
> > ecore_con/efl_net - dedicated threads for network i/o not from the pool
> >
> > so ecore_con/efl_net were using the standard ecore_thread thread pool
> > for doing things like dns lookups
> 
> this is true
> 
> > (that can take multiple minutes until timeouts)
> 
> this is unlikely

but possible. :)

> >and actual http transactions.
> 
> this is false. CURL itself does the HTTP transactions using our main
> loop by calling back efl_net_dialer_http.c to
> register/unregister/modify the fd that is being modified.

my bad - the proxy lookups were in the thread pool for http stuff. also the ip
resolves were too. these CAN take a long time to timeout if you have a bad
network... :)

> 
> > similarly they can block
> > thread workers for long periods or indefinitely thus basically
> > blocking the whole eocre_thread pool and stopping others from sharing
> > it.
> 
> how big is the thread pool? I hope it's a dynamic size and will not
> simply serialize everything into one/two threads.

by default the MAX # of threads is number of cpu cores detected. it's settable
though.

   _ecore_thread_count_max = eina_cpu_count();
   if (_ecore_thread_count_max <= 0)
 _ecore_thread_count_max = 1;


but it actually uses that + 1 * 16 

   if (_ecore_thread_worker_count > ((_ecore_thread_count_max + 1) * 16))
 {
_ecore_thread_worker_count--;
free(worker);
return;
 }

for shutting down, but startup up it's limited. i think there's something a
bit wrong here... :/

> > the best solution we have right now is to bypass the thread pool
> > queue and have dedicated threads for these actions. what we should
> > have is a dedicated thread pool with each thread taking on N
> > connections (via select etc.) and the ability to create and destroy
> > thread pools for specific tasks so you can separate the work out from
> > other work.  but that is basically a redesign of our thread pool infra
> > so let's do the quick solution here until that day comes.
> 
> not sure about this. If I go and try to use that in efl_net, it will
> always go wrong:
> 
>  - If I hope the guy is doing regular desktop app that randomly need
> 1-2 remote resources, that's like 1-2 lookups for the whole lifetime,
> so likely a single thread for the whole application is good enough.
> 
>  - if I think that's going to be used by multi tab browser doing
> prefetch and parallel resources, that's like 100's lookups for each
> tab, then 50+ threads would be desirable.
> 
>  - If I think the guy is writing a server utility that may execute
> hundreds of thousands transactions per second, then it's closer to
> that order.
> 
> That said, my bet is that EFL would dynamically grow and shrink the
> pool using some heuristic, like:
>  - queue at most 1-2 requests in a thread, then spawn a new thread;
>  - if thread is idle for X seconds, exit.

it doesn't though. the queue and pool is pretty basic. it's a single pool for
everyone. once it hits the max # of workers work is queued and picked up by the
next available worker. this actually makes sense, you do not want 3 of workers
to grow "indefinitely" even if you are doing 100,000's of transactions.
otherwise you just use far more resoruces in kernel space with whole thread
instances instead of far cheaper queues in userspace.

you probably want a heuristic that detects a stuck pool and then expands a bit
to unstick it (or allow "fast and simple operations to keep going through while
slow blocked ones hang about). we don't have anything like that.

my thoughts above in the log were something like 1 thread handles 10
connections with its own select and read/write to/from buffers (and this will
then message the mainloop with the results already sitting in a buffer). if
you have 100 connections you might have 10 threads each handling 10
connections... or something like this (numbers can be adjusted). i'm thinking
specifically network i/o connections here. this would have its own pool fo
thread workers that expands and contracts as needed (maybe keeping 1 or 2
spares around for a while if they become idle just in case to avoid creation
of threads).

what we do need is a rethink and redesign of thread pool infra so it can
"cache" worker threads and re-use them (maybe the pools share a central cache
of spare threads? and pull a worker thread out of the shared global pool when
they need one). they would need some kind of pool manager that detects "pool is
stuck and queue 

Re: [E-devel] public headers in sub directories

2017-02-03 Thread The Rasterman
On Fri, 3 Feb 2017 08:46:39 -0200 Gustavo Sverzut Barbieri 
said:

> On Fri, Feb 3, 2017 at 7:22 AM, Carsten Haitzler  wrote:
> > On Fri, 27 Jan 2017 10:54:17 -0200 Gustavo Sverzut Barbieri
> >  said:
> >
> >> Hi all,
> >>
> >> While porting to cmake I'm trying to use its features to enhance
> >> portability, two are:
> >>
> >> https://cmake.org/cmake/help/v3.0/prop_tgt/FRAMEWORK.html
> >> https://cmake.org/cmake/help/v3.0/prop_tgt/PUBLIC_HEADER.html
> >
> > the above explains very little... :(
> 
> I know :-D that's why I'm asking to change our layout and be simple so
> we get the "working out of the box" case.
> 
> 
> >> These will generate MacOS compliant bundles but there is one caveat: when I
> >> install they end all in a flat hierarchy, thus things that includes
> >> relative to subdirectories, as Efl.h or Ector.h will fail to find the
> >> "subdir/file.h".
> >
> > what do you mean exactly? you can't have -Idir flags as part of mac
> > frameworks? so -framework doesnt make the framework base dir an added -I
> > search location? so
> >
> > #include "interfaces/efl_observer.eo.h"
> > #include "interfaces/efl_observable.eo.h"
> >
> > won't look for those files relative to PREFIX/include/efl-1 ? i'm not sure
> > what ie "expected" here from mac and how we diffeer and what has to change
> > to "be compliant" ?
> 
> same here, I really don't know.
> 
> >> One option is to avoid the PUBLIC_HEADER and manually install files to
> >> include directories, there I can specify the subdirectories as needed.
> >> However I'm not sure if that would be enough to MacOS and possibly other
> >> systems, where the PUBLIC_HEADER could be hinting something else.
> >>
> >> Another option, which I prefer, is to change the master include to remove
> >> the subdirectories, also changing the automake rules. That would result in
> >> all headers to be installed to a single directory:
> >>  /usr/include/${lib}-${vmaj}/
> >>
> >> Any objections to this change?
> 
> my change is basically removing "subdir/file" from our installed
> headers. We can keep the GIT hierarchy and use SET(INCLUDE_DIRS ...)
> ourselves.

can you give me an example. i'm not sure what you mean?

-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 01/01: evas render - drop eo overhead by using ptrs we already have

2017-02-03 Thread Carsten Haitzler
raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=51638afbebc225b5a550eb87a0e74c53d866ed2e

commit 51638afbebc225b5a550eb87a0e74c53d866ed2e
Author: Carsten Haitzler (Rasterman) 
Date:   Sat Feb 4 11:31:55 2017 +0900

evas render - drop eo overhead by using ptrs we already have

several calls, specifically evas_object_change_reset,
evas_object_cur_prev, and evas_object_clip_changes_clean that are
called directly or indirectly as part of evas render on at least every
active object if not more, were doing full eo obj lookups when their
calling functions already all had the eo protected data looked up.
tha's silly and just adds overhead we don't need. my test dropped
_eo_obj_pointer_get overhead in perf profiles from 4.48% to 2.65%. see:

   4.48%  libeo.so.1.18.99[.] _eo_obj_pointer_get
   4.23%  libevas.so.1.18.99  [.] evas_render_updates_internal
   2.61%  libevas.so.1.18.99  [.] evas_render_updates_internal_loop
   1.68%  libeo.so.1.18.99[.] efl_data_scope_get
   1.57%  libc-2.24.so[.] _int_malloc
   1.42%  libevas.so.1.18.99  [.] evas_object_smart_changed_get
   1.09%  libevas.so.1.18.99  [.] evas_object_clip_recalc.part.37
   1.08%  libpthread-2.24.so  [.] pthread_getspecific
   1.05%  libevas.so.1.18.99  [.] efl_canvas_object_class_get
   1.01%  libevas.so.1.18.99  [.] evas_object_cur_prev
   0.99%  libeo.so.1.18.99[.] 
_efl_object_event_callback_legacy_call
   0.87%  libevas.so.1.18.99  [.] 
_evas_render_phase1_object_ctx_render_cache_append
   0.82%  libpthread-2.24.so  [.] pthread_mutex_lock
   0.81%  libevas.so.1.18.99  [.] _evas_render_phase1_object_process
   0.79%  libc-2.24.so[.] _int_free

vs now the improved:

   4.82%  libevas.so.1.18.99  [.] evas_render_updates_internal
   3.44%  libevas.so.1.18.99  [.] evas_render_updates_internal_loop
   2.65%  libeo.so.1.18.99[.] _eo_obj_pointer_get
   2.22%  libc-2.24.so[.] _int_malloc
   1.46%  libevas.so.1.18.99  [.] evas_object_smart_changed_get
   1.04%  libeo.so.1.18.99[.] 
_efl_object_event_callback_legacy_call
   1.03%  libevas.so.1.18.99  [.] 
_evas_render_phase1_object_ctx_render_cache_append
   0.97%  libeina.so.1.18.99  [.] eina_chained_mempool_malloc
   0.93%  libevas.so.1.18.99  [.] evas_object_clip_recalc.part.37
   0.92%  libpthread-2.24.so  [.] pthread_mutex_lock
   0.91%  libevas.so.1.18.99  [.] _evas_render_phase1_object_process
   0.84%  libc-2.24.so[.] _int_free
   0.84%  libevas.so.1.18.99  [.] evas_object_cur_prev
   0.83%  libeina.so.1.18.99  [.] eina_chained_mempool_free
   0.80%  libeo.so.1.18.99[.] efl_data_scope_get

of course other things "increase their percentage" as oe overhead now
dropped, and things seem to move around a bit, but it does make sense
to do this with no downsides i can see as we already are accessing the
protected data ptr in the parent func.
---
 src/lib/evas/canvas/evas_object_image.c  | 10 +-
 src/lib/evas/canvas/evas_object_line.c   |  8 
 src/lib/evas/canvas/evas_object_main.c   | 20 ++--
 src/lib/evas/canvas/evas_object_polygon.c| 10 +-
 src/lib/evas/canvas/evas_object_rectangle.c  | 10 +-
 src/lib/evas/canvas/evas_object_smart.c  |  4 ++--
 src/lib/evas/canvas/evas_object_text.c   |  8 
 src/lib/evas/canvas/evas_object_textblock.c  |  6 +++---
 src/lib/evas/canvas/evas_object_textgrid.c   | 10 +-
 src/lib/evas/canvas/evas_object_vg.c |  8 
 src/lib/evas/canvas/evas_render.c| 14 +++---
 src/lib/evas/canvas/render2/evas_render2_th_main.c   | 12 ++--
 .../evas/canvas/render2/evas_render2_updates_old.c   |  4 ++--
 src/lib/evas/include/evas_private.h  |  6 +++---
 14 files changed, 61 insertions(+), 69 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_image.c 
b/src/lib/evas/canvas/evas_object_image.c
index aac70da..796d07d 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -2685,9 +2685,9 @@ evas_object_image_render_pre(Evas_Object *eo_obj,
 }
 
 static void
-evas_object_image_render_post(Evas_Object *eo_obj,
- Evas_Object_Protected_Data *obj EINA_UNUSED,
- void *type_private_data)
+evas_object_image_render_post(Evas_Object *eo_obj EINA_UNUSED,
+  Evas_Object_Protected_Data *obj,
+  

[EGIT] [core/efl] master 01/01: ecore_evas: use ecore_timer_loop_add for idle timeout update

2017-02-03 Thread Derek Foreman
derekf pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=964844821d10d4f4440c82cd99450870d1656cff

commit 964844821d10d4f4440c82cd99450870d1656cff
Author: Derek Foreman 
Date:   Fri Feb 3 15:54:48 2017 -0600

ecore_evas: use ecore_timer_loop_add for idle timeout update

This shouldn't need "exact" time, so use a loop time based timer
to potentially save a syscall on archs that don't have a vdso.

@optimize
---
 src/lib/ecore_evas/ecore_evas.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index 3089e61..8553897 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -3126,7 +3126,7 @@ _ecore_evas_idle_timeout_update(Ecore_Evas *ee)
if (ee->engine.idle_flush_timer)
  ecore_timer_del(ee->engine.idle_flush_timer);
ee->engine.idle_flush_timer = 
- ecore_timer_add(IDLE_FLUSH_TIME, _ecore_evas_cb_idle_flush, ee);
+ ecore_timer_loop_add(IDLE_FLUSH_TIME, _ecore_evas_cb_idle_flush, ee);
 }
 
 static void

-- 




[EGIT] [core/enlightenment] master 01/01: Replace all timer_add with timer_loop_add

2017-02-03 Thread Derek Foreman
derekf pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=73aecd73abdb8cf12cd12b5e5eb2d7eb0d60fa81

commit 73aecd73abdb8cf12cd12b5e5eb2d7eb0d60fa81
Author: Derek Foreman 
Date:   Fri Feb 3 15:52:28 2017 -0600

Replace all timer_add with timer_loop_add

So yeah, I've literally used sed to replace every occurrence of
ecore_time_add() with ecore_timer_loop_add() because I'm reasonably
confident that no part of E has a legitimate need for timer based on the
exact current time.

It would be really nice if I'm not wrong. :)

The reason for this is the incredible spew of clock_gettime() calls I'm
seeing on an ARM system (that should have a vdso for gettime, but...)
This can amount to thousands of system calls per second.

 #YOLO
---
 src/bin/e_actions.c  |  2 +-
 src/bin/e_backlight.c|  2 +-
 src/bin/e_bindings.c |  2 +-
 src/bin/e_bryce.c|  4 ++--
 src/bin/e_client.c   |  8 
 src/bin/e_comp.c |  6 +++---
 src/bin/e_comp_canvas.c  |  4 ++--
 src/bin/e_comp_wl.c  |  2 +-
 src/bin/e_comp_x.c   | 10 +-
 src/bin/e_config.c   |  6 +++---
 src/bin/e_config_dialog.c|  2 +-
 src/bin/e_configure.c|  2 +-
 src/bin/e_dpms.c |  6 +++---
 src/bin/e_exec.c |  4 ++--
 src/bin/e_fm.c   | 20 ++--
 src/bin/e_fm/e_fm_ipc.c  |  4 ++--
 src/bin/e_fm/e_fm_main_eeze.c|  6 +++---
 src/bin/e_fm/e_fm_main_udisks.c  | 12 ++--
 src/bin/e_fm/e_fm_main_udisks2.c |  8 
 src/bin/e_focus.c|  2 +-
 src/bin/e_gadcon.c   |  4 ++--
 src/bin/e_icon.c |  8 
 src/bin/e_ilist.c|  2 +-
 src/bin/e_init.c |  2 +-
 src/bin/e_int_gadcon_config.c|  4 ++--
 src/bin/e_int_menus.c|  2 +-
 src/bin/e_main.c |  2 +-
 src/bin/e_module.c   |  4 ++--
 src/bin/e_order.c|  2 +-
 src/bin/e_powersave.c|  4 ++--
 src/bin/e_randr2.c   |  4 ++--
 src/bin/e_screensaver.c  | 14 +++---
 src/bin/e_shelf.c| 10 +-
 src/bin/e_slider.c   |  2 +-
 src/bin/e_spectrum.c |  2 +-
 src/bin/e_sys.c  | 10 +-
 src/bin/e_test.c | 18 +-
 src/bin/e_thumb.c|  2 +-
 src/bin/e_thumb_main.c   |  4 ++--
 src/bin/e_update.c   |  2 +-
 src/bin/e_utils.c|  6 +++---
 src/bin/e_video.c|  2 +-
 src/bin/e_widget_ilist.c |  2 +-
 src/bin/e_xkb.c  |  4 ++--
 src/bin/e_xsettings.c|  2 +-
 src/bin/e_zone.c |  2 +-
 src/modules/appmenu/e_mod_appmenu_render.c   |  2 +-
 src/modules/backlight/e_mod_main.c   |  4 ++--
 src/modules/battery/batget.c |  8 
 src/modules/battery/e_mod_main.c |  2 +-
 src/modules/clock/e_mod_main.c   |  2 +-
 src/modules/conf_applications/e_int_config_apps.c|  4 ++--
 src/modules/everything/e_mod_main.c  |  2 +-
 src/modules/everything/evry.c| 10 +-
 src/modules/everything/evry_view_tabs.c  |  2 +-
 src/modules/fileman/e_fwin.c |  8 
 src/modules/fileman_opinfo/e_mod_main.c  |  2 +-
 src/modules/ibar/e_mod_main.c| 12 ++--
 src/modules/luncher/bar.c|  8 
 src/modules/luncher/grid.c   |  2 +-
 src/modules/mixer/lib/backends/pulseaudio/pulse.c|  2 +-
 src/modules/mixer/lib/backends/pulseaudio/pulse_ml.c |  4 ++--
 src/modules/notification/e_mod_main.c|  2 +-
 src/modules/notification/e_mod_popup.c 

[EGIT] [core/enlightenment] master 01/01: Sysinfo - Netstatus gadget - Fix netstatus calculation.

2017-02-03 Thread Stephen 'Okra' Houston
okra pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=4e9335547fb1f2a0d8f9178c083b18779503d81e

commit 4e9335547fb1f2a0d8f9178c083b18779503d81e
Author: Stephen 'Okra' Houston 
Date:   Fri Feb 3 15:20:29 2017 -0600

Sysinfo - Netstatus gadget - Fix netstatus calculation.
---
 src/modules/sysinfo/netstatus/netstatus_proc.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/modules/sysinfo/netstatus/netstatus_proc.c 
b/src/modules/sysinfo/netstatus/netstatus_proc.c
index b2f56f0..191d1ea 100644
--- a/src/modules/sysinfo/netstatus/netstatus_proc.c
+++ b/src/modules/sysinfo/netstatus/netstatus_proc.c
@@ -47,7 +47,6 @@ _netstatus_proc_getrstatus(Instance *inst)
  }
else
  {
-diffin /= 0.5;
 if (diffin > 1048576)
   snprintf(rin, sizeof(rin), "%s: %.2f MB/s", _("Receiving"), 
((float)diffin / 1048576));
 else if ((diffin > 1024) && (diffin < 1048576))
@@ -105,7 +104,6 @@ _netstatus_proc_gettstatus(Instance *inst)
  }
else
  {
-diffout /= 0.5;
 if (diffout > 1048576)
   snprintf(rout, sizeof(rout), "%s: %.2f MB/s", _("Sending"), 
((float)diffout / 1048576));
 else if ((diffout > 1024) && (diffout < 1048576))

-- 




[EGIT] [core/efl] master 01/01: ecore: poller could actually be related to the main loop timing.

2017-02-03 Thread Cedric BAIL
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7819333875a783fdc73ad8244e3e9bd26b1e39d8

commit 7819333875a783fdc73ad8244e3e9bd26b1e39d8
Author: Cedric BAIL 
Date:   Fri Feb 3 11:12:28 2017 -0800

ecore: poller could actually be related to the main loop timing.

Reduce call to ecore_time_get which is a syscall to gettimeofday.
---
 src/lib/ecore/ecore_poller.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lib/ecore/ecore_poller.c b/src/lib/ecore/ecore_poller.c
index 41afb6d..839c6f6 100644
--- a/src/lib/ecore/ecore_poller.c
+++ b/src/lib/ecore/ecore_poller.c
@@ -98,15 +98,15 @@ _ecore_poller_next_tick_eval(void)
   timer = ecore_timer_add(interval, _ecore_poller_cb_timer, NULL);
 else
   {
- t = ecore_time_get();
+ t = ecore_loop_time_get();
  if (!EINA_FLT_EQ(interval, poll_cur_interval))
{
   t -= last_tick; /* time since we last ticked */
  /* delete the timer and reset it to tick off in the new
   * time interval. at the tick this will be adjusted */
   ecore_timer_del(timer);
-  timer = ecore_timer_add(interval - t,
-  _ecore_poller_cb_timer, NULL);
+  timer = ecore_timer_loop_add(interval - t,
+   _ecore_poller_cb_timer, NULL);
}
   }
  }
@@ -121,7 +121,7 @@ _ecore_poller_cb_timer(void *data EINA_UNUSED)
int changes = 0;
 
at_tick++;
-   last_tick = ecore_time_get();
+   last_tick = ecore_loop_time_get();
/* we have 16 counters - each increments every time the poller counter
 * "ticks". it increments by the minimum interval (which can be 1, 2, 4,
 * 7, 16 etc. up to 32768) */

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 21/26: e - wl mode - stop consuming 100 percent cpu

2017-02-03 Thread Carsten Haitzler
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=f4243e1f5d98150804dd54db44f9cbafc017f064

commit f4243e1f5d98150804dd54db44f9cbafc017f064
Author: Carsten Haitzler (Rasterman) 
Date:   Sun Jan 15 14:16:31 2017 +0900

e - wl mode - stop consuming 100 percent cpu

so on 1 intel laptop and my rpi i'm seeing 100% cpu usage in wayland
mode. it seems something is resizing to 0x0 and then causing a size
change which causes a property change which causes... another request
to 0x0 and repeat. dont set tyhe size changed flags if size actually
didnt change and this fixes that.
---
 src/bin/e_comp_object.c | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index deddc9f..959639f 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -1198,9 +1198,12 @@ _e_comp_intercept_resize(void *data, Evas_Object *obj, 
int w, int h)
 /* do nothing until client idler loops */
 if (!cw->ec->maximized)
   {
- cw->ec->w = w, cw->ec->h = h;
- cw->ec->changes.size = 1;
- EC_CHANGED(cw->ec);
+ if ((cw->ec->w != w) || (cw->ec->h != h))
+   {
+  cw->ec->w = w, cw->ec->h = h;
+  cw->ec->changes.size = 1;
+  EC_CHANGED(cw->ec);
+   }
   }
 return;
  }

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 11/26: appmenu - make appmenu work with click+release and not hide on focus out

2017-02-03 Thread Carsten Haitzler
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=3c1bf5cc682ddd6b766beb9ff50aaff64226766e

commit 3c1bf5cc682ddd6b766beb9ff50aaff64226766e
Author: Carsten Haitzler (Rasterman) 
Date:   Thu Dec 29 22:44:28 2016 +0900

appmenu - make appmenu work with click+release and not hide on focus out

appmenu is annoying in that is hides on focus out whish is what
happens when a menu is popped up! fix this and make a qhick
click+release work as well! if we are going to have a global app menu
then let's make it vaguely decent... :)

also get menu positioning right with item geometry itself for the menu
not pointer position AND get menu pop direction correct based on
gadcon orientation.

@fix
---
 src/modules/appmenu/e_mod_appmenu_private.h |   2 +
 src/modules/appmenu/e_mod_appmenu_render.c  | 101 ++--
 src/modules/appmenu/e_mod_main.c|   3 +-
 3 files changed, 98 insertions(+), 8 deletions(-)

diff --git a/src/modules/appmenu/e_mod_appmenu_private.h 
b/src/modules/appmenu/e_mod_appmenu_private.h
index 481cfe8..f0a1e43 100644
--- a/src/modules/appmenu/e_mod_appmenu_private.h
+++ b/src/modules/appmenu/e_mod_appmenu_private.h
@@ -41,5 +41,7 @@ void appmenu_dbus_registrar_server_shutdown(E_AppMenu_Context 
*ctx);
 void appmenu_application_monitor(void *data, const char *bus, const char *old, 
const char *new);
 void appmenu_menu_render(E_AppMenu_Context *ctxt EINA_UNUSED, E_AppMenu_Window 
*w);
 void appmenu_menu_of_instance_render(E_AppMenu_Instance *inst, 
E_AppMenu_Window *window);
+int  appmenu_menu_count_get(void);
+void appmenu_cancel(void);
 
 #endif
diff --git a/src/modules/appmenu/e_mod_appmenu_render.c 
b/src/modules/appmenu/e_mod_appmenu_render.c
index 1c95475..b866e37 100644
--- a/src/modules/appmenu/e_mod_appmenu_render.c
+++ b/src/modules/appmenu/e_mod_appmenu_render.c
@@ -1,5 +1,45 @@
 #include "e_mod_appmenu_private.h"
 
+static int menu_count = 0;
+static E_Menu *menu_pending = NULL;
+static Ecore_Timer *menu_timer = NULL;
+static int menu_dir = 0;
+static Evas_Coord menu_x = 0, menu_y = 0, menu_w = 0, menu_h = 0;
+
+void
+appmenu_cancel(void)
+{
+   if (menu_pending)
+ {
+e_object_del(E_OBJECT(menu_pending));
+menu_pending = NULL;
+ }
+   if (menu_timer)
+ {
+ecore_timer_del(menu_timer);
+menu_timer = NULL;
+ }
+}
+
+int
+appmenu_menu_count_get(void)
+{
+   return menu_count;
+}
+
+static void
+item_activate(void *data EINA_UNUSED, E_Menu *m EINA_UNUSED)
+{
+   menu_count++;
+}
+
+static void
+item_deactivate(void *data EINA_UNUSED, E_Menu *m)
+{
+   if (menu_pending == m) menu_pending = NULL;
+   menu_count--;
+}
+
 static void
 menu_deactive(E_Menu *m)
 {
@@ -21,6 +61,7 @@ menu_post_deactivate(void *data, E_Menu *m)
 {
E_Gadcon *gadcon = data;
 
+   item_deactivate(data, m);
e_gadcon_locked_set(gadcon, 0);
menu_deactive(m);
 }
@@ -70,23 +111,64 @@ item_submenu_new(E_DBusMenu_Item *item, E_Menu_Item *mi)
   item_submenu_new(child, submi);
 e_util_menu_item_theme_icon_set(submi, child->icon_name);
  }
+   e_menu_pre_activate_callback_set(m, item_activate, item);
+   e_menu_post_deactivate_callback_set(m, item_deactivate, item);
return m;
 }
 
+static Eina_Bool
+item_menu_delay(void *data EINA_UNUSED)
+{
+   Evas_Coord x, y, w, h;
+   E_Zone *zone;
+
+   x = menu_x;
+   y = menu_y;
+   w = menu_w;
+   h = menu_h;
+   zone = e_comp_zone_xy_get(x + (w / 2), y + (h / 2));
+   e_menu_activate_mouse(menu_pending, zone, x, y, w, h, menu_dir, 0);
+   menu_pending = NULL;
+   menu_timer = NULL;
+   return EINA_FALSE;
+}
+
 static void
-item_menu_open(E_DBusMenu_Item *item, E_Gadcon *gadcon)
+item_menu_open(E_DBusMenu_Item *item, E_Gadcon *gadcon, Evas_Coord x, 
Evas_Coord y, Evas_Coord w, Evas_Coord h)
 {
E_Menu *m = item_submenu_new(item, NULL);
-   E_Zone *zone;
-   int x, y;
+   int dir = E_MENU_POP_DIRECTION_AUTO;
 
EINA_SAFETY_ON_NULL_RETURN(m);
e_gadcon_locked_set(gadcon, 1);
e_menu_post_deactivate_callback_set(m, menu_post_deactivate, gadcon);
 
-   ecore_evas_pointer_xy_get(e_comp->ee, , );
-   zone = e_comp_zone_xy_get(x, y);
-   e_menu_activate_mouse(m, zone, x, y, 1, 1, E_MENU_POP_DIRECTION_DOWN, 0);
+   if  ((gadcon->orient == E_GADCON_ORIENT_TOP) ||
+(gadcon->orient == E_GADCON_ORIENT_CORNER_TL) ||
+(gadcon->orient == E_GADCON_ORIENT_CORNER_TR))
+ dir = E_MENU_POP_DIRECTION_DOWN;
+   else if ((gadcon->orient == E_GADCON_ORIENT_BOTTOM) ||
+(gadcon->orient == E_GADCON_ORIENT_CORNER_BL) ||
+(gadcon->orient == E_GADCON_ORIENT_CORNER_BR))
+ dir = E_MENU_POP_DIRECTION_UP;
+   else if ((gadcon->orient == E_GADCON_ORIENT_LEFT) ||
+(gadcon->orient == E_GADCON_ORIENT_CORNER_LT) ||
+(gadcon->orient == E_GADCON_ORIENT_CORNER_LB))
+ dir = 

[EGIT] [core/enlightenment] enlightenment-0.21 07/26: tasks - calculate min width properly given a known height of a gadget

2017-02-03 Thread Carsten Haitzler
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=fa580ee748b56ae22547679ec5c5e27436e1150c

commit fa580ee748b56ae22547679ec5c5e27436e1150c
Author: Carsten Haitzler (Rasterman) 
Date:   Mon Dec 26 11:25:40 2016 +0900

tasks - calculate min width properly given a known height of a gadget

this also should apply to calculating height correctly given a known
width - ie horiz or vert taskbar in a shelf. without this you can't
calc min size correctly from the theme.

@fix
---
 src/modules/tasks/e_mod_main.c | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/modules/tasks/e_mod_main.c b/src/modules/tasks/e_mod_main.c
index e7fdfaa..c3d46cf 100644
--- a/src/modules/tasks/e_mod_main.c
+++ b/src/modules/tasks/e_mod_main.c
@@ -400,7 +400,7 @@ _tasks_refill(Tasks *tasks)
Eina_List *l;
E_Client *ec;
Tasks_Item *item;
-   Evas_Coord w, h;
+   Evas_Coord w, h, tw, th;
 
while (tasks->items)
  {
@@ -414,7 +414,12 @@ _tasks_refill(Tasks *tasks)
if (tasks->items)
  {
 item = tasks->items->data;
-edje_object_size_min_calc(item->o_item, , );
+evas_object_geometry_get(tasks->o_items, NULL, NULL, , );
+//edje_object_size_min_calc(item->o_item, , );
+if (tasks->horizontal)
+  edje_object_size_min_restricted_calc(item->o_item, , , 0, th);
+else
+  edje_object_size_min_restricted_calc(item->o_item, , , tw, 0);
 if (!tasks->config->icon_only)
   {
  if (tasks->horizontal)

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 25/26: Stop sending wayland motion events when the mouse is grabbed

2017-02-03 Thread Derek Foreman
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=17e66ed2b5fd96f912de39fb3ba7207616dc74c5

commit 17e66ed2b5fd96f912de39fb3ba7207616dc74c5
Author: Derek Foreman 
Date:   Thu Feb 2 12:03:51 2017 -0600

Stop sending wayland motion events when the mouse is grabbed

This stops the compositor from sending motion events to internal
windows while they're being moved or resized.
---
 src/bin/e_comp_wl.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index bc18243..8c8e342 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -376,6 +376,7 @@ _e_comp_wl_evas_cb_mouse_move(void *data, Evas *evas 
EINA_UNUSED, Evas_Object *o
if (e_object_is_del(E_OBJECT(ec))) return;
if (ec->ignored) return;
if (!ec->comp_data->surface) return;
+   if (e_comp->input_mouse_grabs) return;
 
if ((!e_comp_wl->drag_client) ||
(!e_client_has_xwindow(e_comp_wl->drag_client)))

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 04/26: Use a monotonic clock for frame callback times

2017-02-03 Thread Derek Foreman
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=4b29b6aff17544392edd269c122036e3af72e205

commit 4b29b6aff17544392edd269c122036e3af72e205
Author: Derek Foreman 
Date:   Thu Dec 15 09:59:21 2016 -0600

Use a monotonic clock for frame callback times
---
 src/bin/e_pixmap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index 1061da6..ee5d8f7 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -346,7 +346,7 @@ e_pixmap_new(E_Pixmap_Type type, ...)
 else
   {
  pixmaps[type] = eina_hash_int64_new((Eina_Free_Cb)_e_pixmap_free);
- wayland_time_base = ecore_time_unix_get();
+ wayland_time_base = ecore_time_get();
   }
 cp = _e_pixmap_new(type);
 cp->win = id;
@@ -804,7 +804,7 @@ e_pixmap_image_clear(E_Pixmap *cp, Eina_Bool cache)
  cd->frames = NULL;
  EINA_LIST_FREE(free_list, cb)
{
-  double t = ecore_time_unix_get() - wayland_time_base;
+  double t = ecore_time_get() - wayland_time_base;
   wl_callback_send_done(cb, t * 1000);
   wl_resource_destroy(cb);
}

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 15/26: Use proper coordinate adjustment

2017-02-03 Thread Christopher Michael
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=0ba8bf56c5b3fd59e04d593d4b655c544d9fed1c

commit 0ba8bf56c5b3fd59e04d593d4b655c544d9fed1c
Author: Chris Michael 
Date:   Thu Jan 12 10:44:23 2017 -0500

Use proper coordinate adjustment

This seems like just some copy/paste that was never corrected, however
when calculating coordinate adjustments we should be using the proper
values here. Previous code was using e_comp_canvas_x_root_adjust for
the Y value. This patch uses e_comp_canvas_y_root_adjust for Y
coordinates.

Signed-off-by: Chris Michael 
---
 src/bin/e_bindings.c | 4 ++--
 src/bin/e_comp_x.c   | 6 +++---
 src/bin/e_shelf.c| 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/bin/e_bindings.c b/src/bin/e_bindings.c
index 543d7de..52e28d5 100644
--- a/src/bin/e_bindings.c
+++ b/src/bin/e_bindings.c
@@ -125,7 +125,7 @@ e_bindings_ecore_event_mouse_wheel_convert(const 
Ecore_Event_Mouse_Wheel *ev, E_
event->direction = ev->direction;
event->z = ev->z;
event->canvas.x = e_comp_canvas_x_root_adjust(ev->root.x);
-   event->canvas.y = e_comp_canvas_x_root_adjust(ev->root.y);
+   event->canvas.y = e_comp_canvas_y_root_adjust(ev->root.y);
event->timestamp = ev->timestamp;
event->modifiers = _e_bindings_modifiers(ev->modifiers);
 }
@@ -136,7 +136,7 @@ e_bindings_ecore_event_mouse_button_convert(const 
Ecore_Event_Mouse_Button *ev,
memset(event, 0, sizeof(E_Binding_Event_Mouse_Button));
event->button = ev->buttons;
event->canvas.x = e_comp_canvas_x_root_adjust(ev->root.x);
-   event->canvas.y = e_comp_canvas_x_root_adjust(ev->root.y);
+   event->canvas.y = e_comp_canvas_y_root_adjust(ev->root.y);
event->timestamp = ev->timestamp;
event->modifiers = _e_bindings_modifiers(ev->modifiers);
 
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 497d760..1668f7c 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -2362,7 +2362,7 @@ static void
 _e_comp_x_mouse_in_job(void *d EINA_UNUSED)
 {
if (mouse_client)
- e_client_mouse_in(mouse_client, 
e_comp_canvas_x_root_adjust(mouse_in_coords.x), 
e_comp_canvas_x_root_adjust(mouse_in_coords.y));
+ e_client_mouse_in(mouse_client, 
e_comp_canvas_x_root_adjust(mouse_in_coords.x), 
e_comp_canvas_y_root_adjust(mouse_in_coords.y));
mouse_in_job = NULL;
 }
 
@@ -2420,7 +2420,7 @@ _e_comp_x_mouse_out(void *data EINA_UNUSED, int type 
EINA_UNUSED, Ecore_X_Event_
 E_FREE_FUNC(mouse_in_job, ecore_job_del);
  }
if (ec->mouse.in)
- e_client_mouse_out(ec, e_comp_canvas_x_root_adjust(ev->root.x), 
e_comp_canvas_x_root_adjust(ev->root.y));
+ e_client_mouse_out(ec, e_comp_canvas_x_root_adjust(ev->root.x), 
e_comp_canvas_y_root_adjust(ev->root.y));
return ECORE_CALLBACK_RENEW;
 }
 
@@ -2519,7 +2519,7 @@ _e_comp_x_mouse_move(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_Event_Mouse_M
  if (top == e_comp->ee_win) return ECORE_CALLBACK_RENEW;
 
  x = e_comp_canvas_x_root_adjust(ev->root.x);
- y = e_comp_canvas_x_root_adjust(ev->root.y);
+ y = e_comp_canvas_y_root_adjust(ev->root.y);
  for (tec = e_client_above_get(ec); tec; tec = 
e_client_above_get(tec))
{
   if (!evas_object_visible_get(tec->frame)) continue;
diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c
index 64c82bd..30eecd8 100644
--- a/src/bin/e_shelf.c
+++ b/src/bin/e_shelf.c
@@ -1911,10 +1911,10 @@ _e_shelf_cb_mouse_in(void *data, int type, void *event)
  * back to mouse in/out events
  */
 inside = E_INSIDE(e_comp_canvas_x_root_adjust(ev->root.x),
-  e_comp_canvas_x_root_adjust(ev->root.y),
+  e_comp_canvas_y_root_adjust(ev->root.y),
   es->zone->x, es->zone->y, es->zone->w + 4, 
es->zone->h + 4);
 x = e_comp_canvas_x_root_adjust(ev->root.x) - es->zone->x;
-y = e_comp_canvas_x_root_adjust(ev->root.y) - es->zone->y;
+y = e_comp_canvas_y_root_adjust(ev->root.y) - es->zone->y;
 if (inside)
   inside = (
   ((E_INSIDE(x, y, es->x, es->y, es->w, es->h)) ||

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 17/26: do not perform frame coord adjustments for re_manage wayland clients

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=f2bfd957a198eb2ab04051180c5b6dae842f1ce1

commit f2bfd957a198eb2ab04051180c5b6dae842f1ce1
Author: Mike Blumenkrantz 
Date:   Fri Jan 13 11:35:26 2017 -0500

do not perform frame coord adjustments for re_manage wayland clients

prevent mismatch of positions between restarts
---
 src/bin/e_client.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 26e7f8b..ed26b88 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -1595,7 +1595,7 @@ _e_client_eval(E_Client *ec)
   }
 e_client_resize_limit(ec, >w, >h);
 
-if (ec->re_manage)
+if (ec->re_manage && e_comp_object_frame_exists(ec->frame))
   {
  int x = ec->x, y = ec->y;
  if (ec->x) e_comp_object_frame_xy_adjust(ec->frame, ec->x, 0, 
>x, NULL);

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 14/26: Enlightenment: Wireless gadget - place the ctxpopup after the size hints are set, not before

2017-02-03 Thread Stephen 'Okra' Houston
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=0b3d519bd97ed8062a3028734b5aec1b0af05d07

commit 0b3d519bd97ed8062a3028734b5aec1b0af05d07
Author: Stephen 'Okra' Houston 
Date:   Mon Jan 9 13:46:43 2017 -0600

Enlightenment: Wireless gadget - place the ctxpopup after the size hints 
are set, not before
---
 src/modules/wireless/wireless.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/wireless/wireless.c b/src/modules/wireless/wireless.c
index f3721ba..53c8e6d 100644
--- a/src/modules/wireless/wireless.c
+++ b/src/modules/wireless/wireless.c
@@ -939,7 +939,6 @@ _wireless_gadget_mouse_down(void *data, Evas *e 
EINA_UNUSED, Evas_Object *obj, v
evas_object_smart_callback_add(toggle, "changed", _wireless_popup_toggle, 
inst);
elm_box_pack_end(box, toggle);
elm_object_content_set(ctx, box);
-   e_gadget_util_ctxpopup_place(inst->box, ctx, inst->icon[type]);
wireless_popup.popup = e_comp_object_util_add(ctx, E_COMP_OBJECT_TYPE_NONE);
evas_object_layer_set(wireless_popup.popup, E_LAYER_POPUP);
e_comp_object_util_autoclose(wireless_popup.popup, NULL, 
e_comp_object_util_autoclose_on_escape, NULL);
@@ -947,6 +946,7 @@ _wireless_gadget_mouse_down(void *data, Evas *e 
EINA_UNUSED, Evas_Object *obj, v
zone = e_zone_current_get();
evas_object_resize(wireless_popup.popup, zone->w / 5, zone->h / 3);
evas_object_size_hint_min_set(box, zone->w / 5, zone->h / 3);
+   e_gadget_util_ctxpopup_place(inst->box, ctx, inst->icon[type]);
evas_object_show(wireless_popup.popup);
evas_object_event_callback_add(wireless_popup.popup, EVAS_CALLBACK_DEL, 
_wireless_popup_del, inst);
 }

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 02/26: Fix wayland frame callback times

2017-02-03 Thread Derek Foreman
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=84da1d45c78772e6878c97c98abfdb59e6c28f0a

commit 84da1d45c78772e6878c97c98abfdb59e6c28f0a
Author: Derek Foreman 
Date:   Tue Dec 13 13:53:18 2016 -0600

Fix wayland frame callback times

ecore_time_unix_get() * 1000 is too big to fit in a uint32, so take the
time we instantiate the wayland pixmap hash and use that as a base.
---
 src/bin/e_pixmap.c | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index db17307..1061da6 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -64,6 +64,8 @@ struct _E_Pixmap
 
 #ifdef HAVE_WAYLAND
 
+double wayland_time_base;
+
 static void
 _e_pixmap_cb_deferred_buffer_destroy(struct wl_listener *listener, void *data 
EINA_UNUSED)
 {
@@ -342,7 +344,10 @@ e_pixmap_new(E_Pixmap_Type type, ...)
}
   }
 else
-  pixmaps[type] = eina_hash_int64_new((Eina_Free_Cb)_e_pixmap_free);
+  {
+ pixmaps[type] = eina_hash_int64_new((Eina_Free_Cb)_e_pixmap_free);
+ wayland_time_base = ecore_time_unix_get();
+  }
 cp = _e_pixmap_new(type);
 cp->win = id;
 eina_hash_add(pixmaps[type], , cp);
@@ -799,7 +804,8 @@ e_pixmap_image_clear(E_Pixmap *cp, Eina_Bool cache)
  cd->frames = NULL;
  EINA_LIST_FREE(free_list, cb)
{
-  wl_callback_send_done(cb, ecore_time_unix_get() * 1000);
+  double t = ecore_time_unix_get() - wayland_time_base;
+  wl_callback_send_done(cb, t * 1000);
   wl_resource_destroy(cb);
}
   }

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 08/26: efm - warning - change invalid #if toe #ifdef as this is right

2017-02-03 Thread Carsten Haitzler
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=2b5ea659812f221e4631c31df9be9565f58f4ca5

commit 2b5ea659812f221e4631c31df9be9565f58f4ca5
Author: Carsten Haitzler (Rasterman) 
Date:   Wed Dec 28 19:15:58 2016 +0900

efm - warning - change invalid #if toe #ifdef as this is right
---
 src/bin/e_fm_shared_device.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_fm_shared_device.c b/src/bin/e_fm_shared_device.c
index a140f0d..237fca0 100644
--- a/src/bin/e_fm_shared_device.c
+++ b/src/bin/e_fm_shared_device.c
@@ -22,10 +22,10 @@ _e_fm_shared_device_storage_free(E_Storage *s)
eina_stringshare_del(s->serial);
eina_stringshare_del(s->icon.drive);
eina_stringshare_del(s->icon.volume);
-#if HAVE_UDISKS_MOUNT
+#ifdef HAVE_UDISKS_MOUNT
eina_stringshare_del(s->dbus_path);
 #endif
-#if HAVE_EEZE_MOUNT
+#ifdef HAVE_EEZE_MOUNT
if (s->disk) eeze_disk_free(s->disk);
 #endif
free(s);
@@ -47,7 +47,7 @@ _e_fm_shared_device_volume_free(E_Volume *v)
if (v->partition_label) eina_stringshare_del(v->partition_label);
if (v->mount_point) eina_stringshare_del(v->mount_point);
if (v->parent) eina_stringshare_del(v->parent);
-#if HAVE_UDISKS_MOUNT
+#ifdef HAVE_UDISKS_MOUNT
eina_stringshare_del(v->dbus_path);
 #endif
free(v);

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 03/26: plug iterator leak in e_comp_object_render()

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=08d96c67de1c6de2839482e510f2c0bd5a976531

commit 08d96c67de1c6de2839482e510f2c0bd5a976531
Author: Mike Blumenkrantz 
Date:   Wed Dec 14 10:16:23 2016 -0500

plug iterator leak in e_comp_object_render()

==13307== 96 bytes in 1 blocks are definitely lost in loss record 6,598 of 
11,698
==13307==at 0x4C2DA60: calloc (vg_replace_malloc.c:711)
==13307==by 0xCECA287: eina_tiler_iterator_new (eina_tiler.c:1299)
==13307==by 0x46D13D: e_comp_object_render (e_comp_object.c:3966)
==13307==by 0x46DB42: e_comp_object_dirty (e_comp_object.c:3923)
==13307==by 0x46017D: _e_comp_client_update (e_comp.c:343)
==13307==by 0x46017D: _e_comp_cb_update (e_comp.c:400)
==13307==by 0xB34D4BA: _ecore_job_event_handler (ecore_job.c:98)
==13307==by 0xB34909C: _ecore_call_handler_cb (ecore_private.h:317)
==13307==by 0xB34909C: _ecore_event_call (ecore_events.c:518)
==13307==by 0xB350527: _ecore_main_loop_iterate_internal 
(ecore_main.c:2359)
==13307==by 0xB3508A6: ecore_main_loop_begin (ecore_main.c:1287)
==13307==by 0x43C88A: main (e_main.c:1093)
---
 src/bin/e_comp_object.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 95706dd..c9457ce 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3871,7 +3871,7 @@ e_comp_object_dirty(Evas_Object *obj)
 E_API Eina_Bool
 e_comp_object_render(Evas_Object *obj)
 {
-   Eina_Iterator *it;
+   Eina_Iterator *it = NULL;
Eina_Rectangle *r;
Eina_List *l;
Evas_Object *o;
@@ -3960,8 +3960,8 @@ e_comp_object_render(Evas_Object *obj)
 RENDER_DEBUG("UPDATE [%p]: %d %d %dx%d -- pix = %p", cw->ec, r->x, 
r->y, r->w, r->h, pix);
  }
if (!it) pix = NULL;
-   eina_iterator_free(it);
 end:
+   eina_iterator_free(it);
evas_object_image_data_set(cw->obj, cw->blanked ? NULL : pix);
_e_comp_object_alpha_set(cw);
 

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 20/26: handle pixmap_refresh() failure cases more accurately under wayland

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=7608cebd8591ba2689a5606351cce1bc4adb5fb3

commit 7608cebd8591ba2689a5606351cce1bc4adb5fb3
Author: Mike Blumenkrantz 
Date:   Fri Jan 13 11:35:26 2017 -0500

handle pixmap_refresh() failure cases more accurately under wayland

non-usable pixmaps here are still valid in some cases, such as when
no buffer is attached
---
 src/bin/e_pixmap.c | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index ee5d8f7..1625cd4 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -457,11 +457,6 @@ e_pixmap_refresh(E_Pixmap *cp)
 
EINA_SAFETY_ON_NULL_RETURN_VAL(cp, EINA_FALSE);
 
-   if (!cp->usable)
- {
-cp->failures++;
-return EINA_FALSE;
- }
if (!cp->dirty) return EINA_TRUE;
switch (cp->type)
  {
@@ -472,6 +467,11 @@ e_pixmap_refresh(E_Pixmap *cp)
int pw, ph;
E_Comp_X_Client_Data *cd = NULL;
 
+   if (!cp->usable)
+ {
+cp->failures++;
+return EINA_FALSE;
+ }
pixmap = ecore_x_composite_name_window_pixmap_get(cp->parent ?: 
(Ecore_X_Window)cp->win);
if (cp->client)
  {

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 24/26: e dialog - fix unreszable dialogs to not be 1x1

2017-02-03 Thread Carsten Haitzler
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=0a1733ba9a9eb2b690a458408ccd1f1105c59430

commit 0a1733ba9a9eb2b690a458408ccd1f1105c59430
Author: Carsten Haitzler (Rasterman) 
Date:   Mon Jan 30 12:54:16 2017 +0900

e dialog - fix unreszable dialogs to not be 1x1

so i see non-resizable dialogs end up 1x1... this fixes that.
---
 src/bin/e_dialog.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_dialog.c b/src/bin/e_dialog.c
index 2b0435b..b8c385e 100644
--- a/src/bin/e_dialog.c
+++ b/src/bin/e_dialog.c
@@ -257,7 +257,7 @@ e_dialog_show(E_Dialog *dia)
if (!dia->resizable)
  {
 evas_object_size_hint_weight_set(dia->bg_object, 0, 0);
-evas_object_size_hint_max_set(dia->bg_object, mw, mh);
+e_util_win_auto_resize_fill(dia->win);
  }
else
  {

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 19/26: ensure that gadget internal del callbacks are handled before other callbacks

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=1644a7ec0abe285ce87342a714d7f65230134826

commit 1644a7ec0abe285ce87342a714d7f65230134826
Author: Mike Blumenkrantz 
Date:   Fri Jan 13 11:35:26 2017 -0500

ensure that gadget internal del callbacks are handled before other callbacks
---
 src/bin/e_gadget.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
index a21b558..14dd018 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -322,7 +322,7 @@ _gadget_object_create(E_Gadget_Config *zgc)
 
if (!zgc->site->orient)
  evas_object_smart_need_recalculate_set(zgc->site->layout, 1);
-   evas_object_event_callback_add(g, EVAS_CALLBACK_DEL, _gadget_del, zgc);
+   evas_object_event_callback_priority_add(g, EVAS_CALLBACK_DEL, 
EVAS_CALLBACK_PRIORITY_BEFORE, _gadget_del, zgc);
_gadget_reparent(zgc->site, zgc);
elm_object_tree_focus_allow_set(zgc->gadget, 0);
evas_object_raise(zgc->site->events);
@@ -1513,7 +1513,7 @@ e_gadget_util_layout_style_init(Evas_Object *g, 
Evas_Object *style)
  {
 elm_layout_file_get(style, NULL, );
 eina_stringshare_replace(>style.name, strrchr(grp, '/') + 1);
-evas_object_event_callback_add(style, EVAS_CALLBACK_DEL, _gadget_del, 
zgc);
+evas_object_event_callback_priority_add(style, EVAS_CALLBACK_DEL, 
EVAS_CALLBACK_PRIORITY_BEFORE, _gadget_del, zgc);
  }
else
  eina_stringshare_replace(>style.name, NULL);

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 12/26: ibar - fix seg with ibar icon task menus are up while desktop files change

2017-02-03 Thread Carsten Haitzler
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=287b5ea0d952fd0bf72b89b85ef671ad6a2c1bbc

commit 287b5ea0d952fd0bf72b89b85ef671ad6a2c1bbc
Author: Carsten Haitzler (Rasterman) 
Date:   Mon Jan 2 23:26:14 2017 +0900

ibar - fix seg with ibar icon task menus are up while desktop files change

segv if u go do make installs that install desktop files causing
efreet to recheck desktop files causing e to reset desktop files
causing ibar to refill icons but this causea a segv if a hover menu of
windows for that icon are up at the same time. this fixes that.

@fix
---
 src/modules/ibar/e_mod_main.c | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index 6ecbe14..d8909c9 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -140,6 +140,8 @@ static void _ibar_exec_new_client_show(void *data, 
Evas *e EINA_UNUSED,
 static Eina_Bool_ibar_cb_out_hide_delay(void *data);
 static void _ibar_icon_menu_show(IBar_Icon *ic, Eina_Bool grab);
 static void _ibar_icon_menu_hide(IBar_Icon *ic, Eina_Bool grab);
+static void _ibar_cb_icon_menu_img_del(void *data, Evas *e 
EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED);
+static void _ibar_cb_icon_frame_del(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *event_info EINA_UNUSED);
 
 static E_Config_DD *conf_edd = NULL;
 static E_Config_DD *conf_item_edd = NULL;
@@ -872,7 +874,14 @@ _ibar_icon_free(IBar_Icon *ic)
E_Exec_Instance *inst;
Evas_Object *o;
 
-   EINA_LIST_FREE(ic->client_objs, o) evas_object_del(o);
+   EINA_LIST_FREE(ic->client_objs, o)
+ {
+evas_object_event_callback_del(o, EVAS_CALLBACK_DEL,
+   _ibar_cb_icon_frame_del);
+evas_object_event_callback_del(o, EVAS_CALLBACK_DEL,
+   _ibar_cb_icon_menu_img_del);
+evas_object_del(o);
+ }
if (ic->ibar->menu_icon == ic) ic->ibar->menu_icon = NULL;
if (ic->ibar->ic_drop_before == ic) ic->ibar->ic_drop_before = NULL;
if (ic->menu) e_object_data_set(E_OBJECT(ic->menu), NULL);

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 23/26: reset demo gadget id before deleting gadget object during drop operation

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=1abdbe81b507447889d621089e6bb0f98099285a

commit 1abdbe81b507447889d621089e6bb0f98099285a
Author: Mike Blumenkrantz 
Date:   Fri Jan 20 11:52:52 2017 -0500

reset demo gadget id before deleting gadget object during drop operation

ensure that the gadget is marked as usable so that the config isn't deleted
---
 src/bin/e_gadget.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
index 14dd018..7935b5f 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -1002,24 +1002,24 @@ _site_drop(void *data, Evas_Object *obj EINA_UNUSED, 
void *event_info)
EINA_LIST_REVERSE_FOREACH(drop->gadgets, ll, dzgc)
  {
 evas_object_smart_callback_call(zgs->layout, 
"gadget_moved", dzgc->gadget);
+if (dzgc->id == -1) dzgc->id = 0;
 evas_object_del(dzgc->gadget);
 zgs->gadget_list = 
eina_inlist_prepend_relative(zgs->gadget_list,
   EINA_INLIST_GET(dzgc), EINA_INLIST_GET(zgc));
 zgs->gadgets = 
eina_list_prepend_relative_list(zgs->gadgets, dzgc, l);
 dzgc->site = zgs;
-if (dzgc->id == -1) dzgc->id = 0;
 _gadget_object_finalize(dzgc);
  }
  else
EINA_LIST_REVERSE_FOREACH(drop->gadgets, ll, dzgc)
  {
 evas_object_smart_callback_call(zgs->layout, 
"gadget_moved", dzgc->gadget);
+if (dzgc->id == -1) dzgc->id = 0;
 evas_object_del(dzgc->gadget);
 zgs->gadget_list = 
eina_inlist_append_relative(zgs->gadget_list,
   EINA_INLIST_GET(dzgc), EINA_INLIST_GET(zgc));
 zgs->gadgets = 
eina_list_append_relative_list(zgs->gadgets, dzgc, l);
 dzgc->site = zgs;
-if (dzgc->id == -1) dzgc->id = 0;
 _gadget_object_finalize(dzgc);
  }
   }
@@ -1058,12 +1058,12 @@ _site_drop(void *data, Evas_Object *obj EINA_UNUSED, 
void *event_info)
   EINA_LIST_FOREACH(drop->gadgets, l, dzgc)
 {
evas_object_smart_callback_call(zgs->layout, 
"gadget_moved", dzgc->gadget);
+   if (dzgc->id == -1) dzgc->id = 0;
evas_object_del(dzgc->gadget);
zgs->gadget_list = eina_inlist_append(zgs->gadget_list,
  EINA_INLIST_GET(dzgc));
zgs->gadgets = eina_list_append(zgs->gadgets, dzgc);
dzgc->site = zgs;
-   if (dzgc->id == -1) dzgc->id = 0;
_gadget_object_finalize(dzgc);
 }
}
@@ -1093,6 +1093,7 @@ _site_drop(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info)
   /* calculate positioning offsets and normalize based on drop 
point */
   evas_object_geometry_get(dzgc->display, , , , );
   evas_object_smart_callback_call(zgs->layout, "gadget_moved", 
dzgc->gadget);
+  if (dzgc->id == -1) dzgc->id = 0;
   evas_object_del(dzgc->gadget);
   zgs->gadget_list = eina_inlist_append(zgs->gadget_list,
 EINA_INLIST_GET(dzgc));
@@ -1102,7 +1103,6 @@ _site_drop(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info)
   dzgc->w = gw / (double)w;
   dzgc->h = gh / (double)h;
   dzgc->site = zgs;
-  if (dzgc->id == -1) dzgc->id = 0;
   _gadget_object_finalize(dzgc);
}
   }

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 22/26: re-enable getting and setting output rotations in wl_drm

2017-02-03 Thread Christopher Michael
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=54ecd5e56bfd93ae5c1ab20737c1843f5ba8ab2c

commit 54ecd5e56bfd93ae5c1ab20737c1843f5ba8ab2c
Author: Chris Michael 
Date:   Wed Jan 18 11:30:30 2017 -0500

re-enable getting and setting output rotations in wl_drm

Small patch to re-enable the ability to query and set the rotation of
an output.

Signed-off-by: Chris Michael 
---
 src/modules/wl_drm/e_mod_main.c | 44 +
 1 file changed, 27 insertions(+), 17 deletions(-)

diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index 5f50f2d..5562cd8 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -502,30 +502,26 @@ _drm2_randr_create(void)
  s->config.geom.w, s->config.geom.h);
}
 
- /* TODO: cannot support rotations until we support planes
-  * and we cannot support planes until Atomic support is in */
-
  s->info.can_rot_0 = EINA_FALSE;
  s->info.can_rot_90 = EINA_FALSE;
  s->info.can_rot_180 = EINA_FALSE;
  s->info.can_rot_270 = EINA_FALSE;
 
-/* # if (EFL_VERSION_MAJOR > 1) || (EFL_VERSION_MINOR >= 18) */
-/*  unsigned int rotations; */
+# if (EFL_VERSION_MAJOR > 1) || (EFL_VERSION_MINOR >= 18)
+ int rotations;
 
-/*  rotations = */
-/*ecore_drm_output_supported_rotations_get(output, */
-/* 
ECORE_DRM_PLANE_TYPE_PRIMARY); */
+ rotations =
+   ecore_drm2_output_supported_rotations_get(output);
 
-/*  if (rotations & ECORE_DRM_PLANE_ROTATION_NORMAL) */
-/*s->info.can_rot_0 = EINA_TRUE; */
-/*  if (rotations & ECORE_DRM_PLANE_ROTATION_90) */
-/*s->info.can_rot_90 = EINA_TRUE; */
-/*  if (rotations & ECORE_DRM_PLANE_ROTATION_180) */
-/*s->info.can_rot_180 = EINA_TRUE; */
-/*  if (rotations & ECORE_DRM_PLANE_ROTATION_270) */
-/*s->info.can_rot_270 = EINA_TRUE; */
-/* # endif */
+ if (rotations & ECORE_DRM2_ROTATION_NORMAL)
+   s->info.can_rot_0 = EINA_TRUE;
+ if (rotations & ECORE_DRM2_ROTATION_90)
+   s->info.can_rot_90 = EINA_TRUE;
+ if (rotations & ECORE_DRM2_ROTATION_180)
+   s->info.can_rot_180 = EINA_TRUE;
+ if (rotations & ECORE_DRM2_ROTATION_270)
+   s->info.can_rot_270 = EINA_TRUE;
+# endif
 
  if (cs)
{
@@ -683,6 +679,20 @@ _drm2_randr_apply(void)
 
 /* TODO: cannot support rotations until we support planes
  * and we cannot support planes until Atomic support is in */
+# if (EFL_VERSION_MAJOR > 1) || (EFL_VERSION_MINOR >= 18)
+int orient;
+
+if (s->config.rotation == 0)
+  orient = ECORE_DRM2_ROTATION_NORMAL;
+else if (s->config.rotation == 90)
+  orient = ECORE_DRM2_ROTATION_90;
+else if (s->config.rotation == 180)
+  orient = ECORE_DRM2_ROTATION_180;
+else if (s->config.rotation == 270)
+  orient = ECORE_DRM2_ROTATION_270;
+
+ecore_drm2_output_rotation_set(output, orient);
+# endif
 
 if (s->config.priority == top_priority)
   _drm2_output_primary_set(outputs, output);

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 09/26: efm - fix ifs to be ifdef as they should be

2017-02-03 Thread Carsten Haitzler
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=56789ef8095ac91ed14edaa37c315b123dd732e0

commit 56789ef8095ac91ed14edaa37c315b123dd732e0
Author: Carsten Haitzler (Rasterman) 
Date:   Wed Dec 28 19:54:26 2016 +0900

efm - fix ifs to be ifdef as they should be
---
 src/bin/e_fm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c
index 1a4ee29..b05ef1e 100644
--- a/src/bin/e_fm.c
+++ b/src/bin/e_fm.c
@@ -547,7 +547,7 @@ _e_fm2_icon_path(const E_Fm2_Icon *ic, char *buf, int 
buflen)
 static inline Eina_Bool
 _e_fm2_ext_is_edje(const char *ext)
 {
-#if E_FM2_SIMPLE_STRCASE_FILES
+#ifdef E_FM2_SIMPLE_STRCASE_FILES
if ((ext[0] == 'e') && (ext[1] == 'd') && (ext[2] == 'j'))
  return 1;
else if ((ext[0] == 'E') && (ext[1] == 'D') && (ext[2] == 'J'))
@@ -562,7 +562,7 @@ _e_fm2_ext_is_edje(const char *ext)
 static inline Eina_Bool
 _e_fm2_ext_is_desktop(const char *ext)
 {
-#if E_FM2_SIMPLE_STRCASE_FILES
+#ifdef E_FM2_SIMPLE_STRCASE_FILES
if ((ext[0] == 'd') &&
((strcmp(ext + 1, "esktop") == 0) ||
 (strcmp(ext + 1, "irectory") == 0)))
@@ -586,7 +586,7 @@ _e_fm2_ext_is_desktop(const char *ext)
 static inline Eina_Bool
 _e_fm2_ext_is_imc(const char *ext)
 {
-#if E_FM2_SIMPLE_STRCASE_FILES
+#ifdef E_FM2_SIMPLE_STRCASE_FILES
if ((ext[0] == 'i') && (ext[1] == 'm') && (ext[2] == 'c'))
  return 1;
else if ((ext[0] == 'I') && (ext[1] == 'M') && (ext[2] == 'C'))

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 01/26: correctly set E_POINTER_RESIZE_BR mode for client keyboard resizing

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=d5aceefc914302723d2d2452b25bf5d77b1e18d7

commit d5aceefc914302723d2d2452b25bf5d77b1e18d7
Author: Mike Blumenkrantz 
Date:   Tue Dec 13 11:09:19 2016 -0500

correctly set E_POINTER_RESIZE_BR mode for client keyboard resizing

typo from when this was refactored

fix T2452, T2579
---
 src/bin/e_client.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 5e027c5..26e7f8b 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -4411,7 +4411,7 @@ e_client_act_resize_keyboard(E_Client *ec)
EINA_SAFETY_ON_NULL_RETURN(ec);
if (!ec->zone) return;
 
-   ec->resize_mode = E_POINTER_RESIZE_TL;
+   ec->resize_mode = E_POINTER_RESIZE_BR;
ec->keyboard_resizing = 1;
if (!e_client_resize_begin(ec))
  {

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 05/26: remove extra SLEEP prints during startup on non-release builds

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=83f64194bacdc18fad743426dc39a2c0d87fbe85

commit 83f64194bacdc18fad743426dc39a2c0d87fbe85
Author: Mike Blumenkrantz 
Date:   Mon Dec 19 10:54:17 2016 -0500

remove extra SLEEP prints during startup on non-release builds

this was useful for startup profiling, but there are better methods 
available now

partially reverts 2850c2816758f8398fb87c6e653f3bd4ebc9f992
---
 src/bin/e_main.c | 17 +++--
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/src/bin/e_main.c b/src/bin/e_main.c
index 108edf6..b609c58 100644
--- a/src/bin/e_main.c
+++ b/src/bin/e_main.c
@@ -1786,21 +1786,10 @@ _e_main_cb_idle_after(void *data EINA_UNUSED)
eet_clearcache();
edje_freeze();
 
-#ifdef E_RELEASE_BUILD
if (first_idle)
- {
-TS("SLEEP");
-first_idle = 0;
-e_precache_end = EINA_TRUE;
- }
-#else
-   if (first_idle++ < 60)
- {
-TS("SLEEP");
-if (!first_idle)
-  e_precache_end = EINA_TRUE;
- }
-#endif
+ TS("SLEEP");
+   first_idle = 0;
+   e_precache_end = EINA_TRUE;
 
return ECORE_CALLBACK_RENEW;
 }

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 13/26: Enlightenment: Make gadget editor popup scrollable:

2017-02-03 Thread Stephen 'Okra' Houston
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=79342184b9beb1a6975d12a9f74155d53bf915c8

commit 79342184b9beb1a6975d12a9f74155d53bf915c8
Author: Stephen 'Okra' Houston 
Date:   Mon Jan 9 10:39:39 2017 -0600

Enlightenment: Make gadget editor popup scrollable:

This fixes T5077
---
 src/bin/e_gadget.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
index 5f980c4..fd8d3bd 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -2028,6 +2028,7 @@ e_gadget_site_edit(Evas_Object *site)
  }
 
popup = elm_popup_add(e_comp->elm);
+   elm_popup_scrollable_set(popup, EINA_TRUE);
elm_popup_allow_events_set(popup, 1);
 
editor = e_gadget_editor_add(e_comp->elm, site);

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 26/26: add conditional updates for latest efl apis

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=72bfd182d16ca4815b58d8200cfc15b14039c8bb

commit 72bfd182d16ca4815b58d8200cfc15b14039c8bb
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:29:38 2017 -0500

add conditional updates for latest efl apis

ref dc2bad0fcda063ee72b35beb3954cc2fc1eb94ba
---
 src/bin/e_alert_main.c  | 12 +++-
 src/modules/wl_drm/e_mod_main.c | 21 ++---
 2 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/src/bin/e_alert_main.c b/src/bin/e_alert_main.c
index 6de8498..fc078f7 100644
--- a/src/bin/e_alert_main.c
+++ b/src/bin/e_alert_main.c
@@ -488,7 +488,17 @@ _e_alert_drm_display(void)
updates = evas_render_updates(canvas);
evas_render_updates_free(updates);
 
-   ecore_drm2_fb_flip(buffer, output, NULL);
+#ifdef EFL_VERSION_1_19
+   ecore_drm2_fb_flip(buffer, output);
+#else
+   if (E_EFL_VERSION_MINIMUM(1, 18, 99))
+ {
+void (*fn)(void*, void*) = dlsym(NULL, "ecore_drm2_fb_flip");
+if (fn) fn(buffer, output);
+ }
+   else
+ ecore_drm2_fb_flip(buffer, output, NULL);
+#endif
 }
 
 static void
diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index 5562cd8..914a88a 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -798,12 +798,27 @@ _drm2_read_pixels(E_Comp_Wl_Output *output, void *pixels)
out = ecore_drm2_output_find(dev, output->x, output->y);
if (!out) return;
 
-   fb = ecore_drm2_output_next_fb_get(out);
-   if (!fb)
+#ifdef EFL_VERSION_1_19
+   fb = ecore_drm2_output_latest_fb_get(out);
+   if (!fb) return;
+#else
+   if (E_EFL_VERSION_MINIMUM(1, 18, 99))
  {
-fb = ecore_drm2_output_current_fb_get(out);
+void *(*fn)(void*) = dlsym(NULL, "ecore_drm2_output_latest_fb_get");
+if (!fn) return;
+fb = fn(out);
 if (!fb) return;
  }
+   else
+ {
+fb = ecore_drm2_output_next_fb_get(out);
+if (!fb)
+  {
+ fb = ecore_drm2_output_current_fb_get(out);
+ if (!fb) return;
+  }
+ }
+#endif
 
data = ecore_drm2_fb_data_get(fb);
fstride = ecore_drm2_fb_stride_get(fb);

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 06/26: 10_typo_restore_LDFLAGS.diff: Fix typo in configure.ac (upstream), causing empty LDFLAGS.

2017-02-03 Thread Andreas Metzler
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=b6852b2120a9552d5d038c7d426d2e99d1c317dd

commit b6852b2120a9552d5d038c7d426d2e99d1c317dd
Author: Andreas Metzler 
Date:   Thu Dec 22 10:17:48 2016 -0500

10_typo_restore_LDFLAGS.diff: Fix typo in configure.ac (upstream), causing 
empty LDFLAGS.

Summary: typo spotted while packaging E 0.21.5 for Debian experimental

Reviewers: zmike!

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D4507
---
 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 2e9588d..e3b8808 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1041,7 +1041,7 @@ case "$host_os" in
  AC_MSG_RESULT(yes)],
  AC_MSG_RESULT(no))
 CFLAGS="$OLDCFLAGS"
-LDFLAGS="$OLDLFDLAGS"
+LDFLAGS="$OLDLDFLAGS"
   fi
   ;;
 esac

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 10/26: e bindings - fix warnings about possible use of undefined var

2017-02-03 Thread Carsten Haitzler
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=99ecc6ad3d9ceb1fc6ce21a06c2cdf0f9645d775

commit 99ecc6ad3d9ceb1fc6ce21a06c2cdf0f9645d775
Author: Carsten Haitzler (Rasterman) 
Date:   Wed Dec 28 19:59:38 2016 +0900

e bindings - fix warnings about possible use of undefined var
---
 src/bin/e_bindings.c | 16 
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/bin/e_bindings.c b/src/bin/e_bindings.c
index 5381783..543d7de 100644
--- a/src/bin/e_bindings.c
+++ b/src/bin/e_bindings.c
@@ -879,7 +879,7 @@ e_bindings_edge_event_find(E_Binding_Context ctxt, 
E_Event_Zone_Edge *ev, Eina_B
 E_API E_Action *
 e_bindings_edge_in_event_handle(E_Binding_Context ctxt, E_Object *obj, 
E_Event_Zone_Edge *ev)
 {
-   E_Binding_Edge *binding;
+   E_Binding_Edge *binding = NULL;
E_Desk *current = NULL;
E_Action *act = NULL;
E_Binding_Edge_Data *ed;
@@ -889,7 +889,7 @@ e_bindings_edge_in_event_handle(E_Binding_Context ctxt, 
E_Object *obj, E_Event_Z
current = e_desk_at_xy_get(ev->zone, ev->zone->desk_x_current, 
ev->zone->desk_y_current);
if (current->fullscreen_clients && (!e_config->fullscreen_flip)) return 
NULL;
act = e_bindings_edge_event_find(ctxt, ev, 0, );
-   if (!act) return NULL;
+   if ((!act) || (!binding)) return NULL;
ed = E_NEW(E_Binding_Edge_Data, 1);
ev2 = E_NEW(E_Event_Zone_Edge, 1);
 
@@ -911,7 +911,7 @@ e_bindings_edge_in_event_handle(E_Binding_Context ctxt, 
E_Object *obj, E_Event_Z
 E_API E_Action *
 e_bindings_edge_out_event_handle(E_Binding_Context ctxt, E_Object *obj, 
E_Event_Zone_Edge *ev)
 {
-   E_Binding_Edge *binding;
+   E_Binding_Edge *binding = NULL;
E_Action *act = NULL;
E_Desk *current = NULL;
 
@@ -919,7 +919,7 @@ e_bindings_edge_out_event_handle(E_Binding_Context ctxt, 
E_Object *obj, E_Event_
current = e_desk_at_xy_get(ev->zone, ev->zone->desk_x_current, 
ev->zone->desk_y_current);
if (current->fullscreen_clients && (!e_config->fullscreen_flip)) return 
NULL;
act = e_bindings_edge_event_find(ctxt, ev, 0, );
-   if (!act) return NULL;
+   if ((!act) || (!binding)) return NULL;
if (binding->timer)
  {
 E_Binding_Edge_Data *ed;
@@ -942,7 +942,7 @@ e_bindings_edge_out_event_handle(E_Binding_Context ctxt, 
E_Object *obj, E_Event_
 E_API E_Action *
 e_bindings_edge_down_event_handle(E_Binding_Context ctxt, E_Object *obj, 
E_Event_Zone_Edge *ev)
 {
-   E_Binding_Edge *binding;
+   E_Binding_Edge *binding = NULL;
E_Desk *current = NULL;
E_Action *act = NULL;
 
@@ -950,7 +950,7 @@ e_bindings_edge_down_event_handle(E_Binding_Context ctxt, 
E_Object *obj, E_Event
current = e_desk_at_xy_get(ev->zone, ev->zone->desk_x_current, 
ev->zone->desk_y_current);
if (current->fullscreen_clients && (!e_config->fullscreen_flip)) return 
NULL;
act = e_bindings_edge_event_find(ctxt, ev, 1, );
-   if (!act) return NULL;
+   if ((!act) || (!binding)) return NULL;
if (act->func.go_edge)
  act->func.go_edge(obj, binding->params, ev);
else if (act->func.go)
@@ -961,7 +961,7 @@ e_bindings_edge_down_event_handle(E_Binding_Context ctxt, 
E_Object *obj, E_Event
 E_API E_Action *
 e_bindings_edge_up_event_handle(E_Binding_Context ctxt, E_Object *obj, 
E_Event_Zone_Edge *ev)
 {
-   E_Binding_Edge *binding;
+   E_Binding_Edge *binding = NULL;
E_Action *act = NULL;
E_Desk *current = NULL;
 
@@ -969,7 +969,7 @@ e_bindings_edge_up_event_handle(E_Binding_Context ctxt, 
E_Object *obj, E_Event_Z
current = e_desk_at_xy_get(ev->zone, ev->zone->desk_x_current, 
ev->zone->desk_y_current);
if (current->fullscreen_clients && (!e_config->fullscreen_flip)) return 
NULL;
act = e_bindings_edge_event_find(ctxt, ev, 1, );
-   if (!act) return NULL;
+   if ((!act) || (!binding)) return NULL;
act = e_action_find(binding->action);
if (act && act->func.end)
  act->func.end(obj, binding->params);

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 16/26: free configs for demo gadgets on object free

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=5ab0d5be8863fd9d8f4a90b4dcfe6aaacb864595

commit 5ab0d5be8863fd9d8f4a90b4dcfe6aaacb864595
Author: Mike Blumenkrantz 
Date:   Fri Jan 13 11:35:26 2017 -0500

free configs for demo gadgets on object free

these are purely for demo purposes and should never be retained

I think this is right...
---
 src/bin/e_gadget.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
index fd8d3bd..a21b558 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -272,6 +272,7 @@ _gadget_object_free(E_Object *eobj)
E_FREE(zgc->e_obj_inherit);
zgc->configure = NULL;
zgc->display_del = zgc->moving = zgc->resizing = 0;
+   if (zgc->id == -1) _gadget_free(zgc);
 }
 
 static void

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 18/26: use persistent clipping for comp object input rects

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=bc9103ec6811524de4cb2f1681ee77f557a1956c

commit bc9103ec6811524de4cb2f1681ee77f557a1956c
Author: Mike Blumenkrantz 
Date:   Fri Jan 13 11:35:26 2017 -0500

use persistent clipping for comp object input rects

it's technically legal to set an input region larger than a surface,
then later expand the surface and expect that the input region will
also expand
---
 src/bin/e_comp_object.c | 30 ++
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index c9457ce..deddc9f 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -2430,6 +2430,21 @@ _e_comp_smart_del(Evas_Object *obj)
 }
 
 static void
+_e_comp_object_input_rect_update(E_Comp_Object *cw)
+{
+   int x, y, w, h;
+
+   if (!cw->input_obj) return;
+   x = cw->input_rect.x, y = cw->input_rect.y, w = cw->input_rect.w, h = 
cw->input_rect.h;
+
+   E_RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, cw->ec->client.w, cw->ec->client.h);
+   evas_object_geometry_set(cw->input_obj,
+   cw->x + x + (!!cw->frame_object * cw->client_inset.l),
+   cw->y + y + (!!cw->frame_object * cw->client_inset.t),
+   w, h);
+}
+
+static void
 _e_comp_smart_move(Evas_Object *obj, int x, int y)
 {
Eina_List *l;
@@ -2445,10 +2460,7 @@ _e_comp_smart_move(Evas_Object *obj, int x, int y)
evas_object_move(cw->clip, 0, 0);
evas_object_move(cw->effect_obj, x, y);
if (cw->input_obj)
- evas_object_geometry_set(cw->input_obj,
-   cw->x + cw->input_rect.x + (!!cw->frame_object * cw->client_inset.l),
-   cw->y + cw->input_rect.y + (!!cw->frame_object * cw->client_inset.t),
-   cw->input_rect.w, cw->input_rect.h);
+ _e_comp_object_input_rect_update(cw);
/* this gets called once during setup to init coords offscreen and 
guarantee first move */
if (e_comp && cw->visible)
  e_comp_shape_queue();
@@ -2493,10 +2505,7 @@ _e_comp_smart_resize(Evas_Object *obj, int w, int h)
 evas_object_resize(cw->effect_obj, w, h);
 if (cw->zoomobj) e_zoomap_child_resize(cw->zoomobj, pw, ph);
 if (cw->input_obj)
-  evas_object_geometry_set(cw->input_obj,
-cw->x + cw->input_rect.x + (!!cw->frame_object * 
cw->client_inset.l),
-cw->y + cw->input_rect.y + (!!cw->frame_object * 
cw->client_inset.t),
-cw->input_rect.w, cw->input_rect.h);
+  _e_comp_object_input_rect_update(cw);
 /* resize render update tiler */
 if (!first)
   {
@@ -3123,7 +3132,6 @@ e_comp_object_input_area_set(Evas_Object *obj, int x, int 
y, int w, int h)
API_ENTRY;
 
//INF("%d,%d %dx%d", x, y, w, h);
-   E_RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, cw->ec->client.w, cw->ec->client.h);
if ((cw->input_rect.x == x) && (cw->input_rect.y == y) &&
(cw->input_rect.w == w) && (cw->input_rect.h == h)) return;
EINA_RECTANGLE_SET(>input_rect, x, y, w, h);
@@ -3138,9 +3146,7 @@ e_comp_object_input_area_set(Evas_Object *obj, int x, int 
y, int w, int h)
  evas_object_clip_set(cw->input_obj, cw->clip);
  evas_object_smart_member_add(cw->input_obj, obj);
   }
-evas_object_geometry_set(cw->input_obj,
-  cw->ec->client.x + (!!cw->frame_object * cw->client_inset.l) + x,
-  cw->ec->client.y + (!!cw->frame_object * cw->client_inset.t) + y, w, 
h);
+_e_comp_object_input_rect_update(cw);
 evas_object_pass_events_set(cw->obj, 1);
 if (cw->visible) evas_object_show(cw->input_obj);
  }

-- 




[EGIT] [core/efl] master 01/01: elput: add event for relative motion

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9a8931c3de9690755ee4e943160021d8c3cd7232

commit 9a8931c3de9690755ee4e943160021d8c3cd7232
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:14:01 2017 -0500

elput: add event for relative motion

@feature
---
 src/lib/elput/Elput.h   | 14 ++
 src/lib/elput/elput.c   |  3 +++
 src/lib/elput/elput_evdev.c | 19 +++
 3 files changed, 36 insertions(+)

diff --git a/src/lib/elput/Elput.h b/src/lib/elput/Elput.h
index b48caa1..378912e 100644
--- a/src/lib/elput/Elput.h
+++ b/src/lib/elput/Elput.h
@@ -98,6 +98,17 @@ typedef struct _Elput_Event_Session_Active
Eina_Bool active : 1;
 } Elput_Event_Session_Active;
 
+/** @since 1.19 */
+typedef struct Elput_Event_Pointer_Motion
+{
+   uint64_t time_usec;
+   double dx;
+   double dy;
+   double dx_unaccel;
+   double dy_unaccel;
+} Elput_Event_Pointer_Motion;
+
+
 EAPI extern int ELPUT_EVENT_SEAT_CAPS;
 EAPI extern int ELPUT_EVENT_SEAT_FRAME;
 EAPI extern int ELPUT_EVENT_KEYMAP_SEND;
@@ -105,6 +116,9 @@ EAPI extern int ELPUT_EVENT_MODIFIERS_SEND;
 EAPI extern int ELPUT_EVENT_DEVICE_CHANGE;
 EAPI extern int ELPUT_EVENT_SESSION_ACTIVE;
 
+/** @since 1.19 */
+EAPI extern int ELPUT_EVENT_POINTER_MOTION;
+
 /**
  * @file
  * @brief Ecore functions for dealing with libinput
diff --git a/src/lib/elput/elput.c b/src/lib/elput/elput.c
index 95d7a1e..561c98a 100644
--- a/src/lib/elput/elput.c
+++ b/src/lib/elput/elput.c
@@ -12,6 +12,7 @@ EAPI int ELPUT_EVENT_KEYMAP_SEND = -1;
 EAPI int ELPUT_EVENT_MODIFIERS_SEND = -1;
 EAPI int ELPUT_EVENT_DEVICE_CHANGE = -1;
 EAPI int ELPUT_EVENT_SESSION_ACTIVE = -1;
+EAPI int ELPUT_EVENT_POINTER_MOTION = -1;
 
 EAPI int
 elput_init(void)
@@ -36,6 +37,7 @@ elput_init(void)
ELPUT_EVENT_MODIFIERS_SEND = ecore_event_type_new();
ELPUT_EVENT_DEVICE_CHANGE = ecore_event_type_new();
ELPUT_EVENT_SESSION_ACTIVE = ecore_event_type_new();
+   ELPUT_EVENT_POINTER_MOTION = ecore_event_type_new();
 
return _elput_init_count;
 
@@ -63,6 +65,7 @@ elput_shutdown(void)
ELPUT_EVENT_MODIFIERS_SEND = -1;
ELPUT_EVENT_DEVICE_CHANGE = -1;
ELPUT_EVENT_SESSION_ACTIVE = -1;
+   ELPUT_EVENT_POINTER_MOTION = -1;
 
eina_log_domain_unregister(_elput_log_dom);
_elput_log_dom = -1;
diff --git a/src/lib/elput/elput_evdev.c b/src/lib/elput/elput_evdev.c
index c769853..9580f49 100644
--- a/src/lib/elput/elput_evdev.c
+++ b/src/lib/elput/elput_evdev.c
@@ -685,6 +685,23 @@ _pointer_motion_send(Elput_Device *edev)
ecore_event_add(ECORE_EVENT_MOUSE_MOVE, ev, NULL, NULL);
 }
 
+static void
+_pointer_motion_relative(struct libinput_event_pointer *event)
+{
+   Elput_Event_Pointer_Motion *ev;
+
+   ev = calloc(1, sizeof(Elput_Event_Pointer_Motion));
+   EINA_SAFETY_ON_NULL_RETURN(ev);
+
+   ev->time_usec = libinput_event_pointer_get_time_usec(event);
+   ev->dx = libinput_event_pointer_get_dx(event);
+   ev->dy = libinput_event_pointer_get_dy(event);
+   ev->dx_unaccel = libinput_event_pointer_get_dx_unaccelerated(event);
+   ev->dy_unaccel = libinput_event_pointer_get_dy_unaccelerated(event);
+
+   ecore_event_add(ELPUT_EVENT_POINTER_MOTION, ev, NULL, NULL);
+}
+
 static Eina_Bool
 _pointer_motion(struct libinput_device *idev, struct libinput_event_pointer 
*event)
 {
@@ -702,6 +719,7 @@ _pointer_motion(struct libinput_device *idev, struct 
libinput_event_pointer *eve
ptr->timestamp = libinput_event_pointer_get_time(event);
 
_pointer_motion_send(edev);
+   _pointer_motion_relative(event);
 
return EINA_TRUE;
 }
@@ -725,6 +743,7 @@ _pointer_motion_abs(struct libinput_device *idev, struct 
libinput_event_pointer
/* TODO: these needs to run a matrix transform based on output */
 
_pointer_motion_send(edev);
+   _pointer_motion_relative(event);
 
return EINA_TRUE;
 }

-- 




[EGIT] [core/enlightenment] master 07/12: add e_pointer_show()

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=83f0a682912ed4c6ae098934936aaf5ca0d6d01d

commit 83f0a682912ed4c6ae098934936aaf5ca0d6d01d
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

add e_pointer_show()
---
 src/bin/e_pointer.c | 8 
 src/bin/e_pointer.h | 1 +
 2 files changed, 9 insertions(+)

diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c
index c008769..1468b97 100644
--- a/src/bin/e_pointer.c
+++ b/src/bin/e_pointer.c
@@ -598,6 +598,14 @@ e_pointer_hide(E_Pointer *ptr)
 }
 
 E_API void 
+e_pointer_show(E_Pointer *ptr)
+{
+   if ((!ptr->buffer_evas) && ptr->win) _e_pointer_canvas_add(ptr);
+   if (ptr->canvas)
+ evas_object_show(ptr->o_ptr);
+}
+
+E_API void
 e_pointer_type_push(E_Pointer *ptr, void *obj, const char *type)
 {
E_Pointer_Stack *stack;
diff --git a/src/bin/e_pointer.h b/src/bin/e_pointer.h
index 91185a6..97743c9 100644
--- a/src/bin/e_pointer.h
+++ b/src/bin/e_pointer.h
@@ -66,6 +66,7 @@ E_API E_Pointer *e_pointer_canvas_new(Ecore_Evas *ee, 
Eina_Bool filled);
 
 E_API void e_pointers_size_set(int size);
 E_API void e_pointer_hide(E_Pointer *ptr);
+E_API void e_pointer_show(E_Pointer *ptr);
 E_API void e_pointer_type_push(E_Pointer *ptr, void *obj, const char *type);
 E_API void e_pointer_type_pop(E_Pointer *ptr, void *obj, const char *type);
 E_API void e_pointer_mode_push(void *obj, E_Pointer_Mode mode);

-- 




[EGIT] [core/enlightenment] master 02/12: add flag for comp screen iface to indicate relative motion eventing

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=501efaf35709a4496723c674b8f7fb33eb7849cb

commit 501efaf35709a4496723c674b8f7fb33eb7849cb
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

add flag for comp screen iface to indicate relative motion eventing
---
 src/bin/e_comp.h| 1 +
 src/bin/e_comp_x_randr.c| 3 ++-
 src/modules/wl_drm/e_mod_main.c | 1 +
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h
index 05de579..cf1b0f0 100644
--- a/src/bin/e_comp.h
+++ b/src/bin/e_comp.h
@@ -74,6 +74,7 @@ typedef struct E_Comp_Screen_Iface
Eina_Bool (*key_down)(Ecore_Event_Key *ev);
/* is key event eaten */
Eina_Bool (*key_up)(Ecore_Event_Key *ev);
+   Eina_Bool relative_motion : 1;
 } E_Comp_Screen_Iface;
 
 /* struct to hold canvas objects so that abi doesn't break
diff --git a/src/bin/e_comp_x_randr.c b/src/bin/e_comp_x_randr.c
index 20ab4e5..a37d562 100644
--- a/src/bin/e_comp_x_randr.c
+++ b/src/bin/e_comp_x_randr.c
@@ -21,7 +21,8 @@ E_Comp_Screen_Iface xiface =
.init = e_comp_x_randr_init,
.shutdown = e_comp_x_randr_shutdown,
.create = e_comp_x_randr_create,
-   .apply = e_comp_x_randr_config_apply
+   .apply = e_comp_x_randr_config_apply,
+   .relative_motion = EINA_FALSE,
 };
 
 static void
diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index 656f6e2..09d8d23 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -820,6 +820,7 @@ static E_Comp_Screen_Iface drmiface =
.dpms = _drm2_dpms,
.key_down = _drm2_key_down,
.key_up = _drm2_key_up,
+   .relative_motion = EINA_TRUE,
 };
 
 static Eina_Bool

-- 




[EGIT] [core/enlightenment] master 03/12: generically handle relative motion eventing for non-featureful backends

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=30f1b8b9c3a7df0c55d37c2b35b4364e0433fdb1

commit 30f1b8b9c3a7df0c55d37c2b35b4364e0433fdb1
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

generically handle relative motion eventing for non-featureful backends
---
 src/bin/e_comp_canvas.c | 14 ++
 1 file changed, 14 insertions(+)

diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c
index be5f581..becc89f 100644
--- a/src/bin/e_comp_canvas.c
+++ b/src/bin/e_comp_canvas.c
@@ -206,6 +206,20 @@ _e_comp_cb_mouse_wheel(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_Event_Mouse
 static Eina_Bool
 _e_comp_cb_mouse_move(void *d EINA_UNUSED, int t EINA_UNUSED, 
Ecore_Event_Mouse_Move *ev)
 {
+   static int x = -, y = -;
+
+   if (x == -)
+ x = ev->x, y = ev->y;
+   if ((x == ev->x) && (y == ev->y)) return ECORE_CALLBACK_RENEW;
+   if (e_client_focused_get() && (!e_comp_util_mouse_grabbed()))
+ {
+if ((!e_comp->screen) || (!e_comp->screen->relative_motion))
+  {
+ e_comp_wl_extension_relative_motion_event(ecore_time_unix_get() * 
1000ULL,
+   ev->x - x, ev->y - y, 0, 0);
+  }
+ }
+   x = ev->x, y = ev->y;
return e_comp_wl_grab_client_mouse_move(ev);
 }
 #endif

-- 




[EGIT] [core/enlightenment] master 04/12: ignore intercepted mouse events for non-wl compositing

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=85aaa64f11c479ceb227104107b67f8675f1464e

commit 85aaa64f11c479ceb227104107b67f8675f1464e
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

ignore intercepted mouse events for non-wl compositing
---
 src/bin/e_comp_canvas.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c
index becc89f..fa51582 100644
--- a/src/bin/e_comp_canvas.c
+++ b/src/bin/e_comp_canvas.c
@@ -208,6 +208,7 @@ _e_comp_cb_mouse_move(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_Event_Mouse_
 {
static int x = -, y = -;
 
+   if (e_comp->comp_type != E_PIXMAP_TYPE_WL) return ECORE_CALLBACK_RENEW;
if (x == -)
  x = ev->x, y = ev->y;
if ((x == ev->x) && (y == ev->y)) return ECORE_CALLBACK_RENEW;

-- 




[EGIT] [core/enlightenment] master 10/12: simplify mouse-out cursor reset for wl clients

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=d566b54049d591399ee7590d63d736f549203390

commit d566b54049d591399ee7590d63d736f549203390
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

simplify mouse-out cursor reset for wl clients

this is handled by e_pointer_object_set()
---
 src/bin/e_comp_wl.c | 7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index b756742..14992ba 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -265,11 +265,8 @@ _e_comp_wl_mouse_out(E_Client *ec)
if (ec->cur_mouse_action && e_grabinput_mouse_win_get()) return;
/* FIXME? this is a hack to just reset the cursor whenever we mouse out. 
not sure if accurate */
{
-  Evas_Object *o;
-
-  ecore_evas_cursor_get(e_comp->ee, , NULL, NULL, NULL);
-  if (e_comp->pointer->o_ptr != o)
-e_pointer_object_set(e_comp->pointer, NULL, 0, 0);
+  e_pointer_object_set(e_comp->pointer, NULL, 0, 0);
+  evas_object_show(e_comp->pointer->o_ptr);
}
if (e_comp_wl->ptr.ec == ec)
  e_comp_wl->ptr.ec = NULL;

-- 




[EGIT] [core/enlightenment] master 12/12: hide wl client cursors when set_pointer is passed a null surface

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=036bcc1f67e2a780ea297682d646bb3b63f97236

commit 036bcc1f67e2a780ea297682d646bb3b63f97236
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

hide wl client cursors when set_pointer is passed a null surface
---
 src/bin/e_comp_wl_input.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c
index 87a32d8..ab66bb0 100644
--- a/src/bin/e_comp_wl_input.c
+++ b/src/bin/e_comp_wl_input.c
@@ -66,7 +66,8 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client 
*client, struct wl_resou
if (!got_mouse) return;
if (!surface_resource)
  {
-e_pointer_object_set(e_comp->pointer, NULL, x, y);
+ecore_evas_cursor_unset(e_comp->ee);
+evas_object_hide(e_comp->pointer->o_ptr);
 return;
  }
ec = wl_resource_get_user_data(surface_resource);

-- 




[EGIT] [core/enlightenment] master 06/12: free string pointer in xkbswitch parsing

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=0fd251c437f82e0fd6632d40f45ef04007dc9f8a

commit 0fd251c437f82e0fd6632d40f45ef04007dc9f8a
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

free string pointer in xkbswitch parsing

CID 1368345
---
 src/modules/xkbswitch/e_mod_parse.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/modules/xkbswitch/e_mod_parse.c 
b/src/modules/xkbswitch/e_mod_parse.c
index af673df..e97e57d 100644
--- a/src/modules/xkbswitch/e_mod_parse.c
+++ b/src/modules/xkbswitch/e_mod_parse.c
@@ -293,7 +293,11 @@ parse_rules(void)
   if (i < (sizeof(grplabels) / sizeof(grplabels[0]))) continue;
   optmisc = eina_list_append(optmisc, option);
}
- else continue;
+ else
+   {
+  free(tmp);
+  continue;
+   }
 
  free(tmp);
   }

-- 




[EGIT] [core/enlightenment] master 05/12: implement pointer-constraints v1

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=e2f8d2ba692ea77509fc4685c1ebff5b68eb1b12

commit e2f8d2ba692ea77509fc4685c1ebff5b68eb1b12
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

implement pointer-constraints v1

xwayland nyi
---
 src/bin/Makefile.mk|   8 +-
 src/bin/e_comp.c   |   5 +
 src/bin/e_comp_canvas.c|   3 +
 src/bin/e_comp_wl.c|   3 +
 src/bin/e_comp_wl.h|   9 +
 src/bin/e_comp_wl_extensions.c | 385 +
 src/bin/e_comp_wl_input.c  |   2 +
 7 files changed, 413 insertions(+), 2 deletions(-)

diff --git a/src/bin/Makefile.mk b/src/bin/Makefile.mk
index 9922a90..5fdc79f 100644
--- a/src/bin/Makefile.mk
+++ b/src/bin/Makefile.mk
@@ -447,7 +447,9 @@ src/bin/generated/screenshooter-server-protocol.h \
 src/bin/generated/xdg-foreign-unstable-v1-protocol.c \
 src/bin/generated/xdg-foreign-unstable-v1-server-protocol.h \
 src/bin/generated/relative-pointer-unstable-v1-protocol.c \
-src/bin/generated/relative-pointer-unstable-v1-server-protocol.h
+src/bin/generated/relative-pointer-unstable-v1-server-protocol.h \
+src/bin/generated/pointer-constraints-unstable-v1-protocol.c \
+src/bin/generated/pointer-constraints-unstable-v1-server-protocol.h
 
 src/bin/e_comp_wl_extensions.c: \
  src/bin/generated/screenshooter-server-protocol.h \
@@ -455,7 +457,9 @@ src/bin/e_comp_wl_extensions.c: \
  src/bin/generated/xdg-foreign-unstable-v1-protocol.c \
  src/bin/generated/xdg-foreign-unstable-v1-server-protocol.h \
  src/bin/generated/relative-pointer-unstable-v1-protocol.c \
- src/bin/generated/relative-pointer-unstable-v1-server-protocol.h
+ src/bin/generated/relative-pointer-unstable-v1-server-protocol.h \
+ src/bin/generated/pointer-constraints-unstable-v1-protocol.c \
+ src/bin/generated/pointer-constraints-unstable-v1-server-protocol.h
 
 src/bin/e_comp_wl.c: \
  src/bin/generated/www-server-protocol.h
diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c
index ce3aca0..f83f4fe 100644
--- a/src/bin/e_comp.c
+++ b/src/bin/e_comp.c
@@ -1666,11 +1666,16 @@ e_comp_grab_input(Eina_Bool mouse, Eina_Bool kbd)
   {
  if (ec)
evas_object_focus_set(ec->frame, 0);
+
+#ifdef HAVE_WAYLAND
+ e_comp_wl_extension_pointer_unconstrain(NULL);
+#endif
   }
 
 ret = EINA_TRUE;
 e_comp->input_mouse_grabs += mouse;
 e_comp->input_key_grabs += kbd;
+
 if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
   {
  if (ec && (!e_object_is_del(E_OBJECT(ec
diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c
index fa51582..29fdd13 100644
--- a/src/bin/e_comp_canvas.c
+++ b/src/bin/e_comp_canvas.c
@@ -219,6 +219,9 @@ _e_comp_cb_mouse_move(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_Event_Mouse_
  e_comp_wl_extension_relative_motion_event(ecore_time_unix_get() * 
1000ULL,
ev->x - x, ev->y - y, 0, 0);
   }
+x = ev->x, y = ev->y;
+if 
(e_comp_wl_extension_pointer_constraints_update(e_client_focused_get(), ev->x, 
ev->y))
+  return ECORE_CALLBACK_CANCEL;
  }
x = ev->x, y = ev->y;
return e_comp_wl_grab_client_mouse_move(ev);
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 0e156af..b756742 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -2490,6 +2490,8 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, E_Client 
*ec)
/* make sure this is a wayland client */
if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) return;
 
+   e_comp_wl_extension_pointer_unconstrain(ec);
+
/* remove sub list */
EINA_LIST_FREE(ec->comp_data->sub.list, subc)
  {
@@ -2983,6 +2985,7 @@ e_comp_wl_surface_commit(E_Client *ec)
_e_comp_wl_surface_state_commit(ec, >comp_data->pending);
if (!e_comp_object_damage_exists(ec->frame))
  e_pixmap_image_clear(ec->pixmap, 1);
+   e_comp_wl_extension_pointer_constraints_commit(ec);
 
return EINA_TRUE;
 }
diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h
index 4da861a..cf104cd 100644
--- a/src/bin/e_comp_wl.h
+++ b/src/bin/e_comp_wl.h
@@ -126,6 +126,11 @@ typedef struct E_Comp_Wl_Extension_Data
   struct wl_global *global;
   Eina_List *resources;
} zwp_relative_pointer_manager_v1;
+   struct
+   {
+  struct wl_global *global;
+  Eina_Hash *constraints;
+   } zwp_pointer_constraints_v1;
 } E_Comp_Wl_Extension_Data;
 
 struct _E_Comp_Wl_Data
@@ -323,6 +328,7 @@ struct _E_Comp_Wl_Client_Data
E_Comp_Wl_Surface_State pending;
 
Eina_List *frames;
+   Eina_List *constraints;
 
struct
  {
@@ -397,6 +403,9 @@ E_API Eina_Bool e_comp_wl_grab_client_mouse_move(const 
Ecore_Event_Mouse_Move *e
 E_API Eina_Bool e_comp_wl_grab_client_mouse_button(const 
Ecore_Event_Mouse_Button *ev);
 
 E_API void e_comp_wl_extension_relative_motion_event(uint64_t 

[EGIT] [core/enlightenment] master 11/12: use 1x1 for unsized (internal) clients

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=ee4a861f90b53eb99d8715005579b085c729a828

commit ee4a861f90b53eb99d8715005579b085c729a828
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

use 1x1 for unsized (internal) clients

this was a typo
---
 src/bin/e_comp_wl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 14992ba..8299c62 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1867,7 +1867,7 @@ _e_comp_wl_compositor_cb_surface_create(struct wl_client 
*client, struct wl_reso
if (ec->new_client)
  e_comp->new_clients--;
ec->new_client = 0;
-   if ((!ec->client.w) && (ec->client.h))
+   if ((!ec->client.w) && (!ec->client.h))
  ec->client.w = ec->client.h = 1;
ec->comp_data->surface = res;
ec->netwm.pid = pid;

-- 




[EGIT] [core/enlightenment] master 01/12: implement relative-pointer v1

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=186cf732949b956ac2f3401d469176a623b25b13

commit 186cf732949b956ac2f3401d469176a623b25b13
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

implement relative-pointer v1
---
 src/bin/Makefile.mk   |   8 +-
 src/bin/e_comp_wl.h   |   7 ++
 src/bin/e_comp_wl_extensions.c|  71 ++
 src/modules/wl_drm/e_mod_main.c   |  13 +++
 src/protocol/relative-pointer-unstable-v1.xml | 136 ++
 5 files changed, 233 insertions(+), 2 deletions(-)

diff --git a/src/bin/Makefile.mk b/src/bin/Makefile.mk
index 667a644..9922a90 100644
--- a/src/bin/Makefile.mk
+++ b/src/bin/Makefile.mk
@@ -445,13 +445,17 @@ src/bin/generated/www-server-protocol.h \
 src/bin/generated/screenshooter-protocol.c \
 src/bin/generated/screenshooter-server-protocol.h \
 src/bin/generated/xdg-foreign-unstable-v1-protocol.c \
-src/bin/generated/xdg-foreign-unstable-v1-server-protocol.h
+src/bin/generated/xdg-foreign-unstable-v1-server-protocol.h \
+src/bin/generated/relative-pointer-unstable-v1-protocol.c \
+src/bin/generated/relative-pointer-unstable-v1-server-protocol.h
 
 src/bin/e_comp_wl_extensions.c: \
  src/bin/generated/screenshooter-server-protocol.h \
  src/bin/generated/session-recovery-server-protocol.h \
  src/bin/generated/xdg-foreign-unstable-v1-protocol.c \
- src/bin/generated/xdg-foreign-unstable-v1-server-protocol.h
+ src/bin/generated/xdg-foreign-unstable-v1-server-protocol.h \
+ src/bin/generated/relative-pointer-unstable-v1-protocol.c \
+ src/bin/generated/relative-pointer-unstable-v1-server-protocol.h
 
 src/bin/e_comp_wl.c: \
  src/bin/generated/www-server-protocol.h
diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h
index a78f5cd..4da861a 100644
--- a/src/bin/e_comp_wl.h
+++ b/src/bin/e_comp_wl.h
@@ -121,6 +121,11 @@ typedef struct E_Comp_Wl_Extension_Data
   struct wl_global *global;
} zxdg_importer_v1;
/* end xdg-foreign */
+   struct
+   {
+  struct wl_global *global;
+  Eina_List *resources;
+   } zwp_relative_pointer_manager_v1;
 } E_Comp_Wl_Extension_Data;
 
 struct _E_Comp_Wl_Data
@@ -391,6 +396,8 @@ E_API Eina_Bool e_comp_wl_client_is_grabbed(const E_Client 
*ec);
 E_API Eina_Bool e_comp_wl_grab_client_mouse_move(const Ecore_Event_Mouse_Move 
*ev);
 E_API Eina_Bool e_comp_wl_grab_client_mouse_button(const 
Ecore_Event_Mouse_Button *ev);
 
+E_API void e_comp_wl_extension_relative_motion_event(uint64_t time_usec, 
double dx, double dy, double dx_unaccel, double dy_unaccel);
+
 # ifndef HAVE_WAYLAND_ONLY
 EINTERN void e_comp_wl_xwayland_client_queue(E_Client *ec);
 static inline E_Comp_X_Client_Data *
diff --git a/src/bin/e_comp_wl_extensions.c b/src/bin/e_comp_wl_extensions.c
index 517579b..0b36e7c 100644
--- a/src/bin/e_comp_wl_extensions.c
+++ b/src/bin/e_comp_wl_extensions.c
@@ -7,6 +7,7 @@
 #include "session-recovery-server-protocol.h"
 #include "www-server-protocol.h"
 #include "xdg-foreign-unstable-v1-server-protocol.h"
+#include "relative-pointer-unstable-v1-server-protocol.h"
 
 /* mutter uses 32, seems reasonable */
 #define HANDLE_LEN 32
@@ -416,6 +417,44 @@ _e_comp_wl_zxdg_importer_v1_import(struct wl_client 
*client, struct wl_resource
 
 /
 
+static void
+_e_comp_wl_zwp_relative_pointer_manager_v1_destroy(struct wl_client *client 
EINA_UNUSED, struct wl_resource *resource)
+{
+   wl_resource_destroy(resource);
+}
+
+static void
+_relative_pointer_destroy(struct wl_resource *resource)
+{
+   e_comp_wl->extensions->zwp_relative_pointer_manager_v1.resources =
+ 
eina_list_remove(e_comp_wl->extensions->zwp_relative_pointer_manager_v1.resources,
 resource);
+}
+
+static void
+_e_comp_wl_zwp_relative_pointer_v1_destroy(struct wl_client *client 
EINA_UNUSED, struct wl_resource *resource)
+{
+   wl_resource_destroy(resource);
+}
+
+
+static const struct zwp_relative_pointer_v1_interface 
_e_zwp_relative_pointer_v1_interface =
+{
+   _e_comp_wl_zwp_relative_pointer_v1_destroy,
+};
+
+static void
+_e_comp_wl_zwp_relative_pointer_manager_v1_get_relative_pointer(struct 
wl_client *client, struct wl_resource *resource, uint32_t id, struct 
wl_resource *pointer)
+{
+   struct wl_resource *res;
+
+   res = wl_resource_create(client, _relative_pointer_v1_interface, 
wl_resource_get_version(resource), id);
+   wl_resource_set_implementation(res, &_e_zwp_relative_pointer_v1_interface, 
pointer, _relative_pointer_destroy);
+   e_comp_wl->extensions->zwp_relative_pointer_manager_v1.resources =
+ 
eina_list_append(e_comp_wl->extensions->zwp_relative_pointer_manager_v1.resources,
 res);
+}
+
+/
+
 static const struct zwp_e_session_recovery_interface 
_e_session_recovery_interface =
 {
_e_comp_wl_session_recovery_get_uuid,
@@ 

[EGIT] [core/enlightenment] master 08/12: use e_pointer_show() when updating wl-drm seat caps to enable pointer

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=8144cd0cdad2ab294756776f41a2ab72d929dc5e

commit 8144cd0cdad2ab294756776f41a2ab72d929dc5e
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

use e_pointer_show() when updating wl-drm seat caps to enable pointer

prev function doesn't handle canvas pointers
---
 src/modules/wl_drm/e_mod_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index 09d8d23..6648259 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -781,7 +781,7 @@ _drm2_cb_seat_caps(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event)
else if (ev->pointer_count > 0)
  {
 e_comp_wl_input_pointer_enabled_set(EINA_TRUE);
-e_pointers_size_set(e_config->cursor_size);
+e_pointer_show(e_comp->pointer);
  }
 
if (ev->keyboard_count <= 0)

-- 




[EGIT] [core/enlightenment] master 09/12: make e_pointer_object_set() a no-op when passing the existing cursor

2017-02-03 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=c68ca50ceda15c0f07f49916ca9ef3527800ad49

commit c68ca50ceda15c0f07f49916ca9ef3527800ad49
Author: Mike Blumenkrantz 
Date:   Fri Feb 3 15:13:48 2017 -0500

make e_pointer_object_set() a no-op when passing the existing cursor
---
 src/bin/e_pointer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c
index 1468b97..9e2e431 100644
--- a/src/bin/e_pointer.c
+++ b/src/bin/e_pointer.c
@@ -807,7 +807,7 @@ e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int 
x, int y)
   ec->hidden = 1;
 ecore_evas_object_cursor_set(ptr->ee, obj, E_LAYER_MAX - 1, x, y);
  }
-   else
+   else if (o != ptr->o_ptr)
  ecore_evas_object_cursor_set(ptr->ee, ptr->o_ptr, E_LAYER_MAX - 1, 
ptr->hot.x, ptr->hot.y);
 }
 

-- 




[EGIT] [core/efl] master 01/03: elm_code: update syntax symbols for C

2017-02-03 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e8e72fb959bef90839b1c8c630c9929fda78870a

commit e8e72fb959bef90839b1c8c630c9929fda78870a
Author: Andy Williams 
Date:   Fri Feb 3 17:13:27 2017 +

elm_code: update syntax symbols for C

Also don't hard code preprocessing parse
---
 src/lib/elementary/elm_code_syntax.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elm_code_syntax.c 
b/src/lib/elementary/elm_code_syntax.c
index cd8a66f..6012169 100644
--- a/src/lib/elementary/elm_code_syntax.c
+++ b/src/lib/elementary/elm_code_syntax.c
@@ -10,6 +10,7 @@
 typedef struct _Elm_Code_Syntax
 {
const char *symbols;
+   const char *preprocessor;
const char *comment_single;
const char *comment_start;
const char *comment_end;
@@ -18,7 +19,8 @@ typedef struct _Elm_Code_Syntax
 
 static Elm_Code_Syntax _elm_code_syntax_c =
 {
-   "{}()[]:;/*+&|!=<->,.",
+   "{}()[]:;%^/*+&|~!=<->,.",
+   "#",
"//",
"/*",
"*/",
@@ -161,7 +163,7 @@ elm_code_syntax_parse_line(Elm_Code_Syntax *syntax, 
Elm_Code_Line *line)
  continue;
   }
 
-if (content[i] == '#')
+if (syntax->preprocessor && _content_starts_with(content+i, 
syntax->preprocessor, strlen(syntax->preprocessor)))
   {
  elm_code_line_token_add(line, i, length - 1, 1, 
ELM_CODE_TOKEN_TYPE_PREPROCESSOR);
  return;

-- 




[EGIT] [core/efl] master 03/03: elm_code: fix bugs in the highlighting of full line comments

2017-02-03 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9d0923e847ab1ec6a12360e9a5d8ea4b9bf6bd38

commit 9d0923e847ab1ec6a12360e9a5d8ea4b9bf6bd38
Author: Andy Williams 
Date:   Fri Feb 3 17:17:05 2017 +

elm_code: fix bugs in the highlighting of full line comments

@fix
---
 src/lib/elementary/elm_code_syntax.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/elm_code_syntax.c 
b/src/lib/elementary/elm_code_syntax.c
index 3d32e47..804dfb6 100644
--- a/src/lib/elementary/elm_code_syntax.c
+++ b/src/lib/elementary/elm_code_syntax.c
@@ -81,6 +81,8 @@ _content_starts_with(const char *content, const char *prefix, 
unsigned int lengt
unsigned int i;
unsigned int prefix_length;
 
+   if (!prefix)
+ return EINA_FALSE;
prefix_length = strlen(prefix);
if (!content || length < prefix_length)
  return EINA_FALSE;
@@ -153,7 +155,7 @@ elm_code_syntax_parse_line(Elm_Code_Syntax *syntax, 
Elm_Code_Line *line)
 break;
  }
 
-elm_code_line_token_add(line, 1, i2, 1, ELM_CODE_TOKEN_TYPE_COMMENT);
+elm_code_line_token_add(line, 0, i2, 1, ELM_CODE_TOKEN_TYPE_COMMENT);
 if (i2 == length)
   {
  Elm_Code_Token *token = eina_list_last_data_get(line->tokens);

-- 




[EGIT] [core/efl] master 02/03: elm_code: Add syntax highlighting for python

2017-02-03 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=c9d7b00aacd1bf3512fd33316e161cfca7643fba

commit c9d7b00aacd1bf3512fd33316e161cfca7643fba
Author: Andy Williams 
Date:   Fri Feb 3 17:16:12 2017 +

elm_code: Add syntax highlighting for python
---
 src/lib/elementary/elm_code_syntax.c | 15 +++
 1 file changed, 15 insertions(+)

diff --git a/src/lib/elementary/elm_code_syntax.c 
b/src/lib/elementary/elm_code_syntax.c
index 6012169..3d32e47 100644
--- a/src/lib/elementary/elm_code_syntax.c
+++ b/src/lib/elementary/elm_code_syntax.c
@@ -29,11 +29,26 @@ static Elm_Code_Syntax _elm_code_syntax_c =
   "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", 
"while", NULL}
 };
 
+static Elm_Code_Syntax _elm_code_syntax_py =
+{
+   "{}()[]:;%/*+!=<->,.",
+   NULL,
+   "#",
+   "\"\"\"",
+   "\"\"\"",
+   {"False", "None", "True", "and", "as", "assert", "break", "class", \
+"continue", "def", "del", "elif", "else", "except", "finally", "for", \
+"from", "global", "if", "import", "in", "is", "lambda", "nonlocal", "not", 
\
+"or", "pass", "raise", "return", "try", "while", "with", "yield"}
+};
+
 EAPI Elm_Code_Syntax *
 elm_code_syntax_for_mime_get(const char *mime)
 {
if (!strcmp("text/x-chdr", mime) || !strcmp("text/x-csrc", mime))
  return &_elm_code_syntax_c;
+   if (!strcmp("text/x-python", mime))
+ return &_elm_code_syntax_py;
 
return NULL;
 }

-- 




Re: [E-devel] [EGIT] [core/efl] master 02/02: cmake: add eeze

2017-02-03 Thread Gustavo Sverzut Barbieri
On Fri, Feb 3, 2017 at 7:59 AM, Marcel Hollerbach
 wrote:
> bu5hm4n pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=3c0fe3ca3cda11a15e5652f8a6c0109d148d8fb6
>
> commit 3c0fe3ca3cda11a15e5652f8a6c0109d148d8fb6
> Author: Marcel Hollerbach 
> Date:   Fri Feb 3 10:39:23 2017 +0100
>
> cmake: add eeze
>
> there is currently a bug in the testsuite which needs to change,
> otherwise modules cannot be loaded. The code acutally runs when its
> installed and EFL_RUN_IN_TREE is not set.

committed to master a new #ifdef NEEDS_RUN_IN_TREE that isolate these
blocks, that's only defined in autoconf's config.h

now cmake tests work nice, in tree, without any
putenv("EFL_RUN_IN_TREE=1") hacks!


-- 
Gustavo Sverzut Barbieri
--
Mobile: +55 (16) 99354-9890

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 02/02: cmake: sync EFL_EO_API_SUPPORT definition with autotools.

2017-02-03 Thread Gustavo Sverzut Barbieri
barbieri pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3cc60ce5f388e7edfc2d07bbdf95d09a16b673b7

commit 3cc60ce5f388e7edfc2d07bbdf95d09a16b673b7
Author: Gustavo Sverzut Barbieri 
Date:   Fri Feb 3 12:17:05 2017 -0200

cmake: sync EFL_EO_API_SUPPORT definition with autotools.

in autotools we always define that symbol in config.h (thus now done
in common.cmake), while the Efl_Config.h that is generated never have
it, what's left is to enable/disable the legacy and beta APIs.

This fixes building eldbus_suite with cmake.
---
 cmake/config/common.cmake  | 1 +
 src/lib/efl/Efl_Config.h.cmake | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/cmake/config/common.cmake b/cmake/config/common.cmake
index 41d480d..a4257eb 100644
--- a/cmake/config/common.cmake
+++ b/cmake/config/common.cmake
@@ -101,6 +101,7 @@ TYPE_CHECK(siginfo_t INCLUDE_FILES signal.h)
 # or is pkg-config enough these days?
 pkg_check_modules(UNWIND libunwind libunwind-generic)
 
+CHECK_APPEND_DEFINE(EFL_EO_API_SUPPORT 1)
 CHECK_APPEND_DEFINE(EFL_BETA_API_SUPPORT 1)
 if(CMAKE_THREAD_LIBS_INIT)
   set(EFL_HAVE_THREADS 1)
diff --git a/src/lib/efl/Efl_Config.h.cmake b/src/lib/efl/Efl_Config.h.cmake
index a99d153..4f7a03a 100644
--- a/src/lib/efl/Efl_Config.h.cmake
+++ b/src/lib/efl/Efl_Config.h.cmake
@@ -8,11 +8,11 @@
 #ifndef EFL_API_OVERRIDE
 
 #cmakedefine EFL_API_LEGACY_DEF
-#cmakedefine EFL_EO_API_SUPPORT
 #cmakedefine EFL_BETA_API_SUPPORT
 /* You can't disable Eo API anymore as EFL use it everywhere internally
and we don't want to expose it publicly just yet, so keep it hidden
and require an explicit request to get it. */
+/* #define EFL_EO_API_SUPPORT */
 #endif
 
 #define EFL_VERSION_MAJOR @PROJECT_VERSION_MAJOR@

-- 




[EGIT] [core/efl] master 01/02: ifdef RUN_IN_TREE logic.

2017-02-03 Thread Gustavo Sverzut Barbieri
barbieri pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8dc853f2300ea70a9116325db773da22c6343c3c

commit 8dc853f2300ea70a9116325db773da22c6343c3c
Author: Gustavo Sverzut Barbieri 
Date:   Fri Feb 3 11:49:38 2017 -0200

ifdef RUN_IN_TREE logic.

This logic is only needed for autotools, cmake will replicate the
installation file structure and thus eina_prefix works out of box.
---
 configure.ac   |  1 +
 src/bin/edje/edje_cc_out.c |  2 ++
 src/bin/edje/edje_cc_parse.c   |  2 ++
 src/bin/embryo/embryo_cc_sc1.c |  2 ++
 src/lib/ecore/ecore.c  |  2 ++
 src/lib/ecore_con/ecore_con_proxy_helper.c |  4 
 src/lib/ecore_evas/ecore_evas_module.c | 10 ++
 src/lib/ecore_imf/ecore_imf_module.c   |  2 ++
 src/lib/edje/edje_edit.c   |  2 ++
 src/lib/edje/edje_module.c |  8 
 src/lib/eeze/eeze_sensor.c |  2 ++
 src/lib/elementary/elm_module.c|  2 ++
 src/lib/elementary/elm_web2.c  |  2 ++
 src/lib/emotion/emotion_modules.c  |  2 ++
 src/lib/ethumb/ethumb.c|  2 ++
 src/lib/evas/file/evas_module.c| 12 
 src/tests/ecore/ecore_suite.c  |  2 ++
 src/tests/ecore_con/ecore_con_suite.c  |  2 ++
 src/tests/ector/suite/ector_suite.c|  2 ++
 src/tests/edje/edje_suite.c|  2 ++
 src/tests/eet/eet_suite.c  |  2 ++
 src/tests/eeze/eeze_suite.c|  2 ++
 src/tests/efreet/efreet_suite.c|  2 ++
 src/tests/eina/eina_suite.c|  2 ++
 src/tests/eio/eio_suite.c  |  2 ++
 src/tests/eldbus/eldbus_suite.c|  2 ++
 src/tests/elementary/elm_suite.c   |  2 ++
 src/tests/elocation/elocation_suite.c  |  2 ++
 src/tests/elput/elput_suite.c  |  2 ++
 src/tests/elua/elua_suite.c|  2 ++
 src/tests/emile/emile_suite.c  |  2 ++
 src/tests/eo/suite/eo_suite.c  |  2 ++
 src/tests/eolian/eolian_suite.c|  2 ++
 src/tests/evas/evas_suite.c|  2 ++
 src/tests/evil/evil_suite.c|  2 ++
 35 files changed, 95 insertions(+)

diff --git a/configure.ac b/configure.ac
index a4e6dff..68d608d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5566,6 +5566,7 @@ AC_ARG_ENABLE([cancel-ok],
   ],[])
 AC_SUBST(ELM_EDJE_DEFINES)
 
+AC_DEFINE([NEED_RUN_IN_TREE], [1], [Need EFL_RUN_IN_TREE=1 trick])
 
 ## Disable warning for OS that have a specifc configuration
 case "$host_os" in
diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c
index 7c483b5..1d33bdd 100644
--- a/src/bin/edje/edje_cc_out.c
+++ b/src/bin/edje/edje_cc_out.c
@@ -2221,6 +2221,7 @@ data_write_scripts(Eet_File *ef)
 #else
 # define BIN_EXT
 #endif
+#ifdef NEED_RUN_IN_TREE
  if (getenv("EFL_RUN_IN_TREE"))
{
   snprintf(embryo_cc_path, sizeof(embryo_cc_path),
@@ -2231,6 +2232,7 @@ data_write_scripts(Eet_File *ef)
   if (!ecore_file_exists(embryo_cc_path))
 embryo_cc_path[0] = '\0';
}
+#endif
 
  if (embryo_cc_path[0] == '\0')
{
diff --git a/src/bin/edje/edje_cc_parse.c b/src/bin/edje/edje_cc_parse.c
index c30f598..c55738d 100644
--- a/src/bin/edje/edje_cc_parse.c
+++ b/src/bin/edje/edje_cc_parse.c
@@ -1050,6 +1050,7 @@ compile(void)
  */
 
 buf2[0] = '\0';
+#ifdef NEED_RUN_IN_TREE
 if (getenv("EFL_RUN_IN_TREE"))
   {
  snprintf(buf2, sizeof(buf2),
@@ -1058,6 +1059,7 @@ compile(void)
  if (!ecore_file_exists(buf2))
buf2[0] = '\0';
   }
+#endif
 
 if (buf2[0] == '\0')
   snprintf(buf2, sizeof(buf2),
diff --git a/src/bin/embryo/embryo_cc_sc1.c b/src/bin/embryo/embryo_cc_sc1.c
index 0d94b24..2cacbe5 100644
--- a/src/bin/embryo/embryo_cc_sc1.c
+++ b/src/bin/embryo/embryo_cc_sc1.c
@@ -572,6 +572,7 @@ parseoptions(int argc, char **argv, char *iname, char 
*oname,
int i, stack_size;
size_t len;
 
+#ifdef NEED_RUN_IN_TREE
str[0] = '\0';
if (getenv("EFL_RUN_IN_TREE"))
  {
@@ -582,6 +583,7 @@ parseoptions(int argc, char **argv, char *iname, char 
*oname,
  }
 
if (str[0] == '\0')
+#endif
  snprintf(str, sizeof(str), "%s/include/", e_prefix_data_get());
 
/* use embryo include dir always */
diff --git a/src/lib/ecore/ecore.c b/src/lib/ecore/ecore.c
index 9d4270a..6c0a31e 100644
--- a/src/lib/ecore/ecore.c
+++ b/src/lib/ecore/ecore.c
@@ -137,6 +137,7 @@ ecore_system_modules_load(void)
 {
char buf[PATH_MAX] = "";
 
+#ifdef NEED_RUN_IN_TREE
 #if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
if (getuid() == geteuid())
 #endif
@@ -173,6 +174,7 @@ ecore_system_modules_load(void)
}
   }
  }
+#endif
 
snprintf(buf, sizeof(buf), 

[EGIT] [tools/eflete] master 02/03: tabs: clean fields after success import edc process

2017-02-03 Thread Vyacheslav Reutskiy
rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=0bc92b186007c7d12a0e1e27dd0affef0676fb29

commit 0bc92b186007c7d12a0e1e27dd0affef0676fb29
Author: Vyacheslav Reutskiy 
Date:   Fri Feb 3 10:15:13 2017 +0200

tabs: clean fields after success import edc process

@fix

Change-Id: I5c9abec4c0bb12422b89fb92dc0403794d1d7445
---
 src/bin/ui/tab_home_import_edc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/bin/ui/tab_home_import_edc.c b/src/bin/ui/tab_home_import_edc.c
index 1703aa2..f8c303d 100644
--- a/src/bin/ui/tab_home_import_edc.c
+++ b/src/bin/ui/tab_home_import_edc.c
@@ -168,6 +168,7 @@ _dir_del(Eina_List **dirs_list, Dir_Data *dir_data,
if (eina_list_count(*dirs_list) == 1)
  {
 tmp = eina_list_data_get(*dirs_list);
+elm_entry_entry_set(tmp->entry, NULL);
 elm_object_disabled_set(tmp->btn_del, true);
  }
 }

-- 




[EGIT] [tools/eflete] master 01/03: add forgoten resource

2017-02-03 Thread Vyacheslav Reutskiy
rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=f110fa91a1400eadff0ec4dcd356443a8b3c1dac

commit f110fa91a1400eadff0ec4dcd356443a8b3c1dac
Author: Vyacheslav Reutskiy 
Date:   Fri Feb 3 14:53:21 2017 +0200

add forgoten resource

Change-Id: Ia8674c78192895ad4ad9e62b49d75ccbea65d162
---
 data/themes/default/images/bg_logo.png | Bin 0 -> 110779 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/data/themes/default/images/bg_logo.png 
b/data/themes/default/images/bg_logo.png
new file mode 100644
index 000..415863a
Binary files /dev/null and b/data/themes/default/images/bg_logo.png differ

-- 




[EGIT] [tools/eflete] master 03/03: property_group: disable the color controls accordingly to effect val

2017-02-03 Thread Vyacheslav Reutskiy
rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=e4b82c441999f81727d76ae1ca391ce0d6a7491b

commit e4b82c441999f81727d76ae1ca391ce0d6a7491b
Author: Vyacheslav Reutskiy 
Date:   Fri Feb 3 14:49:07 2017 +0200

property_group: disable the color controls accordingly to effect val

@fix

Change-Id: Ia96995c3f01605bc3c6439e7904661dd4f1d07a1
---
 src/bin/ui/property/property_group.c | 20 
 1 file changed, 20 insertions(+)

diff --git a/src/bin/ui/property/property_group.c 
b/src/bin/ui/property/property_group.c
index e885386..7a39b7e 100644
--- a/src/bin/ui/property/property_group.c
+++ b/src/bin/ui/property/property_group.c
@@ -1755,6 +1755,7 @@ _update_cb(Property_Attribute *pa, Property_Action 
*action)
Eina_Stringshare *str_val1, *str_val2;
Eina_List *images_list, *l;
char *code;
+   Edje_Text_Effect effect;
 
assert(pa != NULL);
assert(action != NULL);
@@ -1893,6 +1894,8 @@ _update_cb(Property_Attribute *pa, Property_Action 
*action)
  return editor_state_fill_type_default_is(EDIT_OBJ, STATE_ARGS);
   case ATTRIBUTE_PART_TEXT_EFFECT:
  elm_object_text_set(action->control, text_effect_strings[(int) 
edje_edit_part_text_effect_get(EDIT_OBJ, PART_ARGS)]);
+ 
property_item_update(_pd.items[PROPERTY_GROUP_ITEM_STATE_COLORS_OUTLINE_COLOR]);
+ 
property_item_update(_pd.items[PROPERTY_GROUP_ITEM_STATE_COLORS_SHADOWCOLOR]);
  return editor_part_text_effect_default_is(EDIT_OBJ, PART_ARGS);
   case ATTRIBUTE_PART_TEXT_SHADOW_DIRECTION:
  /* shodow directions are shifted by 4 in enum */
@@ -2314,10 +2317,27 @@ _update_cb(Property_Attribute *pa, Property_Action 
*action)
   case ATTRIBUTE_STATE_OUTLINE_COLOR:
  edje_edit_state_outline_color_get(EDIT_OBJ, STATE_ARGS, _val1, 
_val2, _val3, _val4);
  property_color_control_color_set(action->control, int_val1, int_val2, 
int_val3, int_val4);
+ effect = edje_edit_part_text_effect_get(EDIT_OBJ, PART_ARGS);
+ if ((EDJE_TEXT_EFFECT_OUTLINE == effect) ||
+ (EDJE_TEXT_EFFECT_SOFT_OUTLINE == effect) ||
+ (EDJE_TEXT_EFFECT_OUTLINE_SHADOW == effect) ||
+ (EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW == effect))
+   elm_object_disabled_set(action->control, false);
+ else
+   elm_object_disabled_set(action->control, true);
  return editor_state_outline_color_default_is(EDIT_OBJ, STATE_ARGS);
   case ATTRIBUTE_STATE_SHADOW_COLOR:
  edje_edit_state_shadow_color_get(EDIT_OBJ, STATE_ARGS, _val1, 
_val2, _val3, _val4);
  property_color_control_color_set(action->control, int_val1, int_val2, 
int_val3, int_val4);
+ effect = edje_edit_part_text_effect_get(EDIT_OBJ, PART_ARGS);
+ if ((EDJE_TEXT_EFFECT_SHADOW == effect) ||
+ (EDJE_TEXT_EFFECT_SOFT_SHADOW == effect) ||
+ (EDJE_TEXT_EFFECT_OUTLINE_SHADOW == effect) ||
+ (EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW == effect))
+   elm_object_disabled_set(action->control, false);
+ else
+   elm_object_disabled_set(action->control, true);
+
  return editor_state_shadow_color_default_is(EDIT_OBJ, STATE_ARGS);
   case ATTRIBUTE_STATE_COLOR_CLASS:
  elm_genlist_clear(action->control);

-- 




[EGIT] [core/efl] master 01/01: cmake: add ecore_input

2017-02-03 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=75dc1b3fd711afa26f69f8244b64d2df9628fae4

commit 75dc1b3fd711afa26f69f8244b64d2df9628fae4
Author: Marcel Hollerbach 
Date:   Fri Feb 3 11:14:45 2017 +0100

cmake: add ecore_input
---
 CMakeLists.txt |  1 +
 src/lib/ecore_input/CMakeLists.txt | 22 ++
 2 files changed, 23 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1565013..f57dfc7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -52,6 +52,7 @@ EFL_LIB(eldbus)
 EFL_LIB(embryo)
 EFL_LIB(ector)
 EFL_LIB(eeze)
+EFL_LIB(ecore_input)
 
 EFL_OPTIONS_SUMMARY()
 
diff --git a/src/lib/ecore_input/CMakeLists.txt 
b/src/lib/ecore_input/CMakeLists.txt
new file mode 100644
index 000..c9f20c7
--- /dev/null
+++ b/src/lib/ecore_input/CMakeLists.txt
@@ -0,0 +1,22 @@
+set(PUBLIC_LIBRARIES
+  eina
+  eo
+)
+
+set(LIBRARIES
+  ecore
+  efl
+  eeze
+)
+
+set(PUBLIC_HEADERS
+  Ecore_Input.h
+)
+
+set(SOURCES
+  ecore_input.c
+  ecore_input_compose.c
+  ecore_input_compose.h
+  ecore_input_joystick.c
+  ecore_input_private.h
+)

-- 




Re: [E-devel] public headers in sub directories

2017-02-03 Thread Gustavo Sverzut Barbieri
On Fri, Feb 3, 2017 at 7:22 AM, Carsten Haitzler  wrote:
> On Fri, 27 Jan 2017 10:54:17 -0200 Gustavo Sverzut Barbieri
>  said:
>
>> Hi all,
>>
>> While porting to cmake I'm trying to use its features to enhance
>> portability, two are:
>>
>> https://cmake.org/cmake/help/v3.0/prop_tgt/FRAMEWORK.html
>> https://cmake.org/cmake/help/v3.0/prop_tgt/PUBLIC_HEADER.html
>
> the above explains very little... :(

I know :-D that's why I'm asking to change our layout and be simple so
we get the "working out of the box" case.


>> These will generate MacOS compliant bundles but there is one caveat: when I
>> install they end all in a flat hierarchy, thus things that includes
>> relative to subdirectories, as Efl.h or Ector.h will fail to find the
>> "subdir/file.h".
>
> what do you mean exactly? you can't have -Idir flags as part of mac 
> frameworks?
> so -framework doesnt make the framework base dir an added -I search location? 
> so
>
> #include "interfaces/efl_observer.eo.h"
> #include "interfaces/efl_observable.eo.h"
>
> won't look for those files relative to PREFIX/include/efl-1 ? i'm not sure 
> what
> ie "expected" here from mac and how we diffeer and what has to change to "be
> compliant" ?

same here, I really don't know.

>> One option is to avoid the PUBLIC_HEADER and manually install files to
>> include directories, there I can specify the subdirectories as needed.
>> However I'm not sure if that would be enough to MacOS and possibly other
>> systems, where the PUBLIC_HEADER could be hinting something else.
>>
>> Another option, which I prefer, is to change the master include to remove
>> the subdirectories, also changing the automake rules. That would result in
>> all headers to be installed to a single directory:
>>  /usr/include/${lib}-${vmaj}/
>>
>> Any objections to this change?

my change is basically removing "subdir/file" from our installed
headers. We can keep the GIT hierarchy and use SET(INCLUDE_DIRS ...)
ourselves.

-- 
Gustavo Sverzut Barbieri
--
Mobile: +55 (16) 99354-9890

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [EGIT] [core/efl] master 01/01: ecore_con/efl_net - dedicated threads for network i/o not from the pool

2017-02-03 Thread Gustavo Sverzut Barbieri
On Fri, Feb 3, 2017 at 4:01 AM, Carsten Haitzler  wrote:
> raster pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=eab798c753e72eece526ceccf3c9beb441b5f5ff
>
> commit eab798c753e72eece526ceccf3c9beb441b5f5ff
> Author: Carsten Haitzler (Rasterman) 
> Date:   Fri Feb 3 14:57:49 2017 +0900
>
> ecore_con/efl_net - dedicated threads for network i/o not from the pool
>
> so ecore_con/efl_net were using the standard ecore_thread thread pool
> for doing things like dns lookups

this is true

> (that can take multiple minutes until timeouts)

this is unlikely


>and actual http transactions.

this is false. CURL itself does the HTTP transactions using our main
loop by calling back efl_net_dialer_http.c to
register/unregister/modify the fd that is being modified.


> similarly they can block
> thread workers for long periods or indefinitely thus basically
> blocking the whole eocre_thread pool and stopping others from sharing
> it.

how big is the thread pool? I hope it's a dynamic size and will not
simply serialize everything into one/two threads.


> the best solution we have right now is to bypass the thread pool
> queue and have dedicated threads for these actions. what we should
> have is a dedicated thread pool with each thread taking on N
> connections (via select etc.) and the ability to create and destroy
> thread pools for specific tasks so you can separate the work out from
> other work.  but that is basically a redesign of our thread pool infra
> so let's do the quick solution here until that day comes.

not sure about this. If I go and try to use that in efl_net, it will
always go wrong:

 - If I hope the guy is doing regular desktop app that randomly need
1-2 remote resources, that's like 1-2 lookups for the whole lifetime,
so likely a single thread for the whole application is good enough.

 - if I think that's going to be used by multi tab browser doing
prefetch and parallel resources, that's like 100's lookups for each
tab, then 50+ threads would be desirable.

 - If I think the guy is writing a server utility that may execute
hundreds of thousands transactions per second, then it's closer to
that order.

That said, my bet is that EFL would dynamically grow and shrink the
pool using some heuristic, like:
 - queue at most 1-2 requests in a thread, then spawn a new thread;
 - if thread is idle for X seconds, exit.

It would be even better if the requests could be migrated from threads
(or pop'ed from a common queue), so in the case one job/func takes too
much to execute we don't wait for queued funcs if we have other idle
threads.



> this partially addresses D4640
>
> a dedicated thread per image load though is going to be a lot nastier...
> ---
>  src/lib/ecore_con/ecore_con.c   | 9 +
>  src/lib/ecore_con/efl_net_dialer_http.c | 9 +
>  2 files changed, 10 insertions(+), 8 deletions(-)
>
> diff --git a/src/lib/ecore_con/ecore_con.c b/src/lib/ecore_con/ecore_con.c
> index dd641da..35eb4d0 100644
> --- a/src/lib/ecore_con/ecore_con.c
> +++ b/src/lib/ecore_con/ecore_con.c
> @@ -703,10 +703,11 @@ efl_net_ip_resolve_async_new(const char *host, const 
> char *port, const struct ad
>
> d->result = NULL;
>
> -   return ecore_thread_run(_efl_net_ip_resolve_async_run,
> -   _efl_net_ip_resolve_async_end,
> -   _efl_net_ip_resolve_async_cancel,
> -   d);
> +   return ecore_thread_feedback_run(_efl_net_ip_resolve_async_run,
> +NULL,
> +_efl_net_ip_resolve_async_end,
> +_efl_net_ip_resolve_async_cancel,
> +d, EINA_TRUE);
>
>   failed_hints:
> free(d->port);
> diff --git a/src/lib/ecore_con/efl_net_dialer_http.c 
> b/src/lib/ecore_con/efl_net_dialer_http.c
> index 2454c72..6c4a463 100644
> --- a/src/lib/ecore_con/efl_net_dialer_http.c
> +++ b/src/lib/ecore_con/efl_net_dialer_http.c
> @@ -1407,10 +1407,11 @@ _efl_net_dialer_http_efl_net_dialer_dial(Eo *o, 
> Efl_Net_Dialer_Http_Data *pd, co
>
>  ctx->o = o;
>
> -pd->libproxy_thread = 
> ecore_thread_run(_efl_net_dialer_http_libproxy_run,
> -   
> _efl_net_dialer_http_libproxy_end,
> -   
> _efl_net_dialer_http_libproxy_cancel,
> -   ctx);
> +pd->libproxy_thread = 
> ecore_thread_feedback_run(_efl_net_dialer_http_libproxy_run,
> +NULL,
> +
> _efl_net_dialer_http_libproxy_end,
> +
> _efl_net_dialer_http_libproxy_cancel,
> +   

Re: [E-devel] Weekend project: distro-builder

2017-02-03 Thread anisse
Hi Raster,

On Fri, Feb 03, 2017 at 06:14:49PM +0900, Carsten Haitzler wrote:
> On Tue, 31 Jan 2017 13:07:50 +0100 ani...@astier.eu said:
> 
> so what i see is just an "executable" "debian install docs" or "ubuntu install
> docs" or "fedora" etc.

Exactly. It's just that: a way to validate docs, against reality, in an
automated and verifiable fashion. Nothing more.

> ... but what about:
> 
> arch
Adding Arch is on my todo list.

> gentoo
> slackware
> opensbd
> freebsd
> suse
> rhel
> mint
> nixos
> gobolinux
> ...

Yes there are *many* Linux distros. It doesn't mean that we shouldn't
try to address the top ones. And make sure the documentation is
up-to-date and works, unlike on some wiki pages.

> 
> you get the idea - it becomes an endless list of packages for an endless list
> of distributions and variants... (also ubuntu for example needs to be split
> between 14.x, 15.x 16.x etc. as the package deps change)...

Actually, this is already supported. Since I just added the last two
versions, I didn't see any change so I didn't split the files.

> 
> its a horrible intractable problem with so many permutations that it just is
> insane... which is why a lot of it is left "fuzzy" and up to people to figure
> out with per distro guides being generally fairly rough... :)
> 
> there is really only one solution i can think of that works:
> 
> ship dependencies beyond an incredibly small core (eg depend on libc/libm and
> friends and nothing else). that means instead having a builder that would 
> fetch
> all the efl's dependencies and build them and install then also build and
> install efl too. e.g. in /opt/e - and then you can just ship a tarball
> of /opt/e and avoid everything else.
> 
> this is a solution that actually might work as it totally side-steps the
> "million distros and versions and permutations of them" problem.

I understand, but I think this is a different problem, which is shipping
working software to users. Traditionnally this job was left to packagers.
Packagers make sure that the software goes to users.

I want to make sure that the build dependencies are properly documented
for at least the major distros. I'm not trying to address the bigger
picture, only this small part, on which I think the project is currently
lacking.

Regards,

Anisse



--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [core/efl] master 01/02: eeze: move binaries into subdirectories

2017-02-03 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=94ddd709dbae52a729179d8ad7ac4f8b06845ea3

commit 94ddd709dbae52a729179d8ad7ac4f8b06845ea3
Author: Marcel Hollerbach 
Date:   Fri Feb 3 00:04:19 2017 +0100

eeze: move binaries into subdirectories

in order to move to cmake we are moving every binary into its own
subdirectory.
---
 src/Makefile_Eeze.am   | 88 +++---
 src/bin/eeze/.gitignore| 14 ++--
 src/bin/eeze/{ => eeze_disk_ls}/eeze_disk_ls.c |  0
 src/bin/eeze/{ => eeze_mount}/eeze_mount.c |  0
 src/bin/eeze/{ => eeze_scanner}/eeze_scanner.c |  0
 src/bin/eeze/{ => eeze_scanner}/eeze_scanner.h |  0
 .../eeze_scanner_monitor.c |  2 +-
 .../eeze/{ => eeze_sensor_test}/eeze_sensor_test.c |  0
 src/bin/eeze/{ => eeze_udev_test}/eeze_udev_test.c |  0
 src/bin/eeze/{ => eeze_umount}/eeze_umount.c   |  0
 10 files changed, 52 insertions(+), 52 deletions(-)

diff --git a/src/Makefile_Eeze.am b/src/Makefile_Eeze.am
index 5a025ad..9f86fa1 100644
--- a/src/Makefile_Eeze.am
+++ b/src/Makefile_Eeze.am
@@ -11,7 +11,7 @@ lib/eeze/Eeze.h \
 lib/eeze/Eeze_Net.h \
 lib/eeze/Eeze_Sensor.h \
 lib/eeze/Eeze_Disk.h \
-bin/eeze/eeze_scanner.h
+bin/eeze/eeze_scanner/eeze_scanner.h
 
 # libeeze.la
 lib_eeze_libeeze_la_SOURCES = \
@@ -109,53 +109,53 @@ modules_eeze_sensor_udev_module_la_LIBTOOLFLAGS = 
--tag=disable-static
 ### Binary
 
 noinst_PROGRAMS += \
-bin/eeze/eeze_udev_test \
-bin/eeze/eeze_sensor_test
+bin/eeze/eeze_udev_test/eeze_udev_test \
+bin/eeze/eeze_sensor_test/eeze_sensor_test
 
-bin_eeze_eeze_udev_test_SOURCES = bin/eeze/eeze_udev_test.c
-bin_eeze_eeze_udev_test_CPPFLAGS = -I$(top_builddir)/src/lib/efl @EEZE_CFLAGS@
-bin_eeze_eeze_udev_test_LDADD = @USE_EEZE_LIBS@
-bin_eeze_eeze_udev_test_DEPENDENCIES = @USE_EEZE_INTERNAL_LIBS@
+bin_eeze_eeze_udev_test_eeze_udev_test_SOURCES = 
bin/eeze/eeze_udev_test/eeze_udev_test.c
+bin_eeze_eeze_udev_test_eeze_udev_test_CPPFLAGS = 
-I$(top_builddir)/src/lib/efl @EEZE_CFLAGS@
+bin_eeze_eeze_udev_test_eeze_udev_test_LDADD = @USE_EEZE_LIBS@
+bin_eeze_eeze_udev_test_eeze_udev_test_DEPENDENCIES = @USE_EEZE_INTERNAL_LIBS@
 
-bin_eeze_eeze_sensor_test_SOURCES = bin/eeze/eeze_sensor_test.c
-bin_eeze_eeze_sensor_test_CPPFLAGS = -I$(top_builddir)/src/lib/efl 
@EEZE_CFLAGS@
-bin_eeze_eeze_sensor_test_LDADD = @USE_EEZE_LIBS@
-bin_eeze_eeze_sensor_test_DEPENDENCIES = @USE_EEZE_INTERNAL_LIBS@
+bin_eeze_eeze_sensor_test_eeze_sensor_test_SOURCES = 
bin/eeze/eeze_sensor_test/eeze_sensor_test.c
+bin_eeze_eeze_sensor_test_eeze_sensor_test_CPPFLAGS = 
-I$(top_builddir)/src/lib/efl @EEZE_CFLAGS@
+bin_eeze_eeze_sensor_test_eeze_sensor_test_LDADD = @USE_EEZE_LIBS@
+bin_eeze_eeze_sensor_test_eeze_sensor_test_DEPENDENCIES = 
@USE_EEZE_INTERNAL_LIBS@
 
 bin_PROGRAMS += \
-bin/eeze/eeze_mount \
-bin/eeze/eeze_umount \
-bin/eeze/eeze_disk_ls \
-bin/eeze/eeze_scanner \
-bin/eeze/eeze_scanner_monitor
-
-bin_eeze_eeze_mount_SOURCES = bin/eeze/eeze_mount.c
-bin_eeze_eeze_mount_CPPFLAGS = -I$(top_builddir)/src/lib/efl @EEZE_CFLAGS@
-bin_eeze_eeze_mount_LDADD = @USE_EEZE_LIBS@
-bin_eeze_eeze_mount_DEPENDENCIES = @USE_EEZE_INTERNAL_LIBS@
-
-bin_eeze_eeze_umount_SOURCES = bin/eeze/eeze_umount.c
-bin_eeze_eeze_umount_CPPFLAGS = -I$(top_builddir)/src/lib/efl @EEZE_CFLAGS@
-bin_eeze_eeze_umount_LDADD = @USE_EEZE_LIBS@
-bin_eeze_eeze_umount_DEPENDENCIES = @USE_EEZE_INTERNAL_LIBS@
-
-bin_eeze_eeze_disk_ls_SOURCES = bin/eeze/eeze_disk_ls.c
-bin_eeze_eeze_disk_ls_CPPFLAGS = -I$(top_builddir)/src/lib/efl @EEZE_CFLAGS@
-bin_eeze_eeze_disk_ls_LDADD = @USE_EEZE_LIBS@
-bin_eeze_eeze_disk_ls_DEPENDENCIES = @USE_EEZE_INTERNAL_LIBS@
-
-bin_eeze_eeze_scanner_SOURCES = \
-bin/eeze/eeze_scanner.c \
-bin/eeze/eeze_scanner.h
-bin_eeze_eeze_scanner_CPPFLAGS = -I$(top_builddir)/src/lib/efl @EEZE_CFLAGS@
-bin_eeze_eeze_scanner_LDADD = @USE_EEZE_LIBS@
-bin_eeze_eeze_scanner_DEPENDENCIES = @USE_EEZE_INTERNAL_LIBS@
-
-bin_eeze_eeze_scanner_monitor_SOURCES = \
-bin/eeze/eeze_scanner_monitor.c
-bin_eeze_eeze_scanner_monitor_CPPFLAGS = -I$(top_builddir)/src/lib/efl 
@EEZE_CFLAGS@
-bin_eeze_eeze_scanner_monitor_LDADD = @USE_EEZE_LIBS@
-bin_eeze_eeze_scanner_monitor_DEPENDENCIES = @USE_EEZE_INTERNAL_LIBS@
+bin/eeze/eeze_mount/eeze_mount \
+bin/eeze/eeze_umount/eeze_umount \
+bin/eeze/eeze_disk_ls/eeze_disk_ls \
+bin/eeze/eeze_scanner/eeze_scanner \
+bin/eeze/eeze_scanner_monitor/eeze_scanner_monitor
+
+bin_eeze_eeze_mount_eeze_mount_SOURCES = bin/eeze/eeze_mount/eeze_mount.c
+bin_eeze_eeze_mount_eeze_mount_CPPFLAGS = -I$(top_builddir)/src/lib/efl 
@EEZE_CFLAGS@
+bin_eeze_eeze_mount_eeze_mount_LDADD = @USE_EEZE_LIBS@
+bin_eeze_eeze_mount_eeze_mount_DEPENDENCIES = @USE_EEZE_INTERNAL_LIBS@
+
+bin_eeze_eeze_umount_eeze_umount_SOURCES = bin/eeze/eeze_umount/eeze_umount.c
+bin_eeze_eeze_umount_eeze_umount_CPPFLAGS = 

[EGIT] [core/efl] master 02/02: cmake: add eeze

2017-02-03 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3c0fe3ca3cda11a15e5652f8a6c0109d148d8fb6

commit 3c0fe3ca3cda11a15e5652f8a6c0109d148d8fb6
Author: Marcel Hollerbach 
Date:   Fri Feb 3 10:39:23 2017 +0100

cmake: add eeze

there is currently a bug in the testsuite which needs to change,
otherwise modules cannot be loaded. The code acutally runs when its
installed and EFL_RUN_IN_TREE is not set.
---
 CMakeLists.txt   |  1 +
 cmake/config/eeze.cmake  | 24 +
 src/bin/eeze/eeze_mount/CMakeLists.txt   |  7 +++
 src/bin/eeze/eeze_scanner/CMakeLists.txt | 10 
 src/bin/eeze/eeze_scanner_monitor/CMakeLists.txt |  9 
 src/bin/eeze/eeze_sensor_test/CMakeLists.txt |  7 +++
 src/bin/eeze/eeze_umount/CMakeLists.txt  |  9 
 src/lib/eeze/CMakeLists.txt  | 67 
 src/tests/eeze/CMakeLists.txt| 12 +
 9 files changed, 146 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8b3ef34..1565013 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,6 +51,7 @@ EFL_LIB(ecore_file)
 EFL_LIB(eldbus)
 EFL_LIB(embryo)
 EFL_LIB(ector)
+EFL_LIB(eeze)
 
 EFL_OPTIONS_SUMMARY()
 
diff --git a/cmake/config/eeze.cmake b/cmake/config/eeze.cmake
new file mode 100644
index 000..2ca6771
--- /dev/null
+++ b/cmake/config/eeze.cmake
@@ -0,0 +1,24 @@
+
+#check what versions of mount
+pkg_check_modules(MOUNT mount)
+EFL_OPTION(HAVE_EEZE_MOUNT "Whenever to use libmount" ${MOUNT_FOUND} DEPENDS 
MOUNT_FOUND OFF)
+CHECK_APPEND_DEFINE(HAVE_EEZE_MOUNT ${HAVE_EEZE_MOUNT})
+
+pkg_check_modules(UDEV REQUIRED udev>=148)
+
+if(NOT ${UDEV_FOUND})
+   error("Udev is required")
+endif()
+
+#todo tizen
+if(ENABLED_TIZEN)
+  pkg_check_modules(SENSORS REQUIRED capi-system-sensor>=0.1.17 )
+endif()
+
+set(EEZE_MODULE_TYPE_SENSOR_FAKE ON)
+set(EEZE_MODULE_TYPE_SENSOR_TIZEN OFF)
+set(EEZE_MODULE_TYPE_SENSOR_UDEV ON)
+
+CHECK_APPEND_DEFINE(EEZE_MOUNT_BIN \"bla\")
+CHECK_APPEND_DEFINE(EEZE_UNMOUNT_BIN \"bla\")
+CHECK_APPEND_DEFINE(EEZE_EJECT_BIN \"bla\")
diff --git a/src/bin/eeze/eeze_mount/CMakeLists.txt 
b/src/bin/eeze/eeze_mount/CMakeLists.txt
new file mode 100644
index 000..5105678
--- /dev/null
+++ b/src/bin/eeze/eeze_mount/CMakeLists.txt
@@ -0,0 +1,7 @@
+set(LIBRARIES
+  ecore_file
+)
+
+set(SOURCES
+  eeze_mount.c
+)
diff --git a/src/bin/eeze/eeze_scanner/CMakeLists.txt 
b/src/bin/eeze/eeze_scanner/CMakeLists.txt
new file mode 100644
index 000..4f7ec95
--- /dev/null
+++ b/src/bin/eeze/eeze_scanner/CMakeLists.txt
@@ -0,0 +1,10 @@
+set(LIBRARIES
+  eeze
+  eet
+  ecore_con
+)
+
+set(SOURCES
+  eeze_scanner.c
+  eeze_scanner.h
+)
diff --git a/src/bin/eeze/eeze_scanner_monitor/CMakeLists.txt 
b/src/bin/eeze/eeze_scanner_monitor/CMakeLists.txt
new file mode 100644
index 000..2165867
--- /dev/null
+++ b/src/bin/eeze/eeze_scanner_monitor/CMakeLists.txt
@@ -0,0 +1,9 @@
+set(LIBRARIES
+  eeze
+  eet
+  ecore_con
+)
+
+set(SOURCES
+  eeze_scanner_monitor.c
+)
diff --git a/src/bin/eeze/eeze_sensor_test/CMakeLists.txt 
b/src/bin/eeze/eeze_sensor_test/CMakeLists.txt
new file mode 100644
index 000..bd18f31
--- /dev/null
+++ b/src/bin/eeze/eeze_sensor_test/CMakeLists.txt
@@ -0,0 +1,7 @@
+set(PKG_CONFIG_REQUIRES_PRIVATE
+   udev
+)
+
+set(SOURCES
+  eeze_sensor_test.c
+)
diff --git a/src/bin/eeze/eeze_umount/CMakeLists.txt 
b/src/bin/eeze/eeze_umount/CMakeLists.txt
new file mode 100644
index 000..51581a2
--- /dev/null
+++ b/src/bin/eeze/eeze_umount/CMakeLists.txt
@@ -0,0 +1,9 @@
+set(LIBRARIES
+  eeze
+  eet
+  ecore_file
+)
+
+set(SOURCES
+  eeze_umount.c
+)
diff --git a/src/lib/eeze/CMakeLists.txt b/src/lib/eeze/CMakeLists.txt
new file mode 100644
index 000..c9aa9e0
--- /dev/null
+++ b/src/lib/eeze/CMakeLists.txt
@@ -0,0 +1,67 @@
+set(DESCRIPTION "Ecore event abstraction library")
+
+set(PUBLIC_LIBRARIES
+  eina
+  ecore
+)
+
+set(LIBRARIES
+  eo
+  efl
+  ecore_con
+  ecore_file
+  eet
+  emile
+)
+
+set(PKG_CONFIG_REQUIRES_PRIVATE
+   libudev
+)
+
+
+if (${HAVE_EEZE_MOUNT})
+  list(APPEND PKG_CONFIG_REQUIRES_PRIVATE mount)
+endif()
+
+if (${ENABLE_TIZEN})
+  list(APPEND PKG_CONFIG_REQUIRES_PRIVATE capi-system-sensor)
+endif()
+
+
+set(PUBLIC_HEADERS
+  Eeze.h
+  Eeze_Disk.h
+  Eeze_Net.h
+  Eeze_Sensor.h
+)
+
+set(SOURCES
+  eeze_disk.c
+  eeze_disk_mount.c
+  eeze_disk_private.h
+  eeze_disk_udev.c
+  eeze_main.c
+  eeze_net.c
+  eeze_net_private.h
+  eeze_sensor.c
+  eeze_sensor_private.h
+  eeze_udev_find.c
+  eeze_udev_private.c
+  eeze_udev_private.h
+  eeze_udev_syspath.c
+  eeze_udev_walk.c
+  eeze_udev_watch.c
+)
+
+#mount files
+if(${HAVE_EEZE_MOUNT})
+  if (${MOUNT_VERSION} LESS 2.19.0)
+list(APPEND SOURCES eeze_disk_libmount_old.c)
+  elseif (${MOUNT_VERSION} GREATER 2.19.0)
+list(APPEND SOURCES eeze_disk_libmount_new.c)
+  else()
+list(APPEND 

Re: [E-devel] A problem caused by removing edje program with "program_remove"

2017-02-03 Thread The Rasterman
On Tue, 3 Jan 2017 19:42:23 +0900 Conrad Um  said:

> Dear all,
> 
> When edje program is removed by "program_remove", queued program lookups
> will be removed also. However, it seems that required program lookups that
> should be kept are also removed.

program_remove? what? where? you mean in edc files? i will assume that...

> For example, three program lookups will be queued after parsing this
> programs block.
> programs {
>program { "pr0";
>   after: "pr1"; // LOOKUP[0]
>}
>program { "pr1";
>   script {
>  run_program(PROGRAM: "pr2"); // LOOKUP[1]
>   }
>   after: "pr3"; // LOOKUP[2]
>}
> }
> 
> If "pr1" is removed, it is right to remove LOOKUP[1] & LOOKUP[2], but
> LOOKUP[0] should be kept.

according to the documentation:

This will break program sequences if a program in the middle of the
sequence is removed.

so yes... removing a program in a sequence is going to lead to "bad stuff". ...
ummm... don't do it? :)

> In normal case, if "pr1" doesn't exist in group, edje_cc complains about
> non-existence of "pr1", but "program_remove" removes all program lookups
> for "pr1".
> 
> "pr0" still tries to execute "pr1" in runtime, but it will execute
> arbitrary program having index of "0". Because "pr0"'s lookup for "pr1" is
> removed by "program_remove" and the id of "Edje_Program_After" will remains
> as 0 after calloc'ed.

well the docs did warning of this breaking sequences... :)

> It is easy to make program lookups for removed program alive, but the
> change can cause compilation error for edje_cc.
> Is it allowed to change code in this case, or should I find the way not
> causing build error?

well if anything cause edje_cc to build error. "this program you remove is part
of a sequence. it's looked up by another program".

also note embryo script will also break. as you have lookup 1 will break as
edje_cc looks up programs at edje_cc compile time and this may indeed also have
issues if this was pr1 instead of pr2... (well pr1 would look itself up - my
point is if script points to a deleted program... actually edje_cc may fail to
compile as edje_cc lookup will fail... :/)

> Regards,
> conr2d (Jee-Yong Um)
> --
> Check out the vibrant tech community on one of the world's most 
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] nasty cross library interdependency

2017-02-03 Thread The Rasterman
On Wed, 25 Jan 2017 19:29:12 -0200 Gustavo Sverzut Barbieri
 said:

> Hi all,
> 
> While porting to cmake I found that:
> 
> src/lib/evas/canvas/efl_input_focus.eo
> 
> is used by:
> 
> src/lib/efl/interfaces/efl_canvas.eo
> 
> this is wrong :-(

that sounds upside-down. efl_input_focus.eo should be depending on
efl_canvas.eo ... so it's inverted... :(

> -- 
> Gustavo Sverzut Barbieri
> --
> Mobile: +55 (16) 99354-9890
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] What is the best way to get device name

2017-02-03 Thread The Rasterman
On Thu, 26 Jan 2017 13:16:57 +0900 cnook  said:

> Dear All, Hello.
> 
> 
> 
> I got following snippet to get device name from fd.
> 
> 
> 
> +char name[128];
> +if (ioctl(fd, JSIOCGNAME(sizeof(name)), name) < 0)
> +   strncpy(name, "Unknown", sizeof(name));
> +printf("Name: %s\n", name);
> 
> 
> 
> I would like to add an API to get device name using this snippet.
> 
> But it seems that there is our own way to get device name.
> 
> I have looked into efl_input_device_name_get, and tried to check
> ecore_evas_cursor_example.c.
> 
> But it gives following compile error message:
> 
> 
> 
> ecore_evas_cursor_example.c:81:1: error: unknown type name ‘Efl_Event’
> ecore_evas_cursor_example.c:83:37: error: request for member ‘info’ in
> something not a structure or union
> 
> ecore_evas_cursor_example.c:151:30: error: ‘EFL_CANVAS_EVENT_DEVICE_ADDED’
> undeclared (first use in this function)

well you are trying to use efl "eo beta api" without enabling the
headers - there is a special #define to enable this (as the api is
currently unstable and changing). thats your compile problem here.

> So... what is the EFL standard & best way to get the device name.
> 
> You do not want to add ecore_input_joystick_device_name_get, or add a
> variable to keep device name.

the efl_* api is an eo/efl interfaces api. that is "new and unstable" -
changing. it's being worked on. you would need/want a "legacy api"
wrapper to not go through this new api and expose it without relying on
eo/efl interfaces infra and objects. Eo *dev in the joystick event is
an object that you would need to access using eo/efl interfaces UNLESS
you provide a "legacy api" wrapper that calls the eo/interfaces
function internally.

 
> 
> 
> Sincerely,
> 
> Shinwoo Kim.
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] Weekend project: distro-builder

2017-02-03 Thread The Rasterman
On Tue, 31 Jan 2017 13:07:50 +0100 ani...@astier.eu said:

so what i see is just an "executable" "debian install docs" or "ubuntu install
docs" or "fedora" etc. ... but what about:

arch
gentoo
slackware
opensbd
freebsd
suse
rhel
mint
nixos
gobolinux
...

you get the idea - it becomes an endless list of packages for an endless list
of distributions and variants... (also ubuntu for example needs to be split
between 14.x, 15.x 16.x etc. as the package deps change)...

its a horrible intractable problem with so many permutations that it just is
insane... which is why a lot of it is left "fuzzy" and up to people to figure
out with per distro guides being generally fairly rough... :)

there is really only one solution i can think of that works:

ship dependencies beyond an incredibly small core (eg depend on libc/libm and
friends and nothing else). that means instead having a builder that would fetch
all the efl's dependencies and build them and install then also build and
install efl too. e.g. in /opt/e - and then you can just ship a tarball
of /opt/e and avoid everything else.

this is a solution that actually might work as it totally side-steps the
"million distros and versions and permutations of them" problem.

> Over the years, the dependency list for EFL has grown quite a bit. As a
> results, it's often been a pain to build the whole thing from git as a
> new developer (if you don't want to use your distro packages).
> You have to figure out what to install, by finding which package
> correspond to the libs described in the Requirements section of the
> README[1]. Or to apt-get build-dep old dependencies based on the current
> package. Or, you can try to follow the outdated docs on the wiki[2]
> for your distro.
> 
> I have tried updating those docs once[3] using a bare distro, in order
> to make sure we have the full list of needed dependencies.
> 
> What would be better would be to make sure the process I used to verify
> the dependency list is reproductible, so that we could simply document
> the dependencies for each distro. That's where distro-builder comes in:
> https://github.com/anisse/distro-builder
> 
> It's a relatively simple script that currently builds efl and
> terminology on fedora 24/25, debian stretch and ubuntu 16.04/16.10.
> 
> The final goal would be to have this script and the dependency files in
> the efl tree, and running it regularly, possibly on CI.
> 
> It could even help making sure the current cmake transition goes
> smoothly on different distros :-)
> 
> I'm looking forward to your feedback.
> 
> Anisse
> 
> [1] https://git.enlightenment.org/core/efl.git/tree/README?h=v1.18.4#n444
> [2] https://www.enlightenment.org/docs
> [3]
> https://git.enlightenment.org/website/www-content.git/commit/pages/distros/fedora-start.txt?id=a640068093a40797386716d500484ffc2b325fec
> 
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] public headers in sub directories

2017-02-03 Thread The Rasterman
On Fri, 27 Jan 2017 10:54:17 -0200 Gustavo Sverzut Barbieri
 said:

> Hi all,
> 
> While porting to cmake I'm trying to use its features to enhance
> portability, two are:
> 
> https://cmake.org/cmake/help/v3.0/prop_tgt/FRAMEWORK.html
> https://cmake.org/cmake/help/v3.0/prop_tgt/PUBLIC_HEADER.html

the above explains very little... :(

> These will generate MacOS compliant bundles but there is one caveat: when I
> install they end all in a flat hierarchy, thus things that includes
> relative to subdirectories, as Efl.h or Ector.h will fail to find the
> "subdir/file.h".

what do you mean exactly? you can't have -Idir flags as part of mac frameworks?
so -framework doesnt make the framework base dir an added -I search location? so

#include "interfaces/efl_observer.eo.h"
#include "interfaces/efl_observable.eo.h"

won't look for those files relative to PREFIX/include/efl-1 ? i'm not sure what
ie "expected" here from mac and how we diffeer and what has to change to "be
compliant" ?

> One option is to avoid the PUBLIC_HEADER and manually install files to
> include directories, there I can specify the subdirectories as needed.
> However I'm not sure if that would be enough to MacOS and possibly other
> systems, where the PUBLIC_HEADER could be hinting something else.
> 
> Another option, which I prefer, is to change the master include to remove
> the subdirectories, also changing the automake rules. That would result in
> all headers to be installed to a single directory:
>  /usr/include/${lib}-${vmaj}/
> 
> Any objections to this change?
> 
> -- 
> Gustavo Sverzut Barbieri
> --
> Mobile: +55 (16) 99354-9890
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[EGIT] [tools/eflete] master 01/01: tabs: add logo to bg

2017-02-03 Thread Vyacheslav Reutskiy
rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=99365884dfdf0707494ae32459bf02e1bd42e42a

commit 99365884dfdf0707494ae32459bf02e1bd42e42a
Author: Vyacheslav Reutskiy 
Date:   Fri Feb 3 07:45:32 2017 +0200

tabs: add logo to bg

Change-Id: I010d270e3ad4bb71431e7cfb6628fc357d074a77
---
 data/themes/default/widgets/layouts/tabs.edc | 11 +++
 1 file changed, 11 insertions(+)

diff --git a/data/themes/default/widgets/layouts/tabs.edc 
b/data/themes/default/widgets/layouts/tabs.edc
index a13af65..6f968af 100644
--- a/data/themes/default/widgets/layouts/tabs.edc
+++ b/data/themes/default/widgets/layouts/tabs.edc
@@ -1,4 +1,5 @@
 group { name: "elm/layout/tabs/default";
+   images.image: "bg_logo.png" COMP;
parts {
   part { name: "bg_toolbar";
  type: RECT;
@@ -29,6 +30,16 @@ group { name: "elm/layout/tabs/default";
 }
  }
   }
+  part { name: "bg_logo";
+ type: IMAGE;
+ description { state: "default" 0.00;
+min: 738 458;
+max: 738 458;
+image.normal: "bg_logo.png";
+rel1.to: "bg_content";
+rel2.to: "bg_content";
+ }
+  }
   part { name: "elm.swallow.content";
  type: SWALLOW;
  description { state:   "default" 0.0;

--