Hello community,
here is the log from the commit of package enlightenment for openSUSE:Factory checked in at 2016-04-12 19:35:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/enlightenment (Old)
and /work/SRC/openSUSE:Factory/.enlightenment.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "enlightenment"
Changes:
--------
--- /work/SRC/openSUSE:Factory/enlightenment/enlightenment.changes 2016-03-04 19:30:23.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.enlightenment.new/enlightenment.changes 2016-04-12 19:35:34.000000000 +0200
@@ -1,0 +2,79 @@
+Fri Apr 8 05:35:30 UTC 2016 - sflees@suse.de
+
+- Recommend Pulse X11 Intergration for audio out of the box
+ boo#972912
+- Make services localonly
+
+-------------------------------------------------------------------
+Fri Apr 8 03:02:37 UTC 2016 - sflees@suse.de
+
+- Fix crashes
+ * fix-upstream-dont-add-deleted-clients-to-tasks.patch
+ * fix-upstream-remove-deleted-clients-on-repop-tasks.patch
+- Fix systray issues particuarlly with KDE5 apps
+ * fix-upstream-systray-handle-kde5-apps.patch
+ * fix-upstream-systray-use-canvas-coords.patch
+- Reduce Memory usage by sharing icons.
+ * enhance-upstream-share-icons.patch
+
+-------------------------------------------------------------------
+Wed Mar 9 19:46:44 UTC 2016 - sflees@suse.de
+
+- Enlightenment 0.20.6
+ Tickets Addressed:
+ T3152
+ T3208
+ T3210
+ Multiple wayland issues fixed
+ Other issues listed below
+ 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
+ don’t have to hook the ecore_evas resize callback here as that should be handled by elm now
+ Move pixmap free to client free from client destroy
+ Render deleted objects as long as they still have a pixmap
+ Track whether objects are on the post_updates list or not
+ Track whether a render is in progress or not
+ 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
+ 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()
+
+
+-------------------------------------------------------------------
Old:
----
enlightenment-0.20.5.tar.xz
New:
----
_service
enhance-upstream-share-icons.patch
enlightenment-0.20.6.tar.xz
fix-upstream-dont-add-deleted-clients-to-tasks.patch
fix-upstream-remove-deleted-clients-on-repop-tasks.patch
fix-upstream-systray-handle-kde5-apps.patch
fix-upstream-systray-use-canvas-coords.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ enlightenment.spec ++++++
--- /var/tmp/diff_new_pack.RPKPoL/_old 2016-04-12 19:35:36.000000000 +0200
+++ /var/tmp/diff_new_pack.RPKPoL/_new 2016-04-12 19:35:36.000000000 +0200
@@ -24,13 +24,13 @@
%define generate_manpages 0
Name: enlightenment
-Version: 0.20.5
+Version: 0.20.6
Release: 0
Summary: The window manager
License: BSD-2-Clause
Group: System/X11/Displaymanagers
Url: http://enlightenment.org/
-Source: %{name}-%{version}.tar.xz
+Source: http://download.enlightenment.org/rel/apps/enlightenment/%{name}-%{version}.tar.xz
Source2: enlightenment.pam
Source3: sysactions.conf-oS12.2
Source4: sysactions.conf-systemd
@@ -41,6 +41,12 @@
Patch0: enlightenment-0.16.999.65256-dont_require_suidbit.patch
# PATCH-FEATURE-OPENSUSE dont_offer_updates.patch -- don't offer updates, that's up to package manager -- sleep_walker@opensuse.org
Patch1: dont_offer_updates.patch
+Patch2: fix-upstream-dont-add-deleted-clients-to-tasks.patch
+Patch3: fix-upstream-remove-deleted-clients-on-repop-tasks.patch
+Patch4: fix-upstream-systray-handle-kde5-apps.patch
+Patch5: fix-upstream-systray-use-canvas-coords.patch
+Patch6: enhance-upstream-share-icons.patch
+
BuildRequires: alsa-devel
BuildRequires: autoconf
BuildRequires: automake
@@ -112,6 +118,16 @@
# Recommended to make NetworkManager Intergration work
Recommends: gnome-keyring
Recommends: NetworkManager-appindicator
+
+# Recommended to make audio work out of the box boo#972912
+Recommends: pulseaudio
+Recommends: pulseaudio-module-bluetooth
+Recommends: pulseaudio-module-jack
+Recommends: pulseaudio-module-lirc
+Recommends: pulseaudio-module-x11
+Recommends: pulseaudio-module-zeroconf
+Recommends: pulseaudio-utils
+Recommends: alsa-plugins-pulse
%endif
Requires: enlightenment-branding = 0.1
@@ -188,6 +204,11 @@
%setup -q -n enlightenment-%{version}
%patch0
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
# Copy In new Network Wizard
rm src/modules/wizard/page_110.c
++++++ _service ++++++
<services>
<service name="download_url" mode="localonly">
<param name="protocol">http</param>
<param name="host">download.enlightenment.org</param>
<param name="path">/rel/apps/enlightenment/enlightenment-0.20.6.tar.xz</param>
</service>
<service name="verify_file" mode="localonly">
<param name="file">enlightenment-0.20.6.tar.xz</param>
<param name="verifier">sha256</param>
<param name="checksum">f21fbace15b8ea0e47c7aeb16a3f4d1e8a41cb85bc0035491091518b0ca55085</param>
</service>
</services>++++++ enhance-upstream-share-icons.patch ++++++
commit 57ce6419e5c257e6fee6809cdb9c63d39c0b0a98
Author: Carsten Haitzler (Rasterman)
Date: Fri Apr 1 20:29:04 2016 +0900
e icons: reduce mem usage (in x11) by a fair bit by de-duplicating
so i was profiling today .. leak hunting .. and i noticed. if you have
enough appss open - eg terminology, e uses a huge amount of memory...
for icons. terminology is 128x128 ... thats 64k per icon. open up a
lot of terminology windows and we duplicate that 64k per every window
on the wm sside because we get the data. it would apply for any app
that sets a netwm icon. this can be come rather silly if you have like
100 terminals. it's worse with larger icons (eg 256x256 - 256k per
icon).
this puts in a simply list for shared icons and a lookup on fetch to
de-duplicate and share icon data. this should drop memory usage
nicely.
@improvement
diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 1d24366..e2a2bf6 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -534,10 +534,9 @@ _e_client_free(E_Client *ec)
ec->stick_desks = eina_list_free(ec->stick_desks);
if (ec->netwm.icons)
{
- int i;
- for (i = 0; i < ec->netwm.num_icons; i++)
- free(ec->netwm.icons[i].data);
- E_FREE(ec->netwm.icons);
+ e_client_icon_free(ec->netwm.icons, ec->netwm.num_icons);
+ ec->netwm.icons = NULL;
+ ec->netwm.num_icons = 0;
}
E_FREE(ec->netwm.extra_types);
eina_stringshare_replace(&ec->border.name, NULL);
@@ -5023,3 +5022,99 @@ e_client_layout_cb_set(E_Client_Layout_Cb cb)
CRI("ATTEMPTING TO OVERWRITE EXISTING CLIENT LAYOUT HOOK!!!");
_e_client_layout_cb = cb;
}
+
+////////////////////////////////////////////
+static Eina_List *iconshare = NULL;
+
+typedef struct _E_Client_Icon_Entry E_Client_Icon_Entry;
+
+struct _E_Client_Icon_Entry
+{
+ Ecore_X_Icon *icons;
+ int num_icons;
+ int ref;
+};
+
+E_API Ecore_X_Icon *
+e_client_icon_deduplicate(Ecore_X_Icon *icons, int num_icons)
+{
+ int i;
+ Eina_List *l;
+ E_Client_Icon_Entry *ie;
+
+ // unless the rest of e uses border icons OTHER than icon #0
+ // then free the rest that we don't need anymore.
+ for (i = 1; i < num_icons; i++)
+ {
+ free(icons[i].data);
+ icons[i].data = NULL;
+ }
+ // lookup icon data in icons cache/share
+ EINA_LIST_FOREACH(iconshare, l, ie)
+ {
+ if ((ie->num_icons == num_icons) &&
+ (num_icons > 0) &&
+ (ie->icons[0].width == icons[0].width) &&
+ (ie->icons[0].height == icons[0].height) &&
+ (!memcmp(ie->icons[0].data, icons[0].data,
+ icons[0].width * icons[0].height * 4)))
+ {
+ // found so free the input icons
+ for (i = 0; i < num_icons; i++)
+ free(icons[i].data);
+ free(icons);
+ // ref the shared/cached one
+ ie->ref++;
+ iconshare = eina_list_promote_list(iconshare, l);
+ // and return that
+ return ie->icons;
+ }
+ }
+ // no hit - new entry to cache. add it
+ ie = calloc(1, sizeof(E_Client_Icon_Entry));
+ if (ie)
+ {
+ ie->icons = icons;
+ ie->num_icons = num_icons;
+ ie->ref = 1;
+ iconshare = eina_list_prepend(iconshare, ie);
+ }
+ return icons;
+}
+
+E_API void
+e_client_icon_free(Ecore_X_Icon *icons, int num_icons)
+{
+ int i;
+ Eina_List *l;
+ E_Client_Icon_Entry *ie;
+
+ // lookup in icon share cache
+ EINA_LIST_FOREACH(iconshare, l, ie)
+ {
+ if ((ie->num_icons == num_icons) &&
+ (num_icons > 0) &&
+ (ie->icons[0].width == icons[0].width) &&
+ (ie->icons[0].height == icons[0].height) &&
+ (!memcmp(ie->icons[0].data, icons[0].data,
+ icons[0].width * icons[0].height * 4)))
+ {
+ // found so deref
+ ie->ref--;
+ if (ie->ref <= 0)
+ {
+ // no refs left - free the icon from the share/cache
+ iconshare = eina_list_remove_list(iconshare, l);
+ for (i = 0; i < ie->num_icons; i++)
+ free(ie->icons[i].data);
+ free(ie->icons);
+ free(ie);
+ }
+ return;
+ }
+ }
+ // not found - so just free it ... odd - we should never be here
+ for (i = 0; i < num_icons; i++)
+ free(icons[i].data);
+ free(icons);
+}
diff --git a/src/bin/e_client.h b/src/bin/e_client.h
index 13d24fd..94ef059 100644
--- a/src/bin/e_client.h
+++ b/src/bin/e_client.h
@@ -827,6 +827,8 @@ E_API Eina_Bool e_client_has_xwindow(const E_Client *ec);
E_API Eina_Bool e_client_desk_window_profile_available_check(E_Client *ec, const char *profile);
E_API void e_client_desk_window_profile_wait_desk_set(E_Client *ec, E_Desk *desk);
E_API void e_client_layout_cb_set(E_Client_Layout_Cb cb);
+E_API Ecore_X_Icon *e_client_icon_deduplicate(Ecore_X_Icon *icons, int num_icons);
+E_API void e_client_icon_free(Ecore_X_Icon *icons, int num_icons);
YOLO E_API void e_client_focus_stack_set(Eina_List *l);
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 35831a8..2bff110 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -3795,30 +3795,16 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client *ec)
}
if (ec->netwm.fetch.icon)
{
- int i;
- if (ec->netwm.icons)
- {
- for (i = 0; i < ec->netwm.num_icons; i++)
- {
- free(ec->netwm.icons[i].data);
- ec->netwm.icons[i].data = NULL;
- }
- free(ec->netwm.icons);
- }
+ e_client_icon_free(ec->netwm.icons, ec->netwm.num_icons);
ec->netwm.icons = NULL;
ec->netwm.num_icons = 0;
if (ecore_x_netwm_icons_get(win,
&ec->netwm.icons,
&ec->netwm.num_icons))
{
- // unless the rest of e uses border icons OTHER than icon #0
- // then free the rest that we don't need anymore.
- for (i = 1; i < ec->netwm.num_icons; i++)
- {
- free(ec->netwm.icons[i].data);
- ec->netwm.icons[i].data = NULL;
- }
- ec->netwm.num_icons = 1;
+ if (ec->netwm.icons)
+ ec->netwm.icons = e_client_icon_deduplicate
+ (ec->netwm.icons, ec->netwm.num_icons);
ec->changes.icon = 1;
}
ec->netwm.fetch.icon = 0;
++++++ enlightenment-0.20.5.tar.xz -> enlightenment-0.20.6.tar.xz ++++++
/work/SRC/openSUSE:Factory/enlightenment/enlightenment-0.20.5.tar.xz /work/SRC/openSUSE:Factory/.enlightenment.new/enlightenment-0.20.6.tar.xz differ: char 26, line 1
++++++ fix-upstream-dont-add-deleted-clients-to-tasks.patch ++++++
commit 488ece76a65349a0751a8dfb600a8a9ca0eedc98
Author: Mike Blumenkrantz
Date: Mon Mar 28 12:59:34 2016 -0400
do not add deleted clients to tasks gadgets
diff --git a/src/modules/tasks/e_mod_main.c b/src/modules/tasks/e_mod_main.c
index cbe69a9..d0d2ece 100644
--- a/src/modules/tasks/e_mod_main.c
+++ b/src/modules/tasks/e_mod_main.c
@@ -369,7 +369,7 @@ _tasks_new(Evas *e, E_Zone *zone, const char *id)
tasks->horizontal = 1;
EINA_LIST_FOREACH(e_comp->clients, l, ec)
{
- if (!e_client_util_ignored_get(ec))
+ if ((!e_client_util_ignored_get(ec)) && (!e_object_is_del(E_OBJECT(ec))))
tasks->clients = eina_list_append(tasks->clients, ec);
}
@@ -889,7 +889,7 @@ _tasks_cb_event_client_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *e
Tasks *tasks;
Eina_List *l;
- if (e_client_util_ignored_get(ev->ec)) return ECORE_CALLBACK_RENEW;
+ if (e_client_util_ignored_get(ev->ec) || e_object_is_del(E_OBJECT(ev->ec))) return ECORE_CALLBACK_RENEW;
EINA_LIST_FOREACH(tasks_config->tasks, l, tasks)
{
if ((!tasks->clients) || (!eina_list_data_find(tasks->clients, ev->ec)))
++++++ fix-upstream-remove-deleted-clients-on-repop-tasks.patch ++++++
commit 9f52dfa50ccc5cbb6b46521a233193413e7b6069
Author: Mike Blumenkrantz
Date: Mon Mar 28 12:59:45 2016 -0400
remove deleted clients from tasks client list during repop
fix T3369
diff --git a/src/modules/tasks/e_mod_main.c b/src/modules/tasks/e_mod_main.c
index d0d2ece..fa78b69 100644
--- a/src/modules/tasks/e_mod_main.c
+++ b/src/modules/tasks/e_mod_main.c
@@ -616,6 +616,8 @@ static void
_tasks_item_free(Tasks_Item *item)
{
if (item->o_icon) evas_object_del(item->o_icon);
+ if (e_object_is_del(E_OBJECT(item->client)))
+ item->tasks->clients = eina_list_remove(item->tasks->clients, item->client);
e_object_unref(E_OBJECT(item->client));
evas_object_del(item->o_item);
free(item);
++++++ fix-upstream-systray-handle-kde5-apps.patch ++++++
commit 286fb404288f2f96f7e5963d310a9e8d261ddaaf
Author: Mike Blumenkrantz
Date: Mon Mar 28 15:33:38 2016 -0400
add even more systray/dbusmenu hacks
mrw Qt systray devs take working (4.X) and then break it in 5.X to
be worse than steam: http://gfycat.com/CloudyPinkEmperorshrimp
fix T3139
diff --git a/src/bin/e_dbusmenu.c b/src/bin/e_dbusmenu.c
index 76cce57..bc87097 100644
--- a/src/bin/e_dbusmenu.c
+++ b/src/bin/e_dbusmenu.c
@@ -9,6 +9,7 @@ struct _E_DBusMenu_Ctx
void *data;
E_DBusMenu_Pop_Request_Cb pop_request_cb;
E_DBusMenu_Update_Cb update_cb;
+ Eina_Bool hacks : 1;
};
static const char *Menu_Item_Type_Names[] =
@@ -31,6 +32,8 @@ static const char *Menu_Item_Event_Names[] =
"clicked", "hovered", "opened", "closed"
};
+static void proxy_init(E_DBusMenu_Ctx *ctx);
+
static int
id_find(const char *text, const char *array_of_names[], unsigned max)
{
@@ -197,6 +200,46 @@ dbus_menu_free(E_DBusMenu_Item *m)
free(m);
}
+static Eina_Bool
+attempt_hacks(E_DBusMenu_Ctx *ctx)
+{
+ /* https://phab.enlightenment.org/T3139 */
+ Eldbus_Object *obj;
+ Eldbus_Connection *conn;
+ const char *bus, *p;
+ int n;
+ char buf[1024] = {0}, buf2[1024] = {0};
+
+ if (ctx->hacks) return EINA_FALSE;
+ obj = eldbus_proxy_object_get(ctx->proxy);
+ conn = eldbus_object_connection_get(obj);
+ bus = eldbus_object_bus_name_get(obj);
+ if (bus[0] != ':') return EINA_FALSE;
+ /* if this is a qt5 app, menu bus is $bus + 2
+ * ...probably
+ */
+
+ p = strchr(bus + 1, '.');
+ if (!p) return EINA_FALSE;
+ p++;
+ if (!p[0]) return EINA_FALSE;
+ n = strtol(p, NULL, 10);
+ if (n == -1) return EINA_FALSE;
+ n += 2;
+ if ((unsigned int)(p - bus) > sizeof(buf) - 1) return EINA_FALSE;
+ strncpy(buf, bus, p - bus);
+ snprintf(buf2, sizeof(buf2), "%s%d", buf, n);
+ E_FREE_FUNC(ctx->root_menu, dbus_menu_free);
+ eldbus_proxy_unref(ctx->proxy);
+ eldbus_object_unref(obj);
+
+ obj = eldbus_object_get(conn, buf2, "/MenuBar");
+ ctx->proxy = eldbus_proxy_get(obj, DBUS_MENU_IFACE);
+ proxy_init(ctx);
+ ctx->hacks = 1;
+ return EINA_TRUE;
+}
+
static void
layout_get_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
{
@@ -220,6 +263,15 @@ layout_get_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EIN
m = parse_layout(layout, NULL, ctx);
m->revision = revision;
+ if (m->is_submenu && (!m->parent) && (!m->sub_items))
+ {
+ if (attempt_hacks(ctx))
+ {
+ dbus_menu_free(m);
+ return;
+ }
+ }
+
if (ctx->update_cb)
ctx->update_cb(ctx->data, m);
if (ctx->root_menu)
@@ -271,32 +323,6 @@ menu_pop_request(void *data, const Eldbus_Message *msg)
}
static void
-icon_theme_path_get_cb(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- const char *error, *error_msg;
- Eldbus_Message_Iter *var, *array;
- const char *path;
-
- if (eldbus_message_error_get(msg, &error, &error_msg))
- {
- ERR("%s %s", error, error_msg);
- return;
- }
-
- if (!eldbus_message_arguments_get(msg, "v", &var) ||
- !eldbus_message_iter_arguments_get(var, "as", &array))
- {
- ERR("Error reading message.");
- return;
- }
-
- while (eldbus_message_iter_get_and_next(array, 's', &path))
- {
- //TODO
- }
-}
-
-static void
prop_changed_cb(void *data EINA_UNUSED, const Eldbus_Message *msg)
{
const char *interface, *propname;
@@ -337,6 +363,23 @@ layout_updated_cb(void *data, const Eldbus_Message *msg EINA_UNUSED)
layout_update(ctx);
}
+static void
+proxy_init(E_DBusMenu_Ctx *ctx)
+{
+ layout_update(ctx);
+ eldbus_proxy_signal_handler_add(ctx->proxy,
+ "ItemActivationRequested",
+ menu_pop_request, ctx);
+
+ eldbus_proxy_properties_changed_callback_add(ctx->proxy,
+ prop_changed_cb, ctx);
+
+ eldbus_proxy_signal_handler_add(ctx->proxy, "ItemsPropertiesUpdated",
+ layout_updated_cb, ctx);
+ eldbus_proxy_signal_handler_add(ctx->proxy, "LayoutUpdated",
+ layout_updated_cb, ctx);
+}
+
E_API E_DBusMenu_Ctx *
e_dbusmenu_load(Eldbus_Connection *conn, const char *bus, const char *path, const void *data)
{
@@ -353,21 +396,7 @@ e_dbusmenu_load(Eldbus_Connection *conn, const char *bus, const char *path, cons
eldbus_connection_ref(conn);
obj = eldbus_object_get(conn, bus, path);
ctx->proxy = eldbus_proxy_get(obj, DBUS_MENU_IFACE);
-
- layout_update(ctx);
- eldbus_proxy_signal_handler_add(ctx->proxy,
- "ItemActivationRequested",
- menu_pop_request, ctx);
-
- eldbus_proxy_property_get(ctx->proxy, "IconThemePath",
- icon_theme_path_get_cb, ctx);
- eldbus_proxy_properties_changed_callback_add(ctx->proxy,
- prop_changed_cb, ctx);
-
- eldbus_proxy_signal_handler_add(ctx->proxy, "ItemsPropertiesUpdated",
- layout_updated_cb, ctx);
- eldbus_proxy_signal_handler_add(ctx->proxy, "LayoutUpdated",
- layout_updated_cb, ctx);
+ proxy_init(ctx);
return ctx;
}
++++++ fix-upstream-systray-use-canvas-coords.patch ++++++
commit 19eb5d264477d8979b2e623cac279e3a06d1943f
Author: Mike Blumenkrantz
Date: Mon Mar 28 13:37:21 2016 -0400
use canvas pointer coords in systray mouse cb
diff --git a/src/modules/systray/e_mod_notifier_host.c b/src/modules/systray/e_mod_notifier_host.c
index a15d4bc..81c4e59 100644
--- a/src/modules/systray/e_mod_notifier_host.c
+++ b/src/modules/systray/e_mod_notifier_host.c
@@ -197,7 +197,7 @@ _clicked_item_cb(void *data, Evas *evas, Evas_Object *obj EINA_UNUSED, void *eve
e_menu_post_deactivate_callback_set(m, _menu_post_deactivate, gadcon);
zone = e_gadcon_zone_get(gadcon);
- ecore_evas_pointer_xy_get(e_comp->ee, &x, &y);
+ evas_pointer_canvas_xy_get(e_comp->evas, &x, &y);
e_menu_activate_mouse(m, zone, x, y, 1, 1, E_MENU_POP_DIRECTION_DOWN, ev->timestamp);
evas_event_feed_mouse_up(evas, ev->button,
EVAS_BUTTON_NONE, ev->timestamp, NULL);