Discussion:
[EGIT] [core/enlightenment] enlightenment-0.20 02/72: update mailmap addresses
(too old to reply)
Chris Michael
2016-03-09 18:10:54 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit aa58760e2903ff7b8b06fc1fd3f6cef6a780e68e
Author: Chris Michael <***@osg.samsung.com>
Date: Tue Feb 2 15:02:12 2016 -0500

update mailmap addresses

Signed-off-by: Chris Michael <***@osg.samsung.com>
---
.mailmap | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/.mailmap b/.mailmap
index d055df3..0bb03a3 100644
--- a/.mailmap
+++ b/.mailmap
@@ -19,9 +19,8 @@ Tom Hacohen <***@stosb.com> Tom <***@stosb.com>
Gustavo Sverzut Barbieri <***@gmail.com> Gustavo Sverzut Barbieri <***@profusion.mobi>
Christopher Michael <***@comcast.net> Christopher Michael <***@comcast.net>
Christopher Michael <***@comcast.net> Christopher Michael <***@samsung.com>
-Christopher Michael <***@comcast.net> Christopher Michael <***@osg.samsung.com>
-Christopher Michael <***@comcast.net> Christopher Michael <***@samsung.com>
Christopher Michael <***@comcast.net> Christopher Michael <***@comcast.net>
+Christopher Michael <***@comcast.net> Christopher Michael <***@osg.samsung.com>
Sebastian Dransfeld <***@tango.flipp.net> Sebastian Dransfeld <***@sintef.no>
Sebastian Dransfeld <***@tango.flipp.net> sebastid <sebastid>
Mike Blumenkrantz <***@gmail.com> Mike Blumenkrantz <***@samsung.com>

--
Derek Foreman
2016-03-09 18:11:01 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit e8c332071261f43533553c9cec07aebf404cc8e3
Author: Derek Foreman <***@osg.samsung.com>
Date: Wed Feb 17 19:12:52 2016 -0600

Fix xdg-shell destructors

_e_shell_surface_destroy() is already the implementation's destructor, so
it'll be called when the surface is destroyed anyway. What we have to do
here is just call wl_resource_destroy(resource) - which will call that
function for us.

It'll also do us the favor of actually destroying the resource and
removing it from the client's resource list so we won't get a SECOND call
to _e_shell_surface_destroy() on client exit.
---
src/modules/wl_desktop_shell/e_mod_main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/modules/wl_desktop_shell/e_mod_main.c b/src/modules/wl_desktop_shell/e_mod_main.c
index a6245d8..748ba84 100644
--- a/src/modules/wl_desktop_shell/e_mod_main.c
+++ b/src/modules/wl_desktop_shell/e_mod_main.c
@@ -660,7 +660,7 @@ _e_xdg_shell_surface_configure_send(struct wl_resource *resource, uint32_t edges
static void
_e_xdg_shell_surface_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
{
- _e_shell_surface_destroy(resource);
+ wl_resource_destroy(resource);
}

static void
@@ -1173,7 +1173,7 @@ _e_xdg_shell_cb_surface_get(struct wl_client *client, struct wl_resource *resour
static void
_e_xdg_shell_popup_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
{
- _e_shell_surface_destroy(resource);
+ wl_resource_destroy(resource);
}

static const struct xdg_popup_interface _e_xdg_popup_interface =

--
Mike Blumenkrantz
2016-03-09 18:10:55 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 98b124850e3b6f813d8c44d3cdd18c5caaabb65e
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Thu Feb 4 12:57:12 2016 -0500

clamp minimum shelf size to 20px in shelf config

the majority of gadgets do not render correctly/anything under this size,
so allowing it to be set is not going to be helpful to anyone
---
src/bin/e_int_shelf_config.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_int_shelf_config.c b/src/bin/e_int_shelf_config.c
index 1771369..a6317df 100644
--- a/src/bin/e_int_shelf_config.c
+++ b/src/bin/e_int_shelf_config.c
@@ -92,7 +92,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata->fit_along = cfdata->escfg->fit_along;

/* size */
- cfdata->size = cfdata->escfg->size;
+ cfdata->size = MAX(cfdata->escfg->size, 20);

/* style */
if (cfdata->escfg->style)
@@ -207,7 +207,7 @@ _basic_create(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas, E_Config_Dialog_Data

/* size */
ol = e_widget_list_add(evas, 0, 0);
- ow = e_widget_slider_add(evas, 1, 0, _("%1.0f pixels"), 4, 256, 4, 0,
+ ow = e_widget_slider_add(evas, 1, 0, _("%1.0f pixels"), 20, 256, 4, 0,
NULL, &(cfdata->size), 100);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
ow = e_widget_check_add(evas, _("Shrink to Content Width"),

--
Derek Foreman
2016-03-09 18:11:03 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit c7027d4f444dcdce34baf98787c9affff2140c10
Author: Derek Foreman <***@osg.samsung.com>
Date: Wed Feb 17 13:34:31 2016 -0600

Use eina_list_merge instead of eina_list_move for wayland lists

We should use eina_list_merge for concatenating lists instead of
eina_list_move.
---
src/bin/e_comp_wl.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index dca2dfb..e8b307d 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1718,8 +1718,9 @@ _e_comp_wl_subsurface_commit_to_cache(E_Client *ec)
DBG("Subsurface Commit to Cache");

/* move pending damage to cached */
- EINA_LIST_FOREACH(cdata->pending.damages, l, rect)
- eina_list_move(&sdata->cached.damages, &cdata->pending.damages, rect);
+ sdata->cached.damages = eina_list_merge(sdata->cached.damages,
+ cdata->pending.damages);
+ cdata->pending.damages = NULL;

if (cdata->pending.new_attach)
{
@@ -1752,9 +1753,9 @@ _e_comp_wl_subsurface_commit_to_cache(E_Client *ec)
eina_tiler_rect_add(sdata->cached.input, rect);
eina_iterator_free(itr);

- EINA_LIST_FOREACH(cdata->pending.frames, l, cb)
- eina_list_move(&sdata->cached.frames, &cdata->pending.frames, cb);
-
+ sdata->cached.frames = eina_list_merge(sdata->cached.frames,
+ cdata->pending.frames);
+ cdata->pending.frames = NULL;
sdata->cached.has_data = EINA_TRUE;
}


--
Derek Foreman
2016-03-09 18:10:58 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 209cf8f9d775bf272722aa419d617a5f06db3497
Author: Derek Foreman <***@osg.samsung.com>
Date: Tue Feb 16 16:41:03 2016 -0500

Ensure wayland clients haven't been deleted when processing callbacks

Summary:
It's apparently possible to trigger at least some of these by interacting
with a client as it's closing, so add a bunch of checks.

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3699
---
src/bin/e_comp_wl.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index cd4a0c5..11c8472 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -108,7 +108,7 @@ _e_comp_wl_evas_cb_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EIN
Eina_List *l;

if (!(ec = data)) return;
- if (e_object_is_del(data)) return;
+ if (e_object_is_del(E_OBJECT(ec))) return;

if (!ec->override) e_hints_window_visible_set(ec);

@@ -182,6 +182,7 @@ _e_comp_wl_evas_cb_mouse_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *ob
uint32_t serial;

if (!(ec = data)) return;
+ if (e_object_is_del(E_OBJECT(ec))) return;
if (ec->cur_mouse_action) return;
/* FIXME? this is a hack to just reset the cursor whenever we mouse out. not sure if accurate */
{
@@ -315,6 +316,7 @@ _e_comp_wl_evas_cb_multi_down(void *data, Evas *evas EINA_UNUSED, Evas_Object *o
Evas_Event_Multi_Down *ev = event;
wl_fixed_t x, y;

+ if (e_object_is_del(E_OBJECT(ec))) return;
if (!ec->comp_data->surface) return;

wc = wl_resource_get_client(ec->comp_data->surface);
@@ -342,6 +344,7 @@ _e_comp_wl_evas_cb_multi_up(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj
E_Client *ec = data;
Evas_Event_Multi_Up *ev = event;

+ if (e_object_is_del(E_OBJECT(ec))) return;
if (!ec->comp_data->surface) return;

wc = wl_resource_get_client(ec->comp_data->surface);
@@ -365,6 +368,7 @@ _e_comp_wl_evas_cb_multi_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *o
Evas_Event_Multi_Move *ev = event;
wl_fixed_t x, y;

+ if (e_object_is_del(E_OBJECT(ec))) return;
if (!ec->comp_data->surface) return;

wc = wl_resource_get_client(ec->comp_data->surface);
@@ -504,8 +508,7 @@ _e_comp_wl_evas_cb_focus_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *ob
double t;

if (!(ec = data)) return;
-
- if (!ec->comp_data) return;
+ if (e_object_is_del(E_OBJECT(ec))) return;

E_FREE_FUNC(ec->comp_data->on_focus_timer, ecore_timer_del);

@@ -537,6 +540,7 @@ _e_comp_wl_evas_cb_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EIN
E_Client *sec, *ec = data;
Eina_List *l, *ll;

+ if (e_object_is_del(E_OBJECT(ec))) return;
if (!ec->comp_data->sub.list) return;
EINA_LIST_FOREACH(ec->comp_data->sub.list, l, sec)
evas_object_layer_set(sec->frame, evas_object_layer_get(ec->frame));
@@ -557,6 +561,7 @@ _e_comp_wl_evas_cb_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_U
E_Client *sec, *ec = data;
Eina_List *l;

+ if (e_object_is_del(E_OBJECT(ec))) return;
EINA_LIST_FOREACH(ec->comp_data->sub.list, l, sec)
{
if (!sec->comp_data->sub.data->position.set)
@@ -571,6 +576,7 @@ _e_comp_wl_evas_cb_resize(void *data, Evas_Object *obj EINA_UNUSED, void *event
E_Client *ec;

if (!(ec = data)) return;
+ if (e_object_is_del(E_OBJECT(ec))) return;

if ((ec->shading) || (ec->shaded)) return;
if (!ec->comp_data->shell.configure_send) return;
@@ -689,6 +695,7 @@ _e_comp_wl_evas_cb_ping(void *data, Evas_Object *obj EINA_UNUSED, void *event EI
E_Client *ec;

if (!(ec = data)) return;
+ if (e_object_is_del(E_OBJECT(ec))) return;
if (!(ec->comp_data->shell.ping)) return;
if (!(ec->comp_data->shell.surface)) return;


--
Derek Foreman
2016-03-09 18:11:04 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 1a6dac4677e550b639a1d986770b5d144dcd3034
Author: Derek Foreman <***@osg.samsung.com>
Date: Thu Feb 11 17:07:16 2016 -0600

Move pixmap free to client free from client destroy

Under wayland we need the pixmaps to exist until after the close
animations finish, even if clients can perform new rendering.

@fix
---
src/bin/e_client.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 7235374..2d2d7fb 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -462,6 +462,10 @@ _e_client_revert_focus(E_Client *ec)
static void
_e_client_free(E_Client *ec)
{
+ if (e_pixmap_free(ec->pixmap))
+ e_pixmap_client_set(ec->pixmap, NULL);
+ ec->pixmap = NULL;
+
e_comp_object_redirected_set(ec->frame, 0);
e_comp_object_render_update_del(ec->frame);

@@ -663,9 +667,6 @@ _e_client_del(E_Client *ec)
eina_hash_del_by_key(clients_hash[e_pixmap_type_get(ec->pixmap)], &ec->pixmap);
e_comp->clients = eina_list_remove(e_comp->clients, ec);
e_comp_object_render_update_del(ec->frame);
- if (e_pixmap_free(ec->pixmap))
- e_pixmap_client_set(ec->pixmap, NULL);
- ec->pixmap = NULL;
}

///////////////////////////////////////////

--
Derek Foreman
2016-03-09 18:11:05 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 2904c7a6116c3bb19eb0577ccea275ca390c0ac3
Author: Derek Foreman <***@osg.samsung.com>
Date: Thu Feb 18 10:14:38 2016 -0600

Bump wayland version requirement

We need 1.10 for the shm pool referencing api
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 3cc5d48..5360d49 100644
--- a/configure.ac
+++ b/configure.ac
@@ -742,7 +742,7 @@ AC_MSG_CHECKING([whether wayland EGL support is enabled])
AC_MSG_RESULT([${e_cv_want_wayland_egl}])

if test "x${e_cv_want_wayland_only}" != "xno" ;then
- PKG_CHECK_MODULES([WAYLAND], [ecore-wl2 wayland-server >= 1.8.0 wayland-client >= 1.8.0 xkbcommon uuid],
+ PKG_CHECK_MODULES([WAYLAND], [ecore-wl2 wayland-server >= 1.10.0 wayland-client >= 1.10.0 xkbcommon uuid],
[
have_wayland=yes
AC_DEFINE_UNQUOTED([HAVE_WAYLAND],[1],[enable wayland support])

--
Derek Foreman
2016-03-09 18:11:00 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit f8be94f19eb6b675172e747cafff995dc67a18c5
Author: Derek Foreman <***@osg.samsung.com>
Date: Wed Feb 17 13:38:33 2016 -0600

Remove wayland frame callbacks from subsurface cache on destruction

There are 3 places a frame callback could be hiding. frames list,
pending.frames list, or subsurface cached.frames list. We weren't
clearing it from the subsurface cache on destruction.
---
src/bin/e_comp_wl.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 11c8472..802d25d 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1305,6 +1305,11 @@ _e_comp_wl_frame_cb_destroy(struct wl_resource *resource)

ec->comp_data->pending.frames =
eina_list_remove(ec->comp_data->pending.frames, resource);
+
+ if (!ec->comp_data->sub.data) return;
+
+ ec->comp_data->sub.data->cached.frames =
+ eina_list_remove(ec->comp_data->sub.data->cached.frames, resource);
}

static void

--
Mike Blumenkrantz
2016-03-09 18:11:08 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 1a71696c3a6b344d75461f31ed46b50335fd158e
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Fri Feb 19 17:56:26 2016 -0500

pre-remove pixmap from x11 clients during del hook

this breaks the compositor!

ref 0ca200513e4d46542192762ffdc2481a32e8db63
---
src/bin/e_client.c | 11 +++++++----
src/bin/e_comp_x.c | 7 +++++++
2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 2d2d7fb..bd490b4 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -462,9 +462,12 @@ _e_client_revert_focus(E_Client *ec)
static void
_e_client_free(E_Client *ec)
{
- if (e_pixmap_free(ec->pixmap))
- e_pixmap_client_set(ec->pixmap, NULL);
- ec->pixmap = NULL;
+ if (ec->pixmap)
+ {
+ if (e_pixmap_free(ec->pixmap))
+ e_pixmap_client_set(ec->pixmap, NULL);
+ ec->pixmap = NULL;
+ }

e_comp_object_redirected_set(ec->frame, 0);
e_comp_object_render_update_del(ec->frame);
@@ -639,6 +642,7 @@ _e_client_del(E_Client *ec)
evas_object_focus_set(ec->frame, 0);

E_FREE_FUNC(ec->ping_poller, ecore_poller_del);
+ eina_hash_del_by_key(clients_hash[e_pixmap_type_get(ec->pixmap)], &ec->pixmap);
/* must be called before parent/child clear */
_e_client_hook_call(E_CLIENT_HOOK_DEL, ec);
E_FREE(ec->comp_data);
@@ -664,7 +668,6 @@ _e_client_del(E_Client *ec)
EINA_LIST_FREE(ec->group, child)
child->leader = NULL;

- eina_hash_del_by_key(clients_hash[e_pixmap_type_get(ec->pixmap)], &ec->pixmap);
e_comp->clients = eina_list_remove(e_comp->clients, ec);
e_comp_object_render_update_del(ec->frame);
}
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 10d8efc..d5ec68c 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -4621,7 +4621,14 @@ _e_comp_x_hook_client_del(void *d EINA_UNUSED, E_Client *ec)
e_pixmap_free(e_comp_x_client_pixmap_get(ec));
}
}
+ else
#endif
+ {
+ if (e_pixmap_free(ec->pixmap))
+ e_pixmap_client_set(ec->pixmap, NULL);
+ ec->pixmap = NULL;
+ }
+
if (post_clients)
post_clients = eina_list_remove(post_clients, ec);


--
Derek Foreman
2016-03-09 18:11:06 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 5143ed69de2036f26eabe1762e2557a1e4fd7d52
Author: Derek Foreman <***@osg.samsung.com>
Date: Thu Feb 18 12:40:52 2016 -0600

Remove wayland focus timer in delete callback

If we don't remove it now it could fire later when the structures
it depends on are already freed.
---
src/bin/e_comp_wl.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index e8b307d..328371c 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -2241,6 +2241,9 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, E_Client *ec)
/* make sure this is a wayland client */
if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) return;

+ /* remove focus timer */
+ E_FREE_FUNC(ec->comp_data->on_focus_timer, ecore_timer_del);
+
/* remove sub list */
EINA_LIST_FREE(ec->comp_data->sub.list, subc)
subc->comp_data->sub.data->parent = NULL;

--
Mike Blumenkrantz
2016-03-09 18:11:07 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 048eed94021f3989fda19a0a3b4ac4040793ef03
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Fri Feb 19 17:05:17 2016 -0500

reshuffle x11 comp init to cleanup on failure cases

in the event of a wayland start, x11 comp init will fail, meaning that
cleanup must occur in order to avoid erroneous triggering of x11 handlers

#TooSoon
---
src/bin/e_comp_x.c | 74 ++++++++++++++++++++++++++++--------------------------
1 file changed, 39 insertions(+), 35 deletions(-)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index d9de9d2..10d8efc 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -5331,6 +5331,7 @@ _e_comp_x_screens_setup(void)
E_API Eina_Bool
e_comp_x_init(void)
{
+ Eina_List *h = NULL;
if (!ecore_x_init(NULL))
{
e_error_message_show(_("Enlightenment cannot initialize Ecore_X!\n"));
@@ -5358,12 +5359,40 @@ e_comp_x_init(void)
"or Ecore was built without XDamage support."));
return EINA_FALSE;
}
+ if (!e_atoms_init()) return 0;

clients_win_hash = eina_hash_int32_new(NULL);
damages_hash = eina_hash_int32_new(NULL);
alarm_hash = eina_hash_int32_new(NULL);
frame_extents = eina_hash_string_superfast_new(free);

+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_DESK_SET, _e_comp_x_hook_client_desk_set, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_RESIZE_BEGIN, _e_comp_x_hook_client_resize_begin, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_RESIZE_END, _e_comp_x_hook_client_resize_end, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_MOVE_BEGIN, _e_comp_x_hook_client_move_begin, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_MOVE_END, _e_comp_x_hook_client_move_end, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_DEL, _e_comp_x_hook_client_del, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_NEW_CLIENT, _e_comp_x_hook_client_new, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_EVAL_FETCH, _e_comp_x_hook_client_fetch, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_EVAL_PRE_FRAME_ASSIGN, _e_comp_x_hook_client_pre_frame_assign, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_UNREDIRECT, _e_comp_x_hook_client_unredirect, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_REDIRECT, _e_comp_x_hook_client_redirect, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_EVAL_POST_NEW_CLIENT, _e_comp_x_hook_client_post_new_client, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_FOCUS_SET, _e_comp_x_hook_client_focus_set, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_FOCUS_UNSET, _e_comp_x_hook_client_focus_unset, NULL));
+ h = eina_list_append(h, e_client_hook_add(E_CLIENT_HOOK_EVAL_END, _e_comp_x_hook_client_eval_end, NULL));
+
+ if (!_e_comp_x_screens_setup())
+ {
+ e_atoms_shutdown();
+ E_FREE_LIST(h, e_client_hook_del);
+ E_FREE_FUNC(clients_win_hash, eina_hash_free);
+ E_FREE_FUNC(damages_hash, eina_hash_free);
+ E_FREE_FUNC(alarm_hash, eina_hash_free);
+ E_FREE_FUNC(frame_extents, eina_hash_free);
+ return 0;
+ }
+
E_LIST_HANDLER_APPEND(handlers, E_EVENT_COMP_OBJECT_ADD, _e_comp_x_object_add, NULL);

E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_WINDOW_DESTROY, _e_comp_x_destroy, NULL);
@@ -5425,42 +5454,8 @@ e_comp_x_init(void)
if (!backlight_atom)
backlight_atom = ecore_x_atom_get("BACKLIGHT");

- if (e_comp->comp_type != E_PIXMAP_TYPE_WL)
- {
- ecore_x_screensaver_event_listen_set(1);
- E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_SCREENSAVER_NOTIFY, _e_comp_x_screensaver_notify_cb, NULL);
- ecore_x_screensaver_custom_blanking_enable();
-
- e_screensaver_attrs_set(ecore_x_screensaver_timeout_get(),
- ecore_x_screensaver_blank_get(),
- ecore_x_screensaver_expose_get());
- }
ecore_x_passive_grab_replay_func_set(_e_comp_x_grab_replay, NULL);

- e_client_hook_add(E_CLIENT_HOOK_DESK_SET, _e_comp_x_hook_client_desk_set, NULL);
- e_client_hook_add(E_CLIENT_HOOK_RESIZE_BEGIN, _e_comp_x_hook_client_resize_begin, NULL);
- e_client_hook_add(E_CLIENT_HOOK_RESIZE_END, _e_comp_x_hook_client_resize_end, NULL);
- e_client_hook_add(E_CLIENT_HOOK_MOVE_BEGIN, _e_comp_x_hook_client_move_begin, NULL);
- e_client_hook_add(E_CLIENT_HOOK_MOVE_END, _e_comp_x_hook_client_move_end, NULL);
- e_client_hook_add(E_CLIENT_HOOK_DEL, _e_comp_x_hook_client_del, NULL);
- e_client_hook_add(E_CLIENT_HOOK_NEW_CLIENT, _e_comp_x_hook_client_new, NULL);
- e_client_hook_add(E_CLIENT_HOOK_EVAL_FETCH, _e_comp_x_hook_client_fetch, NULL);
- e_client_hook_add(E_CLIENT_HOOK_EVAL_PRE_FRAME_ASSIGN, _e_comp_x_hook_client_pre_frame_assign, NULL);
- e_client_hook_add(E_CLIENT_HOOK_UNREDIRECT, _e_comp_x_hook_client_unredirect, NULL);
- e_client_hook_add(E_CLIENT_HOOK_REDIRECT, _e_comp_x_hook_client_redirect, NULL);
- e_client_hook_add(E_CLIENT_HOOK_EVAL_POST_NEW_CLIENT, _e_comp_x_hook_client_post_new_client, NULL);
- e_client_hook_add(E_CLIENT_HOOK_FOCUS_SET, _e_comp_x_hook_client_focus_set, NULL);
- e_client_hook_add(E_CLIENT_HOOK_FOCUS_UNSET, _e_comp_x_hook_client_focus_unset, NULL);
- e_client_hook_add(E_CLIENT_HOOK_EVAL_END, _e_comp_x_hook_client_eval_end, NULL);
-
- if (e_comp->comp_type != E_PIXMAP_TYPE_WL)
- {
- e_desklock_show_hook_add(_e_comp_x_desklock_show);
- e_desklock_hide_hook_add(_e_comp_x_desklock_hide);
- }
-
- if (!e_atoms_init()) return 0;
- if (!_e_comp_x_screens_setup()) return EINA_FALSE;
if (!e_xsettings_init())
e_error_message_show(_("Enlightenment cannot initialize the XSettings system.\n"));
E_LIST_HANDLER_APPEND(handlers, E_EVENT_RANDR_CHANGE, _e_comp_x_randr_change, NULL);
@@ -5470,6 +5465,15 @@ e_comp_x_init(void)

if (e_comp->comp_type != E_PIXMAP_TYPE_WL)
{
+ ecore_x_screensaver_event_listen_set(1);
+ E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_SCREENSAVER_NOTIFY, _e_comp_x_screensaver_notify_cb, NULL);
+ ecore_x_screensaver_custom_blanking_enable();
+
+ e_screensaver_attrs_set(ecore_x_screensaver_timeout_get(),
+ ecore_x_screensaver_blank_get(),
+ ecore_x_screensaver_expose_get());
+ e_desklock_show_hook_add(_e_comp_x_desklock_show);
+ e_desklock_hide_hook_add(_e_comp_x_desklock_hide);
int timeout = e_screensaver_timeout_get(EINA_TRUE);
ecore_x_screensaver_set(timeout + 10,
0,
@@ -5482,7 +5486,7 @@ e_comp_x_init(void)
}
else
e_dnd_init();
-
+ eina_list_free(h);
return EINA_TRUE;
}


--
Mike Blumenkrantz
2016-03-09 18:11:11 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 2e692ace583ce93c3de2027f6d418b0850271c3e
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Wed Feb 24 12:50:14 2016 -0500

redo wayland pixmap ids to use monotonic decreasing ints with no collisions

using pointers for this turned out to have some corner case collisions, so
now just use something totally unrelated to the surface to ensure uniqueness
---
src/bin/e_comp_wl.c | 11 +++++++++--
src/bin/e_pixmap.c | 26 +++++++++++++-------------
src/bin/e_pixmap.h | 2 +-
3 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 328371c..5e43891 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -39,6 +39,8 @@ static void _e_comp_wl_subsurface_parent_commit(E_Client *ec, Eina_Bool parent_s
static Eina_List *handlers = NULL;
static double _last_event_time = 0.0;

+static int64_t surface_id = 0;
+
/* local functions */
static void
_e_comp_wl_configure_send(E_Client *ec, Eina_Bool edges)
@@ -1487,10 +1489,15 @@ _e_comp_wl_compositor_cb_surface_create(struct wl_client *client, struct wl_reso
ec = e_pixmap_find_client(E_PIXMAP_TYPE_WL, (uintptr_t)id);
if (!ec)
{
- E_Pixmap *ep;
+ E_Pixmap *ep = NULL;

/* try to create new pixmap */
- if (!(ep = e_pixmap_new(E_PIXMAP_TYPE_WL, res)))
+ do
+ {
+ if (--surface_id >= 0) surface_id = -1;
+ ep = e_pixmap_find(E_PIXMAP_TYPE_WL, surface_id);
+ } while (ep);
+ if (!(ep = e_pixmap_new(E_PIXMAP_TYPE_WL, surface_id)))
{
ERR("Could not create new pixmap");
wl_resource_destroy(res);
diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index 7f8bccb..a7f66d5 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -26,7 +26,7 @@ struct _E_Pixmap
E_Client *client;
E_Pixmap_Type type;

- uint64_t win;
+ int64_t win;
Ecore_Window parent;

int w, h;
@@ -79,7 +79,7 @@ _e_pixmap_clear(E_Pixmap *cp, Eina_Bool cache)
{
ecore_x_pixmap_free(cp->pixmap);
cp->pixmap = 0;
- ecore_x_e_comp_pixmap_set(cp->parent ?: cp->win, 0);
+ ecore_x_e_comp_pixmap_set(cp->parent ?: (Ecore_X_Window)cp->win, 0);
e_pixmap_image_clear(cp, cache);
}
#endif
@@ -153,7 +153,7 @@ _e_pixmap_find(E_Pixmap_Type type, va_list *l)
Ecore_X_Window xwin;
#endif
#ifdef HAVE_WAYLAND
- uintptr_t id;
+ intptr_t id;
#endif
E_Pixmap *cp;

@@ -170,7 +170,7 @@ _e_pixmap_find(E_Pixmap_Type type, va_list *l)
break;
case E_PIXMAP_TYPE_WL:
#ifdef HAVE_WAYLAND
- id = va_arg(*l, uintptr_t);
+ id = va_arg(*l, int64_t);
cp = eina_hash_find(aliases[type], &id);
if (!cp) cp = eina_hash_find(pixmaps[type], &id);
return cp;
@@ -208,7 +208,7 @@ e_pixmap_new(E_Pixmap_Type type, ...)
Ecore_X_Window xwin;
#endif
#ifdef HAVE_WAYLAND
- uintptr_t id;
+ int64_t id;
#endif

EINA_SAFETY_ON_TRUE_RETURN_VAL((type != E_PIXMAP_TYPE_WL) && (type != E_PIXMAP_TYPE_X), NULL);
@@ -236,7 +236,7 @@ e_pixmap_new(E_Pixmap_Type type, ...)
break;
case E_PIXMAP_TYPE_WL:
#ifdef HAVE_WAYLAND
- id = va_arg(l, uintptr_t);
+ id = va_arg(l, int64_t);
if (pixmaps[type])
{
cp = eina_hash_find(pixmaps[type], &id);
@@ -247,7 +247,7 @@ e_pixmap_new(E_Pixmap_Type type, ...)
}
}
else
- pixmaps[type] = eina_hash_pointer_new((Eina_Free_Cb)_e_pixmap_free);
+ pixmaps[type] = eina_hash_int64_new((Eina_Free_Cb)_e_pixmap_free);
cp = _e_pixmap_new(type);
cp->win = id;
eina_hash_add(pixmaps[type], &id, cp);
@@ -372,7 +372,7 @@ e_pixmap_refresh(E_Pixmap *cp)
int pw, ph;
E_Comp_X_Client_Data *cd = NULL;

- pixmap = ecore_x_composite_name_window_pixmap_get(cp->parent ?: cp->win);
+ pixmap = ecore_x_composite_name_window_pixmap_get(cp->parent ?: (Ecore_X_Window)cp->win);
if (cp->client)
{
cd = (E_Comp_X_Client_Data*)cp->client->comp_data;
@@ -394,7 +394,7 @@ e_pixmap_refresh(E_Pixmap *cp)
ecore_x_pixmap_free(cp->pixmap);
cp->pixmap = pixmap;
cp->w = pw, cp->h = ph;
- ecore_x_e_comp_pixmap_set(cp->parent ?: cp->win, cp->pixmap);
+ ecore_x_e_comp_pixmap_set(cp->parent ?: (Ecore_X_Window)cp->win, cp->pixmap);
e_pixmap_image_clear(cp, 0);
}
else
@@ -519,7 +519,7 @@ e_pixmap_find_client(E_Pixmap_Type type, ...)
return (!cp) ? NULL : cp->client;
}

-E_API uint64_t
+E_API int64_t
e_pixmap_window_get(E_Pixmap *cp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cp, 0);
@@ -906,7 +906,7 @@ e_pixmap_alias(E_Pixmap *cp, E_Pixmap_Type type, ...)
Ecore_X_Window xwin;
#endif
#ifdef HAVE_WAYLAND
- uintptr_t id;
+ int64_t id;
#endif

va_start(l, type);
@@ -922,9 +922,9 @@ e_pixmap_alias(E_Pixmap *cp, E_Pixmap_Type type, ...)
break;
case E_PIXMAP_TYPE_WL:
#ifdef HAVE_WAYLAND
- id = va_arg(l, uintptr_t);
+ id = va_arg(l, int64_t);
if (!aliases[type])
- aliases[type] = eina_hash_pointer_new(NULL);
+ aliases[type] = eina_hash_int64_new(NULL);
eina_hash_set(aliases[type], &id, cp);
#endif
break;
diff --git a/src/bin/e_pixmap.h b/src/bin/e_pixmap.h
index 73bf6f8..8370efe 100644
--- a/src/bin/e_pixmap.h
+++ b/src/bin/e_pixmap.h
@@ -36,7 +36,7 @@ E_API void e_pixmap_client_set(E_Pixmap *cp, E_Client *ec);
E_API E_Client *e_pixmap_client_get(E_Pixmap *cp);
E_API E_Pixmap *e_pixmap_find(E_Pixmap_Type type, ...);
E_API E_Client *e_pixmap_find_client(E_Pixmap_Type type, ...);
-E_API uint64_t e_pixmap_window_get(E_Pixmap *cp);
+E_API int64_t e_pixmap_window_get(E_Pixmap *cp);
E_API Ecore_Window e_pixmap_parent_window_get(E_Pixmap *cp);
E_API Eina_Bool e_pixmap_native_surface_init(E_Pixmap *cp, Evas_Native_Surface *ns);
E_API void e_pixmap_image_clear(E_Pixmap *cp, Eina_Bool cache);

--
Mike Blumenkrantz
2016-03-09 18:10:56 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit f31e540140be054c0d53d16ee0f5dadc53644b4f
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 8 14:03:31 2016 -0500

do not perform special case position adjustment for re_manage clients

this case is solely for handling clients which are created with nonzero
position, eg. an x11 window trying to display itself centered upon initial
creation. re_manage indicates a window which is re-managed after a restart of
enlightenment, so these windows clearly do not fall into that case

fixes an issue where windows would move up+left by the size of their frame during
restart

ref 95e133282ef0ae8942ae513449b31d9f7149c519
---
src/bin/e_comp_object.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 19aa573..93b16d2 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3189,7 +3189,8 @@ reshadow:
do
{
_e_comp_smart_cb_frame_recalc(cw, cw->smart_obj, NULL);
- if ((cw->x == -1) && (cw->y == -1) && cw->ec->new_client && (!cw->ec->placed))
+ if ((cw->x == -1) && (cw->y == -1) && cw->ec->new_client &&
+ (!cw->ec->placed) && (!cw->ec->re_manage))
{
cw->ec->x = MAX(cw->ec->zone->x, cw->ec->client.x - cw->client_inset.l);
cw->ec->y = MAX(cw->ec->zone->y, cw->ec->client.y - cw->client_inset.t);

--
Mike Blumenkrantz
2016-03-09 18:11:14 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit f009e7c75230118bf136257f5ea526eebd5ec46e
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Thu Feb 25 14:16:25 2016 -0500

do not decrement e_comp->new_clients for non-new clients during _e_client_eval

this overflows the int!
---
src/bin/e_client.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index bd490b4..3daf625 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -2198,8 +2198,9 @@ _e_client_eval(E_Client *ec)
prop |= E_CLIENT_PROPERTY_ICON;
}

+ if (ec->new_client)
+ e_comp->new_clients--;
ec->new_client = 0;
- e_comp->new_clients--;
ec->changed = ec->changes.pos || ec->changes.size ||
ec->changes.stack || ec->changes.prop || ec->changes.border ||
ec->changes.reset_gravity || ec->changes.shading || ec->changes.shaded ||

--
Mike Blumenkrantz
2016-03-09 18:11:16 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 0de37612bbb011e63a1ff83cb28eaaa9d77fad9a
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Fri Feb 26 16:45:44 2016 -0500

force changed when adding or removing keyboard layouts in config

fix T3208
---
src/modules/xkbswitch/e_mod_config.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/src/modules/xkbswitch/e_mod_config.c b/src/modules/xkbswitch/e_mod_config.c
index 4ac2eae..f0f0a4d 100644
--- a/src/modules/xkbswitch/e_mod_config.c
+++ b/src/modules/xkbswitch/e_mod_config.c
@@ -427,6 +427,7 @@ _cb_add(void *data, void *data2 EINA_UNUSED)
E_Config_Dialog_Data *cfdata;
if (!(cfdata = data)) return;

+ e_config_dialog_changed_set(cfdata->cfd, 1);
if (cfdata->dlg_add_new) elm_win_raise(cfdata->dlg_add_new->win);
else cfdata->dlg_add_new = _dlg_add_new(cfdata);
}
@@ -440,6 +441,7 @@ _cb_del(void *data, void *data2 EINA_UNUSED)
if (!(cfdata = data)) return;
if ((n = e_widget_ilist_selected_get(cfdata->used_list)) < 0) return;

+ e_config_dialog_changed_set(cfdata->cfd, 1);
cfdata->cfg_layouts = eina_list_remove_list(cfdata->cfg_layouts, eina_list_nth_list(cfdata->cfg_layouts, n));

/* Update the list */

--
Mike Blumenkrantz
2016-03-09 18:11:15 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit d3d36092c7abc97815bd0354947573b926c4460d
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Fri Feb 26 16:37:52 2016 -0500

update winlist ui when using directional window selection

fix T3152
ref b1378ce77b5e353bc422276eeef1d30d356ab9fd
---
src/modules/winlist/e_winlist.c | 56 +++++++++++------------------------------
1 file changed, 14 insertions(+), 42 deletions(-)

diff --git a/src/modules/winlist/e_winlist.c b/src/modules/winlist/e_winlist.c
index 2bc13cd..2706890 100644
--- a/src/modules/winlist/e_winlist.c
+++ b/src/modules/winlist/e_winlist.c
@@ -57,7 +57,6 @@ static double _scroll_align_to = 0.0;
static double _scroll_align = 0.0;
static Ecore_Timer *_scroll_timer = NULL;
static Ecore_Animator *_animator = NULL;
-static E_Client *_ec_next = NULL;

static Eina_Bool
_wmclass_picked(const Eina_List *lst, const char *wmclass)
@@ -369,43 +368,6 @@ e_winlist_prev(void)
_e_winlist_activate();
}

-static void
-_e_winlist_select(E_Client *ec)
-{
- Eina_Bool focus = EINA_FALSE;
-
- if (ec->shaded)
- {
- if (!ec->lock_user_shade)
- e_client_unshade(ec, ec->shade_dir);
- }
- if (ec->iconic)
- e_client_uniconify(ec);
- if ((!ec->lock_focus_out) &&
- (!e_config->winlist_no_warp_on_direction) &&
- ((e_config->focus_policy != E_FOCUS_CLICK) ||
- (e_config->winlist_warp_at_end) ||
- (e_config->winlist_warp_while_selecting)))
- {
- if (!e_client_pointer_warp_to_center(ec))
- focus = EINA_TRUE;
- if (_list_object && (!_animator))
- _animator = ecore_animator_add(_e_winlist_animator, NULL);
- }
-
- if ((!ec->lock_user_stacking) &&
- (e_config->winlist_list_raise_while_selecting))
- {
- e_client_raise_latest_set(ec);
- evas_object_raise(ec->frame);
- }
- if ((!ec->lock_focus_out) &&
- (e_config->winlist_list_focus_while_selecting))
- focus = EINA_TRUE;
- if (focus)
- evas_object_focus_set(ec->frame, 1);
-}
-
static int
point_line_dist(int x, int y, int lx1, int ly1, int lx2, int ly2)
{
@@ -450,11 +412,12 @@ e_winlist_direction_select(E_Zone *zone, int dir)
E_Client *ec;
Eina_List *l;
E_Desk *desk;
- E_Client *ec_orig;
+ E_Client *ec_orig, *ec_next = NULL;
int distance = INT_MAX;
int cx, cy;
+ E_Winlist_Win *ww;

- _ec_next = NULL;
+ ec_next = NULL;

E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
@@ -566,11 +529,20 @@ e_winlist_direction_select(E_Zone *zone, int dir)
if (d >= distance) continue;
break;
}
- _ec_next = ec;
+ ec_next = ec;
distance = d;
}

- if (_ec_next) _e_winlist_select(_ec_next);
+ if (!ec_next) return;
+ _e_winlist_deactivate();
+ EINA_LIST_FOREACH(_wins, l, ww)
+ {
+ if (ww->client != ec_next) continue;
+ _win_selected = l;
+ break;
+ }
+ _e_winlist_show_active();
+ _e_winlist_activate();
}



--
Mike Blumenkrantz
2016-03-09 18:11:17 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit f546997405271ee1c4e75d34a293813b607f149f
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Sat Feb 27 14:19:28 2016 -0500

disable emotion_shutdown during shutdown procedure

this manually iterates main loop and is guaranteed to trigger unexpected
behaviors and/or crashes
---
src/bin/e_main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_main.c b/src/bin/e_main.c
index 71bc654..20ee041 100644
--- a/src/bin/e_main.c
+++ b/src/bin/e_main.c
@@ -465,7 +465,8 @@ main(int argc, char **argv)
_e_main_shutdown(-1);
}
TS("Emotion Init Done");
- _e_main_shutdown_push((void *)emotion_shutdown);
+ /* triggers event flush: do not call */
+ //_e_main_shutdown_push((void *)emotion_shutdown);

/* e doesn't sync to compositor - it should be one */
ecore_evas_app_comp_sync_set(0);

--
Mike Blumenkrantz
2016-03-09 18:11:19 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 51365e879ed4b8ba804f519cf882c7a318992af8
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 08:12:40 2016 -0500

do not set XCURSOR_PATH variable if re-setting existing value
---
src/bin/e_xsettings.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/bin/e_xsettings.c b/src/bin/e_xsettings.c
index 87bd062..f71f618 100644
--- a/src/bin/e_xsettings.c
+++ b/src/bin/e_xsettings.c
@@ -565,11 +565,9 @@ _e_xsettings_cursor_path_set(void)
path = getenv("XCURSOR_PATH");
if (path)
{
- if (!strstr(path, buf))
- {
- snprintf(env, sizeof(env), "%s:%s", buf, path);
- path = env;
- }
+ if (strstr(path, buf)) return;
+ snprintf(env, sizeof(env), "%s:%s", buf, path);
+ path = env;
}
else
{

--
Chris Michael
2016-03-09 18:10:53 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit c272ba77439173ed692c53bf1ec2f294054c59a7
Author: Chris Michael <***@osg.samsung.com>
Date: Tue Feb 2 14:03:07 2016 -0500

update mailmap addresses

Signed-off-by: Chris Michael <***@osg.samsung.com>
---
.mailmap | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/.mailmap b/.mailmap
index d9d6852..d055df3 100644
--- a/.mailmap
+++ b/.mailmap
@@ -17,10 +17,11 @@ Vincent Torri <***@gmail.com> Vincent Torri <***@univ-evry.fr>
Tom Hacohen <***@stosb.com> Tom 'TAsn' Hacohen <***@stosb.com>
Tom Hacohen <***@stosb.com> Tom <***@stosb.com>
Gustavo Sverzut Barbieri <***@gmail.com> Gustavo Sverzut Barbieri <***@profusion.mobi>
-Christopher Michael <***@comcast.net> Christopher Michael <***@comcast.net>
+Christopher Michael <***@comcast.net> Christopher Michael <***@comcast.net>
Christopher Michael <***@comcast.net> Christopher Michael <***@samsung.com>
-Christopher Michael <***@comcast.net> Chris Michael <***@samsung.com>
-Christopher Michael <***@comcast.net> Chris Michael <***@comcast.net>
+Christopher Michael <***@comcast.net> Christopher Michael <***@osg.samsung.com>
+Christopher Michael <***@comcast.net> Christopher Michael <***@samsung.com>
+Christopher Michael <***@comcast.net> Christopher Michael <***@comcast.net>
Sebastian Dransfeld <***@tango.flipp.net> Sebastian Dransfeld <***@sintef.no>
Sebastian Dransfeld <***@tango.flipp.net> sebastid <sebastid>
Mike Blumenkrantz <***@gmail.com> Mike Blumenkrantz <***@samsung.com>

--
Derek Foreman
2016-03-09 18:11:02 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit c9b720cccd280879c7f9a6b565ad5773c12f1efe
Author: Derek Foreman <***@osg.samsung.com>
Date: Wed Feb 17 13:11:04 2016 -0600

Protect the wayland frame callback list from corruption

The resource destroy callback for frame callbacks will walk the frame list
to remove itself. When freeing that list we need to make sure the
resource destroy callback doesn't see the same list we're walking and
corrupt it.
---
src/bin/e_comp_wl.c | 16 ++++++++++++++--
src/bin/e_pixmap.c | 9 ++++++++-
2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 802d25d..dca2dfb 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -981,8 +981,14 @@ _e_comp_wl_surface_state_finish(E_Comp_Wl_Surface_State *state)
{
struct wl_resource *cb;
Eina_Rectangle *dmg;
+ Eina_List *free_list;

- EINA_LIST_FREE(state->frames, cb)
+ /* The resource destroy callback will walk the state->frames list,
+ * so move the list to a temporary first.
+ */
+ free_list = state->frames;
+ state->frames = NULL;
+ EINA_LIST_FREE(free_list, cb)
wl_resource_destroy(cb);

EINA_LIST_FREE(state->damages, dmg)
@@ -2229,6 +2235,7 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, E_Client *ec)
/* Eina_Rectangle *dmg; */
struct wl_resource *cb;
E_Client *subc;
+ Eina_List *free_list;

/* make sure this is a wayland client */
if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) return;
@@ -2247,7 +2254,12 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, E_Client *ec)

_e_comp_wl_surface_state_finish(&ec->comp_data->pending);

- EINA_LIST_FREE(ec->comp_data->frames, cb)
+ /* The resource destroy callback will walk the state->frames list,
+ * so move the list to a temporary first.
+ */
+ free_list = ec->comp_data->frames;
+ ec->comp_data->frames = NULL;
+ EINA_LIST_FREE(free_list, cb)
wl_resource_destroy(cb);

if (ec->comp_data->surface)
diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index 8837bce..7f8bccb 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -635,10 +635,17 @@ e_pixmap_image_clear(E_Pixmap *cp, Eina_Bool cache)
{
E_Comp_Wl_Client_Data *cd;
struct wl_resource *cb;
+ Eina_List *free_list;

if ((!cp->client) || (!cp->client->comp_data)) return;
cd = (E_Comp_Wl_Client_Data *)cp->client->comp_data;
- EINA_LIST_FREE(cd->frames, cb)
+
+ /* The destroy callback will remove items from the frame list
+ * so we move the list to a temporary before walking it here
+ */
+ free_list = cd->frames;
+ cd->frames = NULL;
+ EINA_LIST_FREE(free_list, cb)
{
wl_callback_send_done(cb, ecore_time_unix_get() * 1000);
wl_resource_destroy(cb);

--
Mike Blumenkrantz
2016-03-09 18:11:21 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit f9d997980095c1eb3456379635ba81739fc2ee23
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 08:47:37 2016 -0500

remove DISPLAY usage from E_IPC_SOCKET value

pid should be enough here

CID 1039791
---
src/bin/e_ipc.c | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/src/bin/e_ipc.c b/src/bin/e_ipc.c
index aca762c..17f645a 100644
--- a/src/bin/e_ipc.c
+++ b/src/bin/e_ipc.c
@@ -17,7 +17,7 @@ EINTERN int
e_ipc_init(void)
{
char buf[4096], buf2[128], buf3[4096];
- char *tmp, *user, *disp, *disp2, *base;
+ char *tmp, *user, *base;
int pid, trynum = 0, id1 = 0;
struct stat st;

@@ -71,15 +71,6 @@ e_ipc_init(void)
}
}

- disp = getenv("DISPLAY");
- if (!disp) disp = ":0";
- else
- {
- /* $DISPLAY may be a path (e.g. Xquartz), keep the basename. */
- disp2 = strrchr(disp, '/');
- if (disp2) disp = disp2 + 1;
- }
-
e_util_env_set("E_IPC_SOCKET", "");

pid = (int)getpid();
@@ -96,8 +87,8 @@ e_ipc_init(void)
(S_IRWXU | S_IFDIR)))
{
#ifdef USE_IPC
- snprintf(buf3, sizeof(buf3), "%s/%s-%i",
- buf, disp, pid);
+ snprintf(buf3, sizeof(buf3), "%s/%i",
+ buf, pid);
_e_ipc_server = ecore_ipc_server_add
(ECORE_IPC_LOCAL_SYSTEM, buf3, 0, NULL);
if (_e_ipc_server)

--
Mike Blumenkrantz
2016-03-09 18:11:20 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit cf0d1eba9c59e0f670987f106ab9e27efa756964
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 08:23:59 2016 -0500

remove security hole in e_start_main

if a file called ~/.e-mtrack existed then during startup the launcher would
read the first line of this file and set LD_PRELOAD to that value

CID 1039785
---
src/bin/e_start_main.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/bin/e_start_main.c b/src/bin/e_start_main.c
index 90130b8..999693f 100644
--- a/src/bin/e_start_main.c
+++ b/src/bin/e_start_main.c
@@ -613,13 +613,13 @@ main(int argc, char **argv)
}
putchar('\n');

- /* mtrack memory tracker support */
home = getenv("HOME");
if (home)
{
- FILE *f;
const char *tmps;
-
+#if 0
+ FILE *f;
+ /* mtrack memory tracker support */
/* if you have ~/.e-mtrack, then the tracker will be enabled
* using the content of this file as the path to the mtrack.so
* shared object that is the mtrack preload */
@@ -643,7 +643,7 @@ main(int argc, char **argv)
}
fclose(f);
}
-
+#endif
tmps = getenv("XDG_DATA_HOME");
if (tmps)
snprintf(buf, sizeof(buf), "%s/Applications/.bin", tmps);

--
Mike Blumenkrantz
2016-03-09 18:11:22 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 21ab21d5513f95dcba48cf3741b73784a8ba62d9
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 09:22:01 2016 -0500

remove multihead env var setting in e_exec

multihead no longer possible, no point in keeping this

CID 1039793
---
src/bin/e_exec.c | 50 --------------------------------------------------
1 file changed, 50 deletions(-)

diff --git a/src/bin/e_exec.c b/src/bin/e_exec.c
index 6f58491..3078f50 100644
--- a/src/bin/e_exec.c
+++ b/src/bin/e_exec.c
@@ -411,7 +411,6 @@ _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining)
E_Exec_Launch *launch;
Eina_List *l, *lnew;
Ecore_Exe *exe = NULL;
- const char *penv_display;
char buf[4096];

launch = data;
@@ -425,53 +424,6 @@ _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining)
if (startup_id < 0) startup_id = 0;
}
if (++startup_id < 1) startup_id = 1;
- /* save previous env vars we need to save */
- penv_display = getenv("DISPLAY");
- if ((penv_display) && (launch->zone))
- {
- const char *p1, *p2;
- char buf2[32];
- char *buf3 = NULL;
- int head_length;
- int penv_display_length;
-
- penv_display_length = strlen(penv_display);
- /* Check for insane length for DISPLAY env */
- if (penv_display_length + 32 > 4096)
- {
- free(inst);
- return NULL;
- }
-
- /* buf2 = '.%i' */
- *buf2 = '.';
- head_length = eina_convert_itoa(0, buf2 + 1) + 2;
-
- /* set env vars */
- p1 = strrchr(penv_display, ':');
- p2 = strrchr(penv_display, '.');
- if ((p1) && (p2) && (p2 > p1)) /* "blah:x.y" */
- {
- buf3 = alloca((p2 - penv_display) + head_length + 1);
-
- memcpy(buf3, penv_display, p2 - penv_display);
- memcpy(buf3 + (p2 - penv_display), buf2, head_length);
- }
- else if (p1) /* "blah:x */
- {
- buf3 = alloca(penv_display_length + head_length);
-
- memcpy(buf3, penv_display, penv_display_length);
- memcpy(buf3 + penv_display_length, buf2, head_length);
- }
- else
- {
- buf3 = alloca(penv_display_length + 1);
- memcpy(buf3, penv_display, penv_display_length + 1);
- }
-
- e_util_env_set("DISPLAY", buf3);
- }
snprintf(buf, sizeof(buf), "E_START|%i", startup_id);
e_util_env_set("DESKTOP_STARTUP_ID", buf);

@@ -565,8 +517,6 @@ _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining)
exe = ecore_exe_run(exec, inst);
}

- if (penv_display)
- e_util_env_set("DISPLAY", penv_display);
if (!exe)
{
free(inst);

--
Mike Blumenkrantz
2016-03-09 18:11:26 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit bd6b99bd302343a8ef393c59921527c9621f5042
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 09:53:15 2016 -0500

use dblequal for double comparisons in edgebindings config
---
src/modules/conf_bindings/e_int_config_edgebindings.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/modules/conf_bindings/e_int_config_edgebindings.c b/src/modules/conf_bindings/e_int_config_edgebindings.c
index 1a08c9a..f80715c 100644
--- a/src/modules/conf_bindings/e_int_config_edgebindings.c
+++ b/src/modules/conf_bindings/e_int_config_edgebindings.c
@@ -1110,7 +1110,7 @@ _edge_grab_wnd_selection_apply(E_Config_Dialog_Data *cfdata)
if ((bi->modifiers == cfdata->locals.modifiers) &&
(bi->edge == cfdata->locals.edge) &&
(bi->drag_only == cfdata->locals.drag_only) &&
- ((bi->delay * 1000) == (cfdata->locals.delay * 1000)))
+ (dblequal(bi->delay * 1000, cfdata->locals.delay * 1000)))
{
found = 1;
break;
@@ -1128,7 +1128,7 @@ _edge_grab_wnd_selection_apply(E_Config_Dialog_Data *cfdata)
if ((bi->modifiers == cfdata->locals.modifiers) &&
(bi->edge == cfdata->locals.edge) &&
(bi->drag_only == cfdata->locals.drag_only) &&
- ((bi->delay * 1000) == (cfdata->locals.delay * 1000)))
+ (dblequal(bi->delay * 1000, cfdata->locals.delay * 1000)))
{
found = 1;
break;
@@ -1429,7 +1429,7 @@ _edge_binding_text_get(E_Zone_Edge edge, float delay, int mod, int drag_only)
if (delay)
{
if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " ");
- if (delay == -1.0)
+ if (dblequal(delay, -1.0))
eina_strbuf_append(b, _("(left clickable)"));
else if (delay < -1.0)
eina_strbuf_append(b, _("(clickable)"));

--
Mike Blumenkrantz
2016-03-09 18:11:29 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 169727db4d57500bf92a9ddccd41759684bbf8ce
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 10:09:58 2016 -0500

remove unused value in config profile saving

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

diff --git a/src/bin/e_config.c b/src/bin/e_config.c
index 011d6ea..039df33 100644
--- a/src/bin/e_config.c
+++ b/src/bin/e_config.c
@@ -1859,7 +1859,7 @@ e_config_profile_save(void)
{
e_user_dir_snprintf(bsrc, sizeof(bsrc), "config/profile.cfg");
e_user_dir_snprintf(bdst, sizeof(bdst), "config/profile.1.cfg");
- ret = ecore_file_mv(bsrc, bdst);
+ ecore_file_mv(bsrc, bdst);
// if (!ret)
// _e_config_mv_error(bsrc, bdst);
}

--
Mike Blumenkrantz
2016-03-09 18:11:28 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit dddf8c5f1e4e51a3221a809a0df43011ec664918
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 10:07:32 2016 -0500

prevent potential null deref during pager (plain) window drag

CID 1237302
---
src/modules/pager_plain/e_mod_main.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/modules/pager_plain/e_mod_main.c b/src/modules/pager_plain/e_mod_main.c
index e774109..d6cb15c 100644
--- a/src/modules/pager_plain/e_mod_main.c
+++ b/src/modules/pager_plain/e_mod_main.c
@@ -1878,10 +1878,12 @@ _pager_window_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EI
(resist * resist)) return;

if ((pw->desk) && (pw->desk->pager))
- pw->desk->pager->dragging = 1;
+ {
+ pw->desk->pager->dragging = 1;
+ edje_object_signal_emit(pw->desk->o_desk, "e,action,drag,in", "e");
+ }
pw->drag.start = 0;
e_comp_object_effect_clip(pw->client->frame);
- edje_object_signal_emit(pw->desk->o_desk, "e,action,drag,in", "e");
pw->desk->pager->active_drop_pd = pw->desk;
}


--
Mike Blumenkrantz
2016-03-09 18:11:25 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 55fc7f496152f9a23da99f8dc1ef33c328665e81
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 09:52:54 2016 -0500

use strbuf instead of strcat in edgebinding string synthesis

CID 1039800
---
.../conf_bindings/e_int_config_edgebindings.c | 59 +++++++++++-----------
1 file changed, 29 insertions(+), 30 deletions(-)

diff --git a/src/modules/conf_bindings/e_int_config_edgebindings.c b/src/modules/conf_bindings/e_int_config_edgebindings.c
index 3796b5b..1a08c9a 100644
--- a/src/modules/conf_bindings/e_int_config_edgebindings.c
+++ b/src/modules/conf_bindings/e_int_config_edgebindings.c
@@ -1361,65 +1361,64 @@ _find_edge_binding_action(const char *action, const char *params, int *g, int *a
static char *
_edge_binding_text_get(E_Zone_Edge edge, float delay, int mod, int drag_only)
{
- char b[256] = "";
-
- if (mod & E_BINDING_MODIFIER_CTRL)
- strcat(b, _("CTRL"));
+ Eina_Strbuf *b;
+ char *ret;

+ b = eina_strbuf_new();
if (mod & E_BINDING_MODIFIER_ALT)
{
- if (b[0]) strcat(b, " + ");
- strcat(b, _("ALT"));
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " + ");
+ eina_strbuf_append(b, _("ALT"));
}

if (mod & E_BINDING_MODIFIER_SHIFT)
{
- if (b[0]) strcat(b, " + ");
- strcat(b, _("SHIFT"));
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " + ");
+ eina_strbuf_append(b, _("SHIFT"));
}

if (mod & E_BINDING_MODIFIER_WIN)
{
- if (b[0]) strcat(b, " + ");
- strcat(b, _("WIN"));
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " + ");
+ eina_strbuf_append(b, _("WIN"));
}

if (edge)
{
- if (b[0]) strcat(b, " + ");
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " + ");

switch (edge)
{
case E_ZONE_EDGE_LEFT:
- strcat(b, _("Left Edge"));
+ eina_strbuf_append(b, _("Left Edge"));
break;

case E_ZONE_EDGE_TOP:
- strcat(b, _("Top Edge"));
+ eina_strbuf_append(b, _("Top Edge"));
break;

case E_ZONE_EDGE_RIGHT:
- strcat(b, _("Right Edge"));
+ eina_strbuf_append(b, _("Right Edge"));
break;

case E_ZONE_EDGE_BOTTOM:
- strcat(b, _("Bottom Edge"));
+ eina_strbuf_append(b, _("Bottom Edge"));
break;

case E_ZONE_EDGE_TOP_LEFT:
- strcat(b, _("Top Left Edge"));
+ eina_strbuf_append(b, _("Top Left Edge"));
break;

case E_ZONE_EDGE_TOP_RIGHT:
- strcat(b, _("Top Right Edge"));
+ eina_strbuf_append(b, _("Top Right Edge"));
break;

case E_ZONE_EDGE_BOTTOM_RIGHT:
- strcat(b, _("Bottom Right Edge"));
+ eina_strbuf_append(b, _("Bottom Right Edge"));
break;

case E_ZONE_EDGE_BOTTOM_LEFT:
- strcat(b, _("Bottom Left Edge"));
+ eina_strbuf_append(b, _("Bottom Left Edge"));
break;

default:
@@ -1429,25 +1428,25 @@ _edge_binding_text_get(E_Zone_Edge edge, float delay, int mod, int drag_only)

if (delay)
{
- char buf[20];
-
- if (b[0]) strcat(b, " ");
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " ");
if (delay == -1.0)
- snprintf(buf, 20, _("(left clickable)"));
+ eina_strbuf_append(b, _("(left clickable)"));
else if (delay < -1.0)
- snprintf(buf, 20, _("(clickable)"));
+ eina_strbuf_append(b, _("(clickable)"));
else
- snprintf(buf, 20, "%.2fs", delay);
- strcat(b, buf);
+ eina_strbuf_append_printf(b, "%.2fs", delay);
}

if (drag_only)
{
- if (b[0]) strcat(b, " ");
- strcat(b, _("(drag only)"));
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " ");
+ eina_strbuf_append(b, _("(drag only)"));
}

- if (!b[0]) return strdup(TEXT_NONE_ACTION_EDGE);
- return strdup(b);
+ ret = eina_strbuf_string_steal(b);
+ eina_strbuf_free(b);
+ if (ret[0]) return ret;
+ free(ret);
+ return strdup(TEXT_NONE_ACTION_EDGE);
}


--
Mike Blumenkrantz
2016-03-09 18:11:30 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 791953e1b7ad5a7a37efe291f3e1265bd6fa3926
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 10:11:38 2016 -0500

remove useless client_add handler in e_ipc

CID 1267210
---
src/bin/e_ipc.c | 14 --------------
1 file changed, 14 deletions(-)

diff --git a/src/bin/e_ipc.c b/src/bin/e_ipc.c
index 17f645a..744b971 100644
--- a/src/bin/e_ipc.c
+++ b/src/bin/e_ipc.c
@@ -4,7 +4,6 @@ EINTERN char *e_ipc_socket = NULL;

#ifdef USE_IPC
/* local subsystem functions */
-static Eina_Bool _e_ipc_cb_client_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
static Eina_Bool _e_ipc_cb_client_del(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
static Eina_Bool _e_ipc_cb_client_data(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);

@@ -110,8 +109,6 @@ retry:

INF("E_IPC_SOCKET=%s", buf3);
e_util_env_set("E_IPC_SOCKET", buf3);
- ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_ADD,
- _e_ipc_cb_client_add, NULL);
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DEL,
_e_ipc_cb_client_del, NULL);
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DATA,
@@ -140,17 +137,6 @@ e_ipc_shutdown(void)
#ifdef USE_IPC
/* local subsystem globals */
static Eina_Bool
-_e_ipc_cb_client_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- Ecore_Ipc_Event_Client_Add *e;
-
- e = event;
- if (ecore_ipc_client_server_get(e->client) != _e_ipc_server)
- return ECORE_CALLBACK_PASS_ON;
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
_e_ipc_cb_client_del(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
Ecore_Ipc_Event_Client_Del *e;

--
Mike Blumenkrantz
2016-03-09 18:11:24 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 02c0612faf1b605ef67445f86031ae806cad81f5
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 09:39:31 2016 -0500

use strbuf instead of strcat in keybinding string synthesis

CIDs 1039798, 1039799
---
.../conf_bindings/e_int_config_keybindings.c | 78 ++++++++++------------
1 file changed, 36 insertions(+), 42 deletions(-)

diff --git a/src/modules/conf_bindings/e_int_config_keybindings.c b/src/modules/conf_bindings/e_int_config_keybindings.c
index abe50b6..705036e 100644
--- a/src/modules/conf_bindings/e_int_config_keybindings.c
+++ b/src/modules/conf_bindings/e_int_config_keybindings.c
@@ -1111,84 +1111,78 @@ _find_key_binding_action(const char *action,
}
}

-static char *
-_key_binding_header_get(int modifiers)
+static void
+_modifiers_add(Eina_Strbuf *b, int modifiers)
{
- char b[256] = "";
-
- if (modifiers & E_BINDING_MODIFIER_CTRL)
- strcat(b, _("CTRL"));
-
if (modifiers & E_BINDING_MODIFIER_ALT)
{
- if (b[0]) strcat(b, " + ");
- strcat(b, _("ALT"));
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " + ");
+ eina_strbuf_append(b, _("ALT"));
}

if (modifiers & E_BINDING_MODIFIER_SHIFT)
{
- if (b[0]) strcat(b, " + ");
- strcat(b, _("SHIFT"));
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " + ");
+ eina_strbuf_append(b, _("SHIFT"));
}

if (modifiers & E_BINDING_MODIFIER_WIN)
{
- if (b[0]) strcat(b, " + ");
- strcat(b, _("WIN"));
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " + ");
+ eina_strbuf_append(b, _("WIN"));
}
-
- if (!b[0]) return strdup(TEXT_NO_MODIFIER_HEADER);
- return strdup(b);
}

static char *
-_key_binding_text_get(E_Config_Binding_Key *bi)
+_key_binding_header_get(int modifiers)
{
- char b[256] = "";
+ Eina_Strbuf *b;
+ char *ret;

- if (!bi) return NULL;
+ b = eina_strbuf_new();
+ _modifiers_add(b, modifiers);

- if (bi->modifiers & E_BINDING_MODIFIER_CTRL)
- strcat(b, _("CTRL"));
+ ret = eina_strbuf_string_steal(b);
+ eina_strbuf_free(b);
+ if (ret[0]) return ret;
+ free(ret);
+ return strdup(TEXT_NO_MODIFIER_HEADER);
+}

- if (bi->modifiers & E_BINDING_MODIFIER_ALT)
- {
- if (b[0]) strcat(b, " + ");
- strcat(b, _("ALT"));
- }
+static char *
+_key_binding_text_get(E_Config_Binding_Key *bi)
+{
+ Eina_Strbuf *b;
+ char *ret;

- if (bi->modifiers & E_BINDING_MODIFIER_SHIFT)
- {
- if (b[0]) strcat(b, " + ");
- strcat(b, _("SHIFT"));
- }
+ if (!bi) return NULL;

- if (bi->modifiers & E_BINDING_MODIFIER_WIN)
- {
- if (b[0]) strcat(b, " + ");
- strcat(b, _("WIN"));
- }
+ b = eina_strbuf_new();
+ _modifiers_add(b, bi->modifiers);

if (bi->key && bi->key[0])
{
char *l;
- if (b[0]) strcat(b, " + ");
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " + ");

l = strdup(bi->key);
l[0] = (char)toupper(bi->key[0]);
- strcat(b, l);
+ eina_strbuf_append(b, l);
free(l);
}

/* see comment in e_bindings on numlock
if (bi->modifiers & ECORE_X_LOCK_NUM)
{
- if (b[0]) strcat(b, " ");
- strcat(b, _("OFF"));
+ if (eina_strbuf_length_get(b)) eina_strbuf_append(b, " ");
+ eina_strbuf_append(b, _("OFF"));
}
*/

- if (!b[0]) return strdup(TEXT_NONE_ACTION_KEY);
- return strdup(b);
+ ret = eina_strbuf_string_steal(b);
+ eina_strbuf_free(b);
+ if (ret[0]) return ret;
+ free(ret);
+ return strdup(TEXT_NONE_ACTION_KEY);
}


--
Mike Blumenkrantz
2016-03-09 18:11:23 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 7a7c57c2b8ca4e1f49a87b43ea1adca7d02ca412
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 09:23:54 2016 -0500

strcpy -> strncpy in evry files plugin
---
src/modules/everything/evry_plug_files.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/everything/evry_plug_files.c b/src/modules/everything/evry_plug_files.c
index 5b1859d..f2e0f6e 100644
--- a/src/modules/everything/evry_plug_files.c
+++ b/src/modules/everything/evry_plug_files.c
@@ -692,7 +692,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
{
dir = dirname(buf);
_folder_item_add(p, dir, prio++);
- strcpy(buf, dir);
+ strncpy(buf, dir, sizeof(buf) - 1);
}

p->command = CMD_SHOW_PARENT;

--
Mike Blumenkrantz
2016-03-09 18:11:27 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit c24de2a210c6b2dd33ebd5e8ef9779abecc51336
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 10:02:52 2016 -0500

replace static buffer usage with binbuf in e_fm_ipc

CID 1039804
---
src/bin/e_fm/e_fm_ipc.c | 28 +++++++++-------------------
1 file changed, 9 insertions(+), 19 deletions(-)

diff --git a/src/bin/e_fm/e_fm_ipc.c b/src/bin/e_fm/e_fm_ipc.c
index 2e82455..09fb470 100644
--- a/src/bin/e_fm/e_fm_ipc.c
+++ b/src/bin/e_fm/e_fm_ipc.c
@@ -1016,12 +1016,10 @@ _e_fm_ipc_file_add_mod(E_Dir *ed, const char *path, E_Fm_Op_Type op, int listing
struct stat st;
char *lnk = NULL, *rlnk = NULL;
int broken_lnk = 0;
- int bsz = 0;
- unsigned char *p, buf
+ Eina_Binbuf *buf;
/* file add/change format is as follows:
*
* stat_info[stat size] + broken_link[1] + path[n]\0 + lnk[n]\0 + rlnk[n]\0 */
- [sizeof(struct stat) + 1 + 4096 + 4096 + 4096];

/* FIXME: handle BACKOFF */
if ((!listing) && (op == E_FM_OP_FILE_CHANGE) && (!ed->cleaning)) /* 5 == mod */
@@ -1082,29 +1080,21 @@ _e_fm_ipc_file_add_mod(E_Dir *ed, const char *path, E_Fm_Op_Type op, int listing
if (!lnk) lnk = strdup("");
if (!rlnk) rlnk = strdup("");

- p = buf;
+ buf = eina_binbuf_new();
/* NOTE: i am NOT converting this data to portable arch/os independent
* format. i am ASSUMING e_fm_main and e are local and built together
* and thus this will work. if this ever changes this here needs to
* change */
- memcpy(buf, &st, sizeof(struct stat));
- p += sizeof(struct stat);
+ eina_binbuf_append_length(buf, (void*)&st, sizeof(struct stat));

- p[0] = broken_lnk;
- p += 1;
+ eina_binbuf_append_char(buf, !!broken_lnk);
+ eina_binbuf_append_length(buf, (void*)path, strlen(path) + 1);
+ eina_binbuf_append_length(buf, (void*)lnk, strlen(lnk) + 1);
+ eina_binbuf_append_length(buf, (void*)rlnk, strlen(rlnk) + 1);

- strcpy((char *)p, path);
- p += strlen(path) + 1;
-
- strcpy((char *)p, lnk);
- p += strlen(lnk) + 1;
-
- strcpy((char *)p, rlnk);
- p += strlen(rlnk) + 1;
-
- bsz = p - buf;
ecore_ipc_server_send(_e_fm_ipc_server, 6 /*E_IPC_DOMAIN_FM*/, op, 0, ed->id,
- listing, buf, bsz);
+ listing, eina_binbuf_string_get(buf), eina_binbuf_length_get(buf));
+ eina_binbuf_free(buf);
free(lnk);
free(rlnk);
}

--
Mike Blumenkrantz
2016-03-09 18:10:57 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 263774c4a1192a8c4409bb788ae34c6ea28e4823
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Tue Feb 16 15:36:04 2016 -0500

do not clamp comp object input regions to 0,0

this breaks input for clients using csd which are aligned at x|y axis
---
src/bin/e_comp_object.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 93b16d2..6527a35 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -2967,8 +2967,8 @@ e_comp_object_input_area_set(Evas_Object *obj, int x, int y, int w, int h)
evas_object_smart_member_add(cw->input_obj, obj);
}
evas_object_geometry_set(cw->input_obj,
- MAX(cw->ec->client.x + (!!cw->frame_object * cw->client_inset.l), 0) + x,
- MAX(cw->ec->client.y + (!!cw->frame_object * cw->client_inset.t), 0) + y, w, h);
+ cw->ec->client.x + (!!cw->frame_object * cw->client_inset.l) + x,
+ cw->ec->client.y + (!!cw->frame_object * cw->client_inset.t) + y, w, h);
evas_object_pass_events_set(cw->obj, 1);
if (cw->visible) evas_object_show(cw->input_obj);
}

--
Mike Blumenkrantz
2016-03-09 18:10:59 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 0a557c8d05e60aa73bdc8241e02b7ba2b8b0176a
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Wed Feb 17 11:36:30 2016 -0500

improve enforcement of shelf autohide-related window adjustment

for whatever reason, there's a global option which makes windows adjust
when a shelf autohides as well as a per-shelf option to ignore the global
option

in the case where the global option is not enabled, there is no reason to
check the per-shelf option

ref 5d63b07ca39011f4f1508c68f2d361d28584422e
---
src/bin/e_shelf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c
index c1b5ca6..6479a4b 100644
--- a/src/bin/e_shelf.c
+++ b/src/bin/e_shelf.c
@@ -91,7 +91,7 @@ _e_shelf_remaximize(E_Shelf *es)
{
E_Client *ec;

- if (es->cfg->overlap && e_config->border_fix_on_shelf_toggle) return;
+ if ((!e_config->border_fix_on_shelf_toggle) || es->cfg->overlap) return;
E_CLIENT_FOREACH(ec)
{
E_Maximize max = ec->maximized;

--
Mike Blumenkrantz
2016-03-09 18:11:31 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 42ff50a5840cff68c582641cb5a19a271cd3d17c
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 10:13:21 2016 -0500

use uint instead of int for eina_list_count() return in cpufreq (trivial)

CID 1267212
---
src/modules/cpufreq/e_mod_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c
index 5c42a09..f6d0f1a 100644
--- a/src/modules/cpufreq/e_mod_main.c
+++ b/src/modules/cpufreq/e_mod_main.c
@@ -1038,7 +1038,7 @@ _cpufreq_face_update_available(Instance *inst)
Edje_Message_String_Set *governor_msg;
Eina_List *l;
int i;
- int count;
+ unsigned int count;

count = eina_list_count(cpufreq_config->status->frequencies);
frequency_msg = malloc(sizeof(Edje_Message_Int_Set) + (count - 1) * sizeof(int));

--
Mike Blumenkrantz
2016-03-09 18:11:32 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit caf795834ebcd9ddc92ed678b1725d7fe3c177f9
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 10:15:37 2016 -0500

simplify static grab case statements

CID 1267213
---
src/bin/e_static_grab.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_static_grab.c b/src/bin/e_static_grab.c
index 8108a1d..80ebdbf 100644
--- a/src/bin/e_static_grab.c
+++ b/src/bin/e_static_grab.c
@@ -281,11 +281,11 @@ _e_static_grab_x(E_Static_Grab *grab)
switch (*current)
{
case 'R':
- if (_e_static_grab_string(current, line->end, RELEASE_DATE, &grab->x.release_date)) break;
+ _e_static_grab_string(current, line->end, RELEASE_DATE, &grab->x.release_date);
break;

case 'B':
- if (_e_static_grab_string(current, line->end, BUILD_DATE, &grab->x.build_date)) break;
+ _e_static_grab_string(current, line->end, BUILD_DATE, &grab->x.build_date);
break;

case '(':

--
Mike Blumenkrantz
2016-03-09 18:11:34 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 2e819fef1762570fa3b33ffe84731c4fb1e0b49a
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 10:35:26 2016 -0500

simplify ipc socket creation

in trying to be extra secure here, a security hole is created due to time
between mkdir and stat calls

CID 1039781
---
src/bin/e_ipc.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/src/bin/e_ipc.c b/src/bin/e_ipc.c
index 1ffb336..6058a3c 100644
--- a/src/bin/e_ipc.c
+++ b/src/bin/e_ipc.c
@@ -77,13 +77,7 @@ e_ipc_init(void)
{
snprintf(buf, sizeof(buf), "%s/e-%s@%x",
base, user, id1);
- if (mkdir(buf, S_IRWXU) < 0)
- goto retry;
- if (stat(buf, &st) < 0)
- goto retry;
- if ((st.st_uid == getuid()) &&
- ((st.st_mode & (S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO)) ==
- (S_IRWXU | S_IFDIR)))
+ if (!mkdir(buf, S_IRWXU))
{
#ifdef USE_IPC
snprintf(buf3, sizeof(buf3), "%s/%i",
@@ -97,7 +91,6 @@ e_ipc_init(void)
break;
}
}
-retry:
id1 = rand();
}
#ifdef USE_IPC

--
Mike Blumenkrantz
2016-03-09 18:11:33 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 4619114ea77e32282389d5d635455c4656c20cc5
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 10:32:12 2016 -0500

remove ipc command allowing arbitrary command execution by the compositor

Loading Image...

CID 1291836
---
src/bin/e_ipc.c | 42 ------------------------------------------
src/bin/e_ipc.h | 3 ---
2 files changed, 45 deletions(-)

diff --git a/src/bin/e_ipc.c b/src/bin/e_ipc.c
index 744b971..1ffb336 100644
--- a/src/bin/e_ipc.c
+++ b/src/bin/e_ipc.c
@@ -165,48 +165,6 @@ _e_ipc_cb_client_data(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
case E_IPC_DOMAIN_REQUEST:
case E_IPC_DOMAIN_REPLY:
case E_IPC_DOMAIN_EVENT:
- switch (e->minor)
- {
- case E_IPC_OP_EXEC_ACTION:
- {
- E_Ipc_2Str *req = NULL;
-
- if (e_ipc_codec_2str_dec(e->data, e->size, &req))
- {
- int len, ok = 0;
- void *d;
-
- E_Action *act = e_action_find(req->str1);
-
- if ((act) && (act->func.go))
- {
- act->func.go(E_OBJECT(e_comp), req->str2);
- ok = 1;
- }
-
- d = e_ipc_codec_int_enc(ok, &len);
- if (d)
- {
- ecore_ipc_client_send(e->client,
- E_IPC_DOMAIN_REPLY,
- E_IPC_OP_EXEC_ACTION_REPLY,
- 0, 0, 0, d, len);
- free(d);
- }
-
- if (req)
- {
- E_FREE(req->str1);
- E_FREE(req->str2);
- E_FREE(req);
- }
- }
- }
- break;
-
- default:
- break;
- }
break;

case E_IPC_DOMAIN_THUMB:
diff --git a/src/bin/e_ipc.h b/src/bin/e_ipc.h
index e007f8d..19b9602 100644
--- a/src/bin/e_ipc.h
+++ b/src/bin/e_ipc.h
@@ -4,9 +4,6 @@ EINTERN extern char *e_ipc_socket;

#ifdef USE_IPC

-#define E_IPC_OP_EXEC_ACTION 386
-#define E_IPC_OP_EXEC_ACTION_REPLY 387
-
typedef enum _E_Ipc_Domain
{
E_IPC_DOMAIN_NONE,

--
Mike Blumenkrantz
2016-03-09 18:11:36 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 0b8cf7f959cbd10385bfa954b07ec2351369009b
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 13:33:52 2016 -0500

do not add render updates during damage of deleted clients
---
src/bin/e_comp_object.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 27393af..28f14b1 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3350,7 +3350,8 @@ e_comp_object_damage(Evas_Object *obj, int x, int y, int w, int h)
RENDER_DEBUG("DAMAGE: %d,%d %dx%d", x, y, w, h);
}
cw->updates_exist = 1;
- e_comp_object_render_update_add(obj);
+ if (!e_object_is_del(E_OBJECT(cw->ec)))
+ e_comp_object_render_update_add(obj);
}

E_API Eina_Bool

--
Mike Blumenkrantz
2016-03-09 18:11:35 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 1c0e13c575e297c5eeece4fd9dd7d717961a6564
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 10:37:45 2016 -0500

remove impossible null check in color dialog

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

diff --git a/src/bin/e_color_dialog.c b/src/bin/e_color_dialog.c
index 86ab5ed..54d3c78 100644
--- a/src/bin/e_color_dialog.c
+++ b/src/bin/e_color_dialog.c
@@ -123,7 +123,7 @@ _e_color_dialog_cb_csel_change(void *data, Evas_Object *obj, void *ev EINA_UNUSE
re = evas_object_data_get(obj, "rect");
evas_color_argb_premul(dia->color->a, &r, &g, &b);
evas_object_color_set(re, r, g, b, dia->color->a);
- if (dia->change_func && dia->color)
+ if (dia->change_func)
dia->change_func(dia, dia->color, dia->change_data);
}


--
Chris Michael
2016-03-09 18:11:37 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit b113fd96fb45ba5083c0da34998e777fb53f7c66
Author: Chris Michael <***@osg.samsung.com>
Date: Tue Mar 1 10:27:13 2016 -0500

add prototype functions for missing wl_data_offer interface

As we require wayland 1.10 now, there were missing functions for
wl_data_offer interface. This patch just adds placeholders for those
missing functions until we can implement them

Signed-off-by: Chris Michael <***@osg.samsung.com>
---
src/bin/e_comp_wl_data.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/src/bin/e_comp_wl_data.c b/src/bin/e_comp_wl_data.c
index 54a6f70..6df9d13 100644
--- a/src/bin/e_comp_wl_data.c
+++ b/src/bin/e_comp_wl_data.c
@@ -48,6 +48,18 @@ _e_comp_wl_data_offer_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl
wl_resource_destroy(resource);
}

+static void
+_e_comp_wl_data_offer_cb_finish(struct wl_client *client EINA_UNUSED, struct wl_resource *resource EINA_UNUSED)
+{
+ /* TODO: implement */
+}
+
+static void
+_e_comp_wl_data_offer_cb_actions_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource EINA_UNUSED, uint32_t actions EINA_UNUSED, uint32_t preferred_action EINA_UNUSED)
+{
+ /* TODO: implement */
+}
+
/* called by wl_resource_destroy */
static void
_e_comp_wl_data_offer_cb_resource_destroy(struct wl_resource *resource)
@@ -82,6 +94,8 @@ static const struct wl_data_offer_interface _e_data_offer_interface =
_e_comp_wl_data_offer_cb_accept,
_e_comp_wl_data_offer_cb_receive,
_e_comp_wl_data_offer_cb_destroy,
+ _e_comp_wl_data_offer_cb_finish,
+ _e_comp_wl_data_offer_cb_actions_set,
};

static void

--
Mike Blumenkrantz
2016-03-09 18:11:43 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 5580a040abfec6f5bdd21464cc982cbd13591c67
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Mar 7 14:43:02 2016 -0500

reverse ordering for x11 client mouse in NotifyVirtual and NotifyInferior details

apparently I did this backwards.

ref 7b7dbbc24955f64f3d84289cc5eccd4f6bda1527
---
src/bin/e_comp_x.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index d5ec68c..70d7971 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -2248,13 +2248,13 @@ _e_comp_x_mouse_in(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_M
{
if (ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR)
{
- if (ev->win != e_client_util_win_get(ec)) return ECORE_CALLBACK_RENEW;
- if (ev->event_win != e_client_util_pwin_get(ec)) return ECORE_CALLBACK_RENEW;
+ if (ev->win != e_client_util_pwin_get(ec)) return ECORE_CALLBACK_RENEW;
+ if (ev->event_win != e_client_util_win_get(ec)) return ECORE_CALLBACK_RENEW;
}
if (ev->detail == ECORE_X_EVENT_DETAIL_VIRTUAL)
{
- if (ev->win != e_client_util_pwin_get(ec)) return ECORE_CALLBACK_RENEW;
- if (ev->event_win != e_client_util_win_get(ec)) return ECORE_CALLBACK_RENEW;
+ if (ev->win != e_client_util_win_get(ec)) return ECORE_CALLBACK_RENEW;
+ if (ev->event_win != e_client_util_pwin_get(ec)) return ECORE_CALLBACK_RENEW;
}
if (!evas_object_visible_get(ec->frame)) return ECORE_CALLBACK_RENEW;
}

--
Derek Foreman
2016-03-09 18:11:48 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 4e1d7e3854f5eed893bb26bb920bd9acc15d59c7
Author: Derek Foreman <***@osg.samsung.com>
Date: Fri Mar 4 16:24:18 2016 -0600

Add a NULL check in native_surface_init under wayland
---
src/bin/e_pixmap.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index a7f66d5..80d4232 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -580,6 +580,7 @@ e_pixmap_native_surface_init(E_Pixmap *cp, Evas_Native_Surface *ns)
break;
case E_PIXMAP_TYPE_WL:
#ifdef HAVE_WAYLAND
+ if (!cp->buffer) return EINA_FALSE;
ns->type = EVAS_NATIVE_SURFACE_WL;
ns->version = EVAS_NATIVE_SURFACE_VERSION;
ns->data.wl.legacy_buffer = cp->buffer->resource;

--
Chris Michael
2016-03-09 18:11:39 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit c97b52b02c5d75d3c38d5acb05574df6b44dff8a
Author: Chris Michael <***@osg.samsung.com>
Date: Tue Mar 1 10:52:50 2016 -0500

add prototype functions for missing wl_data_source interface

As we require wayland 1.10 now, there were missing functions for the
wl_data_source interface. This patch just adds placeholders for those
missing functions until we can implement them

Signed-off-by: Chris Michael <***@osg.samsung.com>
---
src/bin/e_comp_wl_data.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/src/bin/e_comp_wl_data.c b/src/bin/e_comp_wl_data.c
index 6df9d13..a26f801 100644
--- a/src/bin/e_comp_wl_data.c
+++ b/src/bin/e_comp_wl_data.c
@@ -120,6 +120,12 @@ _e_comp_wl_data_source_cb_destroy(struct wl_client *client EINA_UNUSED, struct w
wl_resource_destroy(resource);
}

+static void
+_e_comp_wl_data_source_cb_actions_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource EINA_UNUSED, uint32_t actions EINA_UNUSED)
+{
+ /* TODO: implement */
+}
+
/* called by wl_resource_destroy */
static void
_e_comp_wl_data_source_cb_resource_destroy(struct wl_resource *resource)
@@ -161,6 +167,7 @@ static const struct wl_data_source_interface _e_data_source_interface =
{
_e_comp_wl_data_source_cb_offer,
_e_comp_wl_data_source_cb_destroy,
+ _e_comp_wl_data_source_cb_actions_set,
};

static void

--
Mike Blumenkrantz
2016-03-09 18:11:40 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 440d9ceb81577e085c59d27f6bdcea83a104c773
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Fri Mar 4 13:06:41 2016 -0500

don't directly use image data when creating a comp object mirror

in the case where pixmap image data does not yet exist, the returned
pointer will be garbage data from the internal buffer
---
src/bin/e_comp_object.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 28f14b1..ff356ba 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3824,7 +3824,10 @@ e_comp_object_util_mirror_add(Evas_Object *obj)
evas_object_image_size_set(o, w, h);

if (cw->ec->shaped)
- pix = evas_object_image_data_get(cw->obj, 0);
+ {
+ if (e_pixmap_image_data_get(cw->ec->pixmap))
+ pix = evas_object_image_data_get(cw->obj, 0);
+ }
else
{
if (cw->native)
@@ -3840,7 +3843,7 @@ e_comp_object_util_mirror_add(Evas_Object *obj)
}
}
else
- pix = evas_object_image_data_get(cw->obj, EINA_FALSE);
+ pix = e_pixmap_image_data_get(cw->ec->pixmap);
}
if (pix)
{
@@ -3857,7 +3860,8 @@ e_comp_object_util_mirror_add(Evas_Object *obj)
//evas_object_image_border_set(o, bx, by, bxx, byy);
//evas_object_image_border_center_fill_set(o, EVAS_BORDER_FILL_SOLID);
evas_object_image_data_set(o, pix);
- evas_object_image_data_set(cw->obj, pix);
+ if (cw->ec->shaped)
+ evas_object_image_data_set(cw->obj, pix);
if (dirty)
evas_object_image_data_update_add(o, 0, 0, w, h);
}

--
Carsten Haitzler
2016-03-09 18:11:47 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit bc5d9ecb03008bb98e93bd4f72197fe6411592c1
Author: Carsten Haitzler (Rasterman) <***@rasterman.com>
Date: Tue Mar 8 13:45:59 2016 +0900

e xkbswitch: don't free layouts that are just pointed to in instances

we free the instance layout even though tthis is never duplicated but
jhust set to point to the current_layout. don't free it as this causes
a double-free. this fixes a crash here.

@fix
---
src/modules/xkbswitch/e_mod_main.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/src/modules/xkbswitch/e_mod_main.c b/src/modules/xkbswitch/e_mod_main.c
index 9df61a4..bef0181 100644
--- a/src/modules/xkbswitch/e_mod_main.c
+++ b/src/modules/xkbswitch/e_mod_main.c
@@ -141,10 +141,7 @@ _xkb_update_icon(int cur_group)
EINA_LIST_FOREACH(instances, l, inst)
{
if (!e_config_xkb_layout_eq(e_config->xkb.current_layout, inst->layout))
- {
- e_config_xkb_layout_free(inst->layout);
- inst->layout = e_config->xkb.current_layout;
- }
+ inst->layout = e_config->xkb.current_layout;
E_FREE_FUNC(inst->o_xkbflag, evas_object_del);
e_theme_edje_object_set(inst->o_xkbswitch,
"base/theme/modules/xkbswitch",
@@ -158,10 +155,7 @@ _xkb_update_icon(int cur_group)
EINA_LIST_FOREACH(instances, l, inst)
{
if (!e_config_xkb_layout_eq(e_config->xkb.current_layout, inst->layout))
- {
- e_config_xkb_layout_free(inst->layout);
- inst->layout = e_config->xkb.current_layout;
- }
+ inst->layout = e_config->xkb.current_layout;
if (!inst->o_xkbflag)
inst->o_xkbflag = e_icon_add(inst->gcc->gadcon->evas);
e_theme_edje_object_set(inst->o_xkbswitch,

--
Mike Blumenkrantz
2016-03-09 18:11:45 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 85b24335595f708a331e3877bf0fe6d6130e2ba7
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Mar 7 14:45:32 2016 -0500

apply x11 mouse in event for clients using a job

due to event bursts, it's possible for multiple x11 clients to receive
mouse in events on during the same main loop iteration. in this scenario,
only the last client has received an actionable mouse in, and applying this
event after the dispatch has completed ensures that multiple clients do not
all receive mouse in+out events during the same loop

this greatly improves mouse-based focus reliability in a number of cases
---
src/bin/e_comp_x.c | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index e0aadce..f8e0d6e 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -52,6 +52,8 @@ static Eina_Hash *damages_hash = NULL;
static Eina_Hash *frame_extents = NULL;
static Eina_Hash *alarm_hash = NULL;

+static Evas_Point mouse_in_coords = {-1, -1};
+static Ecore_Job *mouse_in_job;
static Ecore_Idle_Enterer *_e_comp_x_post_client_idler = NULL;
static Ecore_Idle_Enterer *_x_idle_flush = NULL;
static Eina_List *post_clients = NULL;
@@ -2236,6 +2238,14 @@ _e_comp_x_mapping_change(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_E
return ECORE_CALLBACK_PASS_ON;
}

+static void
+_e_comp_x_mouse_in_job(void *d EINA_UNUSED)
+{
+ if (mouse_client)
+ e_client_mouse_in(mouse_client, e_comp_canvas_x_root_adjust(mouse_in_coords.x), e_comp_canvas_x_root_adjust(mouse_in_coords.y));
+ mouse_in_job = NULL;
+}
+
static Eina_Bool
_e_comp_x_mouse_in(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Mouse_In *ev)
{
@@ -2260,7 +2270,10 @@ _e_comp_x_mouse_in(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_M
}
if (_e_comp_x_client_data_get(ec)->deleted) return ECORE_CALLBACK_RENEW;
mouse_client = ec;
- e_client_mouse_in(ec, e_comp_canvas_x_root_adjust(ev->root.x), e_comp_canvas_x_root_adjust(ev->root.y));
+ if (!mouse_in_job)
+ mouse_in_job = ecore_job_add(_e_comp_x_mouse_in_job, NULL);
+ mouse_in_coords.x = ev->root.x;
+ mouse_in_coords.y = ev->root.y;
return ECORE_CALLBACK_RENEW;
}

@@ -2281,7 +2294,11 @@ _e_comp_x_mouse_out(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_
ec = _e_comp_x_client_find_by_window(ev->win);
if (!ec) return ECORE_CALLBACK_RENEW;
if (_e_comp_x_client_data_get(ec)->deleted) return ECORE_CALLBACK_RENEW;
- if (mouse_client == ec) mouse_client = NULL;
+ if (mouse_client == ec)
+ {
+ mouse_client = NULL;
+ E_FREE_FUNC(mouse_in_job, ecore_job_del);
+ }
if (ec->mouse.in)
e_client_mouse_out(ec, e_comp_canvas_x_root_adjust(ev->root.x), e_comp_canvas_x_root_adjust(ev->root.y));
return ECORE_CALLBACK_RENEW;
@@ -2388,7 +2405,8 @@ _e_comp_x_mouse_move(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Mouse_M
if (!evas_object_visible_get(tec->frame)) continue;
if (E_INSIDE(x, y, tec->x, tec->y, tec->w, tec->h)) return ECORE_CALLBACK_RENEW;
}
- e_client_mouse_in(ec, x, y);
+ if (!mouse_in_job)
+ e_client_mouse_in(ec, x, y);
}
return ECORE_CALLBACK_RENEW;
}
@@ -4937,6 +4955,7 @@ _e_comp_x_del(E_Comp *c)

eina_list_free(c->x_comp_data->retry_clients);
ecore_timer_del(c->x_comp_data->retry_timer);
+ E_FREE_FUNC(mouse_in_job, ecore_job_del);
free(c->x_comp_data);
}


--
Derek Foreman
2016-03-09 18:11:49 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 4ba7648c414cf31992cb76ac96d1862d8b4e2537
Author: Derek Foreman <***@osg.samsung.com>
Date: Fri Mar 4 15:08:07 2016 -0600

Render deleted objects as long as they still have a pixmap

In wayland we can be presented with a new frame before being deleted. If
we've never displayed that frame we should (since we released all pointers
to the old frame when we got the new one)
---
src/bin/e_comp_object.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 43d4ed7..887a0f8 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -863,7 +863,7 @@ _e_comp_object_pixels_get(void *data, Evas_Object *obj EINA_UNUSED)
int pw, ph;
int bx, by, bxx, byy;

- if (e_object_is_del(E_OBJECT(ec))) return;
+ if (!ec->pixmap) return;
if (!e_pixmap_size_get(ec->pixmap, &pw, &ph)) return;
//INF("PIXEL GET %p: %dx%d || %dx%d", ec, ec->w, ec->h, pw, ph);
e_pixmap_image_opaque_get(cw->ec->pixmap, &bx, &by, &bxx, &byy);

--
Mike Blumenkrantz
2016-03-09 18:11:41 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit d83621f7e40c58d8266dea7fb4b88e20bfc9ddfe
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Mar 7 14:39:56 2016 -0500

Revert "send mouse out+in on desk flip end"

This reverts commit 782cf3606e4a327d1ffe0a8a1598faeed5daa994.

should be resolved in a better way with upcoming commits
---
src/bin/e_desk.c | 5 -----
1 file changed, 5 deletions(-)

diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c
index 835e4c9..77f157a 100644
--- a/src/bin/e_desk.c
+++ b/src/bin/e_desk.c
@@ -654,11 +654,6 @@ e_desk_flip_end(E_Desk *desk)
_e_desk_event_desk_after_show_free, NULL);

e_comp_shape_queue();
- if (e_comp->comp_type == E_PIXMAP_TYPE_X)
- {
- evas_event_feed_mouse_out(e_comp->evas, 0, NULL);
- evas_event_feed_mouse_in(e_comp->evas, 0, NULL);
- }
if (!e_config->focus_last_focused_per_desktop) return;
if ((e_config->focus_policy == E_FOCUS_MOUSE) ||
(e_config->focus_policy == E_FOCUS_SLOPPY))

--
Derek Foreman
2016-03-09 18:11:51 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 74ce8dd7be215d99add29990fb2b56885c831547
Author: Derek Foreman <***@osg.samsung.com>
Date: Mon Feb 29 12:11:56 2016 -0600

Take an extra reference on wayland clients

We need to make sure wayland clients aren't deleted while the scene
graph has their data pointers, so we take an extra reference when creating
them.

We drop that reference by clearing the client's image data and putting it
in the render post_updates list.
---
src/bin/e_comp_wl.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 2f2eb06..60c0a81 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -137,6 +137,18 @@ _e_comp_wl_evas_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EIN

EINA_LIST_FOREACH(ec->e.state.video_child, l, tmp)
evas_object_hide(tmp->frame);
+
+ if (!e_object_is_del(E_OBJECT(ec))) return;
+
+ e_comp_object_dirty(ec->frame);
+ e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
+ if (!e_comp_object_render(ec->frame)) return;
+ if (!ec->on_post_updates)
+ {
+ ec->on_post_updates = EINA_TRUE;
+ e_comp->post_updates = eina_list_append(e_comp->post_updates, ec);
+ }
+ else e_object_unref(E_OBJECT(ec));
}

static void
@@ -1533,6 +1545,8 @@ _e_comp_wl_compositor_cb_surface_create(struct wl_client *client, struct wl_reso
#endif
/* emit surface create signal */
wl_signal_emit(&e_comp_wl->signals.surface.create, res);
+
+ e_object_ref(E_OBJECT(ec));
}

static void

--
Derek Foreman
2016-03-09 18:11:58 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 6f7ed23bc9506d938d5b9bfe75666a3b736628db
Author: Derek Foreman <***@osg.samsung.com>
Date: Thu Feb 18 11:05:58 2016 -0600

Don't use e_pixmap_image_data_argb_convert for wayland images

All we really need for wayland is to set alpha properly, so we can
save the conversion/copy when doing XRGB.
---
src/bin/e_comp_object.c | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 500f70a..f7c8590 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3697,6 +3697,19 @@ e_comp_object_render(Evas_Object *obj)
evas_object_image_pixels_dirty_set(cw->obj, EINA_FALSE);

RENDER_DEBUG("RENDER SIZE: %dx%d", pw, ph);
+
+ if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
+ {
+ Eina_Bool alpha = e_pixmap_image_is_argb(cw->ec->pixmap);
+
+ it = NULL;
+ pix = e_pixmap_image_data_get(cw->ec->pixmap);
+ evas_object_image_data_set(cw->obj, cw->blanked ? NULL : pix);
+ evas_object_image_alpha_set(cw->obj, alpha);
+ ret = EINA_TRUE;
+ goto end;
+ }
+
it = eina_tiler_iterator_new(cw->pending_updates);
if (e_pixmap_image_is_argb(cw->ec->pixmap))
{

--
Mike Blumenkrantz
2016-03-09 18:11:09 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit d3b6e7a21910d208138437db3bb242c627d88f4f
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 22 17:48:35 2016 -0500

enable comp object image data refresh if a dirty call is made with no damages

this indicates that a buffer has changed, but there is no new data to draw
---
src/bin/e_comp_object.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 6527a35..27393af 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3622,7 +3622,7 @@ e_comp_object_dirty(Evas_Object *obj)
if (!dirty) w = h = 1;
evas_object_image_pixels_dirty_set(cw->obj, cw->blanked ? 0 : dirty);
if (!dirty)
- evas_object_image_data_set(cw->obj, NULL);
+ evas_object_image_data_set(cw->obj, e_pixmap_image_data_get(cw->ec->pixmap));
evas_object_image_size_set(cw->obj, w, h);

RENDER_DEBUG("SIZE [%p]: %dx%d", cw->ec, w, h);

--
Derek Foreman
2016-03-09 18:11:56 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 20303989de20a837f6a7863f442feb9686f0408b
Author: Derek Foreman <***@osg.samsung.com>
Date: Tue Feb 16 13:38:31 2016 -0600

Re-enable window close animations for wayland

These should work properly with the new buffer management code.
---
src/bin/e_client.h | 1 -
src/bin/e_comp_object.c | 14 --------------
src/bin/e_comp_wl.c | 12 ++----------
3 files changed, 2 insertions(+), 25 deletions(-)

diff --git a/src/bin/e_client.h b/src/bin/e_client.h
index a6b0cac..13d24fd 100644
--- a/src/bin/e_client.h
+++ b/src/bin/e_client.h
@@ -636,7 +636,6 @@ struct E_Client
unsigned int internal : 1;
unsigned int internal_no_remember : 1;
unsigned int internal_no_reopen : 1;
- Eina_Bool dead : 1;

Evas_Object *internal_elm_win;

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 1163674..ece7d2e 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -2187,20 +2187,6 @@ _e_comp_smart_hide(Evas_Object *obj)
evas_object_hide(cw->clip);
if (cw->input_obj) evas_object_hide(cw->input_obj);
evas_object_hide(cw->effect_obj);
- if (cw->ec->dead)
- {
- Evas_Object *o;
-
- evas_object_hide(cw->obj);
- EINA_LIST_FREE(cw->obj_mirror, o)
- {
- evas_object_image_data_set(o, NULL);
- evas_object_freeze_events_set(o, 1);
- evas_object_event_callback_del_full(o, EVAS_CALLBACK_DEL, _e_comp_object_cb_mirror_del, cw);
- evas_object_del(o);
- }
- if (!_e_comp_object_animating_end(cw)) return;
- }
if (stopping) return;
if (!cw->ec->input_only)
{
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index bcf1205..0e7879c 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1441,14 +1441,6 @@ static const struct wl_surface_interface _e_surface_interface =
#endif
};

-static void
-_e_comp_wl_surface_render_stop(E_Client *ec)
-{
- /* FIXME: this may be fine after e_pixmap can create textures for wl clients? */
- //if ((!ec->internal) && (!e_comp_gl_get()))
- ec->dead = ec->hidden = 1;
- evas_object_hide(ec->frame);
-}

static void
_e_comp_wl_surface_destroy(struct wl_resource *resource)
@@ -1457,7 +1449,7 @@ _e_comp_wl_surface_destroy(struct wl_resource *resource)

if (!(ec = wl_resource_get_user_data(resource))) return;

- _e_comp_wl_surface_render_stop(ec);
+ evas_object_hide(ec->frame);
e_object_del(E_OBJECT(ec));
}

@@ -2278,7 +2270,7 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, E_Client *ec)
wl_resource_set_user_data(ec->comp_data->surface, NULL);

if (ec->internal_elm_win)
- _e_comp_wl_surface_render_stop(ec);
+ evas_object_hide(ec->frame);
_e_comp_wl_focus_check();
}


--
Mike Blumenkrantz
2016-03-09 18:12:01 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 4a408dfdbc94d1e11c3b37459477da032ad3c8bd
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Tue Mar 8 15:59:57 2016 -0500

always run client res changes in e_comp_canvas_update()

this function is only called when screen geometry (or useful geometry) has
changed, and so all clients should have their geometries checked at this point
to ensure that they update for any new zone obstacle changes which have occurred
---
src/bin/e_comp_canvas.c | 41 ++++++++++++++++++++---------------------
1 file changed, 20 insertions(+), 21 deletions(-)

diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c
index 3045282..15b361f 100644
--- a/src/bin/e_comp_canvas.c
+++ b/src/bin/e_comp_canvas.c
@@ -532,6 +532,26 @@ e_comp_canvas_update(void)
}
}

+ for (i = 0; i < 11; i++)
+ {
+ Eina_List *tmp = NULL;
+ E_Client *ec;
+
+ if (!e_comp->layers[i].clients) continue;
+ /* Make temporary list as e_client_res_change_geometry_restore
+ * rearranges the order. */
+ EINA_INLIST_FOREACH(e_comp->layers[i].clients, ec)
+ {
+ if (!e_client_util_ignored_get(ec))
+ tmp = eina_list_append(tmp, ec);
+ }
+
+ EINA_LIST_FREE(tmp, ec)
+ {
+ e_client_res_change_geometry_save(ec);
+ e_client_res_change_geometry_restore(ec);
+ }
+ }
if (!changed) return;
if (!starting)
{
@@ -554,27 +574,6 @@ e_comp_canvas_update(void)
}
e_comp_canvas_zone_update(zone);
}
-
- for (i = 0; i < 11; i++)
- {
- Eina_List *tmp = NULL;
- E_Client *ec;
-
- if (!e_comp->layers[i].clients) continue;
- /* Make temporary list as e_client_res_change_geometry_restore
- * rearranges the order. */
- EINA_INLIST_FOREACH(e_comp->layers[i].clients, ec)
- {
- if (!e_client_util_ignored_get(ec))
- tmp = eina_list_append(tmp, ec);
- }
-
- EINA_LIST_FREE(tmp, ec)
- {
- e_client_res_change_geometry_save(ec);
- e_client_res_change_geometry_restore(ec);
- }
- }
}

E_API void

--
Mike Blumenkrantz
2016-03-09 18:11:42 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit a346c622b638b80e78dd5321d2668acd4095b4e2
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Mar 7 14:40:27 2016 -0500

reject x11 client mouse-in events on comp object based on frame geometry

mousing over a window for an x11 client should always yield x11 mouse events
in cases where mouse eventing is required; any events occurring on the comp
object in other cases inside the xwindow region are able to be ignored
---
src/bin/e_comp_object.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index ff356ba..43d4ed7 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -350,11 +350,17 @@ _e_comp_object_cb_signal_bind(void *data, Evas_Object *obj EINA_UNUSED, const ch

/* handle evas mouse-in events on client object */
static void
-_e_comp_object_cb_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
+_e_comp_object_cb_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info)
{
Evas_Event_Mouse_In *ev = event_info;
E_Comp_Object *cw = data;

+ if (e_pixmap_is_x(cw->ec->pixmap))
+ {
+ if (!e_comp_object_frame_allowed(obj)) return;
+ if (E_INSIDE(ev->output.x, ev->output.y, cw->ec->client.x, cw->ec->client.y,
+ cw->ec->client.w, cw->ec->client.h)) return;
+ }
e_client_mouse_in(cw->ec, ev->output.x, ev->output.y);
}


--
Derek Foreman
2016-03-09 18:11:53 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 71433691da9894fa7d014d13e3379357c9e67249
Author: Derek Foreman <***@osg.samsung.com>
Date: Fri Mar 4 15:46:14 2016 -0600

Track whether a render is in progress or not

We'll need this to protect certain wayland operations.
---
src/bin/e_comp.h | 2 ++
src/bin/e_comp_canvas.c | 5 +++++
2 files changed, 7 insertions(+)

diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h
index d343036..1f4f2d5 100644
--- a/src/bin/e_comp.h
+++ b/src/bin/e_comp.h
@@ -155,6 +155,8 @@ struct _E_Comp
Eina_Bool nocomp_want : 1;
Eina_Bool saver : 1;
Eina_Bool shape_queue_blocked : 1;
+
+ Eina_Bool rendering : 1; // we've received a pre-render callback but no post-render yet.
};


diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c
index ac30c05..3045282 100644
--- a/src/bin/e_comp_canvas.c
+++ b/src/bin/e_comp_canvas.c
@@ -50,6 +50,9 @@ _e_comp_canvas_render_post(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *ev
//EINA_LIST_FOREACH(ev->updated_area, l, r)
//INF("POST RENDER: %d,%d %dx%d", r->x, r->y, r->w, r->h);
//}
+
+ e_comp->rendering = EINA_FALSE;
+
EINA_LIST_FREE(e_comp->post_updates, ec)
{
//INF("POST %p", ec);
@@ -210,6 +213,8 @@ _e_comp_canvas_prerender(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *even
E_Comp_Cb cb;
Eina_List *l;

+ e_comp->rendering = EINA_TRUE;
+
EINA_LIST_FOREACH(e_comp->pre_render_cbs, l, cb)
cb();
}

--
Derek Foreman
2016-03-09 18:11:50 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit d38cc38b9d9f5feb292d2d8d0d0a660dd5739432
Author: Derek Foreman <***@osg.samsung.com>
Date: Fri Feb 19 11:50:16 2016 -0600

Track whether objects are on the post_updates list or not

Will use this to prevent accidentally adding objects to the list twice
---
src/bin/e_client.h | 1 +
src/bin/e_comp_canvas.c | 1 +
src/bin/e_comp_object.c | 2 ++
3 files changed, 4 insertions(+)

diff --git a/src/bin/e_client.h b/src/bin/e_client.h
index 14427b9..a6b0cac 100644
--- a/src/bin/e_client.h
+++ b/src/bin/e_client.h
@@ -698,6 +698,7 @@ struct E_Client
Eina_Bool maximize_override : 1; // client is doing crazy stuff and should "just do it" when moving/resizing
Eina_Bool keyboard_resizing : 1;

+ Eina_Bool on_post_updates : 1; // client is on the post update list
#ifdef HAVE_WAYLAND
uuid_t uuid;
#endif
diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c
index a126d05..ac30c05 100644
--- a/src/bin/e_comp_canvas.c
+++ b/src/bin/e_comp_canvas.c
@@ -53,6 +53,7 @@ _e_comp_canvas_render_post(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *ev
EINA_LIST_FREE(e_comp->post_updates, ec)
{
//INF("POST %p", ec);
+ ec->on_post_updates = EINA_FALSE;
if (!e_object_is_del(E_OBJECT(ec)))
e_pixmap_image_clear(ec->pixmap, 1);
UNREFD(ec, 111);
diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 887a0f8..1163674 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -900,6 +900,7 @@ _e_comp_object_pixels_get(void *data, Evas_Object *obj EINA_UNUSED)
if (cw->native)
{
E_FREE_FUNC(cw->pending_updates, eina_tiler_free);
+ cw->ec->on_post_updates = EINA_TRUE;
e_comp->post_updates = eina_list_append(e_comp->post_updates, cw->ec);
REFD(cw->ec, 111);
e_object_ref(E_OBJECT(cw->ec));
@@ -3787,6 +3788,7 @@ end:
E_FREE_FUNC(cw->pending_updates, eina_tiler_free);
if (ret)
{
+ cw->ec->on_post_updates = EINA_TRUE;
e_comp->post_updates = eina_list_append(e_comp->post_updates, cw->ec);
REFD(cw->ec, 111);
e_object_ref(E_OBJECT(cw->ec));

--
Derek Foreman
2016-03-09 18:11:57 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 388ec769c054d95c414e6be96b421dda6bba30f0
Author: Derek Foreman <***@osg.samsung.com>
Date: Tue Feb 16 15:48:24 2016 -0600

Stop copying all wayland buffers

The new buffer management shouldn't require this anymore.
---
src/bin/e_comp_object.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index ece7d2e..500f70a 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3726,16 +3726,7 @@ e_comp_object_render(Evas_Object *obj)
}
else
ret = EINA_TRUE;
- /* set pixel data */
- if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
- {
-#warning FIXME BROKEN WAYLAND SHM BUFFER PROTOCOL
- evas_object_image_data_copy_set(cw->obj, cw->blanked ? NULL : pix);
- pix = evas_object_image_data_get(cw->obj, 0);
- evas_object_image_data_set(cw->obj, pix);
- }
- else
- evas_object_image_data_set(cw->obj, cw->blanked ? NULL : pix);
+ evas_object_image_data_set(cw->obj, cw->blanked ? NULL : pix);
goto end;
}


--
Mike Blumenkrantz
2016-03-09 18:12:00 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 53941a7dc0f97ec490bb84eba48848f13038a906
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Tue Mar 8 14:53:00 2016 -0500

block re-unsetting of native surface for comp objects

due to recent evas internals changes, this breaks software compositing
---
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 f7c8590..d31c17f 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3543,6 +3543,7 @@ e_comp_object_native_surface_set(Evas_Object *obj, Eina_Bool set)
EINA_SAFETY_ON_NULL_RETURN(cw->ec);
if (cw->ec->input_only) return;
set = !!set;
+ if ((!set) && (!cw->native)) return;

if (set)
{

--
Derek Foreman
2016-03-09 18:11:52 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit d44d33495308c4aea5605c106948c6507b414a28
Author: Derek Foreman <***@osg.samsung.com>
Date: Mon Feb 29 12:12:35 2016 -0600

Don't allow deleted wayland clients to set the cursor
---
src/bin/e_comp_wl_input.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c
index 47c0f7d..fc7c642 100644
--- a/src/bin/e_comp_wl_input.c
+++ b/src/bin/e_comp_wl_input.c
@@ -37,6 +37,7 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resou

E_CLIENT_FOREACH(ec)
{
+ if (e_object_is_del(E_OBJECT(ec))) continue;
if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) continue;
if (!ec->comp_data->surface) continue;
if (client != wl_resource_get_client(ec->comp_data->surface)) continue;

--
Mike Blumenkrantz
2016-03-09 18:11:44 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit ad873f03ab8291adc51cc5650dd584b79f72892a
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Mar 7 14:44:16 2016 -0500

only use x11 mouse out event if client has received mouse in previously
---
src/bin/e_comp_x.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 70d7971..e0aadce 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -2282,7 +2282,8 @@ _e_comp_x_mouse_out(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_
if (!ec) return ECORE_CALLBACK_RENEW;
if (_e_comp_x_client_data_get(ec)->deleted) return ECORE_CALLBACK_RENEW;
if (mouse_client == ec) mouse_client = NULL;
- e_client_mouse_out(ec, e_comp_canvas_x_root_adjust(ev->root.x), e_comp_canvas_x_root_adjust(ev->root.y));
+ if (ec->mouse.in)
+ e_client_mouse_out(ec, e_comp_canvas_x_root_adjust(ev->root.x), e_comp_canvas_x_root_adjust(ev->root.y));
return ECORE_CALLBACK_RENEW;
}


--
Chris Michael
2016-03-09 18:11:38 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit b7f1fa0b538bb2205aab858e19d77e64a0784fb3
Author: Chris Michael <***@osg.samsung.com>
Date: Tue Mar 1 10:45:21 2016 -0500

add prototype function for missing wl_seat interface

As we require wayland 1.10 now, the wl_seat_interface implementation
was missing a function pointer for the 'release' request. This patch
just implements a function placeholder until we can implement it.

Signed-off-by: Chris Michael <***@osg.samsung.com>
---
src/bin/e_comp_wl_input.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c
index 44ec56f..47c0f7d 100644
--- a/src/bin/e_comp_wl_input.c
+++ b/src/bin/e_comp_wl_input.c
@@ -236,11 +236,18 @@ _e_comp_wl_input_cb_touch_get(struct wl_client *client EINA_UNUSED, struct wl_re
_e_comp_wl_input_cb_touch_unbind);
}

+static void
+_e_comp_wl_input_cb_release(struct wl_client *client EINA_UNUSED, struct wl_resource *resource EINA_UNUSED)
+{
+ /* TODO: implement */
+}
+
static const struct wl_seat_interface _e_seat_interface =
{
_e_comp_wl_input_cb_pointer_get,
_e_comp_wl_input_cb_keyboard_get,
_e_comp_wl_input_cb_touch_get,
+ _e_comp_wl_input_cb_release,
};

static void

--
Derek Foreman
2016-03-09 18:11:55 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit ee43c83c7d839516fca02ab6ad6cfafd5ca67927
Author: Derek Foreman <***@osg.samsung.com>
Date: Tue Feb 16 13:33:25 2016 -0600

Remove wayland buffer reference

This code is similar to code in weston, but doesn't really work properly
for us in E, since this can blow up buffers behind the async renderer's
back.

The rest of the reference code has been pushed into e_pixmap, so we can
kill this all now.
---
src/bin/e_comp_wl.c | 35 -----------------------------------
src/bin/e_comp_wl.h | 10 ----------
2 files changed, 45 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 381c7a9..bcf1205 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -730,16 +730,6 @@ _e_comp_wl_evas_cb_color_set(void *data, Evas_Object *obj, void *event EINA_UNUS
}

static void
-_e_comp_wl_buffer_reference_cb_destroy(struct wl_listener *listener, void *data)
-{
- E_Comp_Wl_Buffer_Ref *ref;
-
- ref = container_of(listener, E_Comp_Wl_Buffer_Ref, destroy_listener);
- if ((E_Comp_Wl_Buffer *)data != ref->buffer) return;
- ref->buffer = NULL;
-}
-
-static void
_e_comp_wl_buffer_cb_destroy(struct wl_listener *listener, void *data EINA_UNUSED)
{
E_Comp_Wl_Buffer *buffer;
@@ -1987,7 +1977,6 @@ _e_comp_wl_subsurface_create(E_Client *ec, E_Client *epc, uint32_t id, struct wl
_e_comp_wl_surface_state_init(&sdata->cached, ec->w, ec->h);

/* set subsurface data properties */
- sdata->cached_buffer_ref.buffer = NULL;
sdata->resource = res;
sdata->synchronized = EINA_TRUE;
sdata->parent = epc;
@@ -2821,30 +2810,6 @@ e_comp_wl_subsurface_commit(E_Client *ec)
return EINA_TRUE;
}

-EINTERN void
-e_comp_wl_buffer_reference(E_Comp_Wl_Buffer_Ref *ref, E_Comp_Wl_Buffer *buffer)
-{
- if ((ref->buffer) && (buffer != ref->buffer))
- {
- ref->buffer->busy--;
- if (ref->buffer->busy == 0)
- {
- if (!wl_resource_get_client(ref->buffer->resource)) return;
- wl_resource_queue_event(ref->buffer->resource, WL_BUFFER_RELEASE);
- }
- wl_list_remove(&ref->destroy_listener.link);
- }
-
- if ((buffer) && (buffer != ref->buffer))
- {
- buffer->busy++;
- wl_signal_add(&buffer->destroy_signal, &ref->destroy_listener);
- }
-
- ref->buffer = buffer;
- ref->destroy_listener.notify = _e_comp_wl_buffer_reference_cb_destroy;
-}
-
/**
* Get the buffer for a given resource.
*
diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h
index 3a18920..f28fd3f 100644
--- a/src/bin/e_comp_wl.h
+++ b/src/bin/e_comp_wl.h
@@ -43,7 +43,6 @@
})

typedef struct _E_Comp_Wl_Buffer E_Comp_Wl_Buffer;
-typedef struct _E_Comp_Wl_Buffer_Ref E_Comp_Wl_Buffer_Ref;
typedef struct _E_Comp_Wl_Subsurf_Data E_Comp_Wl_Subsurf_Data;
typedef struct _E_Comp_Wl_Surface_State E_Comp_Wl_Surface_State;
typedef struct _E_Comp_Wl_Client_Data E_Comp_Wl_Client_Data;
@@ -64,12 +63,6 @@ struct _E_Comp_Wl_Buffer
uint32_t busy;
};

-struct _E_Comp_Wl_Buffer_Ref
-{
- E_Comp_Wl_Buffer *buffer;
- struct wl_listener destroy_listener;
-};
-
struct _E_Comp_Wl_Surface_State
{
int sx, sy;
@@ -95,7 +88,6 @@ struct _E_Comp_Wl_Subsurf_Data
} position;

E_Comp_Wl_Surface_State cached;
- E_Comp_Wl_Buffer_Ref cached_buffer_ref;

Eina_Bool synchronized;
};
@@ -283,7 +275,6 @@ struct _E_Comp_Wl_Client_Data
E_Shell_Data *data;
} shell;

- E_Comp_Wl_Buffer_Ref buffer_ref;
E_Comp_Wl_Surface_State pending;

Eina_List *frames;
@@ -332,7 +323,6 @@ EINTERN struct wl_resource *e_comp_wl_surface_create(struct wl_client *client, i
EINTERN void e_comp_wl_surface_destroy(struct wl_resource *resource);
EINTERN Eina_Bool e_comp_wl_surface_commit(E_Client *ec);
EINTERN Eina_Bool e_comp_wl_subsurface_commit(E_Client *ec);
-EINTERN void e_comp_wl_buffer_reference(E_Comp_Wl_Buffer_Ref *ref, E_Comp_Wl_Buffer *buffer);
E_API E_Comp_Wl_Buffer *e_comp_wl_buffer_get(struct wl_resource *resource);

E_API struct wl_signal e_comp_wl_surface_create_signal_get(void);

--
Carsten Haitzler
2016-03-09 18:11:10 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 361b6d84e09014a5f2829b915ac3d1cc387fc319
Author: Carsten Haitzler (Rasterman) <***@rasterman.com>
Date: Tue Feb 23 13:54:24 2016 +0900

e - efm: fix op registry listener add and dont use eina_error

eina list stopped using eina_error like... so so so so so long ago like
before 1.0 - so eina_error value may be something junk and from
somewhere else where the list append succeeded but ena error said
fail- and that is what was happening and things crashed. this fixes this

@fix
---
src/bin/e_fm_op_registry.c | 8 --------
1 file changed, 8 deletions(-)

diff --git a/src/bin/e_fm_op_registry.c b/src/bin/e_fm_op_registry.c
index 1479185..0acee62 100644
--- a/src/bin/e_fm_op_registry.c
+++ b/src/bin/e_fm_op_registry.c
@@ -341,14 +341,6 @@ e_fm2_op_registry_entry_listener_add(E_Fm2_Op_Registry_Entry *entry, void (*cb)(

e = _e_fm2_op_registry_entry_internal_get(entry);
e->listeners = eina_inlist_append(e->listeners, EINA_INLIST_GET(listener));
- err = eina_error_get();
- if (err)
- {
- printf("could not add listener: %s\n", eina_error_msg_get(err));
- if (free_data) free_data((void *)data);
- free(listener);
- return;
- }
}

/**

--
Derek Foreman
2016-03-09 18:11:59 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 0959e59413233e427e587e2a69dee571740630bf
Author: Derek Foreman <***@osg.samsung.com>
Date: Thu Feb 18 11:06:40 2016 -0600

Remove argb_convert for wayland buffers

Wayland buffers are currently either ARGB or XRGB - we don't need to
convert either of these, we just need to set alpha appropriately - which
we now do.
---
src/bin/e_pixmap.c | 31 +------------------------------
1 file changed, 1 insertion(+), 30 deletions(-)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index af7f852..555d4e7 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -901,36 +901,7 @@ e_pixmap_image_data_argb_convert(E_Pixmap *cp, void *pix, void *ipix, Eina_Recta
break;
case E_PIXMAP_TYPE_WL:
if (cp->image_argb) return EINA_TRUE;
-#ifdef HAVE_WAYLAND
- if (cp->buffer)
- {
- struct wl_shm_buffer *shm_buffer;
- uint32_t format;
- int i, x, y;
- unsigned int *src, *dst;
-
- shm_buffer = cp->buffer->shm_buffer;
- if (!shm_buffer) return EINA_FALSE;
-
- format = wl_shm_buffer_get_format(shm_buffer);
- if (format == WL_SHM_FORMAT_XRGB8888)
- {
- dst = (unsigned int *)pix;
- src = (unsigned int *)ipix;
-
- for (y = 0; y < r->h; y++)
- {
- i = (r->y + y) * stride / 4 + r->x;
- for (x = 0; x < r->w; x++)
- dst[i+x] = 0xff000000 | src[i+x];
- }
- pix = (void *)dst;
- }
-
- return EINA_TRUE;
- }
-#endif
- break;
+ return EINA_FALSE;
default:
break;
}

--
Derek Foreman
2016-03-09 18:11:54 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 7aef5e74fde0a3d53a0f10f30fb38f363a593ece
Author: Derek Foreman <***@osg.samsung.com>
Date: Tue Feb 16 13:28:10 2016 -0600

Rework wayland buffer handling

We need to keep wayland buffers around even if they'll never be written
to again. This is part of Buffer_Reference's task in weston, but we
already have our pixmap abstraction which can serve mostly the same
purpose.

Remove the "buffer reference" stuff from e_pixmap and replace it with a
kept buffer for the last commit.

Add shared memory pool references to keep pools from going away on us.
---
src/bin/e_comp_wl.c | 6 +-
src/bin/e_comp_wl.h | 3 +
src/bin/e_pixmap.c | 155 +++++++++++++++++++++++++++++++++++++++++-----------
3 files changed, 130 insertions(+), 34 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 60c0a81..381c7a9 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1699,7 +1699,6 @@ _e_comp_wl_subsurface_destroy(struct wl_resource *resource)
}

_e_comp_wl_surface_state_finish(&sdata->cached);
- e_comp_wl_buffer_reference(&sdata->cached_buffer_ref, NULL);

/* the client is getting deleted, which means the pixmap will be getting
* freed. We need to unset the surface user data */
@@ -1746,8 +1745,9 @@ _e_comp_wl_subsurface_commit_to_cache(E_Client *ec)
sdata->cached.new_attach = EINA_TRUE;
_e_comp_wl_surface_state_buffer_set(&sdata->cached,
cdata->pending.buffer);
- e_comp_wl_buffer_reference(&sdata->cached_buffer_ref,
- cdata->pending.buffer);
+ e_pixmap_resource_set(ec->pixmap, cdata->pending.buffer);
+ e_pixmap_dirty(ec->pixmap);
+ e_pixmap_refresh(ec->pixmap);
}

sdata->cached.sx = cdata->pending.sx;
diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h
index 48c085f..3a18920 100644
--- a/src/bin/e_comp_wl.h
+++ b/src/bin/e_comp_wl.h
@@ -56,7 +56,10 @@ struct _E_Comp_Wl_Buffer
struct wl_resource *resource;
struct wl_signal destroy_signal;
struct wl_listener destroy_listener;
+ struct wl_listener deferred_destroy_listener;
struct wl_shm_buffer *shm_buffer;
+ struct wl_shm_pool *pool;
+ E_Pixmap *discarding_pixmap;
int32_t w, h;
uint32_t busy;
};
diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index 80d4232..af7f852 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -42,11 +42,13 @@ struct _E_Pixmap

#ifdef HAVE_WAYLAND
E_Comp_Wl_Buffer *buffer;
- E_Comp_Wl_Buffer_Ref buffer_ref;
+ E_Comp_Wl_Buffer *held_buffer;
struct wl_listener buffer_destroy_listener;
+ struct wl_listener held_buffer_destroy_listener;
void *data;
Eina_Rectangle opaque;
uuid_t uuid;
+ Eina_List *free_buffers;
#endif

Eina_Bool usable : 1;
@@ -55,15 +57,36 @@ struct _E_Pixmap
};

#ifdef HAVE_WAYLAND
+
+static void
+_e_pixmap_cb_deferred_buffer_destroy(struct wl_listener *listener, void *data EINA_UNUSED)
+{
+ E_Comp_Wl_Buffer *buffer;
+
+ buffer = container_of(listener, E_Comp_Wl_Buffer, deferred_destroy_listener);
+ buffer->discarding_pixmap->free_buffers = eina_list_remove(buffer->discarding_pixmap->free_buffers, buffer);
+ buffer->discarding_pixmap = NULL;
+}
+
static void
_e_pixmap_cb_buffer_destroy(struct wl_listener *listener, void *data EINA_UNUSED)
{
E_Pixmap *cp;

cp = container_of(listener, E_Pixmap, buffer_destroy_listener);
- cp->data = NULL;
+ cp->buffer = NULL;
cp->buffer_destroy_listener.notify = NULL;
}
+
+static void
+_e_pixmap_cb_held_buffer_destroy(struct wl_listener *listener, void *data EINA_UNUSED)
+{
+ E_Pixmap *cp;
+
+ cp = container_of(listener, E_Pixmap, held_buffer_destroy_listener);
+ cp->held_buffer = NULL;
+ cp->held_buffer_destroy_listener.notify = NULL;
+}
#endif

static void
@@ -102,6 +125,67 @@ _e_pixmap_image_clear_x(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_U
}
#endif

+#ifdef HAVE_WAYLAND
+static void
+_e_pixmap_wayland_buffer_release(E_Pixmap *cp, E_Comp_Wl_Buffer *buffer)
+{
+ if (!buffer) return;
+
+ if (e_comp->rendering)
+ {
+ if (buffer->discarding_pixmap) return;
+
+ buffer->discarding_pixmap = cp;
+ buffer->deferred_destroy_listener.notify = _e_pixmap_cb_deferred_buffer_destroy;
+ wl_signal_add(&buffer->destroy_signal, &buffer->deferred_destroy_listener);
+ cp->free_buffers = eina_list_append(cp->free_buffers, buffer);
+ return;
+ }
+
+ buffer->busy--;
+ if (buffer->busy) return;
+
+ wl_resource_queue_event(buffer->resource, WL_BUFFER_RELEASE);
+ wl_shm_pool_unref(buffer->pool);
+ buffer->pool = NULL;
+}
+
+static void
+_e_pixmap_wl_buffers_free(E_Pixmap *cp)
+{
+ E_Comp_Wl_Buffer *b;
+
+ if (e_comp->rendering) return;
+
+ EINA_LIST_FREE(cp->free_buffers, b)
+ {
+ wl_list_remove(&b->deferred_destroy_listener.link);
+ b->deferred_destroy_listener.notify = NULL;
+ _e_pixmap_wayland_buffer_release(cp, b);
+ b->discarding_pixmap = NULL;
+ }
+}
+
+static void
+_e_pixmap_wayland_image_clear(E_Pixmap *cp)
+{
+ EINA_SAFETY_ON_NULL_RETURN(cp);
+
+ if (!cp->held_buffer) return;
+ if (!cp->held_buffer->pool) return;
+
+ _e_pixmap_wayland_buffer_release(cp, cp->held_buffer);
+ if (cp->held_buffer_destroy_listener.notify)
+ {
+ wl_list_remove(&cp->held_buffer_destroy_listener.link);
+ cp->held_buffer_destroy_listener.notify = NULL;
+ }
+
+ cp->data = NULL;
+ cp->held_buffer = NULL;
+}
+#endif
+
static void
_e_pixmap_free(E_Pixmap *cp)
{
@@ -124,6 +208,7 @@ _e_pixmap_free(E_Pixmap *cp)
break;
case E_PIXMAP_TYPE_WL:
#ifdef HAVE_WAYLAND
+ _e_pixmap_wayland_image_clear(cp);
#endif
break;
default:
@@ -546,7 +631,25 @@ e_pixmap_resource_set(E_Pixmap *cp, void *resource)
{
if ((!cp) || (cp->type != E_PIXMAP_TYPE_WL)) return;
#ifdef HAVE_WAYLAND
+ if (cp->buffer == resource) return;
+
+ if (cp->buffer)
+ {
+ cp->buffer->busy--;
+ if (!cp->buffer->busy) wl_resource_queue_event(cp->buffer->resource, WL_BUFFER_RELEASE);
+ }
+ if (cp->buffer_destroy_listener.notify)
+ {
+ wl_list_remove(&cp->buffer_destroy_listener.link);
+ cp->buffer_destroy_listener.notify = NULL;
+ }
cp->buffer = resource;
+ if (!cp->buffer) return;
+ cp->buffer_destroy_listener.notify = _e_pixmap_cb_buffer_destroy;
+ wl_signal_add(&cp->buffer->destroy_signal,
+ &cp->buffer_destroy_listener);
+
+ cp->buffer->busy++;
#else
(void)resource;
#endif
@@ -607,7 +710,7 @@ e_pixmap_image_clear(E_Pixmap *cp, Eina_Bool cache)
#endif
#ifdef HAVE_WAYLAND
if (cp->type == E_PIXMAP_TYPE_WL)
- if (!cp->buffer_ref.buffer) return;
+ if (!cp->buffer) return;
#endif
}

@@ -638,6 +741,8 @@ e_pixmap_image_clear(E_Pixmap *cp, Eina_Bool cache)
struct wl_resource *cb;
Eina_List *free_list;

+ if (!e_comp->rendering) _e_pixmap_wl_buffers_free(cp);
+
if ((!cp->client) || (!cp->client->comp_data)) return;
cd = (E_Comp_Wl_Client_Data *)cp->client->comp_data;

@@ -652,13 +757,6 @@ e_pixmap_image_clear(E_Pixmap *cp, Eina_Bool cache)
wl_resource_destroy(cb);
}
}
- if (cp->buffer_destroy_listener.notify)
- {
- wl_list_remove(&cp->buffer_destroy_listener.link);
- cp->buffer_destroy_listener.notify = NULL;
- }
- e_comp_wl_buffer_reference(&cp->buffer_ref, NULL);
- cp->data = NULL;
#endif
break;
default:
@@ -696,27 +794,22 @@ e_pixmap_image_refresh(E_Pixmap *cp)
case E_PIXMAP_TYPE_WL:
#ifdef HAVE_WAYLAND
{
- E_Comp_Wl_Buffer *buffer = cp->buffer;
- struct wl_shm_buffer *shm_buffer;
+ if (cp->held_buffer == cp->buffer) return EINA_TRUE;

- shm_buffer = buffer->shm_buffer;
- if (cp->buffer_ref.buffer && (cp->buffer_ref.buffer != buffer))
- {
- /* FIXME: wtf? */
- }
- else if (cp->buffer_ref.buffer) return EINA_TRUE;
- e_comp_wl_buffer_reference(&cp->buffer_ref, buffer);
+ if (cp->held_buffer) _e_pixmap_wayland_image_clear(cp);

- if (cp->buffer_destroy_listener.notify)
- {
- wl_list_remove(&cp->buffer_destroy_listener.link);
- cp->buffer_destroy_listener.notify = NULL;
- }
+ if (!cp->buffer->shm_buffer) return EINA_TRUE;

- cp->buffer_destroy_listener.notify = _e_pixmap_cb_buffer_destroy;
- wl_signal_add(&buffer->destroy_signal, &cp->buffer_destroy_listener);
- if (shm_buffer)
- cp->data = wl_shm_buffer_get_data(shm_buffer);
+ cp->held_buffer = cp->buffer;
+ if (!cp->held_buffer) return EINA_TRUE;
+
+ cp->held_buffer->pool = wl_shm_buffer_ref_pool(cp->held_buffer->shm_buffer);
+ cp->held_buffer->busy++;
+ cp->data = wl_shm_buffer_get_data(cp->buffer->shm_buffer);
+
+ cp->held_buffer_destroy_listener.notify = _e_pixmap_cb_held_buffer_destroy;
+ wl_signal_add(&cp->held_buffer->destroy_signal,
+ &cp->held_buffer_destroy_listener);
return EINA_TRUE;
}
#endif
@@ -757,7 +850,7 @@ e_pixmap_image_is_argb(const E_Pixmap *cp)
#endif
case E_PIXMAP_TYPE_WL:
#ifdef HAVE_WAYLAND
- return ((cp->buffer_ref.buffer != NULL) && (cp->image_argb));
+ return ((cp->buffer != NULL) && (cp->image_argb));
#endif
default: break;
}
@@ -809,14 +902,14 @@ e_pixmap_image_data_argb_convert(E_Pixmap *cp, void *pix, void *ipix, Eina_Recta
case E_PIXMAP_TYPE_WL:
if (cp->image_argb) return EINA_TRUE;
#ifdef HAVE_WAYLAND
- if (cp->buffer_ref.buffer)
+ if (cp->buffer)
{
struct wl_shm_buffer *shm_buffer;
uint32_t format;
int i, x, y;
unsigned int *src, *dst;

- shm_buffer = cp->buffer_ref.buffer->shm_buffer;
+ shm_buffer = cp->buffer->shm_buffer;
if (!shm_buffer) return EINA_FALSE;

format = wl_shm_buffer_get_format(shm_buffer);

--
Mike Blumenkrantz
2016-03-09 18:11:46 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 5979808c8090406188dc115fba57bd0f2b17a5a8
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Mar 7 14:47:26 2016 -0500

apply x11 focus/unfocus using jobs

if multiple x11 clients receive focus during the same mainloop iteration,
an almost unbreakable cycle of window focus chaining will occur, resulting in
both windows being focused simultaneously--or so it appears--which results in
no window being able to receive input. to avoid this, ensure that only one x11
client can receive focus in a given loop iteration
---
src/bin/e_comp_x.c | 36 ++++++++++++++++++++++++++++++++++--
1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index f8e0d6e..5e1e6c0 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -54,6 +54,10 @@ static Eina_Hash *alarm_hash = NULL;

static Evas_Point mouse_in_coords = {-1, -1};
static Ecore_Job *mouse_in_job;
+static E_Client *focus_job_client;
+static Ecore_Job *focus_job;
+static E_Client *unfocus_job_client;
+static Ecore_Job *unfocus_job;
static Ecore_Idle_Enterer *_e_comp_x_post_client_idler = NULL;
static Ecore_Idle_Enterer *_x_idle_flush = NULL;
static Eina_List *post_clients = NULL;
@@ -4471,16 +4475,32 @@ _e_comp_x_hook_client_new(void *d EINA_UNUSED, E_Client *ec)
}

static void
-_e_comp_x_hook_client_focus_unset(void *d EINA_UNUSED, E_Client *ec)
+_e_comp_x_hook_client_focus_unset_job(void *d EINA_UNUSED)
{
+ E_Client *ec = unfocus_job_client;
+ unfocus_job = NULL;
+ if (!unfocus_job_client) return;
+ unfocus_job_client = NULL;
E_COMP_X_PIXMAP_CHECK;
_e_comp_x_focus_setup(ec);
_e_comp_x_focus_check();
}

static void
-_e_comp_x_hook_client_focus_set(void *d EINA_UNUSED, E_Client *ec)
+_e_comp_x_hook_client_focus_unset(void *d EINA_UNUSED, E_Client *ec)
+{
+ unfocus_job_client = ec;
+ if (!unfocus_job)
+ unfocus_job = ecore_job_add(_e_comp_x_hook_client_focus_unset_job, NULL);
+}
+
+static void
+_e_comp_x_hook_client_focus_set_job(void *d EINA_UNUSED)
{
+ E_Client *ec = focus_job_client;
+ focus_job = NULL;
+ if (!focus_job_client) return;
+ focus_job_client = NULL;
focus_time = ecore_x_current_time_get();
focus_canvas_time = 0;
if (!e_client_has_xwindow(ec))
@@ -4506,6 +4526,14 @@ _e_comp_x_hook_client_focus_set(void *d EINA_UNUSED, E_Client *ec)
}

static void
+_e_comp_x_hook_client_focus_set(void *d EINA_UNUSED, E_Client *ec)
+{
+ focus_job_client = ec;
+ if (!focus_job)
+ focus_job = ecore_job_add(_e_comp_x_hook_client_focus_set_job, NULL);
+}
+
+static void
_e_comp_x_hook_client_redirect(void *d EINA_UNUSED, E_Client *ec)
{
E_COMP_X_PIXMAP_CHECK;
@@ -4563,6 +4591,8 @@ _e_comp_x_hook_client_del(void *d EINA_UNUSED, E_Client *ec)
cd = _e_comp_x_client_data_get(ec);

if (mouse_client == ec) mouse_client = NULL;
+ if (focus_job_client == ec) focus_job_client = NULL;
+ if (unfocus_job_client == ec) unfocus_job_client = NULL;
if ((!stopping) && cd && (!cd->deleted))
ecore_x_window_prop_card32_set(win, E_ATOM_MANAGED, &visible, 1);
if ((!ec->already_unparented) && cd && cd->reparented)
@@ -4956,6 +4986,8 @@ _e_comp_x_del(E_Comp *c)
eina_list_free(c->x_comp_data->retry_clients);
ecore_timer_del(c->x_comp_data->retry_timer);
E_FREE_FUNC(mouse_in_job, ecore_job_del);
+ E_FREE_FUNC(focus_job, ecore_job_del);
+ E_FREE_FUNC(unfocus_job, ecore_job_del);
free(c->x_comp_data);
}


--
Mike Blumenkrantz
2016-03-09 18:12:03 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit c50aa176e8119f9bbd0376626e275241c81677ad
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Wed Mar 9 12:18:12 2016 -0500

20.6 release
---
configure.ac | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 5360d49..ef0b8de 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,11 +2,11 @@
##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
m4_define([v_maj], [0])
m4_define([v_min], [20])
-m4_define([v_mic], [5])
+m4_define([v_mic], [6])
m4_define([v_rev], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))dnl
##-- When released, remove the dnl on the below line
m4_undefine([v_rev])
-m4_define([relname], [0.20.5])
+m4_define([relname], [0.20.6])
##-- When doing snapshots - change soname. remove dnl on below line
m4_define([relname], [ver-autocannoli-0.20])
dnl m4_define([v_rel], [-release relname])

--
Chris Michael
2016-03-09 18:12:02 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 32921f57f3956c9b6f2c697580e0676f87d0be3d
Author: Chris Michael <***@osg.samsung.com>
Date: Tue Mar 8 16:09:17 2016 -0500

don't have to hook the ecore_evas resize callback here as that should
be handled by elm now

Signed-off-by: Chris Michael <***@osg.samsung.com>
---
src/modules/wl_drm/e_mod_main.c | 8 --------
1 file changed, 8 deletions(-)

diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index 7a9f6aa..0a115a1 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -91,12 +91,6 @@ end:
return ECORE_CALLBACK_PASS_ON;
}

-static void
-_e_mod_drm_cb_ee_resize(Ecore_Evas *ee EINA_UNUSED)
-{
- e_comp_canvas_update();
-}
-
static Ecore_Drm_Output_Mode *
_e_mod_drm_mode_screen_find(E_Randr2_Screen *s, Ecore_Drm_Output *output)
{
@@ -711,8 +705,6 @@ e_modapi_init(E_Module *m)
/* get the current screen geometry */
ecore_evas_screen_geometry_get(e_comp->ee, NULL, NULL, &w, &h);

- ecore_evas_callback_resize_set(e_comp->ee, _e_mod_drm_cb_ee_resize);
-
e_comp->screen = &drmiface;

if (!e_comp_wl_init()) return NULL;

--
Mike Blumenkrantz
2016-03-09 18:12:04 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit 65485742b59e5dc757e23c575bdc6859f3864c52
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Wed Mar 9 12:18:58 2016 -0500

20.6 NEWS updates
---
NEWS | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 81 insertions(+), 1 deletion(-)

diff --git a/NEWS b/NEWS
index 81935c7..93bb8b3 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,84 @@
+Release 0.20.6:
+---------------------
+Carsten Haitzler (2):
+ e - efm: fix op registry listener add and dont use eina_error
+ e xkbswitch: don't free layouts that are just pointed to in instances
+
+Chris Michael (6):
+ update mailmap addresses
+ update mailmap addresses
+ add prototype functions for missing wl_data_offer interface
+ add prototype function for missing wl_seat interface
+ add prototype functions for missing wl_data_source interface
+ don't have to hook the ecore_evas resize callback here as that should be handled by elm now
+
+Derek Foreman (20):
+ Ensure wayland clients haven't been deleted when processing callbacks
+ Remove wayland frame callbacks from subsurface cache on destruction
+ Fix xdg-shell destructors
+ Protect the wayland frame callback list from corruption
+ Use eina_list_merge instead of eina_list_move for wayland lists
+ Move pixmap free to client free from client destroy
+ Bump wayland version requirement
+ Remove wayland focus timer in delete callback
+ Add a NULL check in native_surface_init under wayland
+ Render deleted objects as long as they still have a pixmap
+ Track whether objects are on the post_updates list or not
+ Take an extra reference on wayland clients
+ Don't allow deleted wayland clients to set the cursor
+ Track whether a render is in progress or not
+ Rework wayland buffer handling
+ Remove wayland buffer reference
+ Re-enable window close animations for wayland
+ Stop copying all wayland buffers
+ Don't use e_pixmap_image_data_argb_convert for wayland images
+ Remove argb_convert for wayland buffers
+
+Mike Blumenkrantz (42):
+ clamp minimum shelf size to 20px in shelf config
+ do not perform special case position adjustment for re_manage clients
+ do not clamp comp object input regions to 0,0
+ improve enforcement of shelf autohide-related window adjustment
+ reshuffle x11 comp init to cleanup on failure cases
+ pre-remove pixmap from x11 clients during del hook
+ enable comp object image data refresh if a dirty call is made with no damages
+ redo wayland pixmap ids to use monotonic decreasing ints with no collisions
+ remove some unused variables
+ make bgpreview create vdesk config dialog on mouse up instead of mouse down
+ do not decrement e_comp->new_clients for non-new clients during _e_client_eval
+ update winlist ui when using directional window selection
+ force changed when adding or removing keyboard layouts in config
+ disable emotion_shutdown during shutdown procedure
+ use strbufs instead of strcat in fwin navbars
+ do not set XCURSOR_PATH variable if re-setting existing value
+ remove security hole in e_start_main
+ remove DISPLAY usage from E_IPC_SOCKET value
+ remove multihead env var setting in e_exec
+ strcpy -> strncpy in evry files plugin
+ use strbuf instead of strcat in keybinding string synthesis
+ use strbuf instead of strcat in edgebinding string synthesis
+ use dblequal for double comparisons in edgebindings config
+ replace static buffer usage with binbuf in e_fm_ipc
+ prevent potential null deref during pager (plain) window drag
+ remove unused value in config profile saving
+ remove useless client_add handler in e_ipc
+ use uint instead of int for eina_list_count() return in cpufreq (trivial)
+ simplify static grab case statements
+ remove ipc command allowing arbitrary command execution by the compositor
+ simplify ipc socket creation
+ remove impossible null check in color dialog
+ do not add render updates during damage of deleted clients
+ don't directly use image data when creating a comp object mirror
+ Revert "send mouse out+in on desk flip end"
+ reject x11 client mouse-in events on comp object based on frame geometry
+ reverse ordering for x11 client mouse in NotifyVirtual and NotifyInferior details
+ only use x11 mouse out event if client has received mouse in previously
+ apply x11 mouse in event for clients using a job
+ apply x11 focus/unfocus using jobs
+ block re-unsetting of native surface for comp objects
+ always run client res changes in e_comp_canvas_update()
+
+
Release 0.20.5:
---------------------
Mike Blumenkrantz (1):
@@ -3146,4 +3227,3 @@ Fixes:
* Further improve initial window placement coordinates
* Fixed cases where gadgets would sometimes reorder randomly on shelves
* fixed filemanager race condition causing create-queued icons to not be deleted
-

--
Mike Blumenkrantz
2016-03-09 18:11:13 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit a8ecf89bd66f2e6d5b6cdfcf43fbebb2517bcce3
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Thu Feb 25 14:00:01 2016 -0500

make bgpreview create vdesk config dialog on mouse up instead of mouse down

if the option to always raise a window on click is enabled, clicking an internal
window in a way which creates another window will cause a race condition where
the clicked window is raised over the newly created window

there is no obvious policy-wide solution to this issue, but making this change
at least resolves the issue in question

fix T3210
---
src/bin/e_widget_bgpreview.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_widget_bgpreview.c b/src/bin/e_widget_bgpreview.c
index c4dbb20..0e79286 100644
--- a/src/bin/e_widget_bgpreview.c
+++ b/src/bin/e_widget_bgpreview.c
@@ -123,10 +123,10 @@ e_widget_bgpreview_desk_configurable_set(Evas_Object *obj, Eina_Bool enable)
enable = !!enable;
if (dd->configurable == enable) return;
if (enable)
- evas_object_event_callback_add(dd->icon, EVAS_CALLBACK_MOUSE_DOWN,
+ evas_object_event_callback_add(dd->icon, EVAS_CALLBACK_MOUSE_UP,
_e_wid_desk_cb_config, dd);
else
- evas_object_event_callback_del_full(dd->icon, EVAS_CALLBACK_MOUSE_DOWN,
+ evas_object_event_callback_del_full(dd->icon, EVAS_CALLBACK_MOUSE_UP,
_e_wid_desk_cb_config, dd);
dd->configurable = enable;
}
@@ -267,7 +267,7 @@ _e_wid_reconfigure(E_Widget_Data *wd)

edje_object_part_swallow(dd->icon, "e.swallow.content", dd->live);
dd->configurable = EINA_TRUE;
- evas_object_event_callback_add(dd->icon, EVAS_CALLBACK_MOUSE_DOWN,
+ evas_object_event_callback_add(dd->icon, EVAS_CALLBACK_MOUSE_UP,
_e_wid_desk_cb_config, dd);
evas_object_show(dd->icon);
evas_object_data_set(dd->icon, "desk_data", dd);

--
Mike Blumenkrantz
2016-03-09 18:11:12 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit b1a5eeeb0c3fdfadfb40b8183535e054909f0f6b
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Thu Feb 25 13:37:52 2016 -0500

remove some unused variables
---
src/bin/e_comp_wl.c | 2 --
src/bin/e_fm_op_registry.c | 1 -
2 files changed, 3 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 5e43891..2f2eb06 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1714,8 +1714,6 @@ _e_comp_wl_subsurface_commit_to_cache(E_Client *ec)
{
E_Comp_Client_Data *cdata;
E_Comp_Wl_Subsurf_Data *sdata;
- struct wl_resource *cb;
- Eina_List *l;
Eina_Iterator *itr;
Eina_Rectangle *rect;

diff --git a/src/bin/e_fm_op_registry.c b/src/bin/e_fm_op_registry.c
index 0acee62..fe63c85 100644
--- a/src/bin/e_fm_op_registry.c
+++ b/src/bin/e_fm_op_registry.c
@@ -321,7 +321,6 @@ e_fm2_op_registry_entry_listener_add(E_Fm2_Op_Registry_Entry *entry, void (*cb)(
{
E_Fm2_Op_Registry_Entry_Internal *e;
E_Fm2_Op_Registry_Entry_Listener *listener;
- Eina_Error err;

if ((!entry) || (!cb))
{

--
Mike Blumenkrantz
2016-03-09 18:11:18 UTC
Permalink
discomfitor pushed a commit to branch enlightenment-0.20.

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

commit a04a93e5ef798caccf723519ae8088cca25500ec
Author: Mike Blumenkrantz <***@osg.samsung.com>
Date: Mon Feb 29 07:55:37 2016 -0500

use strbufs instead of strcat in fwin navbars

CIDs 1039794, 1039795, 1039796
---
src/modules/fileman/e_fwin_nav.c | 56 +++++++++++++++++++++++-----------------
1 file changed, 33 insertions(+), 23 deletions(-)

diff --git a/src/modules/fileman/e_fwin_nav.c b/src/modules/fileman/e_fwin_nav.c
index ea6a243..f7bf6e3 100644
--- a/src/modules/fileman/e_fwin_nav.c
+++ b/src/modules/fileman/e_fwin_nav.c
@@ -240,28 +240,39 @@ out:
_box_button_cb_dnd_leave(inst, type, NULL);
}

+static Eina_Strbuf *
+_path_generate(Instance *inst, Evas_Object *break_obj)
+{
+ Nav_Item *ni;
+ Eina_Strbuf *buf;
+
+ buf = eina_strbuf_new();
+ EINA_INLIST_FOREACH(inst->l_buttons, ni)
+ {
+ eina_strbuf_append(buf, edje_object_part_text_get(ni->o, "e.text.label"));
+ if (break_obj && (ni->o == break_obj)) break;
+ if (eina_strbuf_length_get(buf)) eina_strbuf_append_char(buf, '/');
+ }
+ return buf;
+}
+
static Eina_Bool
_box_button_cb_dnd_drop(void *data, const char *type EINA_UNUSED)
{
Instance *inst = data;
- Nav_Item *ni;
Eina_Bool allow;
- char path[PATH_MAX] = {0};
+ Eina_Strbuf *buf;

if (!inst->dnd_obj) return EINA_FALSE;

- EINA_INLIST_FOREACH(inst->l_buttons, ni)
- {
- strcat(path, edje_object_part_text_get(ni->o, "e.text.label"));
- if (ni->o == inst->dnd_obj) break;
- if (path[1]) strcat(path, "/");
- }
- allow = ecore_file_can_write(path);
+ buf = _path_generate(inst, inst->dnd_obj);
+ allow = ecore_file_can_write(eina_strbuf_string_get(buf));
if (allow)
{
- e_drop_xds_update(allow, path);
- inst->dnd_path = strdup(path);
+ e_drop_xds_update(allow, eina_strbuf_string_get(buf));
+ inst->dnd_path = eina_strbuf_string_steal(buf);
}
+ eina_strbuf_free(buf);
return allow;
}

@@ -631,15 +642,17 @@ _cb_button_click(void *data, Evas_Object *obj, const char *emission EINA_UNUSED,
{
Instance *inst = data;
Nav_Item *ni;
- char path[PATH_MAX] = "";
+ Eina_Strbuf *buf;

+ buf = eina_strbuf_new();
EINA_INLIST_FOREACH(inst->l_buttons, ni)
{
- strcat(path, edje_object_part_text_get(ni->o, "e.text.label"));
+ eina_strbuf_append(buf, edje_object_part_text_get(ni->o, "e.text.label"));
if (ni->o == obj) break;
- strcat(path, "/");
+ eina_strbuf_append_char(buf, '/');
}
- e_fm2_path_set(inst->o_fm, "/", path);
+ e_fm2_path_set(inst->o_fm, "/", eina_strbuf_string_get(buf));
+ eina_strbuf_free(buf);
}

static void
@@ -670,8 +683,8 @@ _box_button_append(Instance *inst, const char *label, Edje_Signal_Cb func)
{
Evas_Object *o;
Evas_Coord mw = 0, mh = 0;
- char path[PATH_MAX] = {0};
- Nav_Item *ni, *nil;
+ Eina_Strbuf *buf;
+ Nav_Item *ni;

if (!inst || !label || !*label || !func)
return;
@@ -697,15 +710,12 @@ _box_button_append(Instance *inst, const char *label, Edje_Signal_Cb func)
ni->o = o;
ni->inst = inst;
inst->l_buttons = eina_inlist_append(inst->l_buttons, EINA_INLIST_GET(ni));
- EINA_INLIST_FOREACH(inst->l_buttons, nil)
- {
- strcat(path, edje_object_part_text_get(nil->o, "e.text.label"));
- if (path[1]) strcat(path, "/");
- }
- ni->path = eina_stringshare_add(path);
+ buf = _path_generate(inst, NULL);
+ ni->path = eina_stringshare_add(eina_strbuf_string_get(buf));
ni->monitor = eio_monitor_stringshared_add(ni->path);
E_LIST_HANDLER_APPEND(ni->handlers, EIO_MONITOR_SELF_DELETED, _event_deleted, ni);
E_LIST_HANDLER_APPEND(ni->handlers, EIO_MONITOR_ERROR, _event_deleted, ni);
+ eina_strbuf_free(buf);
}

static void

--

Loading...