Re: [E-devel] server down

2017-06-09 Thread Jonathan Aquilina
Good Morning All, 

There is lots of food for thought in this thread. 

If beber does not have time and is willing to hand over total control to
the infra to me I am more than willing to work on things as admin. 

I understand everyone wants to simplify things tremendously and I have
to agree there. Also documentation is key here. And I will make sure
everything gets documented for who ever joins me or even if i have to
step down after me. 

Here is some food for thought. What about using a microservices
management platform such as puppet for example to manage everything on
the primary server as well as the secondary one in france?

---
Regards, 

Jonathan Aquilina 

On 2017-06-09 10:17, Carsten Haitzler wrote:

> On Fri, 09 Jun 2017 06:52:30 +0200 Jonathan Aquilina 
> said:
> 
>> Carsten, I have expressed interest to help as an admin, but given the
> 
> i know. but in this thread it's all "just move to the cloud and everything 
> will
> be fine". it's a total distraction from the real issue. i've never seen this
> kind of brokenness ever on linux, but i dont run custom kernels (haven't for
> decades). fix the problem, don't avoid it as if "cloud is the answer". it's 
> not.
> 
> complex undocumented nature of the current setup and beber needing me to
> have a pgp which I only just got in all honesty Im scared to touch the
> server. Like others have said we need to simplify things and get rid of
> all this unnecessary complexity. Staying with VM's wont hurt anything.
> For all we know even if we go to docker containers we could still end up
> with the same instabilities like we are seeing with the current setup.
> 
> ---
> Regards, 
> 
> Jonathan Aquilina 
> 
> On 2017-06-09 02:15, Carsten Haitzler wrote:
> 
> On Thu, 08 Jun 2017 18:17:32 + Andrew Williams 
> said:
> 
> Hi team,
> 
> I get that the server itself is not problematic but can we please agree
> that redundancy would be a good thing?
> There is no way that we should be comfortable with a single issue be able
> to take out our entire infrastructure. 
> redundancy (mirrored to another machine) is simply not possible. it would
> require then we have to keep in sync multiple git servers, mysql db's and
> that synchronisation would be broken when things go slow so any backup
> would have different data and we'd have a nightmare to reconcile things. we
> have full data redundancy at the filesystem/block layer (raid mirroring).
> the entire infra is not down. the host is still running just fine (e5).
> 
> if we move some services to new hosts, that means then you just have some
> things broken. if git still runs on e5 then git is down. whatever runs there
> will be down. moving everything is the same effort - in fact more, as fixing
> things to move to containers. and it's now far riskier a it will become
> expensive as people have to pay for that hosting.
> 
> so NO. no moving to other systems. it's not a solution. it's sticking your
> head in the sand and not resolving the issue we have.
> 
> not a single person here ever says "hey - i'll help migrate it to a
> container on e5 and figure it out". it's always "hey hey - come over here
> and use the vm/container/whatever hosting provider i already use".
> 
> e.org was stable as all hell when it was simple. it was a single machine
> (with a spare we just never used because the main system never went down).
> it had no vm's. no containers. it just ran everything on a single shared
> system. it worked a charm. it had no performance issues (other than it
> wasn't going to have the spare grunt to run a CI/build server e.g.
> jenkins). our reason for a new system was to be able to do CI builds and
> support and fear that our old machine would die (our drives were not raided
> at all back then)...
> 
> i'm also getting impatient. at e dev day in 2 weeks lets sort this out and
> actually get something done there and then. tbh i think at this point this
> is more important than just about any other topic there... and not to just
> talk about, but to actually do immediately. if a few people sit around
> converting what we have into something simpler (docker images? something
> else?) and beber helps get it set up and goes over what is set up and why
> so we all understand better how it's glued together...
> 
> Thanks,
> Andrew
> 
> On Thu, 8 Jun 2017 at 06:39 Carsten Haitzler  wrote:
> 
> On Thu, 08 Jun 2017 14:35:39 +0200 Jonathan Aquilina <
> jaquil...@eagleeyet.net>
> said:
> 
> Beber you have my pgp key through keybase.io's application even sent you
> a chat message. Also I noticed you are coming to the dev summit in 2
> weeks time. Any chance we can sit down during the weekend and sort out
> the server? 
> it's gotten far worse in recent times. like every day it needs a reboot
> these
> days...
> 
> ---
> Regards,
> 
> Jonathan Aquilina
> 
> On 2017-06-08 14:21, Amitesh Singh wrote:
> 
> On Wed, Jun 7, 2017 at 11:25 PM, Mike 

Re: [E-devel] server down

2017-06-09 Thread Simon Lees


On 10/06/17 01:25, William L. Thomson Jr. wrote:
> On Sat, 10 Jun 2017 00:29:51 +0900
> Carsten Haitzler (The Rasterman)  wrote:
>>
> 
> Gentoo does not provide pre-build kernels. Other than on livecd. There
> is a reason. Gentoo is for extremely experienced administrators who may
> be responsible for thousands of servers. I know of such deployments. It
> makes me laugh when people who do not know make such comments about
> Gentoo. It also shows lack of systems administration experience. Done
> right Gentoo can save massive time.
> 
> Will Gentoo save you time on a single server. No.
> Will it save you time on hundreds or thousands YES :)
> 

But we only have 1 :-)

> 
>> i'm not continuing this mail because it's also a waste of my time.
> 
> I would think that to apply to many things that you like to get
> involved in. I wonder why you bother. Why not just say I care less
> about the administration stuff. I just want the stuff to be up always.
> Leave it to others, and you can not waste your time.
> 

I think the point is raster wants a system that's going to work out of
the box with almost no effort and that people who have some sys admin
knowledge can work there way around and do things without much effort,
(we shouldn't care which kernel we have it should just work). Solutions
in this category are things like Debian Stable, CentOS, openSUSE Leap
... Gentoo and even arch really aren't in this category so its really
not what we want, even if someone had a gentoo image they could set up
quickly we would be back at the if something breaks only 1 person can
really fix it which is exactly where we are now.

-- 

Simon Lees (Simotek)http://simotek.net

Emergency Update Team   keybase.io/simotek
SUSE Linux   Adelaide Australia, UTC+10:30
GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B



signature.asc
Description: OpenPGP digital signature
--
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


[E-devel] Edje Text Sizing

2017-06-09 Thread Mike Blumenkrantz
Hi,

An issue has recently come to my attention, and it concerns anyone who has
ever used text layouts in Edje. This is an important issue/decision, so I
think people should have time to consider and discuss what will be done
before action is taken:

https://phab.enlightenment.org/T5548
--
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/enlightenment] enlightenment-0.21 09/18: Fix wl_drm session activation callback

2017-06-09 Thread Derek Foreman
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit b8b5cb6d77f596b9c7340782dca881810a14d2e7
Author: Derek Foreman 
Date:   Fri Jun 2 13:49:06 2017 -0500

Fix wl_drm session activation callback

The code intended to force evas to redraw when we switch back from
another virtual console is failing to do so.  Remove it and replace
it with simpler code that successfully forces a redraw.
---
 src/modules/wl_drm/e_mod_main.c | 8 +---
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index 0c80e8d40..f78386418 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -62,13 +62,7 @@ _e_mod_drm_cb_activate(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event
 session_state = EINA_TRUE;
 
 ecore_evas_show(e_comp->ee);
-E_CLIENT_FOREACH(ec)
-  {
- if (ec->visible && (!ec->input_only))
-   e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-  }
-e_comp_render_queue();
-e_comp_shape_queue_block(0);
+evas_damage_rectangle_add(e_comp->evas, 0, 0, e_comp->w, e_comp->h);
 ecore_event_add(E_EVENT_COMPOSITOR_ENABLE, NULL, NULL, NULL);
  }
else

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 05/18: add error messages when symbols fail to resolve in xwl init

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit d4849f792f8654434c6882181fbb7c23e9f06034
Author: Mike Blumenkrantz 
Date:   Fri May 26 16:34:13 2017 -0400

add error messages when symbols fail to resolve in xwl init

ref T5258
---
 src/modules/xwayland/e_mod_main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/modules/xwayland/e_mod_main.c 
b/src/modules/xwayland/e_mod_main.c
index 793f2e151..0be30bf50 100644
--- a/src/modules/xwayland/e_mod_main.c
+++ b/src/modules/xwayland/e_mod_main.c
@@ -289,8 +289,10 @@ xinit(void *d, Ecore_Thread *eth)
 
init_threads = dlsym(NULL, "XInitThreads");
if (init_threads) init_threads();
+   else ERR("Could not resolve XInitThreads");
open_display = dlsym(NULL, "XOpenDisplay");
if (open_display) disp = open_display(d);
+   else ERR("Could not resolve XOpenDisplay");
free(d);
ecore_thread_feedback(eth, disp);
 }

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 06/18: force client pixmap refresh immediately during resize if nocomp is active

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit ecc5d49b9a1e3abdbf46f2d0d610d661beb44fc6
Author: Mike Blumenkrantz 
Date:   Fri May 26 16:34:13 2017 -0400

force client pixmap refresh immediately during resize if nocomp is active

in the case where this path was reached during x11 nocomp, the client's 
pixmap
refresh would be deferred until the end of nocomp, even when the refresh 
would
otherwise end the nocomp. instead, force the refresh immediately.

fix T4887
---
 src/bin/e_comp_object.c | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index df2a87839..0a978b222 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -1232,8 +1232,13 @@ _e_comp_intercept_resize(void *data, Evas_Object *obj, 
int w, int h)
   {
  /* client can't be resized if its pixmap isn't usable, try again 
*/
  e_pixmap_dirty(cw->ec->pixmap);
- e_comp_object_render_update_add(obj);
- e_comp_render_queue();
+ if (e_comp->nocomp)
+   e_pixmap_refresh(cw->ec->pixmap);
+ else
+   {
+  e_comp_object_render_update_add(obj);
+  e_comp_render_queue();
+   }
   }
 cw->ec->changes.size = 1;
 EC_CHANGED(cw->ec);

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 07/18: do not perform zone updates on ignored clients during evas callbacks

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit 3593fe3856da6be4bcb660a8115fc1d7aa38545c
Author: Mike Blumenkrantz 
Date:   Fri May 26 16:34:13 2017 -0400

do not perform zone updates on ignored clients during evas callbacks

ignored clients should not have a zone or a desk
---
 src/bin/e_client.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index b4d2c2576..77f2e6b91 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -1415,7 +1415,7 @@ _e_client_cb_evas_move(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_UN
 
_e_client_event_simple(ec, E_EVENT_CLIENT_MOVE);
 
-   _e_client_zone_update(ec);
+   if (!e_client_util_ignored_get(ec)) _e_client_zone_update(ec);
evas_object_geometry_get(ec->frame, , , NULL, NULL);
if ((e_config->transient.move) && (ec->transients))
  {
@@ -1447,7 +1447,7 @@ _e_client_cb_evas_resize(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_
 
_e_client_event_simple(ec, E_EVENT_CLIENT_RESIZE);
 
-   _e_client_zone_update(ec);
+   if (!e_client_util_ignored_get(ec)) _e_client_zone_update(ec);
evas_object_geometry_get(ec->frame, , , , );
if ((e_config->transient.resize) && (ec->transients))
  {

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 16/18: perform client raise before triggering move/resize BEGIN client hook

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit ba9c8ab2c15a2088dc977e6176c32bdaf92c70ad
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

perform client raise before triggering move/resize BEGIN client hook

hooks may further modify stacking, so ensure any changes are done before
that point
---
 src/bin/e_client.c | 21 +++--
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 77f2e6b91..df582e458 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -778,6 +778,12 @@ _e_client_move_begin(E_Client *ec)
if (!_e_client_action_input_win_new()) return 0;
ec->moving = 1;
ecmove = ec;
+   if (!ec->lock_user_stacking)
+ {
+if (e_config->border_raise_on_mouse_action)
+  evas_object_raise(ec->frame);
+ }
+
_e_client_hook_call(E_CLIENT_HOOK_MOVE_BEGIN, ec);
if (!ec->moving)
  {
@@ -785,11 +791,6 @@ _e_client_move_begin(E_Client *ec)
 _e_client_action_input_win_del();
 return 0;
  }
-   if (!ec->lock_user_stacking)
- {
-if (e_config->border_raise_on_mouse_action)
-  evas_object_raise(ec->frame);
- }
return 1;
 }
 
@@ -4776,6 +4777,11 @@ e_client_resize_begin(E_Client *ec)
(ec->fullscreen) || (ec->lock_user_size))
  goto error;
if (!_e_client_action_input_win_new()) goto error;
+   if (!ec->lock_user_stacking)
+ {
+if (e_config->border_raise_on_mouse_action)
+  evas_object_raise(ec->frame);
+ }
ecresize = ec;
_e_client_hook_call(E_CLIENT_HOOK_RESIZE_BEGIN, ec);
if (!e_client_util_resizing_get(ec))
@@ -4784,11 +4790,6 @@ e_client_resize_begin(E_Client *ec)
 _e_client_action_input_win_del();
 return EINA_FALSE;
  }
-   if (!ec->lock_user_stacking)
- {
-if (e_config->border_raise_on_mouse_action)
-  evas_object_raise(ec->frame);
- }
return EINA_TRUE;
 error:
ec->resize_mode = E_POINTER_RESIZE_NONE;

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 01/18: check efm path existence before using it during dnd selections

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit cf9605ffca977b1604de45a0c8aa8ff7b35271a8
Author: Mike Blumenkrantz 
Date:   Fri May 12 12:09:18 2017 -0400

check efm path existence before using it during dnd selections

CID 1374484
---
 src/bin/e_fm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c
index 43ac2cdf3..03d0cee56 100644
--- a/src/bin/e_fm.c
+++ b/src/bin/e_fm.c
@@ -7061,7 +7061,7 @@ _e_fm2_cb_dnd_selection_notify(void *data, const char 
*type, void *event)
 }
}
   }
-else
+else if (sd->realpath)
   {
  if (_e_fm2_view_mode_get(sd) == E_FM2_VIEW_MODE_LIST && 
sd->order_file) /* list */
{

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 13/18: Fix unused var compiler warning in wl_drm

2017-06-09 Thread Derek Foreman
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit 7396c05b5235fb1b060f022dd02c0b7b38269284
Author: Derek Foreman 
Date:   Wed Jun 7 12:11:31 2017 -0500

Fix unused var compiler warning in wl_drm

Unused variable after my session activation cleanup
---
 src/modules/wl_drm/e_mod_main.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index 2593448b3..f3116c580 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -56,8 +56,6 @@ _e_mod_drm_cb_activate(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event
 
if (ev->active)
  {
-E_Client *ec;
-
 if (session_state) goto end;
 session_state = EINA_TRUE;
 

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 03/18: unset wl selection target client if that client is deleted

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit d0b6ff11fa2ccd09d9cb016f3f65fa6eb60ff70b
Author: Mike Blumenkrantz 
Date:   Fri May 12 12:09:18 2017 -0400

unset wl selection target client if that client is deleted

the frame deletion callback would trigger far too late, allowing
crashes to occur if the selection target client exited between the
time of the drop event and the selection send event
---
 src/bin/e_comp_wl.c  |  1 +
 src/bin/e_comp_wl_data.c | 13 -
 2 files changed, 1 insertion(+), 13 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 344279080..ac1ddcf72 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -2442,6 +2442,7 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, E_Client 
*ec)
 ec->parent->lock_close = EINA_FALSE;
 ec->parent->modal = NULL;
  }
+   if (e_comp_wl->selection.target == ec) e_comp_wl->selection.target = NULL;
 
if ((ec == e_client_focused_get()) && ec->visible) 
_e_comp_wl_keyboard_leave(ec);
 
diff --git a/src/bin/e_comp_wl_data.c b/src/bin/e_comp_wl_data.c
index fb160f7ad..c6d8745cd 100644
--- a/src/bin/e_comp_wl_data.c
+++ b/src/bin/e_comp_wl_data.c
@@ -940,15 +940,6 @@ _e_comp_wl_clipboard_create(void)
wl_signal_add(_comp_wl->selection.signal, _comp_wl->clipboard.listener);
 }
 
-static void
-_e_comp_wl_data_device_target_del(void *data, Evas *e EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
-   E_Client *ec = data;
-
-   if (e_comp_wl->selection.target == ec)
- e_comp_wl->selection.target = NULL;
-}
-
 E_API void
 e_comp_wl_data_device_send_enter(E_Client *ec)
 {
@@ -976,8 +967,6 @@ e_comp_wl_data_device_send_enter(E_Client *ec)
   }
  }
e_comp_wl->selection.target = ec;
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_DEL,
-  _e_comp_wl_data_device_target_del, ec);
 
 #ifndef HAVE_WAYLAND_ONLY
if (e_client_has_xwindow(ec))
@@ -1036,8 +1025,6 @@ e_comp_wl_data_device_send_leave(E_Client *ec)
e_client_has_xwindow(e_comp_wl->drag_client))
  return;
if (e_comp_wl->drag && (e_comp_wl->drag->object == ec->frame)) return;
-   evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_DEL,
-   _e_comp_wl_data_device_target_del, ec);
if (e_comp_wl->selection.target == ec)
  e_comp_wl->selection.target = NULL;
 #ifndef HAVE_WAYLAND_ONLY

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 14/18: clean up some code

2017-06-09 Thread Derek Foreman
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit f006caaee71ac18b3e5661a0c461c0e313a058bf
Author: Derek Foreman 
Date:   Wed Jun 7 12:12:16 2017 -0500

clean up some code

remove write-only variable in the pixmap struct
---
 src/bin/e_pixmap.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index 3989057ec..4f9a8e4ce 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -46,7 +46,6 @@ struct _E_Pixmap
 
 #ifdef HAVE_WAYLAND
E_Comp_Wl_Buffer *buffer;
-   E_Comp_Wl_Buffer *native_buffer;
E_Comp_Wl_Buffer *held_buffer;
struct wl_listener buffer_destroy_listener;
struct wl_listener held_buffer_destroy_listener;
@@ -724,7 +723,6 @@ e_pixmap_native_surface_init(E_Pixmap *cp, 
Evas_Native_Surface *ns)
 
  ns->data.wl_dmabuf.attr = >buffer->dmabuf_buffer->attributes;
  ns->data.wl_dmabuf.resource = cp->buffer->resource;
- cp->native_buffer = cp->buffer;
  ret = EINA_TRUE;
   }
 else if (!cp->buffer->shm_buffer)

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 10/18: Fix wl_drm session (de)activation callback

2017-06-09 Thread Derek Foreman
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit db46a8557cc5fa7939854b75238532252c423a49
Author: Derek Foreman 
Date:   Fri Jun 2 13:59:42 2017 -0500

Fix wl_drm session (de)activation callback

I missed this in my last commit - we probably shouldn't be calling
e_comp_render_queue or e_comp_shape_queue_block() after hiding the
ecore_evas anyway - and by removing the e_comp_shape_queue_block()
in the activation callback I made things asymmetrical.  Ungood.
---
 src/modules/wl_drm/e_mod_main.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index f78386418..2593448b3 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -75,8 +75,6 @@ _e_mod_drm_cb_activate(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event
 evas_font_cache_flush(e_comp->evas);
 evas_render_dump(e_comp->evas);
 
-e_comp_render_queue();
-e_comp_shape_queue_block(1);
 ecore_event_add(E_EVENT_COMPOSITOR_DISABLE, NULL, NULL, NULL);
  }
 

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 04/18: don't dup fds during xwl bridged selection transfer, this happens in libwayland

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit 54a062b7bf34272d87270b403c97105ff0a60ef9
Author: Mike Blumenkrantz 
Date:   Fri May 12 12:09:18 2017 -0400

don't dup fds during xwl bridged selection transfer, this happens in 
libwayland
---
 src/modules/xwayland/dnd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/xwayland/dnd.c b/src/modules/xwayland/dnd.c
index 47c5d9569..505440352 100644
--- a/src/modules/xwayland/dnd.c
+++ b/src/modules/xwayland/dnd.c
@@ -399,7 +399,7 @@ _xwl_selection_request(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_X_Event_Sel
p->fdh = ecore_main_fd_handler_add(fds[0], ECORE_FD_READ, 
_xwl_pipe_read, p, NULL, NULL);
p->win = ev->requestor;
p->source = source;
-   wl_data_source_send_send(source->resource, type, dup(fds[1]));
+   wl_data_source_send_send(source->resource, type, fds[1]);
close(fds[1]);
p->atom = ev->target;
p->selection = ev->selection;

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 15/18: another fix for e_comp_wl->ptr.x/y coords being wl_fixed instead of ints

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit f97b157bca719bded7dfcc1a44126d4157239c7b
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

another fix for e_comp_wl->ptr.x/y coords being wl_fixed instead of ints

ref 2c7e91d38f09ecb615b6936207a22070202a
---
 src/bin/e_comp_wl.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index ac1ddcf72..6a6eb3656 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1171,8 +1171,8 @@ _e_comp_wl_cb_mouse_move(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_Event_Mou
 {
_last_event_time = ecore_loop_time_get();
 
-   e_comp_wl->ptr.x = wl_fixed_from_int(ev->x);
-   e_comp_wl->ptr.y = wl_fixed_from_int(ev->y);
+   e_comp_wl->ptr.x = ev->x;
+   e_comp_wl->ptr.y = ev->y;
e_screensaver_notidle();
if (e_comp_wl->selection.target &&
(!e_client_has_xwindow(e_comp_wl->selection.target)) &&

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 17/18: delete client raise timer when beginning a move/resize operation

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit 2393e6aeeddad9050d1263b659429c576a273b5f
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

delete client raise timer when beginning a move/resize operation

this breaks things in subtle ways
---
 src/bin/e_client.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index df582e458..2f344dfde 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -791,6 +791,7 @@ _e_client_move_begin(E_Client *ec)
 _e_client_action_input_win_del();
 return 0;
  }
+   E_FREE_FUNC(ec->raise_timer, ecore_timer_del);
return 1;
 }
 
@@ -4790,6 +4791,7 @@ e_client_resize_begin(E_Client *ec)
 _e_client_action_input_win_del();
 return EINA_FALSE;
  }
+   E_FREE_FUNC(ec->raise_timer, ecore_timer_del);
return EINA_TRUE;
 error:
ec->resize_mode = E_POINTER_RESIZE_NONE;

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 12/18: Remove some duplicate operations

2017-06-09 Thread Derek Foreman
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit 4088e035c6df08bee4b8e037b610d38e22b8d67e
Author: Derek Foreman 
Date:   Tue Jun 6 16:15:22 2017 -0500

Remove some duplicate operations

the native surface version was set outside of the switch statement,
so we don't need to re-set it to the same thing here.
---
 src/bin/e_pixmap.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index ad368e4b1..3989057ec 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -721,7 +721,6 @@ e_pixmap_native_surface_init(E_Pixmap *cp, 
Evas_Native_Surface *ns)
 if (cp->buffer->dmabuf_buffer)
   {
  ns->type = EVAS_NATIVE_SURFACE_WL_DMABUF;
- ns->version = EVAS_NATIVE_SURFACE_VERSION;
 
  ns->data.wl_dmabuf.attr = >buffer->dmabuf_buffer->attributes;
  ns->data.wl_dmabuf.resource = cp->buffer->resource;
@@ -731,7 +730,6 @@ e_pixmap_native_surface_init(E_Pixmap *cp, 
Evas_Native_Surface *ns)
 else if (!cp->buffer->shm_buffer)
   {
  ns->type = EVAS_NATIVE_SURFACE_WL;
- ns->version = EVAS_NATIVE_SURFACE_VERSION;
  ns->data.wl.legacy_buffer = cp->buffer->resource;
  ret = EINA_TRUE;
   }

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 02/18: unset wl button mask when beginning a move/resize operation

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit 43157cb1f509af5ab18b70a2ac76dcb8f3d69056
Author: Mike Blumenkrantz 
Date:   Fri May 12 12:09:18 2017 -0400

unset wl button mask when beginning a move/resize operation

ensure that clients do not receive a release event for any pressed
buttons
---
 src/bin/e_comp_wl.c | 10 +-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 8d6cc9463..344279080 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -2526,10 +2526,16 @@ _e_comp_wl_client_cb_focus_unset(void *data 
EINA_UNUSED, E_Client *ec)
 }
 
 static void
+_e_comp_wl_client_cb_move_begin(void *data EINA_UNUSED, E_Client *ec 
EINA_UNUSED)
+{
+   e_comp_wl->ptr.button_mask = 0;
+}
+
+static void
 _e_comp_wl_client_cb_resize_begin(void *data EINA_UNUSED, E_Client *ec)
 {
+   e_comp_wl->ptr.button_mask = 0;
if (e_client_has_xwindow(ec)) return;
-
e_comp_wl->resize.edges = 0;
if (ec->keyboard_resizing) return;
switch (ec->resize_mode)
@@ -2862,6 +2868,8 @@ e_comp_wl_init(void)
e_client_hook_add(E_CLIENT_HOOK_FOCUS_UNSET,
  _e_comp_wl_client_cb_focus_unset, NULL);
 
+   e_client_hook_add(E_CLIENT_HOOK_MOVE_BEGIN,
+ _e_comp_wl_client_cb_move_begin, NULL);
e_client_hook_add(E_CLIENT_HOOK_RESIZE_BEGIN,
  _e_comp_wl_client_cb_resize_begin, NULL);
e_client_hook_add(E_CLIENT_HOOK_RESIZE_END,

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 11/18: use FOREACH_SAFE when walking client list during logout

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit f41e5a90509bc3664d5142b3d403b9b921e0cff9
Author: Mike Blumenkrantz 
Date:   Tue May 30 10:41:05 2017 -0400

use FOREACH_SAFE when walking client list during logout

internal clients can be instantly destroyed and removed from the list
---
 src/bin/e_sys.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c
index 72e926087..cbc24f345 100644
--- a/src/bin/e_sys.c
+++ b/src/bin/e_sys.c
@@ -762,7 +762,7 @@ _e_sys_logout_after(void)
 static void
 _e_sys_logout_begin(E_Sys_Action a_after, Eina_Bool raw)
 {
-   const Eina_List *l;
+   const Eina_List *l, *ll;
E_Client *ec;
E_Obj_Dialog *od;
 
@@ -783,7 +783,7 @@ _e_sys_logout_begin(E_Sys_Action a_after, Eina_Bool raw)
  }
_e_sys_action_after = a_after;
_e_sys_action_after_raw = raw;
-   EINA_LIST_FOREACH(e_comp->clients, l, ec)
+   EINA_LIST_FOREACH_SAFE(e_comp->clients, l, ll, ec)
  {
 e_client_act_close_begin(ec);
  }

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 08/18: Don't require dmabuf buffers to be writeable

2017-06-09 Thread Derek Foreman
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit f76fb2d558f145b3d348d8b0e2242787bf5eee51
Author: Derek Foreman 
Date:   Fri May 19 16:47:57 2017 -0500

Don't require dmabuf buffers to be writeable

Compositor doesn't need to write to this buffer, and most clients won't
allocate them in a way that the compositor can.  Relax the test criteria.
---
 src/bin/e_pixmap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index 2849e598d..ad368e4b1 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -1084,7 +1084,7 @@ e_pixmap_dmabuf_test(struct linux_dmabuf_buffer *dmabuf)
 
/* This is only legit for ARGB */
size = dmabuf->attributes.height * dmabuf->attributes.stride[0];
-   data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, 
dmabuf->attributes.fd[0], 0);
+   data = mmap(NULL, size, PROT_READ, MAP_SHARED, dmabuf->attributes.fd[0], 0);
if (data == MAP_FAILED) return EINA_FALSE;
munmap(data, size);
 

-- 




[EGIT] [core/enlightenment] enlightenment-0.21 18/18: do not trigger events/bindings on zone object events with timestamp==0

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch enlightenment-0.21.

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

commit 17d9379ba10195a86a7c6e8277932e7835c925aa
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

do not trigger events/bindings on zone object events with timestamp==0

these are internal event feeds and should not trigger additional actions
---
 src/bin/e_zone.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/src/bin/e_zone.c b/src/bin/e_zone.c
index 4397ad0a7..f6c70864f 100644
--- a/src/bin/e_zone.c
+++ b/src/bin/e_zone.c
@@ -78,6 +78,7 @@ _e_zone_cb_mouse_in(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *eve
E_Zone_Edge edge;
E_Zone *zone = data;
 
+   if (!ev->timestamp) return;
edge = _e_zone_detect_edge(zone, obj);
if (edge == E_ZONE_EDGE_NONE) return;
 
@@ -101,6 +102,7 @@ _e_zone_cb_mouse_out(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *ev
E_Zone_Edge edge;
E_Zone *zone = data;
 
+   if (!ev->timestamp) return;
edge = _e_zone_detect_edge(zone, obj);
if (edge == E_ZONE_EDGE_NONE) return;
 
@@ -124,6 +126,7 @@ _e_zone_cb_mouse_down(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *e
E_Zone_Edge edge;
E_Zone *zone = data;
 
+   if (!ev->timestamp) return;
edge = _e_zone_detect_edge(zone, obj);
if (edge == E_ZONE_EDGE_NONE) return;
 
@@ -146,6 +149,7 @@ _e_zone_cb_mouse_up(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *eve
E_Zone_Edge edge;
E_Zone *zone = data;
 
+   if (!ev->timestamp) return;
edge = _e_zone_detect_edge(zone, obj);
if (edge == E_ZONE_EDGE_NONE) return;
 

-- 




[EGIT] [core/efl] efl-1.19 01/01: ecore-ipc: don't return dead clients in ecore_ipc_server_clients_get

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch efl-1.19.

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

commit d581db6f9f993c5e530e7ed4fa0eb6a093558722
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:07 2017 -0400

ecore-ipc: don't return dead clients in ecore_ipc_server_clients_get

@fix

fix T5383
---
 src/lib/ecore_ipc/ecore_ipc.c | 7 ++-
 src/lib/ecore_ipc/ecore_ipc_private.h | 1 +
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_ipc/ecore_ipc.c b/src/lib/ecore_ipc/ecore_ipc.c
index 0c08bfcd5f..e9973f30a7 100644
--- a/src/lib/ecore_ipc/ecore_ipc.c
+++ b/src/lib/ecore_ipc/ecore_ipc.c
@@ -809,6 +809,8 @@ ecore_ipc_server_del(Ecore_Ipc_Server *svr)
 servers = eina_list_remove(servers, svr);
 
 if (svr->buf) free(svr->buf);
+eina_list_free(svr->dead_clients);
+eina_list_free(svr->clients);
 ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
 DBG("server %p freed", svr);
 free(svr);
@@ -1233,6 +1235,9 @@ _ecore_ipc_client_socket_del(Ecore_Ipc_Client *cl)
   efl_io_closer_close(cl->socket.socket);
 efl_unref(cl->socket.socket);
 cl->socket.socket = NULL;
+if (!cl->svr) return;
+cl->svr->clients = eina_list_remove(cl->svr->clients, cl);
+cl->svr->dead_clients = eina_list_append(cl->svr->dead_clients, cl);
  }
 }
 
@@ -1355,7 +1360,7 @@ ecore_ipc_client_del(Ecore_Ipc_Client *cl)
 svr = cl->svr;
 if (cl->socket.socket) _ecore_ipc_client_socket_del(cl);
 if (ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
-  svr->clients = eina_list_remove(svr->clients, cl);
+  svr->dead_clients = eina_list_remove(svr->dead_clients, cl);
 if (cl->buf) free(cl->buf);
 ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE);
 free(cl);
diff --git a/src/lib/ecore_ipc/ecore_ipc_private.h 
b/src/lib/ecore_ipc/ecore_ipc_private.h
index 9978b16143..72ec014e7c 100644
--- a/src/lib/ecore_ipc/ecore_ipc_private.h
+++ b/src/lib/ecore_ipc/ecore_ipc_private.h
@@ -103,6 +103,7 @@ struct _Ecore_Ipc_Server
Eo *server;
 
Eina_List*clients;
+   Eina_List*dead_clients;
void  *data;
unsigned char *buf;
intbuf_size;

-- 




[EGIT] [core/efl] master 01/01: Revert "Revert "Edje calc: Fix textblock size calculation logic""

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 84c79f6c496b766b32ac0df6edfb284ff8e7e5f3
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:20:47 2017 -0400

Revert "Revert "Edje calc: Fix textblock size calculation logic""

This reverts commit 0392cd3c489ee1c69dc768b2c3e8ac01ba1854c1.

oops this was supposed to just be local
---
 data/elementary/themes/edc/elm/label.edc |  19 +-
 src/lib/edje/edje_calc.c | 305 +++
 src/lib/edje/edje_util.c |  69 ++-
 src/lib/elementary/elm_label.c   |  38 ++--
 4 files changed, 329 insertions(+), 102 deletions(-)

diff --git a/data/elementary/themes/edc/elm/label.edc 
b/data/elementary/themes/edc/elm/label.edc
index b1e273bc09..99227d8067 100644
--- a/data/elementary/themes/edc/elm/label.edc
+++ b/data/elementary/themes/edc/elm/label.edc
@@ -25,9 +25,26 @@ group { name: "elm/label/base/default";
 rel2.relative: 1.0 1.0;
 text {
style: "label_style";
-   min: 0 1;
+   min: 1 1;
 }
  }
+ description { state: "horizontal_fixed" 0.0;
+inherit: "default" 0.0;
+fixed: 1 0;
+text.min: 0 1;
+ }
+  }
+   }
+   programs {
+  program { name: "horizontal_expandable";
+ signal: "elm,state,horizontal,expandable"; source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.text";
+  }
+  program { name: "horizontal_fixed";
+ signal: "elm,state,horizontal,fixed"; source: "elm";
+ action: STATE_SET "horizontal_fixed" 0.0;
+ target: "elm.text";
   }
}
 }
diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
index 7a2e6a8d60..47e918cdcc 100644
--- a/src/lib/edje/edje_calc.c
+++ b/src/lib/edje/edje_calc.c
@@ -1476,9 +1476,17 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
int *minw, int *minh,
int *maxw, int *maxh)
 {
+   int min_calc_w = 0, min_calc_h = 0;
+
if ((ep->type != EDJE_RP_TYPE_TEXT) ||
(!ep->typedata.text))
  return;
+
+   /* min_calc_* values need to save calculated minumum size
+* for maximum size calculation */
+   if (minw) min_calc_w = *minw;
+   if (minh) min_calc_h = *minh;
+
if (chosen_desc)
  {
 Evas_Coord tw, th, ins_l, ins_r, ins_t, ins_b;
@@ -1623,56 +1631,277 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
}
  if ((chosen_desc->text.min_x) || (chosen_desc->text.min_y))
{
-  int mw = 0, mh = 0;
+  evas_object_textblock_style_insets_get(ep->object, _l,
+ _r, _t, 
_b);
 
   tw = th = 0;
   if (!chosen_desc->text.min_x)
 {
-   efl_gfx_size_set(ep->object, TO_INT(params->eval.w), 
TO_INT(params->eval.h));
-   efl_canvas_text_size_formatted_get(ep->object, , 
);
+   /* text.min: 0 1
+* text.max: X X */
+   int temp_h = TO_INT(params->eval.h);
+   int temp_w = TO_INT(params->eval.w);
+
+   if (min_calc_w > temp_w)
+ temp_w = min_calc_w;
+   if ((!chosen_desc->text.max_x) &&
+   maxw && (*maxw > -1) && (*maxw < temp_w))
+ temp_w = *maxw;
+
+   if (chosen_desc->text.max_y)
+ {
+/* text.min: 0 1
+ * text.max: X 1 */
+temp_h = INT_MAX / 1;
+ }
+   else if (maxh && (*maxh > TO_INT(params->eval.h)))
+ {
+/* text.min: 0 1
+ * text.max: X 0
+ * And there is a limit for height. */
+temp_h = *maxh;
+ }
+
+   /* If base width for calculation is 0,
+* don't get meaningless height for multiline */
+   if (temp_w > 0)
+ {
+efl_gfx_size_set(ep->object, temp_w, temp_h);
+efl_canvas_text_size_formatted_get(ep->object, 
, );
+
+tw += ins_l + ins_r;
+th += ins_t + ins_b;
+ }
+   else
+ {
+efl_canvas_text_size_native_get(ep->object, NULL, 
);
+
+th += ins_t + ins_b;
+ }
  

[EGIT] [core/enlightenment] master 04/15: simplify _bar_check_for_duplicates() in luncher

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit afcf6c60737c5d5c29bda9949db34fa7358c942d
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

simplify _bar_check_for_duplicates() in luncher
---
 src/modules/luncher/bar.c | 21 +++--
 1 file changed, 3 insertions(+), 18 deletions(-)

diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c
index 86efd1872..3842a984a 100644
--- a/src/modules/luncher/bar.c
+++ b/src/modules/luncher/bar.c
@@ -35,27 +35,12 @@ _bar_aspect(Instance *inst)
 static Eina_Bool
 _bar_check_for_duplicates(Icon *ic, E_Client *dupe)
 {
-   Eina_List *l, *ll, *clients = NULL;
-   E_Client *ec;
+   Eina_List *l;
E_Exec_Instance *ex;
 
EINA_LIST_FOREACH(ic->execs, l, ex)
- {
-EINA_LIST_FOREACH(ex->clients, ll, ec)
-  clients = eina_list_append(clients, ec);
- }
-   EINA_LIST_FOREACH(ic->clients, l, ec)
- clients = eina_list_append(clients, ec);
-
-   EINA_LIST_FREE(clients, ec)
- {
-  if (ec == dupe)
-{
-   eina_list_free(clients);
-   return EINA_TRUE;
-}
- }
-   return EINA_FALSE;
+ if (eina_list_data_find(ex->clients, dupe)) return EINA_TRUE;
+   return !!eina_list_data_find(ic->clients, dupe);
 }
 
 static Eina_Bool

-- 




[EGIT] [core/enlightenment] master 13/15: re-enable zone edges during window_move action

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit f396d3fe42e8aad1e158c78850ddeba2598f66c6
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

re-enable zone edges during window_move action

this can now be sensibly handled without accidentally sending input to
every object on the canvas

ref T5552
---
 src/bin/e_client.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 75c683d66..c9961f365 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -4850,7 +4850,6 @@ e_client_act_move_begin(E_Client *ec, 
E_Binding_Event_Mouse_Button *ev)
  return;
 
_e_client_action_init(ec);
-   e_zone_edge_disable();
e_pointer_mode_push(ec, E_POINTER_MOVE);
 }
 
@@ -5201,7 +5200,6 @@ e_client_signal_move_begin(E_Client *ec, const char *sig, 
const char *src EINA_U
if (!_e_client_move_begin(ec)) return;
_e_client_action_init(ec);
e_pointer_mode_push(ec, E_POINTER_MOVE);
-   e_zone_edge_disable();
 }
 
 E_API void

-- 




[EGIT] [core/enlightenment] master 05/15: simplify handling of new exec clients when adding luncher icons

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit ca1638c6720e34621efce10fee0abf5d18702a85
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

simplify handling of new exec clients when adding luncher icons
---
 src/modules/luncher/bar.c | 22 +++---
 1 file changed, 7 insertions(+), 15 deletions(-)

diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c
index 3842a984a..568edf2fe 100644
--- a/src/modules/luncher/bar.c
+++ b/src/modules/luncher/bar.c
@@ -1530,26 +1530,18 @@ _bar_cb_exec_new(void *data EINA_UNUSED, int type, 
E_Exec_Instance *ex)
  ic->starting = EINA_FALSE;
  snprintf(ori, sizeof(ori), "e,state,on,%s", 
_bar_location_get(inst));
  elm_layout_signal_emit(ic->o_layout, ori, "e");
- if (ex->desktop)
+ if (!(_bar_check_for_duplicates(ic, ec)))
{
-  if (!(_bar_check_for_duplicates(ic, ec)))
+  if (ex->desktop)
 ic->execs = eina_list_append(ic->execs, ex);
-  if (evas_object_visible_get(ec->frame))
-_bar_exec_new_show(ic, NULL, ec->frame, NULL);
   else
-evas_object_event_callback_add(ec->frame, 
EVAS_CALLBACK_SHOW,
-_bar_exec_new_show, ic);
-   }
- else
-   {
-  if (!(_bar_check_for_duplicates(ic, ec)))
 ic->clients = eina_list_append(ic->clients, ec);
-  if (evas_object_visible_get(ec->frame))
-_bar_exec_new_show(ic, NULL, ec->frame, NULL);
-  else
-evas_object_event_callback_add(ec->frame, 
EVAS_CALLBACK_SHOW,
-_bar_exec_new_show, ic);
}
+ if (evas_object_visible_get(ec->frame))
+   _bar_exec_new_show(ic, NULL, ec->frame, NULL);
+ else
+   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW,
+   _bar_exec_new_show, ic);
   }
 else
   {

-- 




[EGIT] [core/enlightenment] master 10/15: delete client raise timer when beginning a move/resize operation

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 41a5fe2708434500a4280eb65159f9f3bb4d2914
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

delete client raise timer when beginning a move/resize operation

this breaks things in subtle ways
---
 src/bin/e_client.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index c1370d7b9..c11924e60 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -820,6 +820,7 @@ _e_client_move_begin(E_Client *ec)
 _e_client_action_input_win_del();
 return 0;
  }
+   E_FREE_FUNC(ec->raise_timer, ecore_timer_del);
return 1;
 }
 
@@ -5145,6 +5146,7 @@ e_client_resize_begin(E_Client *ec)
 _e_client_action_input_win_del();
 return EINA_FALSE;
  }
+   E_FREE_FUNC(ec->raise_timer, ecore_timer_del);
return EINA_TRUE;
 error:
ec->resize_mode = E_POINTER_RESIZE_NONE;

-- 




[EGIT] [core/enlightenment] master 14/15: send nograb signal to ssd theme on creation

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 7d39be8c4a74df57cee447c8f984eea98e228b69
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

send nograb signal to ssd theme on creation

disable pointer grabs on ssd borders

edge bindings can now be triggered during window drags

fix T5552
---
 src/bin/e_comp_object.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 791e6c9fd..3f04097a4 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3441,6 +3441,7 @@ e_comp_object_frame_theme_set(Evas_Object *obj, const 
char *name)
if (ok)
  {
 cw->frame_object = o;
+edje_object_signal_emit(o, "e,titlebar,nograb", "e");
 eina_stringshare_del(cw->frame_theme);
 cw->frame_theme = theme;
 evas_object_name_set(o, "cw->frame_object");

-- 




[EGIT] [core/enlightenment] master 01/15: another fix for e_comp_wl->ptr.x/y coords being wl_fixed instead of ints

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit bf157e03dce3d067e345f5d4dd4aad698f9df855
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

another fix for e_comp_wl->ptr.x/y coords being wl_fixed instead of ints

ref 2c7e91d38f09ecb615b6936207a22070202a
---
 src/bin/e_comp_wl.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index f3bd8e8c1..9c0a29e9e 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1177,8 +1177,8 @@ _e_comp_wl_cb_mouse_move(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_Event_Mou
 {
_last_event_time = ecore_loop_time_get();
 
-   e_comp_wl->ptr.x = wl_fixed_from_int(ev->x);
-   e_comp_wl->ptr.y = wl_fixed_from_int(ev->y);
+   e_comp_wl->ptr.x = ev->x;
+   e_comp_wl->ptr.y = ev->y;
e_screensaver_notidle();
if (e_comp_wl->selection.target &&
(!e_client_has_xwindow(e_comp_wl->selection.target)) &&

-- 




[EGIT] [core/enlightenment] master 15/15: feed mouse up during window maximize if the current window is being dragged

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit b4e96a0aea68d73b4451098b4ba5d9ea48847c5d
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

feed mouse up during window maximize if the current window is being dragged

prevent window from accidentally toggling its maximize state repeatedly
---
 src/bin/e_client.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index c9961f365..697f55d94 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -4086,6 +4086,11 @@ e_client_maximize(E_Client *ec, E_Maximize max)
  evas_object_smart_callback_call(ec->frame, "maximize", NULL);
evas_object_smart_callback_call(ec->frame, "maximize_pre", );
if (!max) return;
+   if (ec->moving)
+ {
+if (ec == action_client)
+  e_comp_canvas_feed_mouse_up(0); //triggers event grabber cb
+ }
override = ec->maximize_override;
if (ec->fullscreen)
  e_client_unfullscreen(ec);

-- 




[EGIT] [core/enlightenment] master 07/15: remove misleading null checks from _bar_cb_client_remove()

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit b76972b162aba11318081ce811aba2fbdd436100
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

remove misleading null checks from _bar_cb_client_remove()

client events cannot be triggered without a client
---
 src/modules/luncher/bar.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c
index b24852ca1..636824641 100644
--- a/src/modules/luncher/bar.c
+++ b/src/modules/luncher/bar.c
@@ -1293,13 +1293,12 @@ _bar_cb_client_remove(void *data EINA_UNUSED, int type 
EINA_UNUSED, E_Event_Clie
 
 if (!inst->bar) continue;
 if (inst->cfg->type == E_LUNCHER_MODULE_LAUNCH_ONLY) continue;
-if (ev->ec) ic = _bar_icon_match(inst, ev->ec);
+ic = _bar_icon_match(inst, ev->ec);
 if (ic)
   {
  if (ic->starting) elm_layout_signal_emit(ic->o_layout, 
"e,state,started", "e");
  ic->starting = EINA_FALSE;
- if (ev->ec)
-   ic->clients = eina_list_remove(ic->clients, ev->ec);
+ ic->clients = eina_list_remove(ic->clients, ev->ec);
  if (ev->ec->exe_inst)
ic->execs = eina_list_remove(ic->execs, ev->ec->exe_inst);
  if (!eina_list_count(ic->execs) && !eina_list_count(ic->clients))

-- 




[EGIT] [core/enlightenment] master 12/15: use event_grabber to simulate explicit grab during window move/resize actions

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit d0f45a48a4dbe891aece36fbfdd616d786520d8d
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

use event_grabber to simulate explicit grab during window move/resize 
actions

this grabs the client's frame as well as any existing edge objects during 
drags

ref T5552
---
 src/bin/e_client.c  | 23 +++
 src/bin/e_comp_canvas.c | 31 +++
 src/bin/e_comp_canvas.h |  2 +-
 3 files changed, 55 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index c11924e60..75c683d66 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -42,6 +42,7 @@ static Eina_List *focus_stack = NULL;
 static Eina_List *raise_stack = NULL;
 
 static Eina_Bool comp_grabbed = EINA_FALSE;
+static Evas_Object *action_rect;
 
 static Eina_List *handlers = NULL;
 //static Eina_Bool client_grabbed = EINA_FALSE;
@@ -364,6 +365,7 @@ _e_client_action_input_win_del(void)
if (!comp_grabbed) return 0;
 
comp_grabbed = 0;
+   E_FREE_FUNC(action_rect, evas_object_del);
e_comp_ungrab_input(1, 1);
return 1;
 }
@@ -746,6 +748,25 @@ _e_client_action_input_win_new(void)
 }
 
 static void
+_e_client_action_event_grabber_mouse_up(void *data EINA_UNUSED, Evas *e 
EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   if (action_client && action_client->moving)
+ e_client_act_move_end(action_client, NULL);
+}
+
+static void
+_e_client_action_event_grabber_init(E_Client *ec)
+{
+   action_rect = e_comp_canvas_event_grabber_add();
+   evas_object_event_callback_add(action_rect, EVAS_CALLBACK_MOUSE_UP, 
_e_client_action_event_grabber_mouse_up, NULL);
+   evas_object_smart_member_add(ec->frame, action_rect);
+   evas_object_resize(action_rect, e_comp->w, e_comp->h);
+   evas_object_layer_set(action_rect, EVAS_LAYER_MAX - 100);
+   evas_object_show(action_rect);
+
+}
+
+static void
 _e_client_action_init(E_Client *ec)
 {
action_orig.x = ec->x;
@@ -821,6 +842,7 @@ _e_client_move_begin(E_Client *ec)
 return 0;
  }
E_FREE_FUNC(ec->raise_timer, ecore_timer_del);
+   _e_client_action_event_grabber_init(ec);
return 1;
 }
 
@@ -5147,6 +5169,7 @@ e_client_resize_begin(E_Client *ec)
 return EINA_FALSE;
  }
E_FREE_FUNC(ec->raise_timer, ecore_timer_del);
+   _e_client_action_event_grabber_init(ec);
return EINA_TRUE;
 error:
ec->resize_mode = E_POINTER_RESIZE_NONE;
diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c
index 654aa9851..41504f6e3 100644
--- a/src/bin/e_comp_canvas.c
+++ b/src/bin/e_comp_canvas.c
@@ -848,6 +848,37 @@ e_comp_canvas_feed_mouse_up(unsigned int activate_time)
  }
 }
 
+E_API Evas_Object *
+e_comp_canvas_event_grabber_add(void)
+{
+   E_Zone *zone;
+   Eina_List *l;
+   Evas_Object *o;
+
+   o = evas_object_event_grabber_add(e_comp->evas);
+   EINA_LIST_FOREACH(e_comp->zones, l, zone)
+ {
+#define EDGE_ADD(E) \
+if (zone->E) \
+  evas_object_smart_member_add(zone->E, o)
+
+EDGE_ADD(edge.top);
+EDGE_ADD(edge.right);
+EDGE_ADD(edge.bottom);
+EDGE_ADD(edge.left);
+
+EDGE_ADD(corner.left_top);
+EDGE_ADD(corner.right_top);
+EDGE_ADD(corner.top_left);
+EDGE_ADD(corner.top_right);
+EDGE_ADD(corner.left_bottom);
+EDGE_ADD(corner.right_bottom);
+EDGE_ADD(corner.bottom_left);
+EDGE_ADD(corner.bottom_right);
+ }
+   return o;
+}
+
 EINTERN void
 e_comp_canvas_intercept(void)
 {
diff --git a/src/bin/e_comp_canvas.h b/src/bin/e_comp_canvas.h
index 911b8d8e6..b70481bf4 100644
--- a/src/bin/e_comp_canvas.h
+++ b/src/bin/e_comp_canvas.h
@@ -28,7 +28,7 @@ E_API E_Layer e_comp_canvas_client_layer_map_nearest(int 
layer);
 E_API void e_comp_canvas_keys_grab(void);
 E_API void e_comp_canvas_keys_ungrab(void);
 E_API void e_comp_canvas_feed_mouse_up(unsigned int activate_time);
-
+E_API Evas_Object *e_comp_canvas_event_grabber_add(void);
 EINTERN void e_comp_canvas_intercept(void);
 
 /* the following functions are used for adjusting root window coordinates

-- 




[EGIT] [core/efl] master 13/14: edje: add set_pointer_mode() to embryo functions

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 4c431c8b9ccf9b5916ff7f21a1ec2399e09b3979
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:08 2017 -0400

edje: add set_pointer_mode() to embryo functions

this should probably be a description-level property
---
 data/edje/include/edje.inc  |  1 +
 src/lib/edje/edje_embryo.c  | 31 +++
 src/lib/edje/edje_private.h |  2 ++
 src/lib/edje/edje_util.c| 10 ++
 4 files changed, 44 insertions(+)

diff --git a/data/edje/include/edje.inc b/data/edje/include/edje.inc
index 5fa08bf308..bc60a83c3e 100644
--- a/data/edje/include/edje.inc
+++ b/data/edje/include/edje.inc
@@ -133,6 +133,7 @@ native   set_min_size (Float:w, Float:h);
 native   set_max_size (Float:w, Float:h);
 native   set_mouse_events (part_id, ev);
 native   get_mouse_events (part_id);
+native   set_pointer_mode(part_id, mode);
 native   set_repeat_events(part_id, rep);
 native   get_repeat_events(part_id);
 native   set_ignore_flags (part_id, flags);
diff --git a/src/lib/edje/edje_embryo.c b/src/lib/edje/edje_embryo.c
index e6963b6fcb..081fe0e620 100644
--- a/src/lib/edje/edje_embryo.c
+++ b/src/lib/edje/edje_embryo.c
@@ -187,6 +187,14 @@
  * //set_effect(part_id, Effect:fx)
  * set_mouse_events(part_id, ev)
  * get_mouse_events(part_id)
+ *
+ * Pointer_Mode {
+ *   POINTER_MODE_AUTOGRAB = 0,
+ *   POINTER_MODE_NOGRAB = 1,
+ *   POINTER_MODE_NOGREP = 2,
+ * }
+ * 
+ * set_pointer_mode(part_id, mode)
  * set_repeat_events(part_id, rep)
  * get_repeat_events(part_id)
  * set_ignore_flags(part_id, flags)
@@ -3600,6 +3608,28 @@ _edje_embryo_fn_get_mouse_events(Embryo_Program *ep, 
Embryo_Cell *params)
 
 }
 
+/* set_pointer_mode(part_id, mode) */
+static Embryo_Cell
+_edje_embryo_fn_set_pointer_mode(Embryo_Program *ep, Embryo_Cell *params)
+{
+   int part_id = 0;
+   Edje *ed;
+   Edje_Real_Part *rp;
+
+   CHKPARAM(2);
+
+   part_id = params[1];
+   if (part_id < 0) return 0;
+
+   ed = embryo_program_data_get(ep);
+   rp = ed->table_parts[part_id % ed->table_parts_size];
+
+   if (rp)
+ _edje_real_part_pointer_mode_set(ed, rp, params[2]);
+
+   return 0;
+}
+
 /* set_repeat_events(part_id, rep) */
 static Embryo_Cell
 _edje_embryo_fn_set_repeat_events(Embryo_Program *ep, Embryo_Cell *params)
@@ -4557,6 +4587,7 @@ _edje_embryo_script_init(Edje_Part_Collection *edc)
 
embryo_program_native_call_add(ep, "set_mouse_events", 
_edje_embryo_fn_set_mouse_events);
embryo_program_native_call_add(ep, "get_mouse_events", 
_edje_embryo_fn_get_mouse_events);
+   embryo_program_native_call_add(ep, "set_pointer_mode", 
_edje_embryo_fn_set_pointer_mode);
embryo_program_native_call_add(ep, "set_repeat_events", 
_edje_embryo_fn_set_repeat_events);
embryo_program_native_call_add(ep, "get_repeat_events", 
_edje_embryo_fn_get_repeat_events);
embryo_program_native_call_add(ep, "set_ignore_flags", 
_edje_embryo_fn_set_ignore_flags);
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index 11d3055062..8e51730627 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -2028,6 +2028,7 @@ struct _Edje_Real_Part
FLOAT_T   description_pos; // 8
Edje_Rectanglereq; // 16
int   x, y, w, h; // 16
+   Evas_Object_Pointer_Mode  pointer_mode;
 #ifdef EDJE_CALC_CACHE
unsigned shortstate; // 2
 #endif
@@ -3090,6 +3091,7 @@ Eina_Bool _edje_real_part_mouse_events_get(Edje *ed, 
Edje_Real_Part *rp);
 void _edje_real_part_mouse_events_set(Edje *ed, Edje_Real_Part *rp, Eina_Bool 
mouse_events);
 Eina_Bool _edje_real_part_repeat_events_get(Edje *ed, Edje_Real_Part *rp);
 void _edje_real_part_repeat_events_set(Edje *ed, Edje_Real_Part *rp, Eina_Bool 
repeat_events);
+void _edje_real_part_pointer_mode_set(Edje *ed, Edje_Real_Part *rp, 
Evas_Object_Pointer_Mode mode);
 Evas_Event_Flags _edje_real_part_ignore_flags_get(Edje *ed, Edje_Real_Part 
*rp);
 void _edje_real_part_ignore_flags_set(Edje *ed, Edje_Real_Part *rp, 
Evas_Event_Flags ignore_flags);
 Evas_Event_Flags _edje_real_part_mask_flags_get(Edje *ed, Edje_Real_Part *rp);
diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c
index 2f09b3f4cf..60ad9777fa 100644
--- a/src/lib/edje/edje_util.c
+++ b/src/lib/edje/edje_util.c
@@ -6524,6 +6524,16 @@ _edje_real_part_repeat_events_set(Edje *ed EINA_UNUSED, 
Edje_Real_Part *rp, Eina
  evas_object_repeat_events_set(rp->object, 0);
 }
 
+void
+_edje_real_part_pointer_mode_set(Edje *ed EINA_UNUSED, Edje_Real_Part *rp, 
Evas_Object_Pointer_Mode mode)
+{
+   if (!rp) return;
+
+   rp->pointer_mode = mode;
+
+   evas_object_pointer_mode_set(rp->object, mode);
+}
+
 Evas_Event_Flags
 _edje_real_part_ignore_flags_get(Edje *ed EINA_UNUSED, Edje_Real_Part *rp)
 {

-- 




[EGIT] [core/enlightenment] master 08/15: remove client callback from luncher icon when necessary

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit b98854b17bfb5f81f78e6551721176626793bfc7
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

remove client callback from luncher icon when necessary

==20443== Invalid read of size 8
==20443==at 0x28CED526: _bar_exec_new_show (bar.c:980)
==20443==by 0x819D78D: _eo_evas_object_cb (evas_callbacks.c:184)
==20443==by 0xDFB6FED: _event_callback_call (eo_base_class.c:1496)
==20443==by 0xDFB7373: _efl_object_event_callback_legacy_call 
(eo_base_class.c:1569)
==20443==by 0xDFB743A: efl_event_callback_legacy_call 
(eo_base_class.c:1572)
==20443==by 0x81DC562: 
_efl_canvas_object_efl_object_event_callback_legacy_call 
(evas_object_main.c:993)
==20443==by 0xDFB743A: efl_event_callback_legacy_call 
(eo_base_class.c:1572)
==20443==by 0x819E1F8: evas_object_event_callback_call 
(evas_callbacks.c:404)
==20443==by 0x81E6B23: evas_object_inform_call_show 
(evas_object_inform.c:13)
==20443==by 0x81DECA2: _show (evas_object_main.c:1689)
==20443==by 0x81DF0E7: _efl_canvas_object_efl_gfx_visible_set 
(evas_object_main.c:1810)
==20443==by 0xDD670B9: efl_gfx_visible_set (efl_gfx.eo.c:21)
==20443==by 0x81DEA93: evas_object_show (evas_object_main.c:1639)
==20443==by 0x483706: _e_comp_intercept_show_helper 
(e_comp_object.c:1754)
==20443==by 0x483761: _e_comp_intercept_show (e_comp_object.c:1768)
==20443==by 0x81E7536: evas_object_intercept_call_show 
(evas_object_intercept.c:71)
==20443==by 0x81E7ED2: _evas_object_intercept_call_internal 
(evas_object_intercept.c:103)
==20443==by 0x81E88B0: _evas_object_intercept_call_evas 
(evas_object_intercept.c:236)
==20443==by 0x81DF0CA: _efl_canvas_object_efl_gfx_visible_set 
(evas_object_main.c:1807)
==20443==by 0xDD670B9: efl_gfx_visible_set (efl_gfx.eo.c:21)
==20443==by 0x81DEA93: evas_object_show (evas_object_main.c:1639)
==20443==by 0x4A6793: _e_desk_show_begin (e_desk.c:821)
==20443==by 0x4A4E39: e_desk_show (e_desk.c:312)
==20443==by 0x537C2E: _e_int_menus_clients_item_cb (e_int_menus.c:1624)
==20443==by 0x548D3F: _e_menu_active_call (e_menu.c:2056)
==20443==by 0x54ABFB: _e_menu_cb_mouse_up (e_menu.c:2789)
==20443==by 0xC636B66: _ecore_call_handler_cb (ecore_private.h:325)
==20443==by 0xC637B3F: _ecore_event_call (ecore_events.c:518)
==20443==by 0xC641158: _ecore_main_loop_iterate_internal 
(ecore_main.c:2397)
==20443==by 0xC63EC7E: ecore_main_loop_begin (ecore_main.c:1299)
==20443==by 0x43DE81: main (e_main.c:1081)
==20443==  Address 0x20 is not stack'd, malloc'd or (recently) free'd
---
 src/modules/luncher/bar.c | 33 +++--
 src/modules/luncher/luncher.h |  1 +
 2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c
index 636824641..e0b85c7c5 100644
--- a/src/modules/luncher/bar.c
+++ b/src/modules/luncher/bar.c
@@ -3,6 +3,7 @@ static Eina_List *handlers;
 static Eina_Bool _bar_icon_preview_show(void *data);
 static Eina_Bool _bar_icon_preview_hide(void *data);
 static void  _bar_icon_del(Instance *inst, Icon *ic);
+static void _bar_exec_new_show(void *data, Evas *e, Evas_Object *obj, void 
*event_data);
 
 static float
 _bar_size_calc(Instance *inst)
@@ -187,6 +188,11 @@ _bar_icon_match(Instance *inst, E_Client *ec)
   {
  ic2->execs = eina_list_remove(ic2->execs, ec->exe_inst);
  ic2->clients = eina_list_remove(ic2->clients, ec);
+ if (ic2->client_cbs)
+   {
+  ic2->client_cbs = eina_list_remove(ic2->client_cbs, ec);
+  evas_object_event_callback_del_full(ec->frame, 
EVAS_CALLBACK_SHOW, _bar_exec_new_show, ic2);
+   }
  if (!eina_list_count(ic2->execs) && 
!eina_list_count(ic2->clients))
{
   eina_hash_del(inst->icons_clients_hash, ec, ic2);
@@ -236,6 +242,8 @@ _bar_instance_watch(void *data, E_Exec_Instance *ex, 
E_Exec_Watch_Type type)
 static void
 _bar_icon_del(Instance *inst, Icon *ic)
 {
+   E_Client *ec;
+
inst->icons = eina_list_remove(inst->icons, ic);
if (ic->preview)
  _bar_icon_preview_hide(ic);
@@ -250,6 +258,8 @@ _bar_icon_del(Instance *inst, Icon *ic)
  efreet_desktop_unref(ic->desktop);
eina_list_free(ic->execs);
eina_list_free(ic->clients);
+   EINA_LIST_FREE(ic->client_cbs, ec)
+ evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_SHOW, 
_bar_exec_new_show, ic);
eina_stringshare_del(ic->icon);
eina_stringshare_del(ic->key);
if (ic->exec)
@@ -987,6 +997,7 @@ _bar_exec_new_show(void *data, Evas *e EINA_UNUSED, 
Evas_Object 

[EGIT] [core/enlightenment] master 11/15: do not trigger events/bindings on zone object events with timestamp==0

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit b0a7c98faf17dc6fd7c36d0a1f1fc787805fdd4a
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

do not trigger events/bindings on zone object events with timestamp==0

these are internal event feeds and should not trigger additional actions
---
 src/bin/e_zone.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/src/bin/e_zone.c b/src/bin/e_zone.c
index ec50fd2ca..b75bdc823 100644
--- a/src/bin/e_zone.c
+++ b/src/bin/e_zone.c
@@ -78,6 +78,7 @@ _e_zone_cb_mouse_in(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *eve
E_Zone_Edge edge;
E_Zone *zone = data;
 
+   if (!ev->timestamp) return;
edge = _e_zone_detect_edge(zone, obj);
if (edge == E_ZONE_EDGE_NONE) return;
 
@@ -101,6 +102,7 @@ _e_zone_cb_mouse_out(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *ev
E_Zone_Edge edge;
E_Zone *zone = data;
 
+   if (!ev->timestamp) return;
edge = _e_zone_detect_edge(zone, obj);
if (edge == E_ZONE_EDGE_NONE) return;
 
@@ -124,6 +126,7 @@ _e_zone_cb_mouse_down(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *e
E_Zone_Edge edge;
E_Zone *zone = data;
 
+   if (!ev->timestamp) return;
edge = _e_zone_detect_edge(zone, obj);
if (edge == E_ZONE_EDGE_NONE) return;
 
@@ -146,6 +149,7 @@ _e_zone_cb_mouse_up(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *eve
E_Zone_Edge edge;
E_Zone *zone = data;
 
+   if (!ev->timestamp) return;
edge = _e_zone_detect_edge(zone, obj);
if (edge == E_ZONE_EDGE_NONE) return;
 

-- 




[EGIT] [core/efl] master 07/14: efl_input_device: add function for determining if a device has pointer caps

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 9572e9189da786c79b1eb3c9a30fea680ece8aa5
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:07 2017 -0400

efl_input_device: add function for determining if a device has pointer caps

this is useful when attempting to manage devices

@feature
---
 src/lib/efl/interfaces/efl_common_internal.h |  1 +
 src/lib/efl/interfaces/efl_input_device.c| 32 +++-
 src/lib/efl/interfaces/efl_input_device.eo   | 11 ++
 3 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/src/lib/efl/interfaces/efl_common_internal.h 
b/src/lib/efl/interfaces/efl_common_internal.h
index 86884bf36b..0270782fd8 100644
--- a/src/lib/efl/interfaces/efl_common_internal.h
+++ b/src/lib/efl/interfaces/efl_common_internal.h
@@ -98,6 +98,7 @@ struct _Efl_Input_Device_Data
unsigned int  id;
Efl_Input_Device_Class klass;
Efl_Input_Device_Sub_Class subclass;
+   unsigned int pointer_count;
 };
 
 struct _Efl_Input_Hold_Data
diff --git a/src/lib/efl/interfaces/efl_input_device.c 
b/src/lib/efl/interfaces/efl_input_device.c
index 7689fc211a..faee0dd6e3 100644
--- a/src/lib/efl/interfaces/efl_input_device.c
+++ b/src/lib/efl/interfaces/efl_input_device.c
@@ -19,6 +19,22 @@ struct _Child_Device_Iterator
Eo*object;
 };
 
+static Eina_Bool
+_is_pointer(Efl_Input_Device_Data *pd)
+{
+   return (pd->klass == EFL_INPUT_DEVICE_CLASS_MOUSE ||
+   pd->klass == EFL_INPUT_DEVICE_CLASS_TOUCH ||
+   pd->klass == EFL_INPUT_DEVICE_CLASS_PEN ||
+   pd->klass == EFL_INPUT_DEVICE_CLASS_WAND);
+}
+
+static void
+_seat_pointers_update(Efl_Input_Device_Data *seat, Efl_Input_Device_Data *dev)
+{
+   if (seat && _is_pointer(dev))
+ seat->pointer_count++;
+}
+
 EOLIAN static Efl_Object *
 _efl_input_device_efl_object_constructor(Eo *obj, Efl_Input_Device_Data *pd)
 {
@@ -43,6 +59,8 @@ _efl_input_device_efl_object_destructor(Eo *obj, 
Efl_Input_Device_Data *pd)
  {
 Efl_Input_Device_Data *p = efl_data_scope_get(pd->parent, 
EFL_INPUT_DEVICE_CLASS);
 p->children = eina_list_remove(p->children, obj);
+if (_is_pointer(pd))
+  p->pointer_count--;
  }
efl_unref(pd->source);
 
@@ -52,7 +70,10 @@ _efl_input_device_efl_object_destructor(Eo *obj, 
Efl_Input_Device_Data *pd)
 EOLIAN static void
 _efl_input_device_device_type_set(Eo *obj EINA_UNUSED, Efl_Input_Device_Data 
*pd, Efl_Input_Device_Class klass)
 {
-   pd->klass= klass;
+   EINA_SAFETY_ON_TRUE_RETURN(pd->klass);
+   pd->klass = klass;
+   if (klass != EFL_INPUT_DEVICE_CLASS_SEAT)
+ _seat_pointers_update(efl_data_scope_get(pd->parent, 
EFL_INPUT_DEVICE_CLASS), pd);
 }
 
 EOLIAN static Efl_Input_Device_Class
@@ -163,6 +184,7 @@ _efl_input_device_parent_set(Eo *obj, Efl_Input_Device_Data 
*pd, Efl_Input_Devic
  {
 Efl_Input_Device_Data *p = efl_data_scope_get(parent, 
EFL_INPUT_DEVICE_CLASS);
 p->children = eina_list_append(p->children, obj);
+_seat_pointers_update(p, pd);
  }
 }
 
@@ -212,4 +234,12 @@ _efl_input_device_children_iterate(Eo *obj, 
Efl_Input_Device_Data *pd)
return >iterator;
 }
 
+EOLIAN static unsigned int
+_efl_input_device_has_pointer_caps(Eo *obj EINA_UNUSED, Efl_Input_Device_Data 
*pd)
+{
+   if (pd->klass == EFL_INPUT_DEVICE_CLASS_SEAT)
+ return pd->pointer_count;
+   return _is_pointer(pd);
+}
+
 #include "interfaces/efl_input_device.eo.c"
diff --git a/src/lib/efl/interfaces/efl_input_device.eo 
b/src/lib/efl/interfaces/efl_input_device.eo
index 2473164af8..6528db76ce 100644
--- a/src/lib/efl/interfaces/efl_input_device.eo
+++ b/src/lib/efl/interfaces/efl_input_device.eo
@@ -120,6 +120,17 @@ class Efl.Input.Device (Efl.Object)
  ]]
  return: own(free(iterator, 
eina_iterator_free));
   }
+  has_pointer_caps {
+ [[Determine whether a device has pointer capabilities.
+
+   Returns 1 for Mouse, Touch, Pen, Pointer, and Wand type devices.
+
+   If a seat device is passed, returns the number of pointer devices 
in the seat.
+
+   @since 1.20
+ ]]
+ return: uint;
+  }
}
implements {
   Efl.Object.constructor;

-- 




[EGIT] [core/enlightenment] master 03/15: preserve cursor state in drm output during vt switch

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 79ed10927eb435685db10d81ff3a84d00d86b1f9
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

preserve cursor state in drm output during vt switch

 #wew

ref T5483
---
 src/modules/wl_drm/e_mod_main.c | 29 +
 1 file changed, 29 insertions(+)

diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index c99baa3dd..9e082aabd 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -58,6 +58,15 @@ _e_mod_drm_cb_activate(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event
 ecore_evas_show(e_comp->ee);
 evas_damage_rectangle_add(e_comp->evas, 0, 0, e_comp->w, e_comp->h);
 ecore_event_add(E_EVENT_COMPOSITOR_ENABLE, NULL, NULL, NULL);
+ecore_evas_pointer_warp(e_comp->ee, e_comp_wl->ptr.x, 
e_comp_wl->ptr.y);
+if (e_comp->pointer->client.ec)
+  {
+ ecore_evas_object_cursor_set(e_comp->ee, 
e_comp->pointer->client.ec->frame,
+   E_LAYER_MAX - 1, e_comp->pointer->client.x, 
e_comp->pointer->client.y);
+  }
+else
+  ecore_evas_object_cursor_set(e_comp->pointer->ee, 
e_comp->pointer->o_ptr,
+E_LAYER_MAX - 1, e_comp->pointer->hot.x, e_comp->pointer->hot.y);
  }
else
  {
@@ -818,6 +827,23 @@ _pointer_motion(void *d EINA_UNUSED, int t EINA_UNUSED, 
Elput_Event_Pointer_Moti
return ECORE_CALLBACK_RENEW;
 }
 
+static void
+_drm_device_del(void *data EINA_UNUSED, const Efl_Event *event)
+{
+   Eo *seat = event->info;
+
+   if (efl_input_device_type_get(event->info) == EFL_INPUT_DEVICE_CLASS_SEAT) 
return;
+   seat = efl_input_device_seat_get(event->info);
+
+   if (seat != evas_default_device_get(e_comp->evas, 
EFL_INPUT_DEVICE_CLASS_SEAT)) return;
+   if (!efl_input_device_has_pointer_caps(event->info)) return;
+   if (efl_input_device_has_pointer_caps(seat) == 1)
+ ecore_evas_cursor_device_unset(e_comp->ee, event->info);
+}
+
+EFL_CALLBACKS_ARRAY_DEFINE(_drm_device_del_cb,
+   { EFL_CANVAS_EVENT_DEVICE_REMOVED, _drm_device_del 
});
+
 E_API void *
 e_modapi_init(E_Module *m)
 {
@@ -891,6 +917,9 @@ e_modapi_init(E_Module *m)
  ecore_event_handler_add(ELPUT_EVENT_POINTER_MOTION,
  (Ecore_Event_Handler_Cb)_pointer_motion, NULL);
 
+   efl_event_callback_array_priority_add(e_comp->evas, _drm_device_del_cb(),
+ EFL_CALLBACK_PRIORITY_BEFORE, NULL);
+
return m;
 }
 

-- 




[EGIT] [core/enlightenment] master 09/15: perform client raise before triggering move/resize BEGIN client hook

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 9f48fd5a9c96a976369775e7cc502c7013b19df2
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

perform client raise before triggering move/resize BEGIN client hook

hooks may further modify stacking, so ensure any changes are done before
that point
---
 src/bin/e_client.c | 21 +++--
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 9e1a0f1e3..c1370d7b9 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -807,6 +807,12 @@ _e_client_move_begin(E_Client *ec)
if (!_e_client_action_input_win_new()) return 0;
ec->moving = 1;
ecmove = ec;
+   if (!ec->lock_user_stacking)
+ {
+if (e_config->border_raise_on_mouse_action)
+  evas_object_raise(ec->frame);
+ }
+
_e_client_hook_call(E_CLIENT_HOOK_MOVE_BEGIN, ec);
if (!ec->moving)
  {
@@ -814,11 +820,6 @@ _e_client_move_begin(E_Client *ec)
 _e_client_action_input_win_del();
 return 0;
  }
-   if (!ec->lock_user_stacking)
- {
-if (e_config->border_raise_on_mouse_action)
-  evas_object_raise(ec->frame);
- }
return 1;
 }
 
@@ -5131,6 +5132,11 @@ e_client_resize_begin(E_Client *ec)
(ec->fullscreen) || (ec->lock_user_size))
  goto error;
if (!_e_client_action_input_win_new()) goto error;
+   if (!ec->lock_user_stacking)
+ {
+if (e_config->border_raise_on_mouse_action)
+  evas_object_raise(ec->frame);
+ }
ecresize = ec;
_e_client_hook_call(E_CLIENT_HOOK_RESIZE_BEGIN, ec);
if (!e_client_util_resizing_get(ec))
@@ -5139,11 +5145,6 @@ e_client_resize_begin(E_Client *ec)
 _e_client_action_input_win_del();
 return EINA_FALSE;
  }
-   if (!ec->lock_user_stacking)
- {
-if (e_config->border_raise_on_mouse_action)
-  evas_object_raise(ec->frame);
- }
return EINA_TRUE;
 error:
ec->resize_mode = E_POINTER_RESIZE_NONE;

-- 




[EGIT] [core/enlightenment] master 02/15: store current pointer client into pointer struct

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 58226266fdf31c507def01986496e1507e7bd684
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

store current pointer client into pointer struct
---
 src/bin/e_pointer.c | 5 -
 src/bin/e_pointer.h | 5 +
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c
index b77583bc3..5b832d730 100644
--- a/src/bin/e_pointer.c
+++ b/src/bin/e_pointer.c
@@ -790,7 +790,7 @@ e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int 
x, int y)
 if (ec)
   ec->hidden = 1;
  }
-
+   ec = NULL;
if (obj)
  {
 ec = e_comp_object_client_get(obj);
@@ -804,6 +804,9 @@ e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int 
x, int y)
 ecore_evas_cursor_unset(ptr->ee);
 ecore_evas_object_cursor_set(ptr->ee, ptr->o_ptr, E_LAYER_MAX - 1, 
ptr->hot.x, ptr->hot.y);
  }
+   ptr->client.ec = ec;
+   ptr->client.x = x;
+   ptr->client.y = y;
 }
 
 E_API void
diff --git a/src/bin/e_pointer.h b/src/bin/e_pointer.h
index 97743c93a..8dc3f7796 100644
--- a/src/bin/e_pointer.h
+++ b/src/bin/e_pointer.h
@@ -34,6 +34,11 @@ struct _E_Pointer
Evas_Object *o_hot;
Evas_Object *buffer_o_ptr;
Evas_Object *buffer_o_hot;
+   struct
+   {
+  E_Client *ec;
+  int x, y;
+   } client;
 
Ecore_Window win;
 

-- 




[EGIT] [core/enlightenment] master 06/15: use correct event struct in luncher's _bar_cb_client_remove()

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit f16df40d2b33f8806b9a21377538dea16d94fb89
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:18:20 2017 -0400

use correct event struct in luncher's _bar_cb_client_remove()
---
 src/modules/luncher/bar.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c
index 568edf2fe..b24852ca1 100644
--- a/src/modules/luncher/bar.c
+++ b/src/modules/luncher/bar.c
@@ -1281,7 +1281,7 @@ _bar_icon_add(Instance *inst, Efreet_Desktop *desktop, 
E_Client *non_desktop_cli
 }
 
 static Eina_Bool
-_bar_cb_client_remove(void *data EINA_UNUSED, int type EINA_UNUSED, 
E_Event_Client_Property *ev)
+_bar_cb_client_remove(void *data EINA_UNUSED, int type EINA_UNUSED, 
E_Event_Client *ev)
 {
Instance *inst = NULL;
Eina_List *l = NULL;

-- 




[EGIT] [core/efl] master 03/14: ecore-evas: safety -> normal null check in _ecore_evas_focus_device_set()

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 7e3c10838227bbb623f98f736f229cf4ab30086e
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:07 2017 -0400

ecore-evas: safety -> normal null check in _ecore_evas_focus_device_set()

when unsetting focus, if the specified seat doesn't exist then there is no
focus to unset
---
 src/lib/ecore_evas/ecore_evas.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index 95684597ee..ccc54b9f26 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -1987,7 +1987,9 @@ _ecore_evas_focus_device_set(Ecore_Evas *ee, 
Efl_Input_Device *seat,
 
if (!seat)
  seat = evas_default_device_get(ee->evas, EFL_INPUT_DEVICE_CLASS_SEAT);
-   EINA_SAFETY_ON_NULL_RETURN(seat);
+   if (on)
+ EINA_SAFETY_ON_NULL_RETURN(seat);
+   else if (!seat) return;
 
if (efl_input_device_type_get(seat) != EFL_INPUT_DEVICE_CLASS_SEAT)
  {

-- 




[EGIT] [core/efl] master 11/14: evas: remove null check, passthrough list in _evas_event_object_list_in_get()

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit dd42f8f29199d87a3f825b36d5f7e0f50fc01179
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:08 2017 -0400

evas: remove null check, passthrough list in 
_evas_event_object_list_in_get()

_evas_event_object_list_raw_in_get() already has a null check and uses the
last list member

no functional changes
---
 src/lib/evas/canvas/evas_events.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/lib/evas/canvas/evas_events.c 
b/src/lib/evas/canvas/evas_events.c
index b6b76c729e..0fc4850ad5 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -1263,8 +1263,7 @@ _evas_event_object_list_in_get(Evas *eo_e, Eina_List *in,
const Eina_Inlist *list, Evas_Object *stop,
int x, int y, int *no_rep, Eina_Bool source)
 {
-   if (!list) return NULL;
-   return _evas_event_object_list_raw_in_get(eo_e, in, list->last, stop, x, y,
+   return _evas_event_object_list_raw_in_get(eo_e, in, list, stop, x, y,
  no_rep, source);
 }
 

-- 




[EGIT] [core/efl] master 06/14: evas: handle focus setting with async input init

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 839e45e49b4a574d904ee2022692956a304fd7a7
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:07 2017 -0400

evas: handle focus setting with async input init

@fix
---
 src/lib/evas/canvas/evas_device.c  |  6 ++
 src/lib/evas/canvas/evas_focus.c   | 15 +--
 src/lib/evas/canvas/evas_object_main.c |  8 +++-
 src/lib/evas/include/evas_private.h|  1 +
 4 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/src/lib/evas/canvas/evas_device.c 
b/src/lib/evas/canvas/evas_device.c
index 92e21f84e0..e474540239 100644
--- a/src/lib/evas/canvas/evas_device.c
+++ b/src/lib/evas/canvas/evas_device.c
@@ -211,6 +211,12 @@ evas_device_add_full(Evas *eo_e, const char *name, const 
char *desc,
efl_event_callback_call(eo_e, EFL_CANVAS_EVENT_DEVICE_ADDED, dev);
// Keeping this event to do not break things...
evas_event_callback_call(eo_e, EVAS_CALLBACK_DEVICE_CHANGED, dev);
+   if (e->pending_default_focus_obj && (e->default_seat == dev))
+ {
+Eo *eo_obj = e->pending_default_focus_obj;
+e->pending_default_focus_obj = NULL;
+evas_object_focus_set(eo_obj, 1);
+ }
 
return dev;
 }
diff --git a/src/lib/evas/canvas/evas_focus.c b/src/lib/evas/canvas/evas_focus.c
index 293fb57b6c..30afdaa08e 100644
--- a/src/lib/evas/canvas/evas_focus.c
+++ b/src/lib/evas/canvas/evas_focus.c
@@ -132,6 +132,12 @@ _efl_canvas_object_seat_focus_del(Eo *eo_obj,
 
if (!seat) seat = _default_seat_get(eo_obj);
 
+   if ((!seat) && obj->layer)
+ {
+if (obj->layer->evas->pending_default_focus_obj == eo_obj)
+  obj->layer->evas->pending_default_focus_obj = NULL;
+ }
+
EINA_LIST_FOREACH(obj->focused_by_seats, l, dev)
  {
 if (dev != seat)
@@ -166,10 +172,15 @@ _efl_canvas_object_seat_focus_add(Eo *eo_obj,
event_id = _evas_event_counter;
if (!seat) seat = _default_seat_get(eo_obj);
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(seat, EINA_FALSE);
-   if (efl_input_device_type_get(seat) != EFL_INPUT_DEVICE_CLASS_SEAT)
+   if (seat && (efl_input_device_type_get(seat) != 
EFL_INPUT_DEVICE_CLASS_SEAT))
  return EINA_FALSE;
 
+   if (obj->layer && (!seat))
+ {
+obj->layer->evas->pending_default_focus_obj = eo_obj;
+return EINA_TRUE; //questionable return
+ }
+
if (!efl_input_seat_event_filter_get(eo_obj, seat))
  return EINA_FALSE;
 
diff --git a/src/lib/evas/canvas/evas_object_main.c 
b/src/lib/evas/canvas/evas_object_main.c
index 0f323132f1..48b4efe216 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -1029,7 +1029,13 @@ _efl_canvas_object_efl_object_destructor(Eo *eo_obj, 
Evas_Object_Protected_Data
EINA_LIST_FREE(obj->events_whitelist, dev)
  efl_event_callback_del(dev, EFL_EVENT_DEL, 
_whitelist_events_device_remove_cb, obj);
if (obj->name) evas_object_name_set(eo_obj, NULL);
-   if (!obj->layer)
+   if (obj->layer)
+ {
+if (obj->layer->evas)
+  if (obj->layer->evas->pending_default_focus_obj == eo_obj)
+obj->layer->evas->pending_default_focus_obj = NULL;
+ }
+   else
  {
 efl_manual_free_set(eo_obj, EINA_FALSE);
 obj->clean_layer = 1;
diff --git a/src/lib/evas/include/evas_private.h 
b/src/lib/evas/include/evas_private.h
index 5bacc34fd3..6189390698 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -935,6 +935,7 @@ struct _Evas_Public_Data
intin_smart_calc;
intsmart_calc_count;
 
+   Eo*pending_default_focus_obj;
Eina_Hash *focused_objects; //Key - seat; value - the focused object
Eina_List *focused_by; //Which seat has the canvas focus
void  *attach_data;

-- 




[EGIT] [core/efl] master 08/14: Revert "Edje calc: Fix textblock size calculation logic"

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 0392cd3c489ee1c69dc768b2c3e8ac01ba1854c1
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:08 2017 -0400

Revert "Edje calc: Fix textblock size calculation logic"

This reverts commit a6fff5bc1e5e30a946e435369bcbaa406dd5d5ba.
---
 data/elementary/themes/edc/elm/label.edc |  19 +-
 src/lib/edje/edje_calc.c | 305 ---
 src/lib/edje/edje_util.c |  69 +--
 src/lib/elementary/elm_label.c   |  38 ++--
 4 files changed, 102 insertions(+), 329 deletions(-)

diff --git a/data/elementary/themes/edc/elm/label.edc 
b/data/elementary/themes/edc/elm/label.edc
index 99227d8067..b1e273bc09 100644
--- a/data/elementary/themes/edc/elm/label.edc
+++ b/data/elementary/themes/edc/elm/label.edc
@@ -25,26 +25,9 @@ group { name: "elm/label/base/default";
 rel2.relative: 1.0 1.0;
 text {
style: "label_style";
-   min: 1 1;
+   min: 0 1;
 }
  }
- description { state: "horizontal_fixed" 0.0;
-inherit: "default" 0.0;
-fixed: 1 0;
-text.min: 0 1;
- }
-  }
-   }
-   programs {
-  program { name: "horizontal_expandable";
- signal: "elm,state,horizontal,expandable"; source: "elm";
- action: STATE_SET "default" 0.0;
- target: "elm.text";
-  }
-  program { name: "horizontal_fixed";
- signal: "elm,state,horizontal,fixed"; source: "elm";
- action: STATE_SET "horizontal_fixed" 0.0;
- target: "elm.text";
   }
}
 }
diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
index 47e918cdcc..7a2e6a8d60 100644
--- a/src/lib/edje/edje_calc.c
+++ b/src/lib/edje/edje_calc.c
@@ -1476,17 +1476,9 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
int *minw, int *minh,
int *maxw, int *maxh)
 {
-   int min_calc_w = 0, min_calc_h = 0;
-
if ((ep->type != EDJE_RP_TYPE_TEXT) ||
(!ep->typedata.text))
  return;
-
-   /* min_calc_* values need to save calculated minumum size
-* for maximum size calculation */
-   if (minw) min_calc_w = *minw;
-   if (minh) min_calc_h = *minh;
-
if (chosen_desc)
  {
 Evas_Coord tw, th, ins_l, ins_r, ins_t, ins_b;
@@ -1631,277 +1623,56 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
}
  if ((chosen_desc->text.min_x) || (chosen_desc->text.min_y))
{
-  evas_object_textblock_style_insets_get(ep->object, _l,
- _r, _t, 
_b);
+  int mw = 0, mh = 0;
 
   tw = th = 0;
   if (!chosen_desc->text.min_x)
 {
-   /* text.min: 0 1
-* text.max: X X */
-   int temp_h = TO_INT(params->eval.h);
-   int temp_w = TO_INT(params->eval.w);
-
-   if (min_calc_w > temp_w)
- temp_w = min_calc_w;
-   if ((!chosen_desc->text.max_x) &&
-   maxw && (*maxw > -1) && (*maxw < temp_w))
- temp_w = *maxw;
-
-   if (chosen_desc->text.max_y)
- {
-/* text.min: 0 1
- * text.max: X 1 */
-temp_h = INT_MAX / 1;
- }
-   else if (maxh && (*maxh > TO_INT(params->eval.h)))
- {
-/* text.min: 0 1
- * text.max: X 0
- * And there is a limit for height. */
-temp_h = *maxh;
- }
-
-   /* If base width for calculation is 0,
-* don't get meaningless height for multiline */
-   if (temp_w > 0)
- {
-efl_gfx_size_set(ep->object, temp_w, temp_h);
-efl_canvas_text_size_formatted_get(ep->object, 
, );
-
-tw += ins_l + ins_r;
-th += ins_t + ins_b;
- }
-   else
- {
-efl_canvas_text_size_native_get(ep->object, NULL, 
);
-
-th += ins_t + ins_b;
- }
+   efl_gfx_size_set(ep->object, TO_INT(params->eval.w), 
TO_INT(params->eval.h));
+   efl_canvas_text_size_formatted_get(ep->object, , 
);
 }
   else
+

[EGIT] [core/efl] master 05/14: ecore-ipc: don't return dead clients in ecore_ipc_server_clients_get

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit f2edb935a41765243fe72ed6570e96e7d87852d7
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:07 2017 -0400

ecore-ipc: don't return dead clients in ecore_ipc_server_clients_get

@fix

fix T5383
---
 src/lib/ecore_ipc/ecore_ipc.c | 7 ++-
 src/lib/ecore_ipc/ecore_ipc_private.h | 1 +
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_ipc/ecore_ipc.c b/src/lib/ecore_ipc/ecore_ipc.c
index 0c08bfcd5f..e9973f30a7 100644
--- a/src/lib/ecore_ipc/ecore_ipc.c
+++ b/src/lib/ecore_ipc/ecore_ipc.c
@@ -809,6 +809,8 @@ ecore_ipc_server_del(Ecore_Ipc_Server *svr)
 servers = eina_list_remove(servers, svr);
 
 if (svr->buf) free(svr->buf);
+eina_list_free(svr->dead_clients);
+eina_list_free(svr->clients);
 ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
 DBG("server %p freed", svr);
 free(svr);
@@ -1233,6 +1235,9 @@ _ecore_ipc_client_socket_del(Ecore_Ipc_Client *cl)
   efl_io_closer_close(cl->socket.socket);
 efl_unref(cl->socket.socket);
 cl->socket.socket = NULL;
+if (!cl->svr) return;
+cl->svr->clients = eina_list_remove(cl->svr->clients, cl);
+cl->svr->dead_clients = eina_list_append(cl->svr->dead_clients, cl);
  }
 }
 
@@ -1355,7 +1360,7 @@ ecore_ipc_client_del(Ecore_Ipc_Client *cl)
 svr = cl->svr;
 if (cl->socket.socket) _ecore_ipc_client_socket_del(cl);
 if (ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
-  svr->clients = eina_list_remove(svr->clients, cl);
+  svr->dead_clients = eina_list_remove(svr->dead_clients, cl);
 if (cl->buf) free(cl->buf);
 ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE);
 free(cl);
diff --git a/src/lib/ecore_ipc/ecore_ipc_private.h 
b/src/lib/ecore_ipc/ecore_ipc_private.h
index 9978b16143..72ec014e7c 100644
--- a/src/lib/ecore_ipc/ecore_ipc_private.h
+++ b/src/lib/ecore_ipc/ecore_ipc_private.h
@@ -103,6 +103,7 @@ struct _Ecore_Ipc_Server
Eo *server;
 
Eina_List*clients;
+   Eina_List*dead_clients;
void  *data;
unsigned char *buf;
intbuf_size;

-- 




[EGIT] [core/efl] master 01/14: efl: add EFL_VERSION_1_20

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 5b39bb5a3d1fc79f7efe0e978a6e2e44aeb4cb91
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:07 2017 -0400

efl: add EFL_VERSION_1_20

indicate that features from this version can be used
---
 src/bin/edje/edje_cc_parse.c | 4 +++-
 src/lib/efl/Efl.h| 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/bin/edje/edje_cc_parse.c b/src/bin/edje/edje_cc_parse.c
index f03adf5e14..3bf5e2e64a 100644
--- a/src/bin/edje/edje_cc_parse.c
+++ b/src/bin/edje/edje_cc_parse.c
@@ -25,10 +25,12 @@
 
 #define EDJE_1_18_SUPPORTED " -DEFL_VERSION_1_18=1 "
 #define EDJE_1_19_SUPPORTED " -DEFL_VERSION_1_19=1 "
+#define EDJE_1_20_SUPPORTED " -DEFL_VERSION_1_20=1 "
 
 #define EDJE_CC_EFL_VERSION_SUPPORTED \
   EDJE_1_18_SUPPORTED \
-  EDJE_1_19_SUPPORTED
+  EDJE_1_19_SUPPORTED \
+  EDJE_1_20_SUPPORTED
 
 static void  new_object(void);
 static void  new_statement(void);
diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h
index d5f154234a..01f72df8ed 100644
--- a/src/lib/efl/Efl.h
+++ b/src/lib/efl/Efl.h
@@ -35,6 +35,7 @@ extern "C" {
 
 #define EFL_VERSION_1_18 1
 #define EFL_VERSION_1_19 1
+#define EFL_VERSION_1_20 1
 
 /* Add here all the required ifdef for any @protected method */
 #ifdef EFL_EFL_BUILD

-- 




[EGIT] [core/efl] master 14/14: theme: add signal to e border theme to set NOGRAB on titlebar part

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 2ba847f4c2b258f78d56d658d117c834df1df2c8
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:08 2017 -0400

theme: add signal to e border theme to set NOGRAB on titlebar part

for compatibility reasons this can only be changed in a signal callback
in the default theme.

all themes should now use NOGRAB for parts which can be used to trigger
window_move signal bindings

ref T5552
---
 data/elementary/themes/edc/border.edc | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/data/elementary/themes/edc/border.edc 
b/data/elementary/themes/edc/border.edc
index 4fa686d094..6f14168d08 100644
--- a/data/elementary/themes/edc/border.edc
+++ b/data/elementary/themes/edc/border.edc
@@ -444,6 +444,12 @@ group { name: "e/widgets/border/default/border";
  description { rel.to: "top";
 color: 0 0 0 0;
  }
+ program {
+signal: "e,titlebar,nograb"; source: "e";
+script {
+   set_pointer_mode(PART:"e.event.titlebar", 1);
+}
+ }
   }
   part { name: "e.event.icon"; type: RECT;
  description { state: "default" 0.0;

-- 




[EGIT] [core/efl] master 02/14: ecore-evas: safety -> normal null check in ecore_evas_cursor_device_unset

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 98289815851bfcec0046bf27894268ce2f86db5a
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:07 2017 -0400

ecore-evas: safety -> normal null check in ecore_evas_cursor_device_unset

if there is already no cursor then this is not an error
---
 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 991599aca3..95684597ee 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -1936,7 +1936,7 @@ ecore_evas_cursor_device_unset(Ecore_Evas *ee, 
Efl_Input_Device *pointer)
  pointer = evas_default_device_get(ee->evas, EFL_INPUT_DEVICE_CLASS_SEAT);
if (pointer)
  cursor = eina_hash_find(ee->prop.cursors, );
-   EINA_SAFETY_ON_NULL_RETURN_VAL(cursor, NULL);
+   if (!cursor) return NULL;
obj = cursor->object;
if (ee->engine.func->fn_object_cursor_unset)
  ee->engine.func->fn_object_cursor_unset(ee);

-- 




[EGIT] [core/efl] master 09/14: evas: add some functions for determining if pointer coords are inside an object

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit f1bf1f3c77f20c5ee502d5e280b20c571cb8bee2
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:08 2017 -0400

evas: add some functions for determining if pointer coords are inside an 
object

@feature
---
 src/lib/evas/canvas/efl_canvas_object.eo | 50 
 src/lib/evas/canvas/evas_object_main.c   | 40 +
 2 files changed, 90 insertions(+)

diff --git a/src/lib/evas/canvas/efl_canvas_object.eo 
b/src/lib/evas/canvas/efl_canvas_object.eo
index 2c8b8c2b6d..a284a43e93 100644
--- a/src/lib/evas/canvas/efl_canvas_object.eo
+++ b/src/lib/evas/canvas/efl_canvas_object.eo
@@ -606,6 +606,56 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, 
Efl.Gfx.Stack, Efl.Animator,
 enable: bool; [[Enable "no-render" mode.]]
  }
   }
+  @property pointer_inside_by_device {
+ [[Returns whether the mouse pointer is logically inside the
+   object. @since 1.20]]
+ keys {
+dev: Efl.Input.Device; [[The pointer device.]]
+ }
+ get {}
+ values {
+in: bool; [[$true if the pointer is inside, $false otherwise.]]
+ }
+  }
+  @property pointer_inside {
+ get {
+[[Returns whether the default mouse pointer is logically inside the
+  object.
+
+  When this function is called it will return a value of either
+  $false or $true, depending on if event_feed_mouse_in or
+  event_feed_mouse_out have been called to feed in a mouse
+  enter event into the object.
+
+  A return value of $true indicates the mouse is logically
+  inside the object, and $false implies it is logically
+  outside the object.
+
+  If $e is not a valid object, the return value is undefined.
+]]
+return: bool @warn_unused; [[$true if the mouse pointer is inside 
the object, $false otherwise]]
+ }
+  }
+  pointer_coords_inside_get {
+ [[Returns whether the coords are logically inside the
+   object.
+
+   When this function is called it will return a value of either
+   $false or $true, depending on if the coords are inside the object's
+   current geometry.
+
+   A return value of $true indicates the position is logically
+   inside the object, and $false implies it is logically
+   outside the object.
+
+   If $e is not a valid object, the return value is undefined.
+ ]]
+ params {
+@in x: int; [[The canvas-relative x coordinate.]]
+@in y: int; [[The canvas-relative y coordinate.]]
+ }
+ return: bool @warn_unused; [[$true if the coords are inside the 
object, $false otherwise]]
+  }
}
implements {
   Efl.Object.constructor;
diff --git a/src/lib/evas/canvas/evas_object_main.c 
b/src/lib/evas/canvas/evas_object_main.c
index 48b4efe216..da13fb144f 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -2370,6 +2370,46 @@ _efl_canvas_object_precise_is_inside_get(Eo *eo_obj 
EINA_UNUSED, Evas_Object_Pro
return obj->precise_is_inside;
 }
 
+EOLIAN static Eina_Bool
+_efl_canvas_object_pointer_inside_by_device_get(Eo *eo_obj EINA_UNUSED, 
Evas_Object_Protected_Data *obj, Efl_Input_Device *dev)
+{
+   Evas_Pointer_Data *pdata;
+   Evas_Object_Pointer_Data *obj_pdata;
+
+   if (!obj->layer) return EINA_FALSE;
+   pdata = _evas_pointer_data_by_device_get(obj->layer->evas, dev);
+   if (!pdata) return EINA_FALSE;
+   obj_pdata = _evas_object_pointer_data_get(pdata, obj);
+   return obj_pdata ? obj_pdata->mouse_in : EINA_FALSE;
+}
+
+EOLIAN static Eina_Bool
+_efl_canvas_object_pointer_coords_inside_get(Eo *eo_obj EINA_UNUSED, 
Evas_Object_Protected_Data *obj, Evas_Coord x, Evas_Coord y)
+{
+   Evas_Coord_Rectangle c;
+
+   if (obj->is_smart)
+ {
+Evas_Coord_Rectangle bounding_box = { 0, 0, 0, 0 };
+
+evas_object_smart_bounding_box_update(obj);
+evas_object_smart_bounding_box_get(obj, _box, NULL);
+c = bounding_box;
+ }
+   else
+ {
+if (obj->clip.clipees) return EINA_FALSE;
+c = obj->cur->geometry;
+ }
+   return RECTS_INTERSECT(x, y, 1, 1, c.x, c.y, c.w, c.h);
+}
+
+EOLIAN static Eina_Bool
+_efl_canvas_object_pointer_inside_get(Eo *eo_obj, Evas_Object_Protected_Data 
*obj)
+{
+   return _efl_canvas_object_pointer_inside_by_device_get(eo_obj, obj, NULL);
+}
+
 static void
 _is_frame_flag_set(Evas_Object_Protected_Data *obj, Eina_Bool is_frame)
 {

-- 




[EGIT] [core/efl] master 10/14: evas: split _evas_event_object_list_raw_in_get() into two functions

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 9b9313882c879b7f5ba5af995bc4d5714c002ffb
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:08 2017 -0400

evas: split _evas_event_object_list_raw_in_get() into two functions

slightly outdent code and prepare for pending features

no functional changes
---
 src/lib/evas/canvas/evas_events.c | 437 --
 1 file changed, 226 insertions(+), 211 deletions(-)

diff --git a/src/lib/evas/canvas/evas_events.c 
b/src/lib/evas/canvas/evas_events.c
index 94960f0bc9..b6b76c729e 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -99,263 +99,278 @@ clip_calc(Evas_Object_Protected_Data *obj, 
Evas_Coord_Rectangle *c)
 }
 
 static Eina_List *
-_evas_event_object_list_raw_in_get(Evas *eo_e, Eina_List *in,
-   const Eina_Inlist *list, Evas_Object *stop,
-   int x, int y, int *no_rep, Eina_Bool source)
+_evas_event_object_list_raw_in_get_single(Evas *eo_e, 
Evas_Object_Protected_Data *obj, Eina_List *in, Evas_Object *stop,
+   int x, int y, int *no_rep, Eina_Bool source
+#ifdef DDD_DO
+   , int *spaces
+#endif
+   )
 {
-   Evas_Object *eo_obj;
-   Evas_Object_Protected_Data *obj = NULL;
Evas_Coord_Rectangle c;
int inside;
-
-#ifdef DDD_DO
-   static int spaces = 0;
-   int i;
-#endif
-
-   if (!list) return in;
+   Evas_Object *eo_obj = obj->object;
+   if (eo_obj == stop)
+ {
+*no_rep = 1;
 #ifdef DDD_DO
-   spaces++;
+(*spaces)--;
+DDD("* NO REP - STOP *\n");
 #endif
-   for (obj = _EINA_INLIST_CONTAINER(obj, eina_inlist_last(list));
-obj;
-obj = _EINA_INLIST_CONTAINER(obj, EINA_INLIST_GET(obj)->prev))
+return in;
+ }
+   if (!obj->cur->visible) return in;
+   // XXX: this below DYNAMICALLY calculates the current clip rect
+   // by walking clippers to each parent clipper until there are
+   // no more of them. this is a necessary hack because cache.clip
+   // cooreds are broken. somewhere along the way in the past few years
+   // someone has forgotten to flag them as dirty and update them
+   // so a clicp recalce caqn work... somewhere. maybe a prexy or map fix
+   // or an optimization. finding this is really hard, so i'm going
+   // for plan b and doing this on the fly. it's only for event or
+   // callback handling so its a small percentage of the time, but
+   // it's better that we get this right
+
+   if (EINA_UNLIKELY((!!obj->map) && (obj->map->cur.map)
+ && (obj->map->cur.usemap)))
+ c = obj->map->cur.map->normal_geometry;
+   else
  {
-eo_obj = obj->object;
-if (eo_obj == stop)
+if (obj->is_smart)
+  {
+ Evas_Coord_Rectangle bounding_box = { 0, 0, 0, 0 };
+
+ evas_object_smart_bounding_box_update(obj);
+ evas_object_smart_bounding_box_get(obj, _box, NULL);
+ c = bounding_box;
+  }
+else
   {
- *no_rep = 1;
+ if (obj->clip.clipees) return in;
+ c = obj->cur->geometry;
+  }
+ }
+   clip_calc(obj->cur->clipper, );
+   // only worry about objects that intersect INCLUDING clippint
+   if ((!RECTS_INTERSECT(x, y, 1, 1, c.x, c.y, c.w, c.h)))
+ {
 #ifdef DDD_DO
- spaces--;
- DDD("* NO REP - STOP *\n");
-#endif
- return in;
+if (obj->is_smart)
+  {
+ Evas_Coord_Rectangle bounding_box = { 0, 0, 0, 0 };
+
+ evas_object_smart_bounding_box_get(obj, _box, NULL);
+ DDD("___  %p g[%6i %6i %6ix%6i] c[%6i %6i %6ix%6i] b[%6i %6i 
%6ix%6i] %s\n",
+ obj->object,
+ obj->cur->geometry.x, obj->cur->geometry.y,
+ obj->cur->geometry.w, obj->cur->geometry.h,
+ obj->cur->cache.clip.x, obj->cur->cache.clip.y,
+ obj->cur->cache.clip.w, obj->cur->cache.clip.h,
+ bounding_box.x, bounding_box.y,
+ bounding_box.w, bounding_box.h,
+ obj->type);
   }
-if (!obj->cur->visible) continue;
-// XXX: this below DYNAMICALLY calculates the current clip rect
-// by walking clippers to each parent clipper until there are
-// no more of them. this is a necessary hack because cache.clip
-// cooreds are broken. somewhere along the way in the past few years
-// someone has forgotten to flag them as dirty and update them
-// so a clicp recalce caqn work... somewhere. maybe a prexy or map fix
-// or an optimization. finding this is really hard, so i'm going
-// for plan b and doing this on the 

[EGIT] [core/efl] master 12/14: evas: add new event_grabber smart-ish object

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit 7fafbdee28e2255b67b84995f10383073018bb43
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:08 2017 -0400

evas: add new event_grabber smart-ish object

adding an "event rect" is a common use case for rectangles, but I needed
a smarter event rect so I sent one off to school and it came back like this.

an event_grabber is a smart object which functions like a normal event rect
which has color(0,0,0,0), but with an important difference: it can have 
smart
members. event propagation works differently for an event_grabber:

normal:
event -> layer -> smart(obj1,obj2,obj3) ->(?) other objects
in this case, obj1,obj2,obj3 are all "inside" the smart object and their 
stacking
will always be considered as being inside the smart object. rendering is 
also
tied to the smart object in this case, as is clipping.
an event which reaches a smart object will be sent to the objects inside,
and then may continue through the smart object if there are no objects which
block repeating.

event_grabber:
event -> layer -> event_grabber -> obj1,obj2,obj3 -> STOP
in this case, obj1,obj2,obj3 are unmodified after being added to the 
event_grabber
and can be stacked, rendered, and clipped completely independently of the
event_grabber.
the event_grabber is considered an "event_parent" for this case. member 
objects
are not "inside" the event_grabber, and they are unable to receive events on
their own. instead, the event_grabber, which must be stacked above all its
members, receives events and propagates them top->down through its member 
objects.
if none of the member objects block the repeat of an event then the event 
will
still be blocked from further propagation past the event_grabber.

object lifetimes are independent of the event_grabber; deleting the 
event_grabber
has no effect on its members.

@feature
---
 src/Makefile_Evas.am   |   2 +
 src/lib/evas/Evas_Eo.h |   3 +
 src/lib/evas/Evas_Legacy.h |  26 ++
 .../evas/canvas/efl_canvas_object_event_grabber.c  | 350 +
 .../evas/canvas/efl_canvas_object_event_grabber.eo |  38 +++
 src/lib/evas/canvas/evas_callbacks.c   |  10 +-
 src/lib/evas/canvas/evas_events.c  | 110 +--
 src/lib/evas/include/evas_private.h|  10 +
 8 files changed, 524 insertions(+), 25 deletions(-)

diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am
index baa767a26e..41c44e702e 100644
--- a/src/Makefile_Evas.am
+++ b/src/Makefile_Evas.am
@@ -3,6 +3,7 @@
 
 evas_eolian_pub_files = \
lib/evas/canvas/efl_canvas_object.eo \
+   lib/evas/canvas/efl_canvas_object_event_grabber.eo \
lib/evas/canvas/efl_canvas_polygon.eo \
lib/evas/canvas/efl_canvas_rectangle.eo \
lib/evas/canvas/efl_canvas_text.eo \
@@ -199,6 +200,7 @@ lib/evas/canvas/evas_map.h \
 lib/evas/canvas/evas_gl.c \
 lib/evas/canvas/evas_out.c \
 lib/evas/canvas/efl_canvas_image.c \
+lib/evas/canvas/efl_canvas_object_event_grabber.c \
 lib/evas/canvas/efl_canvas_proxy.c \
 lib/evas/canvas/efl_canvas_snapshot.c \
 lib/evas/canvas/efl_canvas_scene3d.c \
diff --git a/src/lib/evas/Evas_Eo.h b/src/lib/evas/Evas_Eo.h
index 38d1e3a351..858104228e 100644
--- a/src/lib/evas/Evas_Eo.h
+++ b/src/lib/evas/Evas_Eo.h
@@ -66,6 +66,9 @@
 #endif /* EFL_EO_API_SUPPORT */
 
 #if defined(EFL_BETA_API_SUPPORT) && defined(EFL_EO_API_SUPPORT)
+
+#include "canvas/efl_canvas_object_event_grabber.eo.h"
+
  /**
  * @defgroup Evas_3D Evas 3D Extensions
  *
diff --git a/src/lib/evas/Evas_Legacy.h b/src/lib/evas/Evas_Legacy.h
index a98aae4441..ac6c429ce4 100644
--- a/src/lib/evas/Evas_Legacy.h
+++ b/src/lib/evas/Evas_Legacy.h
@@ -7666,3 +7666,29 @@ EAPI void 
evas_object_text_filter_program_set(Evas_Object *obj, const char *code
  * @since 1.18
  */
 EAPI void evas_object_text_filter_source_set(Evas_Object *obj, const char 
*name, Evas_Object *source) EINA_DEPRECATED;
+
+#ifdef EFL_BETA_API_SUPPORT
+/**
+ * Creates a new smart rectangle object on the given Evas @p e canvas.
+ *
+ * @param e The given canvas.
+ * @return The created object handle.
+ *
+ * This provides a smart version of the typical "event rectangle",
+ * which allows objects to set this as their parent and route events
+ * to a group of objects. Events will not propagate to non-member objects
+ * below this object.
+ *
+ * Adding members is done just like a normal smart object, using
+ * efl_canvas_group_member_add (Eo API) or evas_object_smart_member_add 
(legacy).
+ *
+ * Child objects are not modified in any way, unlike other types of smart 
objects.
+ *
+ * It is a user error for any child objects to be stacked 

[EGIT] [core/efl] master 04/14: ecore-evas: make focus-setting work with async device init

2017-06-09 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch master.

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

commit a777fcb679833727fedbbbdc96826f947bb10ed9
Author: Mike Blumenkrantz 
Date:   Fri Jun 9 20:16:07 2017 -0400

ecore-evas: make focus-setting work with async device init

@fix
---
 src/lib/ecore_evas/ecore_evas.c | 13 +
 src/lib/ecore_evas/ecore_evas_private.h |  1 +
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index ccc54b9f26..e5eae6d0b9 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -382,6 +382,11 @@ _ecore_evas_dev_added_or_removed(void *data, const 
Efl_Event *event)
  {
 if (_is_pointer(event->info))
   _ecore_evas_cursor_add(ee, event->info);
+else if (event->info == evas_default_device_get(ee->evas, 
EFL_INPUT_DEVICE_CLASS_SEAT))
+  {
+ if (ee->prop.focused)
+   _ecore_evas_focus_device_set(ee, event->info, 1);
+  }
  }
else
  {
@@ -1987,15 +1992,15 @@ _ecore_evas_focus_device_set(Ecore_Evas *ee, 
Efl_Input_Device *seat,
 
if (!seat)
  seat = evas_default_device_get(ee->evas, EFL_INPUT_DEVICE_CLASS_SEAT);
-   if (on)
- EINA_SAFETY_ON_NULL_RETURN(seat);
-   else if (!seat) return;
+   if ((!on) && (!seat)) return;
 
-   if (efl_input_device_type_get(seat) != EFL_INPUT_DEVICE_CLASS_SEAT)
+   if (seat && (efl_input_device_type_get(seat) != 
EFL_INPUT_DEVICE_CLASS_SEAT))
  {
 ERR("The Input device must be an seat");
 return;
  }
+   ee->prop.focused = ee->prop.focused_by || on;
+   if (!seat) return;
 
present = ecore_evas_focus_device_get(ee, seat);
if (on)
diff --git a/src/lib/ecore_evas/ecore_evas_private.h 
b/src/lib/ecore_evas/ecore_evas_private.h
index e905209bf4..08fed6f9dd 100644
--- a/src/lib/ecore_evas/ecore_evas_private.h
+++ b/src/lib/ecore_evas/ecore_evas_private.h
@@ -289,6 +289,7 @@ struct _Ecore_Evas
   Eina_Bool   modal: 1;
   Eina_Bool   demand_attention : 1;
   Eina_Bool   focus_skip   : 1;
+  Eina_Bool   focused   : 1;
   } prop;
 
struct {

-- 




[EGIT] [core/enlightenment] master 01/01: Luncher: Allow the size of previews to be configurable.

2017-06-09 Thread Stephen 'Okra' Houston
okra pushed a commit to branch master.

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

commit 16c05faabdc1c54bef2e43b5ac0d5f295f3f9bf7
Author: Stephen 'Okra' Houston 
Date:   Fri Jun 9 14:21:12 2017 -0500

Luncher: Allow the size of previews to be configurable.
---
 src/modules/luncher/bar.c | 20 +---
 src/modules/luncher/config.c  | 40 +++-
 src/modules/luncher/grid.c|  3 +++
 src/modules/luncher/luncher.h |  1 +
 src/modules/luncher/mod.c |  4 +++-
 5 files changed, 63 insertions(+), 5 deletions(-)

diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c
index 59bedacdc..86efd1872 100644
--- a/src/modules/luncher/bar.c
+++ b/src/modules/luncher/bar.c
@@ -602,7 +602,7 @@ _bar_icon_mouse_down(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_UNUS
 
 popup = elm_ctxpopup_add(e_comp->elm);
 elm_object_style_set(popup, "noblock");
-evas_object_smart_callback_add(popup, "dismissed", 
_bar_popup_dismissed, NULL);
+evas_object_smart_callback_add(popup, "dismissed", 
_bar_popup_dismissed, ic);
 evas_object_size_hint_min_set(popup, ic->inst->size, ic->inst->size);
 
 box = elm_box_add(popup);
@@ -811,6 +811,7 @@ static void
 _bar_icon_preview_client_add(Icon *ic, E_Client *ec)
 {
Evas_Object *layout, *label, *img;
+   Edje_Message_Int_Set *msg;
 
layout = elm_layout_add(ic->preview_box);
evas_object_data_set(layout, "icon", ic);
@@ -824,6 +825,11 @@ _bar_icon_preview_client_add(Icon *ic, E_Client *ec)
elm_box_pack_end(ic->preview_box, layout);
evas_object_show(layout);
 
+   msg = alloca(sizeof(Edje_Message_Int_Set) + (sizeof(int)));
+   msg->count = 1;
+   msg->val[0] = ic->inst->cfg->preview_size;
+   edje_object_message_send(elm_layout_edje_get(layout), EDJE_MESSAGE_INT_SET, 
1, msg);
+
label = elm_label_add(layout);
elm_object_style_set(label, "luncher_preview");
elm_label_ellipsis_set(label, EINA_TRUE);
@@ -900,12 +906,15 @@ _bar_icon_preview_show(void *data)
  {
 case E_GADGET_SITE_ORIENT_HORIZONTAL:
   elm_box_horizontal_set(ic->preview_box, EINA_TRUE);
-  break;
+  elm_box_padding_set(ic->preview_box, 2, 0);
+ break;
 case E_GADGET_SITE_ORIENT_VERTICAL:
   elm_box_horizontal_set(ic->preview_box, EINA_FALSE);
-  break;
+  elm_box_padding_set(ic->preview_box, 0, 2);
+ break;
 default:
   elm_box_horizontal_set(ic->preview_box, EINA_TRUE);
+  elm_box_padding_set(ic->preview_box, 2, 0);
  }
EINA_LIST_FOREACH(ic->execs, l, ex)
  {
@@ -2030,6 +2039,7 @@ _conf_item_get(int *id)
  ci->id = eina_list_count(luncher_config->items)+1;
else
  ci->id = -1;
+   ci->preview_size = 64;
ci->dir = eina_stringshare_add("default");
ci->style = eina_stringshare_add("default");
ci->type = E_LUNCHER_MODULE_FULL;
@@ -2132,6 +2142,10 @@ bar_create(Evas_Object *parent, int *id, 
E_Gadget_Site_Orient orient EINA_UNUSED
inst->main_del = EINA_FALSE;
inst->icons_desktop_hash = eina_hash_string_superfast_new(NULL);
inst->icons_clients_hash = eina_hash_pointer_new(NULL);
+
+   if (!inst->cfg->preview_size)
+ inst->cfg->preview_size = 64;
+
inst->o_main = elm_layout_add(parent);
e_theme_edje_object_set(inst->o_main, "e/gadget/luncher/bar",
"e/gadget/luncher/bar");
diff --git a/src/modules/luncher/config.c b/src/modules/luncher/config.c
index 6664bad69..318ee289a 100644
--- a/src/modules/luncher/config.c
+++ b/src/modules/luncher/config.c
@@ -315,11 +315,22 @@ _icon_theme_file_set(Evas_Object *img, const char *icon)
elm_image_file_set(img, path, k);
 }
 
+static void
+_update_preview_size(void *data, Evas_Object *obj, void *event_info 
EINA_UNUSED)
+{
+   Instance *inst = data;
+   int value = elm_slider_value_get(obj);
+
+   inst->cfg->preview_size = value;
+   e_config_save_queue();
+}
+
 EINTERN Evas_Object *
 config_luncher(E_Zone *zone, Instance *inst, Eina_Bool bar)
 {
Evas_Object *popup, *tb, *lbl, *fr, *box, *list, *mlist;
Evas_Object *butbox, *sep, *hbox, *img, *but, *o, *group;
+   Evas_Object *slider;
Elm_Object_Item *it;
 
luncher_config->bar = bar;
@@ -374,7 +385,7 @@ config_luncher(E_Zone *zone, Instance *inst, Eina_Bool bar)
 
lbl = elm_label_add(box);
elm_object_text_set(lbl, _("Luncher Type:"));
-   E_ALIGN(lbl, 0.0, 0.0);
+   E_ALIGN(lbl, 0.5, 0.5);
E_WEIGHT(lbl, EVAS_HINT_EXPAND, 0);
elm_box_pack_end(box, lbl);
evas_object_show(lbl);
@@ -424,6 +435,33 @@ config_luncher(E_Zone *zone, Instance *inst, Eina_Bool bar)
   elm_radio_value_set(group, 0);
  }
 
+   o = elm_separator_add(box);
+   elm_separator_horizontal_set(o, EINA_TRUE);
+   E_EXPAND(o);
+   E_FILL(o);
+   elm_box_pack_end(box, o);
+   evas_object_show(o);
+
+   lbl = elm_label_add(box);
+   

[EGIT] [core/efl] master 01/01: Luncher theme: Allow preview size to be configurable.

2017-06-09 Thread Stephen 'Okra' Houston
okra pushed a commit to branch master.

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

commit f7d5b0dbe8a0be86b2832ebb44ce83ab59e0c246
Author: Stephen 'Okra' Houston 
Date:   Fri Jun 9 14:20:29 2017 -0500

Luncher theme: Allow preview size to be configurable.
---
 data/elementary/themes/edc/luncher.edc | 16 ++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/data/elementary/themes/edc/luncher.edc 
b/data/elementary/themes/edc/luncher.edc
index 2ad3352d71..cbc35c0039 100644
--- a/data/elementary/themes/edc/luncher.edc
+++ b/data/elementary/themes/edc/luncher.edc
@@ -456,6 +456,18 @@ group { name: "e/gadget/luncher/icon";
 }
 
 group { name: "e/gadget/luncher/preview"; 
+   script {
+  public message(Msg_Type:type, id, ...) {
+ if ((type == MSG_INT_SET) && (id == 1)) {
+new size = getarg(2);
+
+custom_state(PART:"icon", "default", 0.0);
+set_state_val(PART:"icon", STATE_MIN, size, size);
+set_state_val(PART:"icon", STATE_MAX, size, size);
+set_state(PART:"icon", "custom", 0.0);
+ }
+  }
+   }
parts {
   part { name: "base"; type: RECT;
  description { state: "default";
@@ -559,8 +571,8 @@ group { name: "e/gadget/luncher/preview";
  signal: "e,state,icon,preview"; source: "e";
  action: STATE_SET "default" 0.0;
  target: "border";
- target: "e.swallow.title"; 
- target: "icon";
+ target: "e.swallow.title";
+ target: "icon"; 
   }
}
 }

-- 




[EGIT] [core/efl] master 01/01: static_libs/libdrm: Update exynos header files

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 3ec0233a28fd05a06daecffb693f32ffc5bcfb78
Author: Chris Michael 
Date:   Fri Jun 9 14:52:41 2017 -0400

static_libs/libdrm: Update exynos header files

Signed-off-by: Chris Michael 
---
 src/static_libs/libdrm/exynos_drmif.h | 8 
 1 file changed, 8 insertions(+)

diff --git a/src/static_libs/libdrm/exynos_drmif.h 
b/src/static_libs/libdrm/exynos_drmif.h
index 626e39985a..154439bb8d 100644
--- a/src/static_libs/libdrm/exynos_drmif.h
+++ b/src/static_libs/libdrm/exynos_drmif.h
@@ -31,6 +31,10 @@
 #include 
 #include "exynos_drm.h"
 
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
 struct exynos_device {
int fd;
 };
@@ -109,4 +113,8 @@ int exynos_handle_event(struct exynos_device *dev,
struct exynos_event_context *ctx);
 
 
+#if defined(__cplusplus)
+}
+#endif
+
 #endif /* EXYNOS_DRMIF_H_ */

-- 




[EGIT] [core/efl] master 01/01: elput: Document how keyboard events are processed

2017-06-09 Thread Bryce Harrington
discomfitor pushed a commit to branch master.

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

commit 6a5695b465fe7496e0ee10d9a473053d76180c54
Author: Bryce Harrington 
Date:   Fri Jun 9 14:35:51 2017 -0400

elput: Document how keyboard events are processed

Summary:
Add some light function docs and code comments to explain the steps
followed in processing hardware events for keyboard hits into actual
printable characters.  While this is internal functionality, the process
is important and involves a couple external dependencies (libinput and
libxkbcommon) so documenting this flow may help future developers avoid
introducing bugs.

Signed-off-by: Bryce Harrington 

Reviewers: zmike

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4953
---
 src/lib/elput/elput_evdev.c | 51 +
 1 file changed, 51 insertions(+)

diff --git a/src/lib/elput/elput_evdev.c b/src/lib/elput/elput_evdev.c
index 0a5c018dc6..4364d48c75 100644
--- a/src/lib/elput/elput_evdev.c
+++ b/src/lib/elput/elput_evdev.c
@@ -162,6 +162,15 @@ _keyboard_info_destroy(Elput_Keyboard_Info *info)
free(info);
 }
 
+/**
+ * @brief Creates the XKB context and keymap.
+ *
+ * @param kbd The keyboard config to be set up for XKB.
+ * @return EINA_TRUE if build successful, EINA_FALSE otherwise.
+ *
+ * Sets default settings for the keyboard if not set by the system.
+ * Assumes evdev rules, with a pc105 model keyboard and US key layout.
+ */
 static Eina_Bool
 _keyboard_global_build(Elput_Keyboard *kbd)
 {
@@ -220,6 +229,10 @@ _keyboard_compose_init(Elput_Keyboard *kbd)
  kbd->compose_state = NULL;
 }
 
+/**
+ * Create a new keyboard object for the seat, initialized
+ * to the given keymap.
+ */
 static Eina_Bool
 _keyboard_init(Elput_Seat *seat, struct xkb_keymap *keymap)
 {
@@ -298,6 +311,12 @@ _event_free(void *dev, void *ev)
free(ev);
 }
 
+/**
+ * Creates an event key object and generates a corresponding event.
+ *
+ * An ECORE_EVENT_KEY_DOWN event is generated on state
+ * LIBINPUT_KEY_STATE_PRESSED, or ECORE_EVENT_KEY_DOWN otherwise.
+ */
 static void
 _keyboard_key_send(Elput_Device *dev, enum libinput_key_state state, const 
char *keyname, const char *key, const char *compose, unsigned int code, 
unsigned int timestamp)
 {
@@ -603,6 +622,9 @@ process_key_press(xkb_keysym_t sym, Elput_Keyboard *kbd)
return sym;
 }
 
+/**
+ * Retrieve the string name ('q', 'bracketleft', etc.) for a given key symbol.
+ */
 static void
 _elput_symbol_rep_find(xkb_keysym_t keysym, char *buffer, int size, unsigned 
int code)
 {
@@ -622,6 +644,17 @@ _elput_symbol_rep_find(xkb_keysym_t keysym, char *buffer, 
int size, unsigned int
 snprintf(buffer, size, "Keycode-%u", code);
 }
 
+/**
+ * Handle keyboard events emitted by libinput.
+ *
+ * Processes a single key pressed / released event from libinput.  The
+ * key code will be remapped to another code if one has been registered
+ * (see elput_input_key_remap_enable()), and then XKB notified of the
+ * keyboard status change.  XKB translates the key code into the
+ * appropriate symbol for the current keyboard layout.  Compose
+ * translation is performed, if appropriate.  An up or down event is
+ * then generated for the processed key via _keyboard_key_send().
+ */
 static void
 _keyboard_key(struct libinput_device *idevice, struct libinput_event_keyboard 
*event)
 {
@@ -642,6 +675,7 @@ _keyboard_key(struct libinput_device *idevice, struct 
libinput_event_keyboard *e
kbd = _evdev_keyboard_get(dev->seat);
if (!kbd) return;
 
+   /* Retrieve details about the event from libinput */
state = libinput_event_keyboard_get_key_state(event);
kbd->key_count = count = libinput_event_keyboard_get_seat_key_count(event);
 
@@ -650,16 +684,24 @@ _keyboard_key(struct libinput_device *idevice, struct 
libinput_event_keyboard *e
((state == LIBINPUT_KEY_STATE_RELEASED) && (count != 0)))
  return;
 
+   /* Retrieve the code and remap it if a remap for it has been registered */
code = libinput_event_keyboard_get_key(event);
code = _keyboard_remapped_key_get(dev, code) + 8;
 
timestamp = libinput_event_keyboard_get_time(event);
 
+   /* Update the XKB keyboard state for the key that was pressed or released */
if (state == LIBINPUT_KEY_STATE_PRESSED)
  xkb_state_update_key(kbd->state, code, XKB_KEY_DOWN);
else
  xkb_state_update_key(kbd->state, code, XKB_KEY_UP);
 
+   /* Apply the current keyboard state to translate the code for the key
+* that was struck into its effective symbol (after applying
+* modifiers like CAPSLOCK and so on).  We also use the maskless
+* keyboard state to lookup the underlying symbol name (i.e. without
+* applying modifiers).
+*/
nsyms = xkb_key_get_syms(kbd->state, code, );
if 

[EGIT] [core/efl] master 02/03: ecore-drm2: Remove check for drmModeAtomicCommit

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 11fd8259ba5aa8835ce610d7de8d695168473dac
Author: Chris Michael 
Date:   Fri Jun 9 14:20:00 2017 -0400

ecore-drm2: Remove check for drmModeAtomicCommit

This check for drmModeAtomicCommit is no longer necessary as we have
moved to using static_libs/libdrm during compile time.

Signed-off-by: Chris Michael 
---
 configure.ac | 2 --
 1 file changed, 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index a6ed99b321..966d900d2f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3859,8 +3859,6 @@ EFL_DEPEND_PKG([ECORE_DRM2], [DRM], [gbm])
 EFL_ADD_LIBS([ECORE_DRM2], [-lm])
 EFL_ADD_LIBS([ECORE_DRM2], [-ldl])
 
-AC_CHECK_LIB(drm, drmModeAtomicCommit, AC_DEFINE(HAVE_ATOMIC_DRM, [], [Atomic 
modeset supported]))
-
 EFL_EVAL_PKGS([ECORE_DRM2])
 
 ### Checks for header files

-- 




[EGIT] [core/efl] master 01/03: ecore-drm2: Remove #ifdef HAVE_ATOMIC_DRM

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit bbd18510d690cfc02c20e36850a0aea75fd4e4a0
Author: Chris Michael 
Date:   Fri Jun 9 14:20:05 2017 -0400

ecore-drm2: Remove #ifdef HAVE_ATOMIC_DRM

As we now use static_libs/libdrm for compiling ecore-drm2, we can
remove the atomic #ifdefs as we can run-time check this now.

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm2/ecore_drm2.c |  4 ---
 src/lib/ecore_drm2/ecore_drm2_device.c  | 10 ++
 src/lib/ecore_drm2/ecore_drm2_fb.c  | 55 +
 src/lib/ecore_drm2/ecore_drm2_outputs.c | 16 --
 src/lib/ecore_drm2/ecore_drm2_private.h |  4 ---
 5 files changed, 32 insertions(+), 57 deletions(-)

diff --git a/src/lib/ecore_drm2/ecore_drm2.c b/src/lib/ecore_drm2/ecore_drm2.c
index 48d2d2ffc7..a43b11366a 100644
--- a/src/lib/ecore_drm2/ecore_drm2.c
+++ b/src/lib/ecore_drm2/ecore_drm2.c
@@ -17,14 +17,12 @@ int (*sym_drmIoctl)(int fd, unsigned long request, void 
*arg) = NULL;
 void *(*sym_drmModeObjectGetProperties)(int fd, uint32_t object_id, uint32_t 
object_type) = NULL;
 void (*sym_drmModeFreeObjectProperties)(drmModeObjectPropertiesPtr ptr) = NULL;
 int (*sym_drmModeCreatePropertyBlob)(int fd, const void *data, size_t size, 
uint32_t *id) = NULL;
-# ifdef HAVE_ATOMIC_DRM
 void *(*sym_drmModeAtomicAlloc)(void) = NULL;
 void (*sym_drmModeAtomicFree)(drmModeAtomicReqPtr req) = NULL;
 int (*sym_drmModeAtomicAddProperty)(drmModeAtomicReqPtr req, uint32_t 
object_id, uint32_t property_id, uint64_t value) = NULL;
 int (*sym_drmModeAtomicCommit)(int fd, drmModeAtomicReqPtr req, uint32_t 
flags, void *user_data) = NULL;
 void (*sym_drmModeAtomicSetCursor)(drmModeAtomicReqPtr req, int cursor) = NULL;
 int (*sym_drmModeAtomicMerge)(drmModeAtomicReqPtr base, drmModeAtomicReqPtr 
augment);
-# endif
 void *(*sym_drmModeGetEncoder)(int fd, uint32_t encoder_id) = NULL;
 void (*sym_drmModeFreeEncoder)(drmModeEncoderPtr ptr) = NULL;
 void *(*sym_drmModeGetCrtc)(int fd, uint32_t crtcId) = NULL;
@@ -96,14 +94,12 @@ _ecore_drm2_link(void)
 SYM(drm_lib, drmModeObjectGetProperties);
 SYM(drm_lib, drmModeFreeObjectProperties);
 SYM(drm_lib, drmModeCreatePropertyBlob);
-#ifdef HAVE_ATOMIC_DRM
 SYM(drm_lib, drmModeAtomicAlloc);
 SYM(drm_lib, drmModeAtomicFree);
 SYM(drm_lib, drmModeAtomicAddProperty);
 SYM(drm_lib, drmModeAtomicCommit);
 SYM(drm_lib, drmModeAtomicSetCursor);
 SYM(drm_lib, drmModeAtomicMerge);
-#endif
 SYM(drm_lib, drmModeGetEncoder);
 SYM(drm_lib, drmModeFreeEncoder);
 SYM(drm_lib, drmModeGetCrtc);
diff --git a/src/lib/ecore_drm2/ecore_drm2_device.c 
b/src/lib/ecore_drm2/ecore_drm2_device.c
index 9cc8c37046..bc3eca0d0d 100644
--- a/src/lib/ecore_drm2/ecore_drm2_device.c
+++ b/src/lib/ecore_drm2/ecore_drm2_device.c
@@ -4,9 +4,7 @@
 # define DRM_CAP_DUMB_PREFER_SHADOW 0x4
 #endif
 
-#ifdef HAVE_ATOMIC_DRM
-# include 
-#endif
+#include 
 
 Eina_Bool _ecore_drm2_use_atomic = EINA_TRUE;
 
@@ -143,7 +141,6 @@ out:
return ret;
 }
 
-#ifdef HAVE_ATOMIC_DRM
 # if 0
 static Eina_Bool
 _drm2_atomic_usable(int fd)
@@ -187,7 +184,6 @@ _drm2_atomic_usable(int fd)
return ret;
 }
 # endif
-#endif
 
 static void
 _drm2_atomic_state_crtc_fill(Ecore_Drm2_Crtc_State *cstate, int fd)
@@ -614,15 +610,15 @@ ecore_drm2_device_open(Ecore_Drm2_Device *device)
DBG("Device Path: %s", device->path);
DBG("Device Fd: %d", device->fd);
 
-#ifdef HAVE_ATOMIC_DRM
 # if 0
/* check that this system can do atomic */
_ecore_drm2_use_atomic = _drm2_atomic_usable(device->fd);
 # endif
+
if (getenv("ECORE_DRM2_ATOMIC_DISABLE"))
  _ecore_drm2_use_atomic = EINA_FALSE;
+
if (_ecore_drm2_use_atomic)
-#endif
  {
 if (sym_drmSetClientCap(device->fd,
 DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1) < 0)
diff --git a/src/lib/ecore_drm2/ecore_drm2_fb.c 
b/src/lib/ecore_drm2/ecore_drm2_fb.c
index c6683f4d3d..56b397ece8 100644
--- a/src/lib/ecore_drm2/ecore_drm2_fb.c
+++ b/src/lib/ecore_drm2/ecore_drm2_fb.c
@@ -248,11 +248,12 @@ _ecore_drm2_fb_buffer_release(Ecore_Drm2_Output *output, 
Ecore_Drm2_Output_State
if (output->release_cb) output->release_cb(output->release_data, s->fb);
_ecore_drm2_fb_deref(s->fb);
s->fb = NULL;
-#ifdef HAVE_ATOMIC_DRM
-   if (s->atomic_req)
- sym_drmModeAtomicFree(s->atomic_req);
-   s->atomic_req = NULL;
-#endif
+   if (_ecore_drm2_use_atomic)
+ {
+if (s->atomic_req)
+  sym_drmModeAtomicFree(s->atomic_req);
+s->atomic_req = NULL;
+ }
 }
 
 EAPI Eina_Bool
@@ -268,21 +269,22 @@ ecore_drm2_fb_flip_complete(Ecore_Drm2_Output *output)
output->current.fb = output->pending.fb;
output->pending.fb = NULL;
 
-#ifdef HAVE_ATOMIC_DRM
-   Eina_List *l, *ll;
-   

[EGIT] [core/efl] master 03/03: static_libs/libdrm: Update static libdrm headers

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit ca66a9fa0de567086fc2c1405ca1980357a88db1
Author: Chris Michael 
Date:   Fri Jun 9 14:23:57 2017 -0400

static_libs/libdrm: Update static libdrm headers

This patch updates our static_libs/libdrm header files to version
2.4.81-1 (from arch).

NB: derek, I don't have the exynos headers here. Please update them
when you can.

Signed-off-by: Chris Michael 
---
 src/static_libs/libdrm/drm.h  |  88 +++---
 src/static_libs/libdrm/drm_fourcc.h   |  17 +-
 src/static_libs/libdrm/drm_mode.h | 262 
 src/static_libs/libdrm/i915_drm.h | 315 --
 src/static_libs/libdrm/intel_bufmgr.h |  20 +++
 5 files changed, 588 insertions(+), 114 deletions(-)

diff --git a/src/static_libs/libdrm/drm.h b/src/static_libs/libdrm/drm.h
index a950b580cd..1e7a4bc7a5 100644
--- a/src/static_libs/libdrm/drm.h
+++ b/src/static_libs/libdrm/drm.h
@@ -36,7 +36,7 @@
 #ifndef _DRM_H_
 #define _DRM_H_
 
-#if defined(__linux__)
+#if   defined(__linux__)
 
 #include 
 #include 
@@ -54,10 +54,15 @@ typedef int32_t  __s32;
 typedef uint32_t __u32;
 typedef int64_t  __s64;
 typedef uint64_t __u64;
+typedef size_t   __kernel_size_t;
 typedef unsigned long drm_handle_t;
 
 #endif
 
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
 #define DRM_NAME   "drm" /**< Name in kernel, /dev, and /proc */
 #define DRM_MIN_ORDER  5 /**< At least 2^5 bytes = 32 bytes */
 #define DRM_MAX_ORDER  22/**< Up to 2^22 bytes = 4MB */
@@ -129,11 +134,11 @@ struct drm_version {
int version_major;/**< Major version */
int version_minor;/**< Minor version */
int version_patchlevel;   /**< Patch level */
-   size_t name_len;  /**< Length of name buffer */
+   __kernel_size_t name_len; /**< Length of name buffer */
char *name;   /**< Name of driver */
-   size_t date_len;  /**< Length of date buffer */
+   __kernel_size_t date_len; /**< Length of date buffer */
char *date;   /**< User-space buffer to hold date */
-   size_t desc_len;  /**< Length of desc buffer */
+   __kernel_size_t desc_len; /**< Length of desc buffer */
char *desc;   /**< User-space buffer to hold desc */
 };
 
@@ -143,7 +148,7 @@ struct drm_version {
  * \sa drmGetBusid() and drmSetBusId().
  */
 struct drm_unique {
-   size_t unique_len;/**< Length of unique */
+   __kernel_size_t unique_len;   /**< Length of unique */
char *unique; /**< Unique name for driver instantiation */
 };
 
@@ -180,8 +185,7 @@ enum drm_map_type {
_DRM_SHM = 2, /**< shared, cached */
_DRM_AGP = 3, /**< AGP/GART */
_DRM_SCATTER_GATHER = 4,  /**< Scatter/gather memory for PCI DMA */
-   _DRM_CONSISTENT = 5,  /**< Consistent memory for PCI DMA */
-   _DRM_GEM = 6  /**< GEM object */
+   _DRM_CONSISTENT = 5   /**< Consistent memory for PCI DMA */
 };
 
 /**
@@ -467,12 +471,15 @@ struct drm_irq_busid {
 enum drm_vblank_seq_type {
_DRM_VBLANK_ABSOLUTE = 0x0, /**< Wait for specific vblank sequence 
number */
_DRM_VBLANK_RELATIVE = 0x1, /**< Wait for given number of vblanks */
+   /* bits 1-6 are reserved for high crtcs */
+   _DRM_VBLANK_HIGH_CRTC_MASK = 0x003e,
_DRM_VBLANK_EVENT = 0x400,   /**< Send event instead of blocking */
_DRM_VBLANK_FLIP = 0x800,   /**< Scheduled buffer swap should flip 
*/
_DRM_VBLANK_NEXTONMISS = 0x1000,/**< If missed, wait for next 
vblank */
_DRM_VBLANK_SECONDARY = 0x2000, /**< Secondary display 
controller */
_DRM_VBLANK_SIGNAL = 0x4000 /**< Send signal instead of blocking, 
unsupported */
 };
+#define _DRM_VBLANK_HIGH_CRTC_SHIFT 1
 
 #define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE)
 #define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_EVENT | _DRM_VBLANK_SIGNAL | \
@@ -612,6 +619,30 @@ struct drm_gem_open {
__u64 size;
 };
 
+#define DRM_CAP_DUMB_BUFFER0x1
+#define DRM_CAP_VBLANK_HIGH_CRTC   0x2
+#define DRM_CAP_DUMB_PREFERRED_DEPTH   0x3
+#define DRM_CAP_DUMB_PREFER_SHADOW 0x4
+#define DRM_CAP_PRIME  0x5
+#define  DRM_PRIME_CAP_IMPORT  0x1
+#define  DRM_PRIME_CAP_EXPORT  0x2
+#define DRM_CAP_TIMESTAMP_MONOTONIC0x6
+#define DRM_CAP_ASYNC_PAGE_FLIP0x7
+/*
+ * The CURSOR_WIDTH and CURSOR_HEIGHT capabilities return a valid widthxheight
+ * combination for the hardware cursor. The intention is that a hardware
+ * agnostic userspace can query a cursor plane size to use.
+ *
+ * Note that the cross-driver contract is to merely 

[EGIT] [core/efl] master 01/07: static_libs: Add xf86drm headers to libdrm static_libs

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 434bb09b17969cc908c64452d7f4b759fbf99216
Author: Chris Michael 
Date:   Fri Jun 9 13:44:52 2017 -0400

static_libs: Add xf86drm headers to libdrm static_libs

Signed-off-by: Chris Michael 
---
 src/static_libs/libdrm/xf86drm.h | 860 +++
 src/static_libs/libdrm/xf86drmMode.h | 528 +
 2 files changed, 1388 insertions(+)

diff --git a/src/static_libs/libdrm/xf86drm.h b/src/static_libs/libdrm/xf86drm.h
new file mode 100644
index 00..74f54f1733
--- /dev/null
+++ b/src/static_libs/libdrm/xf86drm.h
@@ -0,0 +1,860 @@
+/**
+ * \file xf86drm.h 
+ * OS-independent header for DRM user-level library interface.
+ *
+ * \author Rickard E. (Rik) Faith 
+ */
+ 
+/*
+ * Copyright 1999, 2000 Precision Insight, Inc., Cedar Park, Texas.
+ * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef _XF86DRM_H_
+#define _XF86DRM_H_
+
+#include 
+#include 
+#include 
+#include 
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef DRM_MAX_MINOR
+#define DRM_MAX_MINOR   16
+#endif
+
+#if defined(__linux__)
+
+#define DRM_IOCTL_NR(n)_IOC_NR(n)
+#define DRM_IOC_VOID   _IOC_NONE
+#define DRM_IOC_READ   _IOC_READ
+#define DRM_IOC_WRITE  _IOC_WRITE
+#define DRM_IOC_READWRITE  _IOC_READ|_IOC_WRITE
+#define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size)
+
+#else /* One of the *BSDs */
+
+#include 
+#define DRM_IOCTL_NR(n) ((n) & 0xff)
+#define DRM_IOC_VOIDIOC_VOID
+#define DRM_IOC_READIOC_OUT
+#define DRM_IOC_WRITE   IOC_IN
+#define DRM_IOC_READWRITE   IOC_INOUT
+#define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size)
+
+#endif
+
+   /* Defaults, if nothing set in xf86config */
+#define DRM_DEV_UID 0
+#define DRM_DEV_GID 0
+/* Default /dev/dri directory permissions 0755 */
+#define DRM_DEV_DIRMODE\
+   (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
+#define DRM_DEV_MODE(S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP)
+
+#ifdef __OpenBSD__
+#define DRM_DIR_NAME  "/dev"
+#define DRM_DEV_NAME  "%s/drm%d"
+#define DRM_CONTROL_DEV_NAME  "%s/drmC%d"
+#define DRM_RENDER_DEV_NAME  "%s/drmR%d"
+#else
+#define DRM_DIR_NAME  "/dev/dri"
+#define DRM_DEV_NAME  "%s/card%d"
+#define DRM_CONTROL_DEV_NAME  "%s/controlD%d"
+#define DRM_RENDER_DEV_NAME  "%s/renderD%d"
+#define DRM_PROC_NAME "/proc/dri/" /* For backward Linux compatibility */
+#endif
+
+#define DRM_ERR_NO_DEVICE  (-1001)
+#define DRM_ERR_NO_ACCESS  (-1002)
+#define DRM_ERR_NOT_ROOT   (-1003)
+#define DRM_ERR_INVALID(-1004)
+#define DRM_ERR_NO_FD  (-1005)
+
+#define DRM_AGP_NO_HANDLE 0
+
+typedef unsigned int  drmSize, *drmSizePtr;/**< For mapped 
regions */
+typedef void  *drmAddress, **drmAddressPtr; /**< For mapped regions */
+
+#if (__GNUC__ >= 3)
+#define DRM_PRINTFLIKE(f, a) __attribute__ ((format(__printf__, f, a)))
+#else
+#define DRM_PRINTFLIKE(f, a)
+#endif
+
+typedef struct _drmServerInfo {
+  int (*debug_print)(const char *format, va_list ap) DRM_PRINTFLIKE(1,0);
+  int (*load_module)(const char *name);
+  void (*get_perms)(gid_t *, mode_t *);
+} drmServerInfo, *drmServerInfoPtr;
+
+typedef struct drmHashEntry {
+int  fd;
+void (*f)(int, void *, void *);
+void *tagTable;
+} drmHashEntry;
+
+extern int drmIoctl(int fd, unsigned long request, void *arg);
+extern void *drmGetHashTable(void);
+extern drmHashEntry *drmGetEntry(int fd);
+
+/**
+ * Driver version information.
+ *
+ * \sa drmGetVersion() and 

[EGIT] [core/efl] master 02/07: ecore-drm2: Add static_libs/libdrm to drm2 source files

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 2825a5b5743a54eda81a912da4ae3e48c3101b4f
Author: Chris Michael 
Date:   Fri Jun 9 13:46:02 2017 -0400

ecore-drm2: Add static_libs/libdrm to drm2 source files

Signed-off-by: Chris Michael 
---
 src/Makefile_Ecore_Drm2.am | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/src/Makefile_Ecore_Drm2.am b/src/Makefile_Ecore_Drm2.am
index 8e9620d714..dcb5dde757 100644
--- a/src/Makefile_Ecore_Drm2.am
+++ b/src/Makefile_Ecore_Drm2.am
@@ -9,6 +9,12 @@ dist_installed_ecoredrm2mainheaders_DATA = \
   lib/ecore_drm2/Ecore_Drm2.h
 
 lib_ecore_drm2_libecore_drm2_la_SOURCES = \
+static_libs/libdrm/drm.h \
+static_libs/libdrm/drm_fourcc.h \
+static_libs/libdrm/drm_mode.h \
+static_libs/libdrm/xf86drm.h \
+static_libs/libdrm/xf86drmMode.h \
+static_libs/libdrm/LICENSE \
 lib/ecore_drm2/ecore_drm2_plane.c \
 lib/ecore_drm2/ecore_drm2_fb.c \
 lib/ecore_drm2/ecore_drm2_outputs.c \
@@ -18,6 +24,7 @@ lib/ecore_drm2/ecore_drm2_private.h
 
 lib_ecore_drm2_libecore_drm2_la_CPPFLAGS = \
   -I$(top_builddir)/src/lib/efl \
+  -I$(top_srcdir)/src/static_libs/libdrm \
   @ECORE_DRM2_CFLAGS@ @EFL_CFLAGS@ \
   -DPACKAGE_LIB_DIR=\"$(libdir)\" \
   -DMODULE_ARCH=\"$(MODULE_ARCH)\"

-- 




[EGIT] [core/efl] master 06/07: ecore-drm2: Fix drm_mode variables to work with static lib

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit a55eafd960f9061993eba023b02fcf064b834105
Author: Chris Michael 
Date:   Fri Jun 9 13:50:22 2017 -0400

ecore-drm2: Fix drm_mode variables to work with static lib

As we now use static_libs/libdrm to build ecore_drm2, we need to
fix how our drm_mode variables are declared so we can use them.

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm2/ecore_drm2_fb.c | 21 ++---
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/src/lib/ecore_drm2/ecore_drm2_fb.c 
b/src/lib/ecore_drm2/ecore_drm2_fb.c
index ea6fcec194..c6683f4d3d 100644
--- a/src/lib/ecore_drm2/ecore_drm2_fb.c
+++ b/src/lib/ecore_drm2/ecore_drm2_fb.c
@@ -19,9 +19,9 @@ EAPI Ecore_Drm2_Fb *
 ecore_drm2_fb_create(int fd, int width, int height, int depth, int bpp, 
unsigned int format)
 {
Ecore_Drm2_Fb *fb;
-   drm_mode_create_dumb carg;
-   drm_mode_destroy_dumb darg;
-   drm_mode_map_dumb marg;
+   struct drm_mode_create_dumb carg;
+   struct drm_mode_destroy_dumb darg;
+   struct drm_mode_map_dumb marg;
int ret;
 
EINA_SAFETY_ON_TRUE_RETURN_VAL((fd < 0), NULL);
@@ -37,7 +37,7 @@ ecore_drm2_fb_create(int fd, int width, int height, int 
depth, int bpp, unsigned
fb->format = format;
fb->ref = 1;
 
-   memset(, 0, sizeof(drm_mode_create_dumb));
+   memset(, 0, sizeof(struct drm_mode_create_dumb));
carg.bpp = bpp;
carg.width = width;
carg.height = height;
@@ -61,7 +61,7 @@ ecore_drm2_fb_create(int fd, int width, int height, int 
depth, int bpp, unsigned
   }
  }
 
-   memset(, 0, sizeof(drm_mode_map_dumb));
+   memset(, 0, sizeof(struct drm_mode_map_dumb));
marg.handle = fb->handles[0];
ret = sym_drmIoctl(fd, DRM_IOCTL_MODE_MAP_DUMB, );
if (ret)
@@ -82,7 +82,7 @@ ecore_drm2_fb_create(int fd, int width, int height, int 
depth, int bpp, unsigned
 map_err:
sym_drmModeRmFB(fd, fb->id);
 add_err:
-   memset(, 0, sizeof(drm_mode_destroy_dumb));
+   memset(, 0, sizeof(struct drm_mode_destroy_dumb));
darg.handle = fb->handles[0];
sym_drmIoctl(fd, DRM_IOCTL_MODE_DESTROY_DUMB, );
 err:
@@ -93,7 +93,7 @@ err:
 EAPI Ecore_Drm2_Fb *
 ecore_drm2_fb_gbm_create(int fd, int width, int height, int depth, int bpp, 
unsigned int format, unsigned int handle, unsigned int stride, void *bo)
 {
-   drm_mode_map_dumb marg;
+   struct drm_mode_map_dumb marg;
Ecore_Drm2_Fb *fb;
int ret;
 
@@ -127,7 +127,7 @@ ecore_drm2_fb_gbm_create(int fd, int width, int height, int 
depth, int bpp, unsi
  }
 
/* mmap it if we can so screenshots are easy */
-   memset(, 0, sizeof(drm_mode_map_dumb));
+   memset(, 0, sizeof(struct drm_mode_map_dumb));
marg.handle = fb->handles[0];
ret = sym_drmIoctl(fd, DRM_IOCTL_MODE_MAP_DUMB, );
if (!ret)
@@ -155,9 +155,9 @@ _ecore_drm2_fb_destroy(Ecore_Drm2_Fb *fb)
 
if (!fb->gbm && !fb->dmabuf)
  {
-drm_mode_destroy_dumb darg;
+struct drm_mode_destroy_dumb darg;
 
-memset(, 0, sizeof(drm_mode_destroy_dumb));
+memset(, 0, sizeof(struct drm_mode_destroy_dumb));
 darg.handle = fb->handles[0];
 sym_drmIoctl(fb->fd, DRM_IOCTL_MODE_DESTROY_DUMB, );
  }
@@ -180,7 +180,6 @@ _ecore_drm2_fb_deref(Ecore_Drm2_Fb *fb)
_ecore_drm2_fb_destroy(fb);
 }
 
-
 EAPI void
 ecore_drm2_fb_discard(Ecore_Drm2_Fb *fb)
 {

-- 




[EGIT] [core/efl] master 05/07: ecore-drm2: Use static libdrm to build ecore-drm2

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 6e37d13a1c1df29a12b0d15d89aa549d5c01f265
Author: Chris Michael 
Date:   Fri Jun 9 13:48:55 2017 -0400

ecore-drm2: Use static libdrm to build ecore-drm2

As we will now use static_libs/libdrm to build ecore_drm2, we no
longer need to include the copied code from the libdrm headers so
remove all of the copied code from our source files.

@fix

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm2/ecore_drm2_private.h | 555 +---
 1 file changed, 6 insertions(+), 549 deletions(-)

diff --git a/src/lib/ecore_drm2/ecore_drm2_private.h 
b/src/lib/ecore_drm2/ecore_drm2_private.h
index 1d3300ea11..55b6fef424 100644
--- a/src/lib/ecore_drm2/ecore_drm2_private.h
+++ b/src/lib/ecore_drm2/ecore_drm2_private.h
@@ -20,6 +20,12 @@
 # include 
 # include 
 
+# include 
+# include 
+# include 
+# include 
+# include 
+
 #ifndef DRM2_NODEFS
 extern int _ecore_drm2_log_dom;
 extern Eina_Bool _ecore_drm2_use_atomic;
@@ -54,555 +60,6 @@ extern Eina_Bool _ecore_drm2_use_atomic;
 # endif
 # define CRIT(...) EINA_LOG_DOM_CRIT(_ecore_drm2_log_dom, __VA_ARGS__)
 #endif
-/* The following defines and structures were borrowed from drm.h */
-
-/**
- * \file drm.h
- * Header for the Direct Rendering Manager
- *
- * \author Rickard E. (Rik) Faith 
- *
- * \par Acknowledgments:
- * Dec 1999, Richard Henderson , move to generic \c cmpxchg.
- */
-
-/*
- * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
- * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
- * All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-# define DRM_MODE_FEATURE_DIRTYFB 1
-
-# define DRM_IOCTL_BASE 'd'
-# define DRM_IOWR(nr,type) _IOWR(DRM_IOCTL_BASE,nr,type)
-# define DRM_IOCTL_MODE_ADDFB2 DRM_IOWR(0xB8, drm_mode_fb_cmd2)
-
-# define DRM_CLIENT_CAP_STEREO_3D 1
-# define DRM_CLIENT_CAP_UNIVERSAL_PLANES 2
-# define DRM_CLIENT_CAP_ATOMIC 3
-# define DRM_CAP_TIMESTAMP_MONOTONIC 0x6
-
-# define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, drm_mode_create_dumb)
-# define DRM_IOCTL_MODE_MAP_DUMB DRM_IOWR(0xB3, drm_mode_map_dumb)
-# define DRM_IOCTL_MODE_DESTROY_DUMB DRM_IOWR(0xB4, drm_mode_destroy_dumb)
-
-/* end drm.h */
-
-/* The following defines and structures were borrowed from drm_mode.h */
-
-/*
- * Copyright (c) 2007 Dave Airlie 
- * Copyright (c) 2007 Jakob Bornecrantz 
- * Copyright (c) 2008 Red Hat Inc.
- * Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA
- * Copyright (c) 2007-2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-# define 

[EGIT] [core/efl] master 04/07: ecore-evas-drm: Remove borrowed fourcc_code from source file

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 53bfe003513b7b309b1e2f8b29be07c61801a1b7
Author: Chris Michael 
Date:   Fri Jun 9 13:47:47 2017 -0400

ecore-evas-drm: Remove borrowed fourcc_code from source file

As we will now use static_libs/libdrm for building ecore_evas_drm, we
no longer need to include this bit of borrowed four_cc code from libdrm

Signed-off-by: Chris Michael 
---
 .../ecore_evas/engines/drm/ecore_evas_drm.c| 31 --
 1 file changed, 31 deletions(-)

diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c 
b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
index cea1c6273a..de8d880964 100644
--- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
+++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
@@ -46,37 +46,6 @@
 # endif
 #endif /* ! _WIN32 */
 
-/* DRM_FORMAT_XRGB and fourcc_code borrowed from 
- *
- * Copyright 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-#define fourcc_code(a, b, c, d) \
-   ((uint32_t)(a) | ((uint32_t)(b) << 8) | \
-   ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24))
-#define DRM_FORMAT_XRGB \
-   fourcc_code('X', 'R', '2', '4') /* [31:0] x:R:G:B 8:8:8:8 little endian */
-
-/* end borrowed  code */
-
 typedef struct _Ecore_Evas_Engine_Drm_Data
 {
int fd;

-- 




[EGIT] [core/efl] master 07/07: ecore-drm2: Use static_libs/libdrm to build ecore-drm2 library

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit de12621c900177b99fd05684f2e101cea9e628f3
Merge: cb94befb9d a55eafd960
Author: Chris Michael 
Date:   Fri Jun 9 13:52:58 2017 -0400

ecore-drm2: Use static_libs/libdrm to build ecore-drm2 library

This patch set allows us to use static_libs/libdrm files in order to
build ecore-drm2. This also allows us to remove a lot of the copied
drm header code from our source files and is easier to keep up-to-date.

Merge branch 'devs/devilhorns/drm_static'

 src/Makefile_Ecore_Drm2.am |   7 +
 src/Makefile_Ecore_Evas.am |   9 +-
 src/lib/ecore_drm2/ecore_drm2_fb.c |  21 +-
 src/lib/ecore_drm2/ecore_drm2_private.h| 555 +
 .../ecore_evas/engines/drm/ecore_evas_drm.c|  31 -
 src/static_libs/libdrm/xf86drm.h   | 860 +
 src/static_libs/libdrm/xf86drmMode.h   | 528 +
 7 files changed, 1419 insertions(+), 592 deletions(-)

-- 




[EGIT] [core/efl] master 03/07: ecore-evas: Add static_libs/libdrm to ecore_evas_drm source files

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 3f47b8bbee926c4cfdbab2552125e19e5c35306d
Author: Chris Michael 
Date:   Fri Jun 9 13:47:09 2017 -0400

ecore-evas: Add static_libs/libdrm to ecore_evas_drm source files

Signed-off-by: Chris Michael 
---
 src/Makefile_Ecore_Evas.am | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/Makefile_Ecore_Evas.am b/src/Makefile_Ecore_Evas.am
index dbdf5f6fb9..711047b7cf 100644
--- a/src/Makefile_Ecore_Evas.am
+++ b/src/Makefile_Ecore_Evas.am
@@ -258,7 +258,13 @@ endif
 
 if BUILD_ECORE_EVAS_DRM
 DRMSOURCES = \
-modules/ecore_evas/engines/drm/ecore_evas_drm.c
+modules/ecore_evas/engines/drm/ecore_evas_drm.c \
+static_libs/libdrm/drm_fourcc.h \
+static_libs/libdrm/drm.h \
+static_libs/libdrm/drm_mode.h \
+static_libs/libdrm/xf86drm.h \
+static_libs/libdrm/xf86drmMode.h
+
 ecoreevasenginedrmpkgdir = $(libdir)/ecore_evas/engines/drm/$(MODULE_ARCH)
 ecoreevasenginedrmpkg_LTLIBRARIES = modules/ecore_evas/engines/drm/module.la
 
@@ -272,6 +278,7 @@ modules_ecore_evas_engines_drm_module_la_CPPFLAGS = 
-I$(top_builddir)/src/lib/ef
 @ECORE_EVAS_CFLAGS@ \
 @ECORE_DRM2_CFLAGS@ \
 @ELPUT_CFLAGS@ \
+-I$(top_srcdir)/src/static_libs/libdrm \
 -I$(top_srcdir)/src/modules/evas/engines/drm \
 -I$(top_srcdir)/src/modules/evas/engines/gl_drm
 modules_ecore_evas_engines_drm_module_la_LIBADD = \

-- 




[EGIT] [tools/edi] master 01/02: console: Fix error highlighting for builds

2017-06-09 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=19c62faa48bbb493d36d3c2be15c79a2330a8696

commit 19c62faa48bbb493d36d3c2be15c79a2330a8696
Author: Andy Williams 
Date:   Fri Jun 9 10:36:09 2017 -0700

console: Fix error highlighting for builds

Also avoid potential crash on non-gnu systems
---
 src/bin/edi_consolepanel.c| 2 ++
 src/lib/edi_build_provider_make.c | 4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/bin/edi_consolepanel.c b/src/bin/edi_consolepanel.c
index 45541b6..286b801 100644
--- a/src/bin/edi_consolepanel.c
+++ b/src/bin/edi_consolepanel.c
@@ -91,6 +91,8 @@ _edi_consolepanel_clicked_cb(void *data EINA_UNUSED, const 
Efl_Event *event)
unsigned int length;
 
line = (Elm_Code_Line *)event->info;
+   if (!line->data)
+ return;
content = elm_code_line_text_get(line, );
 
terminated = malloc(sizeof(char) * (length + 1));
diff --git a/src/lib/edi_build_provider_make.c 
b/src/lib/edi_build_provider_make.c
index 8870828..85966f3 100644
--- a/src/lib/edi_build_provider_make.c
+++ b/src/lib/edi_build_provider_make.c
@@ -13,7 +13,7 @@
 #if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || 
defined(__NetBSD__)
  #define MAKE_COMMAND " gmake"
 #else
- #define MAKE_COMMAND " make"
+ #define MAKE_COMMAND " make -w"
 #endif
 
 
@@ -85,7 +85,7 @@ static void
 _make_test(void)
 {
chdir(edi_project_get());
-   ecore_exe_pipe_run("env CK_VERBOSITY=verbose make check", 
ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ |
+   ecore_exe_pipe_run("env CK_VERBOSITY=verbose" MAKE_COMMAND " check", 
ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ |
   ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | 
ECORE_EXE_PIPE_ERROR |
   ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL);
 }

-- 




[EGIT] [tools/edi] master 02/02: console: Jump to column on click when available in errors

2017-06-09 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=208dc9ed2fc19b1c42a9b4e56be6e270765fa61f

commit 208dc9ed2fc19b1c42a9b4e56be6e270765fa61f
Author: Andy Williams 
Date:   Fri Jun 9 10:36:52 2017 -0700

console: Jump to column on click when available in errors
---
 src/bin/mainview/edi_mainview.c | 34 +-
 src/bin/mainview/edi_mainview.h | 12 +++-
 2 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/src/bin/mainview/edi_mainview.c b/src/bin/mainview/edi_mainview.c
index 603b037..7fc88c1 100644
--- a/src/bin/mainview/edi_mainview.c
+++ b/src/bin/mainview/edi_mainview.c
@@ -324,7 +324,12 @@ _edi_mainview_item_tab_add(Edi_Path_Options *options, 
const char *mime)
  elm_object_focus_set(editor->entry, EINA_TRUE);
 
if (options->line)
- edi_mainview_goto(options->line);
+ {
+if (options->character > 1)
+  edi_mainview_goto_position(options->line, options->character);
+else
+  edi_mainview_goto(options->line);
+ }
 
_edi_project_config_tab_add(options->path, options->type, EINA_FALSE);
 }
@@ -482,7 +487,12 @@ edi_mainview_open(Edi_Path_Options *options)
  {
 edi_mainview_item_select(it);
 if (options->line)
-   edi_mainview_goto(options->line);
+  {
+ if (options->character > 1)
+   edi_mainview_goto_position(options->line, options->character);
+ else
+   edi_mainview_goto(options->line);
+  }
 return;
  }
 
@@ -735,23 +745,21 @@ edi_mainview_search()
 }
 
 void
-edi_mainview_goto(int number)
+edi_mainview_goto(unsigned int number)
+{
+   edi_mainview_goto_position(number, 1);
+}
+
+void
+edi_mainview_goto_position(unsigned int row, unsigned int col)
 {
Edi_Editor *editor;
-   Elm_Code *code;
-   Elm_Code_Line *line;
 
editor = (Edi_Editor *)evas_object_data_get(_current_view, "editor");
-   if (!editor || number <= 0)
- return;
-
-   code = elm_code_widget_code_get(editor->entry);
-
-   line = elm_code_file_line_get(code->file, number);
-   if (!line)
+   if (!editor || row <= 0 || col <= 0)
  return;
 
-   elm_code_widget_cursor_position_set(editor->entry, number, 1);
+   elm_code_widget_cursor_position_set(editor->entry, row, col);
elm_object_focus_set(editor->entry, EINA_TRUE);
 }
 
diff --git a/src/bin/mainview/edi_mainview.h b/src/bin/mainview/edi_mainview.h
index e268b45..aced01f 100644
--- a/src/bin/mainview/edi_mainview.h
+++ b/src/bin/mainview/edi_mainview.h
@@ -210,7 +210,17 @@ void edi_mainview_search();
  *
  * @ingroup Content
  */
-void edi_mainview_goto(int line);
+void edi_mainview_goto(unsigned int line);
+
+/**
+ * Go to a requested line, column position in the current view's contents.
+ *
+ * @param row the line number (1 based) to scroll to
+ * @param col the column position (1 based) to scroll to
+ *
+ * @ingroup Content
+ */
+void edi_mainview_goto_position(unsigned int row, unsigned int col);
 
 /**
  * Present a popup that will initiate a goto in the current view.

-- 




[EGIT] [core/efl] master 08/17: ecore-wl2: Add API to return a windows preferred rotation

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit fa7f8d25b2e4db61c9ff9bfb5421a38bce019942
Author: Chris Michael 
Date:   Fri Jun 9 09:51:19 2017 -0400

ecore-wl2: Add API to return a windows preferred rotation

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h| 12 
 src/lib/ecore_wl2/ecore_wl2_window.c |  7 +++
 2 files changed, 19 insertions(+)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index aa0374635c..1185780d72 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -1030,6 +1030,18 @@ EAPI Eina_Bool 
ecore_wl2_window_rotation_app_get(Ecore_Wl2_Window *window);
 EAPI void ecore_wl2_window_preferred_rotation_set(Ecore_Wl2_Window *window, 
int rot);
 
 /**
+ * Get preferred rotation for a given window
+ *
+ * @param window
+ *
+ * @return Given windows preferred rotation
+ *
+ * @ingroup Ecore_Wl2_Window
+ * @since 1.20
+ */
+EAPI int ecore_wl2_window_preferred_rotation_get(Ecore_Wl2_Window *window);
+
+/**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
  * @ingroup Ecore_Wl2_Group
  *
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 951b8f79ee..4d5733a684 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1248,3 +1248,10 @@ ecore_wl2_window_preferred_rotation_set(Ecore_Wl2_Window 
*window, int rot)
EINA_SAFETY_ON_NULL_RETURN(window);
window->wm_rot.preferred_rot = rot;
 }
+
+EAPI int
+ecore_wl2_window_preferred_rotation_get(Ecore_Wl2_Window *window)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(window, 0);
+   return window->wm_rot.preferred_rot;
+}

-- 




[EGIT] [core/efl] master 13/17: ecore-wl2: Add API and Event for window rotation change request

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 1eaaab93b19562be1640e25d9b69fec372b00fa6
Author: Chris Michael 
Date:   Fri Jun 9 10:42:31 2017 -0400

ecore-wl2: Add API and Event for window rotation change request

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h|  3 +++
 src/lib/ecore_wl2/ecore_wl2.c|  5 -
 src/lib/ecore_wl2/ecore_wl2_window.c | 20 
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index 96ccc848c0..1402c54100 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -284,6 +284,7 @@ typedef struct _Ecore_Wl2_Event_Window_Rotation
 } Ecore_Wl2_Event_Window_Rotation;
 typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Prepare;
 typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Prepare_Done;
+typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Request;
 
 typedef enum _Ecore_Wl2_Window_Type
 {
@@ -328,6 +329,7 @@ EAPI extern int ECORE_WL2_EVENT_SEAT_SELECTION; /** @since 
1.20 */
 EAPI extern int ECORE_WL2_EVENT_OUTPUT_TRANSFORM; /** @since 1.20 */
 EAPI extern int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE; /** @since 
1.20 */
 EAPI extern int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE; /** 
@since 1.20 */
+EAPI extern int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST; /** @since 
1.20 */
 
 /**
  * @file
@@ -1080,6 +1082,7 @@ EAPI Eina_Bool 
ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window
 
 EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window 
*window, int rot, int w, int h, Eina_Bool resize);
 EAPI void ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window 
*window, int rot);
+EAPI void ecore_wl2_window_rotation_change_request_send(Ecore_Wl2_Window 
*window, int rot);
 
 /**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c
index 9390189943..03595f56b1 100644
--- a/src/lib/ecore_wl2/ecore_wl2.c
+++ b/src/lib/ecore_wl2/ecore_wl2.c
@@ -42,6 +42,7 @@ EAPI int ECORE_WL2_EVENT_SEAT_SELECTION = 0;
 EAPI int ECORE_WL2_EVENT_OUTPUT_TRANSFORM = 0;
 EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 0;
 EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE = 0;
+EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST = 0;
 
 EAPI int _ecore_wl2_event_window_www = -1;
 EAPI int _ecore_wl2_event_window_www_drag = -1;
@@ -114,6 +115,7 @@ ecore_wl2_init(void)
 ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 
ecore_event_type_new();
 ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE =
   ecore_event_type_new();
+ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST = 
ecore_event_type_new();
  }
if (!no_session_recovery)
  no_session_recovery = !!getenv("EFL_NO_WAYLAND_SESSION_RECOVERY");
@@ -173,7 +175,8 @@ ecore_wl2_shutdown(void)
   ECORE_WL2_EVENT_SEAT_SELECTION,
   ECORE_WL2_EVENT_OUTPUT_TRANSFORM,
   ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE,
-  ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE);
+  ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE,
+  ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST);
 
/* shutdown Ecore_Event */
ecore_event_shutdown();
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 03802a9f35..9e44978f27 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1327,3 +1327,23 @@ 
ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window *window, int
ecore_event_add(ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE,
ev, NULL, NULL);
 }
+
+EAPI void
+ecore_wl2_window_rotation_change_request_send(Ecore_Wl2_Window *window, int 
rot)
+{
+   Ecore_Wl2_Event_Window_Rotation_Change_Reqest *ev;
+
+   EINA_SAFETY_ON_NULL_RETURN(window);
+
+   ev = calloc(1, sizeof(Ecore_Wl2_Event_Window_Rotation_Change_Request));
+   if (!ev) return;
+
+   ev->window = window;
+   ev->rotation = rot;
+   ev->w = 0;
+   ev->h = 0;
+   ev->resize = 0;
+
+   ecore_event_add(ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST,
+   ev, NULL, NULL);
+}

-- 




[EGIT] [core/efl] master 05/17: ecore-wl2: Add API to set if an application has rotation a window

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit c23a0d080d495f1c83393702bbad30f655c00f4b
Author: Chris Michael 
Date:   Fri Jun 9 09:36:17 2017 -0400

ecore-wl2: Add API to set if an application has rotation a window

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h | 11 +++
 src/lib/ecore_wl2/ecore_wl2_private.h |  1 +
 src/lib/ecore_wl2/ecore_wl2_window.c  |  7 +++
 3 files changed, 19 insertions(+)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index bd832b35c2..34bf7574eb 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -996,6 +996,17 @@ EAPI void 
ecore_wl2_window_wm_rotation_supported_set(Ecore_Wl2_Window *window, E
 EAPI Eina_Bool ecore_wl2_window_wm_rotation_supported_get(Ecore_Wl2_Window 
*window);
 
 /**
+ * Set if an application has set window rotation
+ *
+ * @param window
+ * @param set
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_window_rotation_app_set(Ecore_Wl2_Window *window, 
Eina_Bool set);
+
+/**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
  * @ingroup Ecore_Wl2_Group
  *
diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h 
b/src/lib/ecore_wl2/ecore_wl2_private.h
index 8c6ef6a6d0..9687b7f22d 100644
--- a/src/lib/ecore_wl2/ecore_wl2_private.h
+++ b/src/lib/ecore_wl2/ecore_wl2_private.h
@@ -189,6 +189,7 @@ struct _Ecore_Wl2_Window
struct
  {
 Eina_Bool supported : 1;
+Eina_Bool app_set : 1;
  } wm_rot;
 };
 
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index ef5da9d86f..9b82a2fdf4 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1227,3 +1227,10 @@ 
ecore_wl2_window_wm_rotation_supported_get(Ecore_Wl2_Window *window)
EINA_SAFETY_ON_NULL_RETURN_VAL(window, EINA_FALSE);
return window->wm_rot.supported;
 }
+
+EAPI void
+ecore_wl2_window_rotation_app_set(Ecore_Wl2_Window *window, Eina_Bool set)
+{
+   EINA_SAFETY_ON_NULL_RETURN(window);
+   window->wm_rot.app_set = set;
+}

-- 




[EGIT] [core/efl] master 02/17: ecore-drm2: Group API functions within their doxy group

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 05f770a1ab019ba7c5d3a14b8bf0a151b69eca1c
Author: Chris Michael 
Date:   Fri Jun 9 08:46:56 2017 -0400

ecore-drm2: Group API functions within their doxy group

NB: No functional changes

Signed-off-by: Chris Michael 
---
 src/lib/ecore_drm2/Ecore_Drm2.h | 76 -
 1 file changed, 38 insertions(+), 38 deletions(-)

diff --git a/src/lib/ecore_drm2/Ecore_Drm2.h b/src/lib/ecore_drm2/Ecore_Drm2.h
index fc5c8b4f7e..8dfe4aa815 100644
--- a/src/lib/ecore_drm2/Ecore_Drm2.h
+++ b/src/lib/ecore_drm2/Ecore_Drm2.h
@@ -793,6 +793,31 @@ EAPI int 
ecore_drm2_output_supported_rotations_get(Ecore_Drm2_Output *output);
 EAPI Eina_Bool ecore_drm2_output_rotation_set(Ecore_Drm2_Output *output, int 
rotation);
 
 /**
+ * Set the user data for the output's page flip handler
+ *
+ * @param output The output to update user data for
+ * @param data The new user data pointer
+ *
+ * @ingroup Ecore_Drm2_Output_Group
+ * @since 1.19
+ */
+EAPI void ecore_drm2_output_user_data_set(Ecore_Drm2_Output *o, void *data);
+
+/**
+ * Register a callback for the buffer release handler
+ *
+ * When a flip completes ecore_drm2 may release a buffer.  Use this callback
+ * if you need to do bookkeeping or locking on buffer release.
+ *
+ * @param output The output to register the callback on
+ * @param handler The function to handle the callback
+ * @param data The user data to pass to the callback
+ * @ingroup Ecore_Drm2_Output_Group
+ * @since 1.19
+ */
+EAPI void ecore_drm2_output_release_handler_set(Ecore_Drm2_Output *output, 
Ecore_Drm2_Release_Handler handler, void *data);
+
+/**
  * @defgroup Ecore_Drm2_Fb_Group Drm framebuffer functions
  *
  * Functions that deal with setup of framebuffers
@@ -926,31 +951,6 @@ EAPI Eina_Bool ecore_drm2_fb_busy_get(Ecore_Drm2_Fb *fb);
 EAPI Eina_Bool ecore_drm2_fb_release(Ecore_Drm2_Output *o, Eina_Bool panic);
 
 /**
- * Set the user data for the output's page flip handler
- *
- * @param output The output to update user data for
- * @param data The new user data pointer
- *
- * @ingroup Ecore_Drm2_Output_Group
- * @since 1.19
- */
-EAPI void ecore_drm2_output_user_data_set(Ecore_Drm2_Output *o, void *data);
-
-/**
- * Register a callback for the buffer release handler
- *
- * When a flip completes ecore_drm2 may release a buffer.  Use this callback
- * if you need to do bookkeeping or locking on buffer release.
- *
- * @param output The output to register the callback on
- * @param handler The function to handle the callback
- * @param data The user data to pass to the callback
- * @ingroup Ecore_Drm2_Output_Group
- * @since 1.19
- */
-EAPI void ecore_drm2_output_release_handler_set(Ecore_Drm2_Output *output, 
Ecore_Drm2_Release_Handler handler, void *data);
-
-/**
  * Get the Framebuffer's gbm buffer object
  *
  * @param fb The framebuffer to query
@@ -984,6 +984,19 @@ EAPI void *ecore_drm2_fb_bo_get(Ecore_Drm2_Fb *fb);
 EAPI Ecore_Drm2_Fb *ecore_drm2_fb_dmabuf_import(int fd, int width, int height, 
int depth, int bpp, unsigned int format, unsigned int strides[4], int 
dmabuf_fd[4], int dmabuf_fd_count);
 
 /**
+ * Discard a framebuffer object
+ *
+ * Decreases the refcount on a fb object.  It will be destroyed when it's
+ * no longer attached to scanout or otherwise in use.
+ *
+ * @param fb
+ *
+ * @ingroup Ecore_Drm2_Fb_Group
+ * @since 1.20
+ */
+EAPI void ecore_drm2_fb_discard(Ecore_Drm2_Fb *fb);
+
+/**
  * @defgroup Ecore_Drm2_Plane_Group Functions that deal with hardware planes
  *
  * Functions that deal with hardware plane manipulation
@@ -1039,19 +1052,6 @@ EAPI void 
ecore_drm2_plane_destination_set(Ecore_Drm2_Plane *plane, int x, int y
  */
 EAPI Eina_Bool ecore_drm2_plane_fb_set(Ecore_Drm2_Plane *plane, Ecore_Drm2_Fb 
*fb);
 
-/**
- * Discard a framebuffer object
- *
- * Decreases the refcount on a fb object.  It will be destroyed when it's
- * no longer attached to scanout or otherwise in use.
- *
- * @param fb
- *
- * @ingroup Ecore_Drm2_Fb_Group
- * @since 1.20
- */
-EAPI void ecore_drm2_fb_discard(Ecore_Drm2_Fb *fb);
-
 # endif
 
 #endif

-- 




[EGIT] [core/efl] master 03/17: ecore-wl2: Add API function to set if wm rotation is supported

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 8f9163aaa11a202308efbe4bf5f14e4c041dacf4
Author: Chris Michael 
Date:   Fri Jun 9 09:12:39 2017 -0400

ecore-wl2: Add API function to set if wm rotation is supported

Small patch to add an API function which can be called to set if
window manager rotation is supported.

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h | 11 +++
 src/lib/ecore_wl2/ecore_wl2_private.h |  5 +
 src/lib/ecore_wl2/ecore_wl2_window.c  |  7 +++
 3 files changed, 23 insertions(+)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index c8c8b6f374..6548a0c84d 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -973,6 +973,17 @@ EAPI Ecore_Wl2_Output 
*ecore_wl2_window_output_find(Ecore_Wl2_Window *window);
 EAPI void ecore_wl2_window_buffer_transform_set(Ecore_Wl2_Window *window, int 
transform);
 
 /**
+ * Set if window rotation is supported by the window manager
+ *
+ * @param window
+ * @param enabled
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_window_wm_rotation_supported_set(Ecore_Wl2_Window *window, 
Eina_Bool enabled);
+
+/**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
  * @ingroup Ecore_Wl2_Group
  *
diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h 
b/src/lib/ecore_wl2/ecore_wl2_private.h
index c150a4b6ce..8c6ef6a6d0 100644
--- a/src/lib/ecore_wl2/ecore_wl2_private.h
+++ b/src/lib/ecore_wl2/ecore_wl2_private.h
@@ -185,6 +185,11 @@ struct _Ecore_Wl2_Window
  {
 Eina_Bool configure : 1;
  } pending;
+
+   struct
+ {
+Eina_Bool supported : 1;
+ } wm_rot;
 };
 
 struct _Ecore_Wl2_Output
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index bc319635f4..26cdd7fd4e 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1213,3 +1213,10 @@ ecore_wl2_window_buffer_transform_set(Ecore_Wl2_Window 
*window, int transform)
 
wl_surface_set_buffer_transform(window->surface, transform);
 }
+
+EAPI void
+ecore_wl2_window_wm_rotation_supported_set(Ecore_Wl2_Window *window, Eina_Bool 
enabled)
+{
+   EINA_SAFETY_ON_NULL_RETURN(window);
+   window->wm_rot.supported = enabled;
+}

-- 




[EGIT] [core/efl] master 10/17: ecore-wl2: Add API to return window available rotations

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 9930929dbba5436ce5e408ecf1bac2893f1ab3be
Author: Chris Michael 
Date:   Fri Jun 9 10:08:06 2017 -0400

ecore-wl2: Add API to return window available rotations

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h| 14 ++
 src/lib/ecore_wl2/ecore_wl2_window.c | 25 +
 2 files changed, 39 insertions(+)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index 8bd591ca5a..f3a8ddd402 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -1054,6 +1054,20 @@ EAPI int 
ecore_wl2_window_preferred_rotation_get(Ecore_Wl2_Window *window);
 EAPI void ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, 
const int *rots, unsigned int count);
 
 /**
+ * Get a windows available rotations
+ *
+ * @param window
+ * @param rots
+ * @param count
+ *
+ * @return EINA_TRUE on success, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI Eina_Bool ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window 
*window, int **rots, unsigned int count);
+
+/**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
  * @ingroup Ecore_Wl2_Group
  *
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 29e3eae1dd..08b56ffe08 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1263,3 +1263,28 @@ 
ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, const int *ro
window->wm_rot.count = count;
window->wm_rot.available_rots = rots;
 }
+
+EAPI Eina_Bool
+ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window, int **rots, 
unsigned int count)
+{
+   int i = 0;
+   int *val = NULL;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(window, EINA_FALSE);
+
+   *count = window->wm_rot.count;
+
+   if (window->wm_rot.count >= 1)
+ {
+val = calloc(window->wm_rot.count, sizeof(int));
+if (!val) return EINA_FALSE;
+
+for (; i < window->wm_rot.count; i++)
+  val[i] = ((int *)window->wm_rot.available_rots)[i];
+
+*rots = val;
+return EINA_TRUE;
+ }
+
+   return EINA_FALSE;
+}

-- 




[EGIT] [core/efl] master 17/17: ecore-evas-wl: Add support for Window Manager rotations

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit cb94befb9da6ab48195b8f0f535fb81bd83959be
Author: Chris Michael 
Date:   Fri Jun 9 11:06:05 2017 -0400

ecore-evas-wl: Add support for Window Manager rotations

This patch adds support to Ecore_Evas_Wayland for Window Manager
Rotations so that window managers which do support rotations are able
to rotate an EFL wayland application.

@feature

Signed-off-by: Chris Michael 
---
 .../engines/wayland/ecore_evas_wayland_common.c| 201 -
 .../engines/wayland/ecore_evas_wayland_private.h   |  11 ++
 2 files changed, 207 insertions(+), 5 deletions(-)

diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
index 30ddb30f06..362aef909f 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
@@ -28,9 +28,10 @@ struct _EE_Wl_Device
 
 /* local variables */
 static int _ecore_evas_wl_init_count = 0;
-static Ecore_Event_Handler *_ecore_evas_wl_event_hdls[13];
+static Ecore_Event_Handler *_ecore_evas_wl_event_hdls[14];
 
 static void _ecore_evas_wayland_resize(Ecore_Evas *ee, int location);
+static void _ecore_evas_wl_common_rotation_set(Ecore_Evas *ee, int rotation, 
int resize);
 
 /* local functions */
 static void
@@ -39,6 +40,17 @@ _ecore_evas_wl_common_state_update(Ecore_Evas *ee)
if (ee->func.fn_state_change) ee->func.fn_state_change(ee);
 }
 
+static void
+_ecore_evas_wl_common_wm_rotation_protocol_set(Ecore_Evas *ee)
+{
+   Ecore_Evas_Engine_Wl_Data *wdata;
+
+   wdata = ee->engine.data;
+
+   ee->prop.wm_rot.supported =
+ ecore_wl2_window_wm_rotation_supported_get(wdata->win);
+}
+
 static Eina_Bool
 _ecore_evas_wl_common_cb_mouse_in(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event)
 {
@@ -344,6 +356,69 @@ _ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h)
  }
 }
 
+static void
+_ecore_evas_wl_common_wm_rot_manual_rotation_done_job(void *data)
+{
+   Ecore_Evas *ee = (Ecore_Evas *)data;
+   Ecore_Evas_Engine_Wl_Data *wdata;
+
+   wdata = ee->engine.data;
+
+   wdata->wm_rot.manual_mode_job = NULL;
+   ee->prop.wm_rot.manual_mode.wait_for_done = EINA_FALSE;
+
+   ecore_wl2_window_rotation_change_done_send
+ (wdata->win, ee->rotation, ee->w, ee->h);
+
+   wdata->wm_rot.done = EINA_FALSE;
+}
+
+static void
+_ecore_evas_wl_common_wm_rot_manual_rotation_done(Ecore_Evas *ee)
+{
+   if ((ee->prop.wm_rot.supported) &&
+   (ee->prop.wm_rot.app_set) &&
+   (ee->prop.wm_rot.manual_mode.set))
+ {
+if (ee->prop.wm_rot.manual_mode.wait_for_done)
+  {
+ Ecore_Evas_Engine_Wl_Data *wdata;
+
+ wdata = ee->engine.data;
+
+ if (ee->prop.wm_rot.manual_mode.timer)
+   ecore_timer_del(ee->prop.wm_rot.manual_mode.timer);
+ ee->prop.wm_rot.manual_mode.timer = NULL;
+
+ if (wdata->wm_rot.manual_mode_job)
+   ecore_job_del(wdata->wm_rot.manual_mode_job);
+
+ wdata->wm_rot.manual_mode_job = ecore_job_add
+   (_ecore_evas_wl_common_wm_rot_manual_rotation_done_job, ee);
+  }
+ }
+}
+
+static Eina_Bool
+_ecore_evas_wl_common_wm_rot_manual_rotation_done_timeout(void *data)
+{
+   Ecore_Evas *ee = data;
+
+   ee->prop.wm_rot.manual_mode.timer = NULL;
+   _ecore_evas_wl_common_wm_rot_manual_rotation_done(ee);
+   return ECORE_CALLBACK_CANCEL;
+}
+
+static void
+_ecore_evas_wl_common_wm_rot_manual_rotation_done_timeout_update(Ecore_Evas 
*ee)
+{
+   if (ee->prop.wm_rot.manual_mode.timer)
+ ecore_timer_del(ee->prop.wm_rot.manual_mode.timer);
+
+   ee->prop.wm_rot.manual_mode.timer = ecore_timer_add
+ (4.0f, _ecore_evas_wl_common_wm_rot_manual_rotation_done_timeout, ee);
+}
+
 static Eina_Bool
 _ecore_evas_wl_common_cb_window_configure(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event)
 {
@@ -411,6 +486,38 @@ _ecore_evas_wl_common_cb_window_configure(void *data 
EINA_UNUSED, int type EINA_
if (ee->prop.fullscreen || (ee->req.w != nw) || (ee->req.h != nh))
  _ecore_evas_wl_common_resize(ee, nw, nh);
 
+   if (ee->prop.wm_rot.supported)
+ {
+if (wdata->wm_rot.prepare)
+  {
+ if ((ee->prop.wm_rot.w == nw) &&
+ (ee->prop.wm_rot.h == nh))
+   {
+  ee->prop.wm_rot.win_resize = EINA_FALSE;
+  wdata->wm_rot.configure_coming = EINA_FALSE;
+   }
+  }
+else if (wdata->wm_rot.request)
+  {
+ if ((wdata->wm_rot.configure_coming) &&
+ (ee->prop.wm_rot.w == nw) &&
+ (ee->prop.wm_rot.h == nh))
+   {
+  

[EGIT] [core/efl] master 07/17: ecore-wl2: Add API to set window preferred rotation

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 8b685a4d54785279af228056de7085e8cf60e6cc
Author: Chris Michael 
Date:   Fri Jun 9 09:47:40 2017 -0400

ecore-wl2: Add API to set window preferred rotation

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h | 11 +++
 src/lib/ecore_wl2/ecore_wl2_private.h |  1 +
 src/lib/ecore_wl2/ecore_wl2_window.c  |  7 +++
 3 files changed, 19 insertions(+)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index a37b228ba2..aa0374635c 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -1019,6 +1019,17 @@ EAPI void 
ecore_wl2_window_rotation_app_set(Ecore_Wl2_Window *window, Eina_Bool
 EAPI Eina_Bool ecore_wl2_window_rotation_app_get(Ecore_Wl2_Window *window);
 
 /**
+ * Set preferred rotation on a given window
+ *
+ * @param window
+ * @param rot
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_window_preferred_rotation_set(Ecore_Wl2_Window *window, 
int rot);
+
+/**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
  * @ingroup Ecore_Wl2_Group
  *
diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h 
b/src/lib/ecore_wl2/ecore_wl2_private.h
index 9687b7f22d..23b2985968 100644
--- a/src/lib/ecore_wl2/ecore_wl2_private.h
+++ b/src/lib/ecore_wl2/ecore_wl2_private.h
@@ -190,6 +190,7 @@ struct _Ecore_Wl2_Window
  {
 Eina_Bool supported : 1;
 Eina_Bool app_set : 1;
+int preferred_rot;
  } wm_rot;
 };
 
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 622cdea61d..951b8f79ee 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1241,3 +1241,10 @@ ecore_wl2_window_rotation_app_get(Ecore_Wl2_Window 
*window)
EINA_SAFETY_ON_NULL_RETURN_VAL(window, EINA_FALSE);
return window->wm_rot.app_set;
 }
+
+EAPI void
+ecore_wl2_window_preferred_rotation_set(Ecore_Wl2_Window *window, int rot)
+{
+   EINA_SAFETY_ON_NULL_RETURN(window);
+   window->wm_rot.preferred_rot = rot;
+}

-- 




[EGIT] [core/efl] master 06/17: ecore-wl2: Add API to get if an application has set window rotation

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 258c75e6418e5869f3d0919145780f8c76fa177b
Author: Chris Michael 
Date:   Fri Jun 9 09:38:00 2017 -0400

ecore-wl2: Add API to get if an application has set window rotation

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h| 12 
 src/lib/ecore_wl2/ecore_wl2_window.c |  7 +++
 2 files changed, 19 insertions(+)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index 34bf7574eb..a37b228ba2 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -1007,6 +1007,18 @@ EAPI Eina_Bool 
ecore_wl2_window_wm_rotation_supported_get(Ecore_Wl2_Window *wind
 EAPI void ecore_wl2_window_rotation_app_set(Ecore_Wl2_Window *window, 
Eina_Bool set);
 
 /**
+ * Get if an application has set window rotation
+ *
+ * @param window
+ *
+ * @return EINA_TRUE if set, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI Eina_Bool ecore_wl2_window_rotation_app_get(Ecore_Wl2_Window *window);
+
+/**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
  * @ingroup Ecore_Wl2_Group
  *
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 9b82a2fdf4..622cdea61d 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1234,3 +1234,10 @@ ecore_wl2_window_rotation_app_set(Ecore_Wl2_Window 
*window, Eina_Bool set)
EINA_SAFETY_ON_NULL_RETURN(window);
window->wm_rot.app_set = set;
 }
+
+EAPI Eina_Bool
+ecore_wl2_window_rotation_app_get(Ecore_Wl2_Window *window)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(window, EINA_FALSE);
+   return window->wm_rot.app_set;
+}

-- 




[EGIT] [core/efl] master 04/17: ecore-wl2: Add API to get if window manager rotation is supported

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit e12077adfa3bb6157c9757e6e4dba25822d41655
Author: Chris Michael 
Date:   Fri Jun 9 09:13:36 2017 -0400

ecore-wl2: Add API to get if window manager rotation is supported

This patch adds an API function which can be called to determine if
window manager rotation is supported.

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h| 12 
 src/lib/ecore_wl2/ecore_wl2_window.c |  7 +++
 2 files changed, 19 insertions(+)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index 6548a0c84d..bd832b35c2 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -984,6 +984,18 @@ EAPI void 
ecore_wl2_window_buffer_transform_set(Ecore_Wl2_Window *window, int tr
 EAPI void ecore_wl2_window_wm_rotation_supported_set(Ecore_Wl2_Window *window, 
Eina_Bool enabled);
 
 /**
+ * Get if window rotation is supported by the window manager
+ *
+ * @param window
+ *
+ * @return EINA_TRUE if supported, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI Eina_Bool ecore_wl2_window_wm_rotation_supported_get(Ecore_Wl2_Window 
*window);
+
+/**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
  * @ingroup Ecore_Wl2_Group
  *
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 26cdd7fd4e..ef5da9d86f 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1220,3 +1220,10 @@ 
ecore_wl2_window_wm_rotation_supported_set(Ecore_Wl2_Window *window, Eina_Bool e
EINA_SAFETY_ON_NULL_RETURN(window);
window->wm_rot.supported = enabled;
 }
+
+EAPI Eina_Bool
+ecore_wl2_window_wm_rotation_supported_get(Ecore_Wl2_Window *window)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(window, EINA_FALSE);
+   return window->wm_rot.supported;
+}

-- 




[EGIT] [core/efl] master 11/17: ecore-wl2: Add API and event for window rotation change prepare

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 92d214d8f908c6468fd2262cb0fece507a581873
Author: Chris Michael 
Date:   Fri Jun 9 10:27:54 2017 -0400

ecore-wl2: Add API and event for window rotation change prepare

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h| 11 +++
 src/lib/ecore_wl2/ecore_wl2.c|  5 -
 src/lib/ecore_wl2/ecore_wl2_window.c | 19 +++
 3 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index f3a8ddd402..08ae40b19d 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -276,6 +276,14 @@ typedef struct _Ecore_Wl2_Event_Output_Transform
int transform, old_transform;
 } Ecore_Wl2_Event_Output_Transform;
 
+typedef struct _Ecore_Wl2_Event_Window_Rotation
+{
+   Ecore_Wl2_Window *window;
+   int rotation, w, h;
+   Eina_Bool resize : 1;
+} Ecore_Wl2_Event_Window_Rotation;
+typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Prepare;
+
 typedef enum _Ecore_Wl2_Window_Type
 {
ECORE_WL2_WINDOW_TYPE_NONE,
@@ -317,6 +325,7 @@ EAPI extern int ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED; /** 
@since 1.20 */
 EAPI extern int ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED; /** @since 1.20 
*/
 EAPI extern int ECORE_WL2_EVENT_SEAT_SELECTION; /** @since 1.20 */
 EAPI extern int ECORE_WL2_EVENT_OUTPUT_TRANSFORM; /** @since 1.20 */
+EAPI extern int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE; /** @since 
1.20 */
 
 /**
  * @file
@@ -1067,6 +1076,8 @@ EAPI void 
ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, con
  */
 EAPI Eina_Bool ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window 
*window, int **rots, unsigned int count);
 
+EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window 
*window, int rot, int w, int h, Eina_Bool resize);
+
 /**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
  * @ingroup Ecore_Wl2_Group
diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c
index fa4a7747b8..01286d88fd 100644
--- a/src/lib/ecore_wl2/ecore_wl2.c
+++ b/src/lib/ecore_wl2/ecore_wl2.c
@@ -40,6 +40,7 @@ EAPI int ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED = 0;
 EAPI int ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED = 0;
 EAPI int ECORE_WL2_EVENT_SEAT_SELECTION = 0;
 EAPI int ECORE_WL2_EVENT_OUTPUT_TRANSFORM = 0;
+EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 0;
 
 EAPI int _ecore_wl2_event_window_www = -1;
 EAPI int _ecore_wl2_event_window_www_drag = -1;
@@ -109,6 +110,7 @@ ecore_wl2_init(void)
 ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED = ecore_event_type_new();
 ECORE_WL2_EVENT_SEAT_SELECTION = ecore_event_type_new();
 ECORE_WL2_EVENT_OUTPUT_TRANSFORM = ecore_event_type_new();
+ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 
ecore_event_type_new();
  }
if (!no_session_recovery)
  no_session_recovery = !!getenv("EFL_NO_WAYLAND_SESSION_RECOVERY");
@@ -166,7 +168,8 @@ ecore_wl2_shutdown(void)
   ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED,
   ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED,
   ECORE_WL2_EVENT_SEAT_SELECTION,
-  ECORE_WL2_EVENT_OUTPUT_TRANSFORM);
+  ECORE_WL2_EVENT_OUTPUT_TRANSFORM,
+  ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE);
 
/* shutdown Ecore_Event */
ecore_event_shutdown();
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 08b56ffe08..e4ded74569 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1288,3 +1288,22 @@ 
ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window, int **rots, u
 
return EINA_FALSE;
 }
+
+EAPI void
+ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window *window, int 
rot, int w, int h, Eina_Bool resize)
+{
+   Ecore_Wl2_Event_Window_Rotation_Change_Prepare *ev;
+
+   EINA_SAFETY_ON_NULL_RETURN(window);
+
+   ev = calloc(1, sizeof(Ecore_Wl2_Event_Window_Rotation_Change_Prepare));
+   if (!ev) return;
+
+   ev->window = window;
+   ev->rotation = rot;
+   ev->w = w;
+   ev->h = h;
+   ev->resize = resize;
+
+   ecore_event_add(ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE, ev, NULL, 
NULL);
+}

-- 




[EGIT] [core/efl] master 16/17: ecore-wl2: Fix window rotation event structure and various typos

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit d47538dc0e0f839caae248aca60fbf191862c6cd
Author: Chris Michael 
Date:   Fri Jun 9 11:01:03 2017 -0400

ecore-wl2: Fix window rotation event structure and various typos

As these events will be raised to ecore_evas_wl and the handlers there
do not pass along the Ecore_Evas as 'data', we need to change the type
of variable passed along in the event struture so that
ecore_event_window_match can be called to find the Ecore_Evas.

This patch also fixes some typos discovered during compile

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h|  4 ++--
 src/lib/ecore_wl2/ecore_wl2.c|  8 
 src/lib/ecore_wl2/ecore_wl2_window.c | 21 +++--
 3 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index 4e7faad254..daa46a1aa0 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -278,7 +278,7 @@ typedef struct _Ecore_Wl2_Event_Output_Transform
 
 typedef struct _Ecore_Wl2_Event_Window_Rotation
 {
-   Ecore_Wl2_Window *window;
+   unsigned int win;
int rotation, w, h, angle;
Eina_Bool resize : 1;
 } Ecore_Wl2_Event_Window_Rotation;
@@ -1081,7 +1081,7 @@ EAPI void 
ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, con
  * @ingroup Ecore_Wl2_Window_Group
  * @since 1.20
  */
-EAPI Eina_Bool ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window 
*window, int **rots, unsigned int count);
+EAPI Eina_Bool ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window 
*window, int **rots, unsigned int *count);
 
 EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window 
*window, int rot, int w, int h, Eina_Bool resize);
 EAPI void ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window 
*window, int rot);
diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c
index c8967d1f47..d206618d37 100644
--- a/src/lib/ecore_wl2/ecore_wl2.c
+++ b/src/lib/ecore_wl2/ecore_wl2.c
@@ -41,10 +41,10 @@ EAPI int ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED = 0;
 EAPI int ECORE_WL2_EVENT_SEAT_SELECTION = 0;
 EAPI int ECORE_WL2_EVENT_OUTPUT_TRANSFORM = 0;
 EAPI int ECORE_WL2_EVENT_WINDOW_ROTATE = 0;
-EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 0;
-EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE = 0;
-EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST = 0;
-EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_DONE = 0;
+EAPI int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 0;
+EAPI int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE = 0;
+EAPI int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST = 0;
+EAPI int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_DONE = 0;
 
 EAPI int _ecore_wl2_event_window_www = -1;
 EAPI int _ecore_wl2_event_window_www_drag = -1;
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 9d3823b354..618ebb8f5a 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1261,17 +1261,18 @@ 
ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, const int *ro
 {
EINA_SAFETY_ON_NULL_RETURN(window);
window->wm_rot.count = count;
-   window->wm_rot.available_rots = rots;
+   window->wm_rot.available_rots = (int *)rots;
 }
 
 EAPI Eina_Bool
-ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window, int **rots, 
unsigned int count)
+ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window, int **rots, 
unsigned int *count)
 {
-   int i = 0;
+   unsigned int i = 0;
int *val = NULL;
 
EINA_SAFETY_ON_NULL_RETURN_VAL(window, EINA_FALSE);
 
+   *rots = NULL;
*count = window->wm_rot.count;
 
if (window->wm_rot.count >= 1)
@@ -1299,7 +1300,7 @@ 
ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window *window, int rot,
ev = calloc(1, sizeof(Ecore_Wl2_Event_Window_Rotation_Change_Prepare));
if (!ev) return;
 
-   ev->window = window;
+   ev->win = window->id;
ev->rotation = rot;
ev->w = w;
ev->h = h;
@@ -1318,7 +1319,7 @@ 
ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window *window, int
ev = calloc(1, sizeof(Ecore_Wl2_Event_Window_Rotation_Change_Prepare_Done));
if (!ev) return;
 
-   ev->window = window;
+   ev->win = window->id;
ev->rotation = rot;
ev->w = 0;
ev->h = 0;
@@ -1331,14 +1332,14 @@ 
ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window *window, int
 EAPI void
 ecore_wl2_window_rotation_change_request_send(Ecore_Wl2_Window *window, int 
rot)
 {
-   Ecore_Wl2_Event_Window_Rotation_Change_Reqest *ev;
+   Ecore_Wl2_Event_Window_Rotation_Change_Request *ev;
 
EINA_SAFETY_ON_NULL_RETURN(window);
 
ev = calloc(1, 

[EGIT] [core/efl] master 15/17: ecore-wl2: Add event type for window rotate events

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 498691d5a3047842fe4e0c15442cf9c5b499679a
Author: Chris Michael 
Date:   Fri Jun 9 10:50:01 2017 -0400

ecore-wl2: Add event type for window rotate events

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h | 2 +-
 src/lib/ecore_wl2/ecore_wl2.c | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index f6342694bd..4e7faad254 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -279,7 +279,7 @@ typedef struct _Ecore_Wl2_Event_Output_Transform
 typedef struct _Ecore_Wl2_Event_Window_Rotation
 {
Ecore_Wl2_Window *window;
-   int rotation, w, h;
+   int rotation, w, h, angle;
Eina_Bool resize : 1;
 } Ecore_Wl2_Event_Window_Rotation;
 typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Prepare;
diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c
index f404972e54..c8967d1f47 100644
--- a/src/lib/ecore_wl2/ecore_wl2.c
+++ b/src/lib/ecore_wl2/ecore_wl2.c
@@ -40,6 +40,7 @@ EAPI int ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED = 0;
 EAPI int ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED = 0;
 EAPI int ECORE_WL2_EVENT_SEAT_SELECTION = 0;
 EAPI int ECORE_WL2_EVENT_OUTPUT_TRANSFORM = 0;
+EAPI int ECORE_WL2_EVENT_WINDOW_ROTATE = 0;
 EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 0;
 EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE = 0;
 EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST = 0;
@@ -113,6 +114,7 @@ ecore_wl2_init(void)
 ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED = ecore_event_type_new();
 ECORE_WL2_EVENT_SEAT_SELECTION = ecore_event_type_new();
 ECORE_WL2_EVENT_OUTPUT_TRANSFORM = ecore_event_type_new();
+ECORE_WL2_EVENT_WINDOW_ROTATE = ecore_event_type_new();
 ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 
ecore_event_type_new();
 ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE =
   ecore_event_type_new();
@@ -176,6 +178,7 @@ ecore_wl2_shutdown(void)
   ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED,
   ECORE_WL2_EVENT_SEAT_SELECTION,
   ECORE_WL2_EVENT_OUTPUT_TRANSFORM,
+  ECORE_WL2_EVENT_WINDOW_ROTATE,
   ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE,
   ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE,
   ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST,

-- 




[EGIT] [core/efl] master 09/17: ecore-wl2: Add API to set window available rotations

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit b1584c9054fad82f129a59bff126ec69cc0fcbc2
Author: Chris Michael 
Date:   Fri Jun 9 09:54:44 2017 -0400

ecore-wl2: Add API to set window available rotations

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h | 12 
 src/lib/ecore_wl2/ecore_wl2_private.h |  2 ++
 src/lib/ecore_wl2/ecore_wl2_window.c  |  8 
 3 files changed, 22 insertions(+)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index 1185780d72..8bd591ca5a 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -1042,6 +1042,18 @@ EAPI void 
ecore_wl2_window_preferred_rotation_set(Ecore_Wl2_Window *window, int
 EAPI int ecore_wl2_window_preferred_rotation_get(Ecore_Wl2_Window *window);
 
 /**
+ * Set a windows available rotations
+ *
+ * @param window
+ * @param rots
+ * @param count
+ *
+ * @ingroup Ecore_Wl2_Window_Group
+ * @since 1.20
+ */
+EAPI void ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, 
const int *rots, unsigned int count);
+
+/**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
  * @ingroup Ecore_Wl2_Group
  *
diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h 
b/src/lib/ecore_wl2/ecore_wl2_private.h
index 23b2985968..611db67fdf 100644
--- a/src/lib/ecore_wl2/ecore_wl2_private.h
+++ b/src/lib/ecore_wl2/ecore_wl2_private.h
@@ -191,6 +191,8 @@ struct _Ecore_Wl2_Window
 Eina_Bool supported : 1;
 Eina_Bool app_set : 1;
 int preferred_rot;
+int *available_rots;
+unsigned int count;
  } wm_rot;
 };
 
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 4d5733a684..29e3eae1dd 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1255,3 +1255,11 @@ ecore_wl2_window_preferred_rotation_get(Ecore_Wl2_Window 
*window)
EINA_SAFETY_ON_NULL_RETURN_VAL(window, 0);
return window->wm_rot.preferred_rot;
 }
+
+EAPI void
+ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, const int 
*rots, unsigned int count)
+{
+   EINA_SAFETY_ON_NULL_RETURN(window);
+   window->wm_rot.count = count;
+   window->wm_rot.available_rots = rots;
+}

-- 




[EGIT] [core/efl] master 12/17: ecore-wl2: Add API and Event for window rotation change prepare done

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit 3087f02ef296c172583cac96a5c783a787662596
Author: Chris Michael 
Date:   Fri Jun 9 10:39:00 2017 -0400

ecore-wl2: Add API and Event for window rotation change prepare done

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h|  3 +++
 src/lib/ecore_wl2/ecore_wl2.c|  6 +-
 src/lib/ecore_wl2/ecore_wl2_window.c | 20 
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index 08ae40b19d..96ccc848c0 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -283,6 +283,7 @@ typedef struct _Ecore_Wl2_Event_Window_Rotation
Eina_Bool resize : 1;
 } Ecore_Wl2_Event_Window_Rotation;
 typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Prepare;
+typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Prepare_Done;
 
 typedef enum _Ecore_Wl2_Window_Type
 {
@@ -326,6 +327,7 @@ EAPI extern int 
ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED; /** @since 1.20 */
 EAPI extern int ECORE_WL2_EVENT_SEAT_SELECTION; /** @since 1.20 */
 EAPI extern int ECORE_WL2_EVENT_OUTPUT_TRANSFORM; /** @since 1.20 */
 EAPI extern int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE; /** @since 
1.20 */
+EAPI extern int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE; /** 
@since 1.20 */
 
 /**
  * @file
@@ -1077,6 +1079,7 @@ EAPI void 
ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, con
 EAPI Eina_Bool ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window 
*window, int **rots, unsigned int count);
 
 EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window 
*window, int rot, int w, int h, Eina_Bool resize);
+EAPI void ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window 
*window, int rot);
 
 /**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c
index 01286d88fd..9390189943 100644
--- a/src/lib/ecore_wl2/ecore_wl2.c
+++ b/src/lib/ecore_wl2/ecore_wl2.c
@@ -41,6 +41,7 @@ EAPI int ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED = 0;
 EAPI int ECORE_WL2_EVENT_SEAT_SELECTION = 0;
 EAPI int ECORE_WL2_EVENT_OUTPUT_TRANSFORM = 0;
 EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 0;
+EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE = 0;
 
 EAPI int _ecore_wl2_event_window_www = -1;
 EAPI int _ecore_wl2_event_window_www_drag = -1;
@@ -111,6 +112,8 @@ ecore_wl2_init(void)
 ECORE_WL2_EVENT_SEAT_SELECTION = ecore_event_type_new();
 ECORE_WL2_EVENT_OUTPUT_TRANSFORM = ecore_event_type_new();
 ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 
ecore_event_type_new();
+ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE =
+  ecore_event_type_new();
  }
if (!no_session_recovery)
  no_session_recovery = !!getenv("EFL_NO_WAYLAND_SESSION_RECOVERY");
@@ -169,7 +172,8 @@ ecore_wl2_shutdown(void)
   ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED,
   ECORE_WL2_EVENT_SEAT_SELECTION,
   ECORE_WL2_EVENT_OUTPUT_TRANSFORM,
-  ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE);
+  ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE,
+  ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE);
 
/* shutdown Ecore_Event */
ecore_event_shutdown();
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index e4ded74569..03802a9f35 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1307,3 +1307,23 @@ 
ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window *window, int rot,
 
ecore_event_add(ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE, ev, NULL, 
NULL);
 }
+
+EAPI void
+ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window *window, 
int rot)
+{
+   Ecore_Wl2_Event_Window_Rotation_Change_Prepare_Done *ev;
+
+   EINA_SAFETY_ON_NULL_RETURN(window);
+
+   ev = calloc(1, sizeof(Ecore_Wl2_Event_Window_Rotation_Change_Prepare_Done));
+   if (!ev) return;
+
+   ev->window = window;
+   ev->rotation = rot;
+   ev->w = 0;
+   ev->h = 0;
+   ev->resize = 0;
+
+   ecore_event_add(ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE,
+   ev, NULL, NULL);
+}

-- 




[EGIT] [core/efl] master 01/17: ecore-x: Minor formatting fix

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit cd311db99096ecf549b6f1ae0ae9a7a17734e765
Author: Chris Michael 
Date:   Fri Jun 9 08:31:34 2017 -0400

ecore-x: Minor formatting fix

NB: No functional changes

Signed-off-by: Chris Michael 
---
 src/lib/ecore_x/ecore_x_e.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/lib/ecore_x/ecore_x_e.c b/src/lib/ecore_x/ecore_x_e.c
index 28645ad6f1..c6ca7545a8 100644
--- a/src/lib/ecore_x/ecore_x_e.c
+++ b/src/lib/ecore_x/ecore_x_e.c
@@ -2099,9 +2099,8 @@ ecore_x_e_window_rotation_supported_set(Ecore_X_Window 
root,
   , 1);
 if ((ret == 1) && (win))
   {
- ecore_x_window_prop_property_del(
-   root,
-   ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED);
+ ecore_x_window_prop_property_del
+   (root, ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED);
  ecore_x_window_free(win);
   }
  }

-- 




[EGIT] [core/efl] master 14/17: ecore-wl2: Add API and Event for window rotation change done

2017-06-09 Thread Christopher Michael
devilhorns pushed a commit to branch master.

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

commit b897780189a6bd8fb24446b3e636d177170aef5c
Author: Chris Michael 
Date:   Fri Jun 9 10:45:06 2017 -0400

ecore-wl2: Add API and Event for window rotation change done

@feature

Signed-off-by: Chris Michael 
---
 src/lib/ecore_wl2/Ecore_Wl2.h| 10 +++---
 src/lib/ecore_wl2/ecore_wl2.c|  5 -
 src/lib/ecore_wl2/ecore_wl2_window.c | 20 
 3 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index 1402c54100..f6342694bd 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -285,6 +285,7 @@ typedef struct _Ecore_Wl2_Event_Window_Rotation
 typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Prepare;
 typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Prepare_Done;
 typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Request;
+typedef struct _Ecore_Wl2_Event_Window_Rotation 
Ecore_Wl2_Event_Window_Rotation_Change_Done;
 
 typedef enum _Ecore_Wl2_Window_Type
 {
@@ -327,9 +328,11 @@ EAPI extern int ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED; /** 
@since 1.20 */
 EAPI extern int ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED; /** @since 1.20 
*/
 EAPI extern int ECORE_WL2_EVENT_SEAT_SELECTION; /** @since 1.20 */
 EAPI extern int ECORE_WL2_EVENT_OUTPUT_TRANSFORM; /** @since 1.20 */
-EAPI extern int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE; /** @since 
1.20 */
-EAPI extern int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE; /** 
@since 1.20 */
-EAPI extern int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST; /** @since 
1.20 */
+EAPI extern int ECORE_WL2_EVENT_WINDOW_ROTATE; /** @since 1.20 */
+EAPI extern int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE; /** @since 
1.20 */
+EAPI extern int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE; /** 
@since 1.20 */
+EAPI extern int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST; /** @since 
1.20 */
+EAPI extern int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_DONE; /** @since 1.20 */
 
 /**
  * @file
@@ -1083,6 +1086,7 @@ EAPI Eina_Bool 
ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window
 EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window 
*window, int rot, int w, int h, Eina_Bool resize);
 EAPI void ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window 
*window, int rot);
 EAPI void ecore_wl2_window_rotation_change_request_send(Ecore_Wl2_Window 
*window, int rot);
+EAPI void ecore_wl2_window_rotation_change_done_send(Ecore_Wl2_Window *window, 
int rot, int w, int h);
 
 /**
  * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c
index 03595f56b1..f404972e54 100644
--- a/src/lib/ecore_wl2/ecore_wl2.c
+++ b/src/lib/ecore_wl2/ecore_wl2.c
@@ -43,6 +43,7 @@ EAPI int ECORE_WL2_EVENT_OUTPUT_TRANSFORM = 0;
 EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 0;
 EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE = 0;
 EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST = 0;
+EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_DONE = 0;
 
 EAPI int _ecore_wl2_event_window_www = -1;
 EAPI int _ecore_wl2_event_window_www_drag = -1;
@@ -116,6 +117,7 @@ ecore_wl2_init(void)
 ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE =
   ecore_event_type_new();
 ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST = 
ecore_event_type_new();
+ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_DONE = ecore_event_type_new();
  }
if (!no_session_recovery)
  no_session_recovery = !!getenv("EFL_NO_WAYLAND_SESSION_RECOVERY");
@@ -176,7 +178,8 @@ ecore_wl2_shutdown(void)
   ECORE_WL2_EVENT_OUTPUT_TRANSFORM,
   ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE,
   ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE,
-  ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST);
+  ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST,
+  ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_DONE);
 
/* shutdown Ecore_Event */
ecore_event_shutdown();
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 9e44978f27..9d3823b354 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1347,3 +1347,23 @@ 
ecore_wl2_window_rotation_change_request_send(Ecore_Wl2_Window *window, int rot)
ecore_event_add(ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST,
ev, NULL, NULL);
 }
+
+EAPI void
+ecore_wl2_window_rotation_change_done_send(Ecore_Wl2_Window *window, int 

Re: [E-devel] server down

2017-06-09 Thread William L. Thomson Jr.
On Sat, 10 Jun 2017 00:29:51 +0900
Carsten Haitzler (The Rasterman)  wrote:
>
> gentoo has other issues like packages failing to install due to build
> errors (and trying to fix that takes 5, 10+ minutes each try as it's
> "build all the dependencies.. oh wait.. it still doesn't work ... 10
> mins later". it's an ordeal to update a kernel or anything where on
> most other distros it's a few seconds... redhat, debian, ubuntu even
> arch all have this be simple and just work in a matter of seconds...
> out of the box.

That is a result of a Gentoo system not properly maintained and people
looking to do things on Gentoo who are not as familiar. Which will make
small tasks take much longer.

Making a custom kernel on Gentoo is no different than other distros.
Some distros ship pre-build kernels. But unless you are running SuSE or
RHEL and buying certified hardware. You are just hoping the pre-built
kernel runs better than a custom compiled one.

> i have other things to do than to sink my days into server
> maintenance so if something takes 5, 10 or 15mins when it should take
> seconds... i'm going to be unhappy about it and looking for solutions
> that remove that problem as well as solve the issue at hand.

Server administration takes time. Over long periods of time it will
take less to maintain Gentoo being a rolling distro than most others.
Though binary rolling distros can be similar, you lose some flexibility.
Harder to turn off unwanted lights turned on.

> > I find it ironic how the suggestion of replacing Gentoo will cure
> > all problems. What if it does not? What if it is hardware? A new
> > distro will make no difference.  
> 
> unlike you, i've spent quite a lot of time looking at the problem and
> investigating how it wobbles. my bet is not on it being hardware at
> all based on how it behaves, manifests, keeps happening and how it
> gets fixed. my bets are host kernel and it's config. it could be
> hardware. it could also be witchcraft or satan himself, or a
> microscopic alien space craft zapping the cpu... i think i'll stick
> to suspicions based on investigation. :)

Unlike you I have extensive experience with Gentoo, custom kernels,
hosting, ken, kvm, qemu, etc. Not to mention systems administration. I
was looking into some systems administrator positions with some large
companies. Some who have thousands of Gentoo servers powering extremely
popular and widely used products.

I have a stack of SuperMicro servers in the other room with a variety
of odd hardware problems. I have seen lots of very strange hardware
issues. Which these problems sound more like hardware than software.
More so that I read in IRC backlog a kernel was updated and it did not
fix the issue sometime back.

> and prebuilt kernels where? try google for gentoo prebuilt kernel and
> good luck finding them or info on how to emerge them and not have to
> already have built your own bin pkgs... and back to the "time sink
> that is gentoo" where it is just the wrong thing for a server that
> isn't just a toy.

Gentoo does not provide pre-build kernels. Other than on livecd. There
is a reason. Gentoo is for extremely experienced administrators who may
be responsible for thousands of servers. I know of such deployments. It
makes me laugh when people who do not know make such comments about
Gentoo. It also shows lack of systems administration experience. Done
right Gentoo can save massive time.

Will Gentoo save you time on a single server. No.
Will it save you time on hundreds or thousands YES :)

For someone like me, adding in a single server with a few VMs to the
systems I already maintain is pretty trivial. I already have build
systems, custom profiles, ansible playbooks, etc. Just add it into the
systems I already maintain. It is really not a big deal or require lots
of time. Even to keep up to date. All my systems are updated weekly at
minimum, for close to 2 decades now.

> i'm not continuing this mail because it's also a waste of my time.

I would think that to apply to many things that you like to get
involved in. I wonder why you bother. Why not just say I care less
about the administration stuff. I just want the stuff to be up always.
Leave it to others, and you can not waste your time.

Either way its a trend, clock, gpg, servers, etc.

-- 
William L. Thomson Jr.


pgpQNB9uJb2XJ.pgp
Description: OpenPGP digital signature
--
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] server down

2017-06-09 Thread The Rasterman
On Fri, 9 Jun 2017 10:27:47 -0400 "William L. Thomson Jr." 
said:

> On Fri, 9 Jun 2017 16:49:17 +0900
> Carsten Haitzler (The Rasterman)  wrote:
> >
> > in this thread it's all about "just move to the cloud! and everything
> > will be fine"... if the only view is "run away run away" and not
> > actually fix the problem at the core (its a kernel bug with a custom
> > gentoo built kernel i'm 99% sure), then that's worse.
> > 
> 
> I think the same argument could me made.
> 
> "Just replace Gentoo and everything will be fine..."
> 
> If you feel its a custom kernel, replace it with a pre-build so called
> "well tested" kernel. I doubt it has anything to do with a custom
> kernel and/or the system running Gentoo... But there is nothing
> stopping you from running Gentoo under kernel built for another distro.

gentoo has other issues like packages failing to install due to build errors
(and trying to fix that takes 5, 10+ minutes each try as it's "build all the
dependencies.. oh wait.. it still doesn't work ... 10 mins later". it's an
ordeal to update a kernel or anything where on most other distros it's a few
seconds... redhat, debian, ubuntu even arch all have this be simple and just
work in a matter of seconds... out of the box.

i have other things to do than to sink my days into server maintenance so if
something takes 5, 10 or 15mins when it should take seconds... i'm going to be
unhappy about it and looking for solutions that remove that problem as well as
solve the issue at hand.

> I find it ironic how the suggestion of replacing Gentoo will cure all
> problems. What if it does not? What if it is hardware? A new distro
> will make no difference.

unlike you, i've spent quite a lot of time looking at the problem and
investigating how it wobbles. my bet is not on it being hardware at all based
on how it behaves, manifests, keeps happening and how it gets fixed. my bets
are host kernel and it's config. it could be hardware. it could also be
witchcraft or satan himself, or a microscopic alien space craft zapping the
cpu... i think i'll stick to suspicions based on investigation. :)

and prebuilt kernels where? try google for gentoo prebuilt kernel and good
luck finding them or info on how to emerge them and not have to already have
built your own bin pkgs... and back to the "time sink that is gentoo" where it
is just the wrong thing for a server that isn't just a toy.

i'm not continuing this mail because it's also a waste of my time.

-- 
- 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/02: elm_fileselector: this is not focusable

2017-06-09 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit a7985c1a867f76034e899b1e97e8334e0908
Author: Marcel Hollerbach 
Date:   Fri Jun 9 16:30:46 2017 +0200

elm_fileselector: this is not focusable

the widget is composed from focusable widgets the fileselector is not
focusable.
---
 src/lib/elementary/elc_fileselector.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elementary/elc_fileselector.c 
b/src/lib/elementary/elc_fileselector.c
index 9db4a64c78..167fc9c9f8 100644
--- a/src/lib/elementary/elc_fileselector.c
+++ b/src/lib/elementary/elc_fileselector.c
@@ -1868,7 +1868,7 @@ _elm_fileselector_efl_canvas_group_group_add(Eo *obj, 
Elm_Fileselector_Data *pri
 
efl_canvas_group_add(efl_super(obj, MY_CLASS));
elm_widget_sub_object_parent_add(obj);
-   elm_widget_can_focus_set(obj, EINA_TRUE);
+   elm_widget_can_focus_set(obj, EINA_FALSE);
 
priv->expand = !!_elm_config->fileselector_expand_enable;
priv->double_tap_navigation = 
!!_elm_config->fileselector_double_tap_navigation_enable;

-- 




[EGIT] [core/efl] master 02/02: elm_fileselector_entry: this does not need focus

2017-06-09 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit d110e4e8c3f974811af65fd9c865e8998b24327d
Author: Marcel Hollerbach 
Date:   Fri Jun 9 16:54:23 2017 +0200

elm_fileselector_entry: this does not need focus

its composed by focusable widgets, no need to focus them by themself
---
 src/lib/elementary/elc_fileselector_entry.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/lib/elementary/elc_fileselector_entry.c 
b/src/lib/elementary/elc_fileselector_entry.c
index 9c31c5e45a..0425de1e7b 100644
--- a/src/lib/elementary/elc_fileselector_entry.c
+++ b/src/lib/elementary/elc_fileselector_entry.c
@@ -367,8 +367,6 @@ _elm_fileselector_entry_efl_canvas_group_group_add(Eo *obj, 
Elm_Fileselector_Ent
 elm_layout_content_set(obj, "elm.swallow.entry", priv->entry);
  }
 
-   elm_widget_can_focus_set(obj, EINA_TRUE);
-
elm_layout_sizing_eval(obj);
 }
 

-- 




Re: [E-devel] server down

2017-06-09 Thread William L. Thomson Jr.
On Fri, 9 Jun 2017 16:49:17 +0900
Carsten Haitzler (The Rasterman)  wrote:
>
> in this thread it's all about "just move to the cloud! and everything
> will be fine"... if the only view is "run away run away" and not
> actually fix the problem at the core (its a kernel bug with a custom
> gentoo built kernel i'm 99% sure), then that's worse.
> 

I think the same argument could me made.

"Just replace Gentoo and everything will be fine..."

If you feel its a custom kernel, replace it with a pre-build so called
"well tested" kernel. I doubt it has anything to do with a custom
kernel and/or the system running Gentoo... But there is nothing
stopping you from running Gentoo under kernel built for another distro.

I find it ironic how the suggestion of replacing Gentoo will cure all
problems. What if it does not? What if it is hardware? A new distro
will make no difference.

-- 
William L. Thomson Jr.


pgpzIzgPVQ7Cx.pgp
Description: OpenPGP digital signature
--
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: eolian: prepare to defer all dependency parses

2017-06-09 Thread Daniel Kolesa
q66 pushed a commit to branch master.

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

commit 584e91d4f91bed3a39fca32740f5abbaa6ccd73e
Author: Daniel Kolesa 
Date:   Fri Jun 9 15:56:18 2017 +0200

eolian: prepare to defer all dependency parses

Dependencies are now going to be parsed strictly after the main
file, to allow proper dependency cycle behavior in all places. For
now there is correct parsing of deferred deps but they're not
queued yet.
---
 src/lib/eolian/eolian_database.c | 38 +++---
 1 file changed, 27 insertions(+), 11 deletions(-)

diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index 2850493e2c..f71691176d 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -688,27 +688,41 @@ _eolian_file_parse_nodep(const char *filepath)
return eo_parser_database_fill(eopath, !is_eo);
 }
 
-static Eolian_Unit unit_tmp;
-
-EAPI const Eolian_Unit *
-eolian_file_parse(const char *filepath)
-{
+static Eina_Bool
+_parse_deferred()
+{
+   Eina_Hash *defer = _defereos;
+   if (!defer || !eina_hash_population(defer))
+ return EINA_TRUE;
+   /* clean room for more deps for later parsing */
+   _defereos = eina_hash_string_small_new(NULL);
+   Eina_Iterator *itr = eina_hash_iterator_data_new(defer);
const char *dep;
-   if (!_eolian_file_parse_nodep(filepath))
- return NULL;
-   /* parse doc dependencies (deferred eo files) */
-   Eina_Iterator *itr = eina_hash_iterator_data_new(_defereos);
EINA_ITERATOR_FOREACH(itr, dep)
  {
 if (!_eolian_file_parse_nodep(dep))
   {
  eina_iterator_free(itr);
  eina_hash_free_buckets(_defereos);
- return NULL;
+ eina_hash_free(defer);
+ return EINA_FALSE;
   }
  }
eina_iterator_free(itr);
-   eina_hash_free_buckets(_defereos);
+   eina_hash_free(defer);
+   /* in case more deps were queued in, parse them */
+   return _parse_deferred();
+}
+
+static Eolian_Unit unit_tmp;
+
+EAPI const Eolian_Unit *
+eolian_file_parse(const char *filepath)
+{
+   if (!_eolian_file_parse_nodep(filepath))
+ return NULL;
+   if (!_parse_deferred())
+ return NULL;
return _tmp;
 }
 
@@ -716,6 +730,7 @@ static Eina_Bool _tfile_parse(const Eina_Hash *hash 
EINA_UNUSED, const void *key
 {
Eina_Bool *ret = fdata;
if (*ret) *ret = eo_parser_database_fill(data, EINA_TRUE);
+   if (*ret) *ret = _parse_deferred();
return *ret;
 }
 
@@ -735,6 +750,7 @@ static Eina_Bool _file_parse(const Eina_Hash *hash 
EINA_UNUSED, const void *key
 {
Eina_Bool *ret = fdata;
if (*ret) *ret = eo_parser_database_fill(data, EINA_FALSE);
+   if (*ret) *ret = _parse_deferred();
return *ret;
 }
 

-- 




[EGIT] [core/efl] master 01/01: Efl.Ui.Image.Zoomable: make zoomable to work with edj file

2017-06-09 Thread Amitesh Singh
ami pushed a commit to branch master.

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

commit 7a7fca0bf282300d67d1c114eb2de3741bff53e2
Author: Amitesh Singh 
Date:   Fri Jun 9 16:09:47 2017 +0900

Efl.Ui.Image.Zoomable: make zoomable to work with edj file

image.zoomable can load edj files now.

usage:
efl_file_set(zoomable, "../somefile.edj", "mygroupname");

test:
elm_test -> photocam
click "open" btn
select an edj file, it would show first group in selected edj file.

@feature
---
 src/bin/elementary/test_photocam.c |  15 +-
 src/lib/elementary/efl_ui_image_zoomable.c | 201 +
 src/lib/elementary/efl_ui_image_zoomable_private.h |   4 +-
 3 files changed, 137 insertions(+), 83 deletions(-)

diff --git a/src/bin/elementary/test_photocam.c 
b/src/bin/elementary/test_photocam.c
index 26c520ffcc..ed549c2865 100644
--- a/src/bin/elementary/test_photocam.c
+++ b/src/bin/elementary/test_photocam.c
@@ -133,8 +133,21 @@ my_bt_open(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info)
Evas_Object *ph = data;
const char *file = event_info;
 
-   if (file)
+   if (file && !eina_str_has_extension(file, ".edj"))
  elm_photocam_file_set(ph, file);
+   else if (file)
+ {
+Eina_List *grps = edje_file_collection_list(file);
+
+if (eina_list_count(grps) > 0)
+  {
+ efl_file_set(ph, file, eina_list_nth(grps, 0));
+ printf("Successfully set the edje file: %s, group: %s\n", file, 
eina_list_nth(grps, 0));
+  }
+else printf("Failed to set edje file\n");
+
+eina_list_free(grps);
+ }
 }
 
 static void
diff --git a/src/lib/elementary/efl_ui_image_zoomable.c 
b/src/lib/elementary/efl_ui_image_zoomable.c
index 13a3b285f2..6d0efdae2a 100644
--- a/src/lib/elementary/efl_ui_image_zoomable.c
+++ b/src/lib/elementary/efl_ui_image_zoomable.c
@@ -87,6 +87,7 @@ static Eina_Bool _key_action_move(Evas_Object *obj, const 
char *params);
 static Eina_Bool _key_action_zoom(Evas_Object *obj, const char *params);
 static void _efl_ui_image_zoomable_remote_copier_cancel(Eo *obj, 
Efl_Ui_Image_Zoomable_Data *sd);
 static Eina_Bool _internal_efl_ui_image_zoomable_icon_set(Evas_Object *obj, 
const char *name, Eina_Bool *fdo, Eina_Bool resize);
+static void _min_obj_size_get(Evas_Object *o, int *w, int *h);
 
 static const Elm_Action key_actions[] = {
{"move", _key_action_move},
@@ -1496,7 +1497,7 @@ _efl_ui_image_zoomable_efl_canvas_group_group_del(Eo 
*obj, Efl_Ui_Image_Zoomable
Efl_Ui_Image_Zoomable_Grid *g;
 
ecore_timer_del(sd->anim_timer);
-   ELM_SAFE_FREE(sd->icon_edje, evas_object_del);
+   ELM_SAFE_FREE(sd->edje, evas_object_del);
 
EINA_LIST_FREE(sd->grids, g)
  {
@@ -1577,14 +1578,108 @@ _efl_ui_image_zoomable_efl_image_image_size_get(Eo 
*obj EINA_UNUSED, Efl_Ui_Imag
if (h) *h = pd->size.imh;
 }
 
+static Eina_Bool
+_img_proxy_set(Evas_Object *obj, Efl_Ui_Image_Zoomable_Data *sd,
+   const char *file, const Eina_File *f, const char *group,
+   Eina_Bool resize)
+{
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   double tz;
+   int w, h;
+
+   sd->zoom = 1.0;
+   evas_object_image_smooth_scale_set(sd->img, (sd->no_smooth == 0));
+   evas_object_image_file_set(sd->img, NULL, NULL);
+   evas_object_image_source_set(sd->img, NULL);
+   evas_object_image_load_scale_down_set(sd->img, 0);
+
+   if (!sd->edje)
+ sd->edje = edje_object_add(evas_object_evas_get(obj));
+   if (!resize)
+ {
+if (f)
+  {
+ if (!edje_object_mmap_set(sd->edje, f, group))
+   {
+  ERR("failed to set edje file '%s', group '%s': %s", 
sd->file, group,
+  
edje_load_error_str(edje_object_load_error_get(sd->edje)));
+  return EINA_FALSE;
+   }
+  }
+else if (file)
+  {
+ if (!edje_object_file_set(sd->edje, file, group))
+   {
+  ERR("failed to set edje file '%s', group '%s': %s", file, 
group,
+  
edje_load_error_str(edje_object_load_error_get(sd->edje)));
+  return EINA_FALSE;
+   }
+  }
+ }
+
+   _min_obj_size_get(obj, , );
+   evas_object_resize(sd->edje, w, h);
+
+   evas_object_image_source_set(sd->img, sd->edje);
+   evas_object_image_source_visible_set(sd->img, EINA_FALSE);
+   evas_object_size_hint_min_set(sd->img, w, h);
+   evas_object_show(sd->img);
+   evas_object_show(sd->edje);
+
+   sd->do_region = 0;
+   sd->size.imw = w;
+   sd->size.imh = h;
+   sd->size.w = sd->size.imw / sd->zoom;
+   sd->size.h = sd->size.imh / sd->zoom;
+   evas_object_image_preload(sd->img, 0);
+   sd->main_load_pending = EINA_TRUE;
+
+   sd->calc_job = ecore_job_add(_calc_job_cb, obj);
+   efl_event_callback_legacy_call(obj, 

Re: [E-devel] [EGIT] [core/efl] master 01/04: Efl text: add Font, Format and Style interfaces

2017-06-09 Thread Daniel Hirt
Hello,
Gave it some thought. Sorry for the late reply.
Please see below.

On Tue, May 30, 2017 at 10:29 PM, Davide Andreoli 
wrote:

> 2017-05-29 7:07 GMT+02:00 Daniel Hirt :
> > Hello,
> >
> > On Mon, May 29, 2017 at 7:16 AM, Jean-Philippe André 
> > wrote:
> >
> >> On 29 May 2017 at 05:18, Davide Andreoli 
> wrote:
> >>
> >> > 2017-05-28 15:00 GMT+02:00 Daniel Hirt :
> >> > > herdsman pushed a commit to branch master.
> >> > >
> >> > > http://git.enlightenment.org/core/efl.git/commit/?id=
> >> > da2ef30f2b4d53aa3c1658b83c8c8381743469a0
> >> > >
> >> > > commit da2ef30f2b4d53aa3c1658b83c8c8381743469a0
> >> > > Author: Daniel Hirt 
> >> > > Date:   Mon May 22 17:36:41 2017 +0300
> >> > >
> >> > > Efl text: add Font, Format and Style interfaces
> >> > >
> >> > > The following text interfaces are added:
> >> > >   - Efl.Text.Font: font settings that decide which font to
> display
> >> in
> >> > > the text
> >> > >   - Efl.Text.Format: formatting that affects the looks and
> layout
> >> of
> >> > > the text
> >> > >   - Efl.Text.Style: decorations and overlays that shouldn't
> affect
> >> > the
> >> > > font choice or the layout
> >> > >
> >> > > @feature
> >> >
> >> > I think we have another namespacing issue here:
> >> > Efl.Text.Style do not use any namespace, while Efl.Text.Font and
> Format
> >> do,
> >> >
> >> > We discussed this already in chat today and we did not find a
> successfull
> >> > deal,
> >> > what I think at this point is that we really should find a rule to
> >> > apply to every Iface,
> >> > ...the problem is that we did not find any always-correct rule :(
> >> >
> >>
> >> In short, as I didn't follow that conversation, what were the arguments
> >> against namespacing "style"?
> >>
> >>
> > As I understand, it's not only about preventing clashes. Widgets are
> complex
> > objects, and having your widget doing:
> > widget.style_normal_color_set(...)
> >  isn't really better for the user. A better choice might be:
> > widget.text_style_normal_color_set(...)
>
> In real a more better name is "widget.text_normal_color_set(...)"
> the "style" prefix seems to me unneeded.
>
> This let me rise another question: do we really need this 3 interfaces
> to be splitted as they are? Isn't better to just provide a single
> "Efl.Text" iface ??
> Or I miss a use case where an object would need just 1 or 2 of them?
> If they can be merged we will simplify the problem and shortening
> function names.
>
>
Agree regarding the "style_" prefix. I will omit that.

The split is required so that if you want to add your own "Efl.Text" object,
you could just implement the basic functionality (text_set, get).
If you want a more enhanced object (like "Efl.Canvas.Text"), then you can go
ahead and use your own interfaces, or utilize the existing interfaces.
Note that interfaces are requires for documentation as well, and I wouldn't
want that, for example, "Elm.Layout" parts suggest they implement anything
other than "text_set/get".
This is why the split is a requirement, as I see it.

For bindings, there shouldn't be an issue:
foo.text_normal_color_set(r, g, b, a);
foo.text_set("hello");
(the interface's namespace isn't reflected in the usage for bindings)

As for EO, I will reduce the notation using eolian's "eo_prefix", so we do:
efl_text_normal_color_set(foo_obj, r, g, b, a);
(note that, again, this resides in the "Efl.Text.Style" interface)

This seems like a proper solution to make the text interface future-proof.

[snip]
--
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: elm_widget: add factory method to the widget

2017-06-09 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit af858d1d935f3507cb72f9d4a0f67fdfbb5b7463
Author: Marcel Hollerbach 
Date:   Thu Jun 8 23:52:37 2017 +0200

elm_widget: add factory method to the widget

with this function you can trap the creation of the mangers, and change
the behaviour as you need it. For example returning a custom manager.
---
 src/lib/elementary/efl_ui_win.c| 16 +---
 src/lib/elementary/efl_ui_win.eo   |  1 +
 src/lib/elementary/elm_hover.c | 16 +---
 src/lib/elementary/elm_hover.eo|  1 +
 src/lib/elementary/elm_interface_scrollable.c  | 15 +--
 src/lib/elementary/elm_interface_scrollable.eo |  3 ++-
 src/lib/elementary/elm_inwin.c | 18 +++---
 src/lib/elementary/elm_inwin.eo|  1 +
 src/lib/elementary/elm_menu.c  | 26 --
 src/lib/elementary/elm_menu.eo |  1 +
 src/lib/elementary/elm_widget.c|  8 
 src/lib/elementary/elm_widget.eo   | 10 ++
 12 files changed, 94 insertions(+), 22 deletions(-)

diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 37f55f3f58..62005bbc8d 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -5276,15 +5276,25 @@ _efl_ui_win_efl_canvas_object_legacy_ctor(Eo *obj, 
Efl_Ui_Win_Data *sd)
efl_canvas_object_legacy_ctor(efl_super(obj, MY_CLASS));
 }
 
+EOLIAN static Efl_Ui_Focus_Manager*
+_efl_ui_win_elm_widget_focus_manager_factory(Eo *obj EINA_UNUSED, 
Efl_Ui_Win_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *root)
+{
+   Efl_Ui_Focus_Manager *manager;
+
+   manager = efl_add(EFL_UI_FOCUS_MANAGER_CLASS, NULL,
+ efl_ui_focus_manager_root_set(efl_added, root)
+   );
+
+   return manager;
+}
+
 EOLIAN static Eo *
 _efl_ui_win_efl_object_constructor(Eo *obj, Efl_Ui_Win_Data *pd)
 {
/* Do nothing. */
/* XXX: We are calling the constructor chain from the finalizer. It's
 * really bad and hacky. Needs fixing. */
-   pd->manager = efl_add(EFL_UI_FOCUS_MANAGER_CLASS, obj,
-efl_ui_focus_manager_root_set(efl_added, obj)
-   );
+   pd->manager = elm_obj_widget_focus_manager_factory(obj, obj);
 
efl_composite_attach(obj, pd->manager);
 
diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo
index 86a529a15b..e520830be3 100644
--- a/src/lib/elementary/efl_ui_win.eo
+++ b/src/lib/elementary/efl_ui_win.eo
@@ -937,6 +937,7 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, 
Elm.Interface.Atspi.Window,
   Elm.Widget.theme_apply;
   Elm.Widget.on_focus;
   Elm.Widget.widget_event;
+  Elm.Widget.focus_manager_factory;
   Elm.Interface.Atspi_Accessible.parent { get; }
   Elm.Interface.Atspi_Accessible.state_set { get; }
   Elm.Interface.Atspi_Accessible.name { get; }
diff --git a/src/lib/elementary/elm_hover.c b/src/lib/elementary/elm_hover.c
index 22f40a3f27..c8eae1321a 100644
--- a/src/lib/elementary/elm_hover.c
+++ b/src/lib/elementary/elm_hover.c
@@ -687,6 +687,18 @@ elm_hover_add(Evas_Object *parent)
return obj;
 }
 
+EOLIAN static Efl_Ui_Focus_Manager*
+_elm_hover_elm_widget_focus_manager_factory(Eo *obj EINA_UNUSED, 
Elm_Hover_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *root)
+{
+   Efl_Ui_Focus_Manager *manager;
+
+   manager = efl_add(EFL_UI_FOCUS_MANAGER_CLASS, NULL,
+ efl_ui_focus_manager_root_set(efl_added, root)
+   );
+
+   return manager;
+}
+
 EOLIAN static Eo *
 _elm_hover_efl_object_constructor(Eo *obj, Elm_Hover_Data *pd)
 {
@@ -695,9 +707,7 @@ _elm_hover_efl_object_constructor(Eo *obj, Elm_Hover_Data 
*pd)
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
elm_interface_atspi_accessible_role_set(obj, ELM_ATSPI_ROLE_POPUP_MENU);
 
-   pd->manager = efl_add(EFL_UI_FOCUS_MANAGER_CLASS, NULL,
-efl_ui_focus_manager_root_set(efl_added, obj)
-   );
+   pd->manager = elm_obj_widget_focus_manager_factory(obj, obj);
 
efl_composite_attach(obj, pd->manager);
 
diff --git a/src/lib/elementary/elm_hover.eo b/src/lib/elementary/elm_hover.eo
index d8a3635c0f..8321a383a9 100644
--- a/src/lib/elementary/elm_hover.eo
+++ b/src/lib/elementary/elm_hover.eo
@@ -70,6 +70,7 @@ class Elm.Hover (Elm.Layout, Efl.Ui.Clickable, 
Elm.Interface.Atspi_Widget_Action
   Elm.Widget.focus_direction_manager_is;
   Elm.Widget.focus_next_manager_is;
   Elm.Widget.sub_object_del;
+  Elm.Widget.focus_manager_factory;
   Elm.Layout.sizing_eval;
   Elm.Layout.content_aliases { get; }
   Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
diff --git a/src/lib/elementary/elm_interface_scrollable.c 
b/src/lib/elementary/elm_interface_scrollable.c
index f008d0b6b0..961ad4e5a6 100644
--- 

Re: [E-devel] server down

2017-06-09 Thread The Rasterman
On Thu, 8 Jun 2017 22:03:28 -0700 Cedric BAIL  said:

> On Thu, Jun 8, 2017 at 7:24 PM, Andrew Williams  wrote:
> > "Simply not possible" is complete nonsense. We have a lot of intelligent
> > people on this list and replication is not an intangible problem any more.
> > How it's set up at the moment may make it harder but I think we're agreed
> > that something needs to change. The concept of any organisation running all
> > their infrastructure on a single host is quite laughable these days I'm
> > afraid. Is it time or money that's the problem? It's certainly not
> > technical limitations.
> 
> No, it is not indeed. Mysql and gitolite do support mirroring and with
> a high availability setup in front it would be perfectly doable. At
> this point it is time more than money that is needed. Migrating things
> to container and making them ready for high availability is highly

"simply not possible" as i said. to do it you need to HA across local nodes
(things with very low round trip time) because now everything you do has to
become a syncrhonous transaction across 2 or more hosts. if one host is e.org
and another is in some other datacenter we'll be paying for it in performance
all day every day in every commit or phab interaction etc.

if you don't do this and run async then you have conflict resolution issues to
solve. and then the extra hosting has to be set up, configured, managed and
paid for...

> time consuming. The additional hosting wouldn't even be necessary as
> we already have additional machine in France that can act as hot
> standby. We have the hardware, internet connexion and internet
> location to make this work.

but then you need to duplicate the entire setup to be able to RUN from there
and MAINTAIN it in a RUNNABLE state. you know how to do that? go for it... go
set it up now... hurry up. it'll save our servers! everything will be fine
then! :) it won't be. that's my point. we have a kernel issue because of imho a
custom gentoo kernel and going off to something "well tested and used widely"
should solve that. solve that and all of the anger goes away. we already have
disk-level redundancy. we don't need to run full hot failover like above and
pay the price across 2 machines in different locations. we really just need
regular backups (rsync every hour?) and in the very very very very rare case
our entire server goes down and the disks are totally inaccessible we have the
"last backup" somewhere else to start up from.

> Cedric
> 
> --
> 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] server down

2017-06-09 Thread The Rasterman
On Fri, 09 Jun 2017 02:24:52 + Andrew Williams  said:

> "Simply not possible" is complete nonsense. We have a lot of intelligent

good luck having git failover work where some commits are still pending in one
repo and not in another and reconcile those every day... you want to also run
the failover dns to do this? we don't run it... easydns does. use haproxy
across completely different sites... sure.. but then haproxy has to run
somewhere stable... oh it runs on e.org inside a vm... if e.org goes down then
everything goes down... if we move it elsewhere then if the elsewhere goes
down ... everything is down.

> people on this list and replication is not an intangible problem any more.
> How it's set up at the moment may make it harder but I think we're agreed
> that something needs to change. The concept of any organisation running all
> their infrastructure on a single host is quite laughable these days I'm
> afraid. Is it time or money that's the problem? It's certainly not
> technical limitations.

feeling trendy eh? this has worked for decades. it's not trendy. but it works.
has worked. it worked for a decade. still works except a super custom gentoo
system seems to have broken the "it just works" aspect of it. want to be
trendy? find yourself every year moving from trendy service a to b to c and
startups come and go and their rules change and lose control of your core
infra. who pays? "oh i'll donate a vm" now we keep having to ask to renew it or
if they get bored and disappear a vm owned by someone else and paid for by
someone else disappears or becomes inaccessible?

i've seen way to many people come and go to do something silly like that. we
have a free server with free service with no restrictions on its use. no
quotas. no bills. we have more resources than we really ever need. w'ere
wasting the resources by the bucket load and not running out.

we don't NEED more hosts. complexity hurts us, not helps. in fact our current
complexity hurts us. it's time to simplify. if we go spread ourselves across
"the cloud" we'll suffer even more.

> I agree that this needs sorted imminently but it will be a darn shame if we
> try to do hack sessions in Malta and we have no got server or ticket
> tracking etc...
> 
> Andy
> 
> On Thu, 8 Jun 2017 at 17:15, Carsten Haitzler  wrote:
> 
> > On Thu, 08 Jun 2017 18:17:32 + Andrew Williams 
> > said:
> >
> > > Hi team,
> > >
> > > I get that the server itself is not problematic but can we please agree
> > > that redundancy would be a good thing?
> > > There is no way that we should be comfortable with a single issue be able
> > > to take out our entire infrastructure.
> >
> > redundancy (mirrored to another machine) is simply not possible. it would
> > require then we have to keep in sync multiple git servers, mysql db's and
> > that
> > synchronisation would be broken when things go slow so any backup would
> > have
> > different data and we'd have a nightmare to reconcile things. we have full
> > data
> > redundancy at the filesystem/block layer (raid mirroring). the entire
> > infra is
> > not down. the host is still running just fine (e5).
> >
> > if we move some services to new hosts, that means then you just have some
> > things broken. if git still runs on e5 then git is down. whatever runs
> > there
> > will be down. moving everything is the same effort - in fact more, as
> > fixing
> > things to move to containers. and it's now far riskier a it will become
> > expensive as people have to pay for that hosting.
> >
> > so NO. no moving to other systems. it's not a solution. it's sticking your
> > head
> > in the sand and not resolving the issue we have.
> >
> > not a single person here ever says "hey - i'll help migrate it to a
> > container
> > on e5 and figure it out". it's always "hey hey - come over here and use the
> > vm/container/whatever hosting provider i already use".
> >
> > e.org was stable as all hell when it was simple. it was a single machine
> > (with
> > a spare we just never used because the main system never went down). it
> > had no
> > vm's. no containers. it just ran everything on a single shared system. it
> > worked a charm. it had no performance issues (other than it wasn't going to
> > have the spare grunt to run a CI/build server e.g. jenkins). our reason
> > for a
> > new system was to be able to do CI builds and support and fear that our old
> > machine would die (our drives were not raided at all back then)...
> >
> > i'm also getting impatient. at e dev day in 2 weeks lets sort this out and
> > actually get something done there and then. tbh i think at this point this
> > is
> > more important than just about any other topic there... and not to just
> > talk
> > about, but to actually do immediately. if a few people sit around
> > converting
> > what we have into something simpler (docker images? something else?) and
> > beber
> > helps get it set up and 

Re: [E-devel] server down

2017-06-09 Thread The Rasterman
On Fri, 09 Jun 2017 06:52:30 +0200 Jonathan Aquilina 
said:

> Carsten, I have expressed interest to help as an admin, but given the

i know. but in this thread it's all "just move to the cloud and everything will
be fine". it's a total distraction from the real issue. i've never seen this
kind of brokenness ever on linux, but i dont run custom kernels (haven't for
decades). fix the problem, don't avoid it as if "cloud is the answer". it's not.

> complex undocumented nature of the current setup and beber needing me to
> have a pgp which I only just got in all honesty Im scared to touch the
> server. Like others have said we need to simplify things and get rid of
> all this unnecessary complexity. Staying with VM's wont hurt anything.
> For all we know even if we go to docker containers we could still end up
> with the same instabilities like we are seeing with the current setup.
> 
> ---
> Regards, 
> 
> Jonathan Aquilina 
> 
> On 2017-06-09 02:15, Carsten Haitzler wrote:
> 
> > On Thu, 08 Jun 2017 18:17:32 + Andrew Williams 
> > said:
> > 
> >> Hi team,
> >> 
> >> I get that the server itself is not problematic but can we please agree
> >> that redundancy would be a good thing?
> >> There is no way that we should be comfortable with a single issue be able
> >> to take out our entire infrastructure.
> > 
> > redundancy (mirrored to another machine) is simply not possible. it would
> > require then we have to keep in sync multiple git servers, mysql db's and
> > that synchronisation would be broken when things go slow so any backup
> > would have different data and we'd have a nightmare to reconcile things. we
> > have full data redundancy at the filesystem/block layer (raid mirroring).
> > the entire infra is not down. the host is still running just fine (e5).
> > 
> > if we move some services to new hosts, that means then you just have some
> > things broken. if git still runs on e5 then git is down. whatever runs there
> > will be down. moving everything is the same effort - in fact more, as fixing
> > things to move to containers. and it's now far riskier a it will become
> > expensive as people have to pay for that hosting.
> > 
> > so NO. no moving to other systems. it's not a solution. it's sticking your
> > head in the sand and not resolving the issue we have.
> > 
> > not a single person here ever says "hey - i'll help migrate it to a
> > container on e5 and figure it out". it's always "hey hey - come over here
> > and use the vm/container/whatever hosting provider i already use".
> > 
> > e.org was stable as all hell when it was simple. it was a single machine
> > (with a spare we just never used because the main system never went down).
> > it had no vm's. no containers. it just ran everything on a single shared
> > system. it worked a charm. it had no performance issues (other than it
> > wasn't going to have the spare grunt to run a CI/build server e.g.
> > jenkins). our reason for a new system was to be able to do CI builds and
> > support and fear that our old machine would die (our drives were not raided
> > at all back then)...
> > 
> > i'm also getting impatient. at e dev day in 2 weeks lets sort this out and
> > actually get something done there and then. tbh i think at this point this
> > is more important than just about any other topic there... and not to just
> > talk about, but to actually do immediately. if a few people sit around
> > converting what we have into something simpler (docker images? something
> > else?) and beber helps get it set up and goes over what is set up and why
> > so we all understand better how it's glued together...
> > 
> > Thanks,
> > Andrew
> > 
> > On Thu, 8 Jun 2017 at 06:39 Carsten Haitzler  wrote:
> > 
> > On Thu, 08 Jun 2017 14:35:39 +0200 Jonathan Aquilina <
> > jaquil...@eagleeyet.net>
> > said:
> > 
> > Beber you have my pgp key through keybase.io's application even sent you
> > a chat message. Also I noticed you are coming to the dev summit in 2
> > weeks time. Any chance we can sit down during the weekend and sort out
> > the server? 
> > it's gotten far worse in recent times. like every day it needs a reboot
> > these
> > days...
> > 
> > ---
> > Regards,
> > 
> > Jonathan Aquilina
> > 
> > On 2017-06-08 14:21, Amitesh Singh wrote:
> > 
> > On Wed, Jun 7, 2017 at 11:25 PM, Mike Blumenkrantz <
> > michael.blumenkra...@gmail.com> wrote:
> > 
> > the new error page is an improvement at least 
> > Its down again :/
> > 
> > 
> > --
> > 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] server down

2017-06-09 Thread The Rasterman
On Thu, 8 Jun 2017 21:10:48 -0400 "William L. Thomson Jr." 
said:

> On Fri, 9 Jun 2017 09:15:14 +0900
> Carsten Haitzler (The Rasterman)  wrote:
> >
> > not a single person here ever says "hey - i'll help migrate it to a
> > container on e5 and figure it out". it's always "hey hey - come over
> > here and use the vm/container/whatever hosting provider i already
> > use".
> 
> I have offered to help with it as is, given I am quite familiar with
> Gentoo and kvm/qemu. I am not as familiar with containers. Which may
> not be necessary at this time to resolve any issues, and may come with
> its own. Container kernel and other issues can effect the host.

in this thread it's all about "just move to the cloud! and everything will be
fine"... if the only view is "run away run away" and not actually fix the
problem at the core (its a kernel bug with a custom gentoo built kernel i'm 99%
sure), then that's worse.

-- 
- 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/edi] master 01/01: welcome: Add support to clone a project from the welcome screen

2017-06-09 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=31d2d309809bef10a99bc0fb81cc447fa70a048f

commit 31d2d309809bef10a99bc0fb81cc447fa70a048f
Author: Andy Williams 
Date:   Thu Jun 8 23:13:02 2017 -0700

welcome: Add support to clone a project from the welcome screen

Also re-lay it out a little to be clearer :)
---
 src/bin/screens/edi_welcome.c | 134 +++---
 src/lib/edi_scm.c |  13 
 src/lib/edi_scm.h |  13 
 3 files changed, 114 insertions(+), 46 deletions(-)

diff --git a/src/bin/screens/edi_welcome.c b/src/bin/screens/edi_welcome.c
index a101643..0c2400a 100644
--- a/src/bin/screens/edi_welcome.c
+++ b/src/bin/screens/edi_welcome.c
@@ -252,21 +252,6 @@ _edi_skeleton_free(Edi_Skeleton *skel)
  }
 }
 
-static Edi_Skeleton *
-_edi_skeleton_from_name(const char *name)
-{
-   Eina_List *l;
-   Edi_Skeleton *skel;
-
-   EINA_LIST_FOREACH(_available_skeletons, l, skel)
- {
-if (!strcmp(skel->name, name))
-  return skel;
- }
-
-   return NULL;
-}
-
 static void
 _edi_skeletons_discover(const char *path)
 {
@@ -457,15 +442,58 @@ _edi_welcome_project_new_cb(void *data, Evas_Object *obj 
EINA_UNUSED, void *even
elm_table_pack(content, button, _EDI_WELCOME_PROJECT_NEW_TABLE_WIDTH - 2, 
row, 2, 1);
evas_object_smart_callback_add(button, "clicked", 
_edi_welcome_project_new_create_cb, NULL);
 
-   item = elm_naviframe_item_push(naviframe,
-"Create New Project",
-NULL,
-NULL,
-content,
-NULL);
-
+   item = elm_naviframe_item_push(naviframe, "Create New Project",
+  NULL, NULL, content, NULL);
elm_naviframe_item_title_enabled_set(item, EINA_TRUE, EINA_TRUE);
+}
+
+static void
+_edi_welcome_project_clone_click_cb(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   Evas_Object *entry;
+   const char *url, *parent, *name, *dir;
+   int status;
+
+   entry = elm_layout_content_get(_create_inputs[1], "elm.swallow.entry");
+   parent = elm_object_text_get(entry);
+   name = elm_object_text_get(_create_inputs[2]);
+   url = elm_object_text_get(_create_inputs[0]);
+
+   dir = edi_path_append(parent, name);
+   status = edi_scm_git_clone(url, dir);
+   if (status)
+ _edi_message_open("Unable to clone project, please check URL or try again 
later", EINA_TRUE);
+   else
+ _edi_welcome_project_open(dir, EINA_FALSE);
+}
+
+static void
+_edi_welcome_project_clone_cb(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
+{
+   Evas_Object *content, *button, *naviframe = data;
+   Elm_Object_Item *item;
+   int row = 0;
+
+   content = elm_table_add(naviframe);
+   elm_table_homogeneous_set(content, EINA_TRUE);
+   evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
+   evas_object_show(content);
+
+   _edi_welcome_project_new_input_row_add("Source Control URL", NULL, row++, 
content);
+   _edi_welcome_project_new_directory_row_add("Parent Path", row++, content);
+   _edi_welcome_project_new_input_row_add("Project Name", NULL, row++, 
content);
+
+   button = elm_button_add(content);
+   elm_object_text_set(button, "Checkout");
+   evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   evas_object_show(button);
+   elm_table_pack(content, button, _EDI_WELCOME_PROJECT_NEW_TABLE_WIDTH - 2, 
row, 2, 1);
+   evas_object_smart_callback_add(button, "clicked", 
_edi_welcome_project_clone_click_cb, NULL);
 
+   item = elm_naviframe_item_push(naviframe, "Checkout Existing Project",
+  NULL, NULL, content, NULL);
+   elm_naviframe_item_title_enabled_set(item, EINA_TRUE, EINA_TRUE);
 }
 
 static void
@@ -542,9 +570,28 @@ _edi_welcome_add_recent_projects(Evas_Object *box)
evas_object_show(list);
 }
 
+static Evas_Object *
+_edi_welcome_button_create(const char *title, const char *icon_name,
+   Evas_Object *parent, Evas_Smart_Cb func, void *data)
+{
+   Evas_Object *button, *icon;
+
+   button = elm_button_add(parent);
+   evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0.0);
+   _edi_create_button = button;
+   elm_object_text_set(button, title);
+   icon = elm_icon_add(button);
+   elm_icon_standard_set(icon, icon_name);
+   elm_object_part_content_set(button, "icon", icon);
+   evas_object_smart_callback_add(button, "clicked", func, data);
+   evas_object_show(button);
+
+   return button;
+}
+
 Evas_Object *edi_welcome_show()
 {
-   Evas_Object *win, *hbx, *box, *button, *icon, *frame, *image, *naviframe;
+   Evas_Object *win, *hbx, *box, *button, *frame, *image, *naviframe;
Elm_Object_Item *item;

[EGIT] [core/efl] master 02/02: map: Make sure efl_gfx_map_reset triggers a render

2017-06-09 Thread Jean-Philippe ANDRÉ
jpeg pushed a commit to branch master.

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

commit 65e8bf7f9f7671268e86299283897ed170b1a341
Author: Jean-Philippe Andre 
Date:   Fri Jun 9 15:08:23 2017 +0900

map: Make sure efl_gfx_map_reset triggers a render

Thanks again Jaehyun for reporting this!
---
 src/lib/evas/canvas/efl_gfx_map.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/efl_gfx_map.c 
b/src/lib/evas/canvas/efl_gfx_map.c
index 60672c7224..bb21a0999c 100644
--- a/src/lib/evas/canvas/efl_gfx_map.c
+++ b/src/lib/evas/canvas/efl_gfx_map.c
@@ -458,6 +458,7 @@ _efl_gfx_map_update(Eo *eo_obj)
m = _map_calc(eo_obj, obj, pd);
evas_object_map_set(eo_obj, m);
_evas_object_map_enable_set(eo_obj, obj, m != NULL);
+   obj->gfx_map_has = (m != NULL);
 }
 
 static inline void
@@ -513,7 +514,6 @@ _efl_gfx_map_map_reset(Eo *eo_obj, Efl_Gfx_Map_Data *pd)
_map_dirty(eo_obj, pd, EINA_TRUE);
MAPCOW_WRITE(pd, alpha, alpha);
MAPCOW_WRITE(pd, smooth, smooth);
-   obj->gfx_map_has = EINA_FALSE;
 }
 
 EOLIAN static int

-- 




  1   2   >