summaryrefslogtreecommitdiff
path: root/meta/recipes-gnome
diff options
context:
space:
mode:
authorJussi Kukkonen <jussi.kukkonen@intel.com>2015-04-01 21:36:47 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-07-16 15:08:41 +0100
commit8d34b4db648756d3474c809d2895b15299fc8a6a (patch)
tree4a9cb3fcca2a9031d7e9162f8636ec93e35cedfc /meta/recipes-gnome
parent66c81b204fe9041db13918ced505f3e930cae978 (diff)
downloadopenembedded-core-8d34b4db648756d3474c809d2895b15299fc8a6a.tar.gz
openembedded-core-8d34b4db648756d3474c809d2895b15299fc8a6a.tar.bz2
openembedded-core-8d34b4db648756d3474c809d2895b15299fc8a6a.zip
gtk+3: Upgrade to 3.16.4
* Drop --disable-gtk2-dependency and the patch for gtk/native/Makefile.am: gtk-update-icon-cache is no longer used at build time and as a result the option was removed. * Add dependency to libepoxy * Add dependency to virtual/mesa for wayland-egl * Package new binaries gtk3-icon-browser and gtk-encode-symbolic-svg * Add a backported patch that allows server side window decorations in all cases * RRECOMMEND adwaita-icon-theme-symbolic: GTK+ widgets expect a symbolic theme to be installed Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Diffstat (limited to 'meta/recipes-gnome')
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3.inc17
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3/Dont-force-csd.patch118
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3/fix-flags-for-native.patch33
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3_3.16.4.bb (renamed from meta/recipes-gnome/gtk+/gtk+3_3.12.2.bb)6
4 files changed, 130 insertions, 44 deletions
diff --git a/meta/recipes-gnome/gtk+/gtk+3.inc b/meta/recipes-gnome/gtk+/gtk+3.inc
index 3e36676ac4..f29f0d3031 100644
--- a/meta/recipes-gnome/gtk+/gtk+3.inc
+++ b/meta/recipes-gnome/gtk+/gtk+3.inc
@@ -6,7 +6,7 @@ BUGTRACKER = "https://bugzilla.gnome.org/"
SECTION = "libs"
DEPENDS = "glib-2.0 cairo pango atk jpeg libpng gdk-pixbuf \
- docbook-utils-native gdk-pixbuf-native"
+ docbook-utils-native gdk-pixbuf-native libepoxy"
LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
@@ -22,10 +22,7 @@ do_configure_prepend() {
ln -s ${TARGET_PREFIX}libtool libtool
}
-# Forcibly disable the GTK+ 2 dependency as we don't want to natively build the
-# entire GTK+ stack, or need GTK+ 2 for gtk-update-icon-cache.
EXTRA_OECONF += " \
- --disable-gtk2-dependency \
--disable-glibtest \
--disable-xinerama \
--enable-modules \
@@ -37,7 +34,7 @@ PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)}
${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "", d)}"
PACKAGECONFIG[x11] = "--enable-x11-backend,--disable-x11-backend,at-spi2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr libxrender libxcomposite libxfixes"
-PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,wayland libxkbcommon"
+PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,wayland libxkbcommon virtual/mesa"
do_install_append() {
mv ${D}${bindir}/gtk-update-icon-cache ${D}${bindir}/gtk-update-icon-cache-3.0
@@ -48,12 +45,14 @@ LIBV = "3.0.0"
FILES_${PN}-demo = "${bindir}/gtk3-demo \
${bindir}/gtk3-demo-application \
+ ${bindir}/gtk3-icon-browser \
${bindir}/gtk3-widget-factory \
${datadir}/gtk-3.0/demo \
${datadir}/applications/gtk3-demo.desktop \
+ ${datadir}/applications/gtk3-icon-browser.desktop \
${datadir}/applications/gtk3-widget-factory.desktop \
- ${datadir}/icons/hicolor/*/apps/gtk3-demo.png \
- ${datadir}/icons/hicolor/*/apps/gtk3-widget-factory.png"
+ ${datadir}/icons/hicolor/*/apps/gtk3-demo*.png \
+ ${datadir}/icons/hicolor/*/apps/gtk3-widget-factory*.png"
# The demo uses PNG files and mime type sniffing, so ensure that these
# dependencies are present.
@@ -76,7 +75,8 @@ FILES_${PN}-dev += " \
${libdir}/gtk-3.0/3.0.0/printbackends/*.la \
${libdir}/gtk-3.0/${LIBV}/engines/*.la \
${libdir}/gtk-3.0/modules/*.la \
- ${bindir}/gtk-builder-convert"
+ ${bindir}/gtk-builder-convert \
+ ${bindir}/gtk-encode-symbolic-svg"
FILES_${PN}-dbg += " \
${libdir}/gtk-3.0/${LIBV}/loaders/.debug \
@@ -85,6 +85,7 @@ FILES_${PN}-dbg += " \
${libdir}/gtk-3.0/${LIBV}/printbackends/.debug \
${libdir}/gtk-3.0/modules/.debug"
+RRECOMMENDS_${PN} = "adwaita-icon-theme-symbolic"
PACKAGES_DYNAMIC += "^gtk3-immodule-.* ^gtk3-printbackend-.*"
diff --git a/meta/recipes-gnome/gtk+/gtk+3/Dont-force-csd.patch b/meta/recipes-gnome/gtk+/gtk+3/Dont-force-csd.patch
new file mode 100644
index 0000000000..32d8a84792
--- /dev/null
+++ b/meta/recipes-gnome/gtk+/gtk+3/Dont-force-csd.patch
@@ -0,0 +1,118 @@
+window: Check if we can use CSD before enabling them
+
+Upstream-Status: Backport
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+
+
+From c5e5ee67490e7e7af56052d8f8beb75db002c2f1 Mon Sep 17 00:00:00 2001
+From: Emmanuele Bassi <ebassi@gnome.org>
+Date: Wed, 3 Jun 2015 14:07:29 +0100
+Subject: window: Check if we can use CSD before enabling them
+
+The change in 03213b9509fc1df16c66194ea168aed6c15110e9 changed the rules
+as to when CSD can be enabled, but it also unconditionally enables CSD
+with the implicit assumption that client-side shadows were the real
+issue, and that we could work around that by drawing our own borders.
+This also means that setting a titlebar for a GtkWindow will enable CSD
+unconditionally.
+
+In reality, some window managers (like Matchbox) *only* support
+server-side decorations, and will ignore all hints to the contrary, to
+the point of drawing decorations at random locations on top of the
+window.
+
+Since CSD are enabled unconditionally, the GTK_CSD environment variable
+is also not a suitable escape hatch.
+
+In the grand tradition of asking ourselves if we should do something
+just because we can, we should split the environment checks from the
+checks on what the user requested; by doing that, we can also check
+when enabling client-side decorations, and ideally bail out if needed.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=750343
+
+diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
+index 423c6bd..9fe882f 100644
+--- a/gtk/gtkwindow.c
++++ b/gtk/gtkwindow.c
+@@ -4056,6 +4056,32 @@ gtk_window_supports_client_shadow (GtkWindow *window)
+ return TRUE;
+ }
+
++static gboolean
++gtk_window_can_use_csd (GtkWindow *window)
++{
++ const gchar *csd_env;
++
++#ifdef GDK_WINDOWING_BROADWAY
++ if (GDK_IS_BROADWAY_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
++ return TRUE;
++#endif
++
++#ifdef GDK_WINDOWING_WAYLAND
++ if (GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
++ return TRUE;
++#endif
++
++#ifdef GDK_WINDOWING_MIR
++ if (GDK_IS_MIR_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
++ return TRUE;
++#endif
++
++ csd_env = g_getenv ("GTK_CSD");
++
++ /* If GTK_CSD is unset we default to CSD support */
++ return csd_env == NULL || (strcmp (csd_env, "1") == 0);
++}
++
+ static void
+ gtk_window_enable_csd (GtkWindow *window)
+ {
+@@ -4063,6 +4089,10 @@ gtk_window_enable_csd (GtkWindow *window)
+ GtkWidget *widget = GTK_WIDGET (window);
+ GdkVisual *visual;
+
++ /* If the environment does not support CSD, then there's no point in enabling them */
++ if (!gtk_window_can_use_csd (window))
++ return;
++
+ /* We need a visual with alpha for client shadows */
+ if (priv->use_client_shadow)
+ {
+@@ -5839,7 +5869,6 @@ static gboolean
+ gtk_window_should_use_csd (GtkWindow *window)
+ {
+ GtkWindowPrivate *priv = window->priv;
+- const gchar *csd_env;
+
+ if (priv->csd_requested)
+ return TRUE;
+@@ -5850,24 +5879,7 @@ gtk_window_should_use_csd (GtkWindow *window)
+ if (priv->type == GTK_WINDOW_POPUP)
+ return FALSE;
+
+-#ifdef GDK_WINDOWING_BROADWAY
+- if (GDK_IS_BROADWAY_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
+- return TRUE;
+-#endif
+-
+-#ifdef GDK_WINDOWING_WAYLAND
+- if (GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
+- return TRUE;
+-#endif
+-
+-#ifdef GDK_WINDOWING_MIR
+- if (GDK_IS_MIR_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
+- return TRUE;
+-#endif
+-
+- csd_env = g_getenv ("GTK_CSD");
+-
+- return (g_strcmp0 (csd_env, "1") == 0);
++ return gtk_window_can_use_csd (window);
+ }
+
+ static void
+--
+cgit v0.10.2
+
diff --git a/meta/recipes-gnome/gtk+/gtk+3/fix-flags-for-native.patch b/meta/recipes-gnome/gtk+/gtk+3/fix-flags-for-native.patch
deleted file mode 100644
index 9ae1088e01..0000000000
--- a/meta/recipes-gnome/gtk+/gtk+3/fix-flags-for-native.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5e16904f94b5f5961f8f6e75716e6d7d228de119 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Fri, 28 Mar 2014 03:10:12 +0000
-Subject: [PATCH] gtk/native/Makefile.am: unset target FLAGS for native build
-
-The target gtk+3 does a native build in its "native" directory, we need
-unset the target FLAGS for native build, otherwise, there might be build
-failures.
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- gtk/native/Makefile.am | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/gtk/native/Makefile.am b/gtk/native/Makefile.am
-index 64899e9..a1c814a 100644
---- a/gtk/native/Makefile.am
-+++ b/gtk/native/Makefile.am
-@@ -3,6 +3,9 @@ AM_CFLAGS = @CFLAGS_FOR_BUILD@
- CPP = @CPP_FOR_BUILD@
- AM_CPPFLAGS = @CPPFLAGS_FOR_BUILD@
- AM_LDFLAGS = @LDFLAGS_FOR_BUILD@
-+CFLAGS =
-+CPPFLAGS =
-+LDFLAGS =
-
- if CROSS_COMPILING
- if !USE_EXTERNAL_ICON_CACHE
---
-1.8.3.4
-
diff --git a/meta/recipes-gnome/gtk+/gtk+3_3.12.2.bb b/meta/recipes-gnome/gtk+/gtk+3_3.16.4.bb
index f4f197131b..3a45afcc10 100644
--- a/meta/recipes-gnome/gtk+/gtk+3_3.12.2.bb
+++ b/meta/recipes-gnome/gtk+/gtk+3_3.16.4.bb
@@ -4,11 +4,11 @@ MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar.xz \
file://hardcoded_libtool.patch \
- file://fix-flags-for-native.patch \
+ file://Dont-force-csd.patch \
"
-SRC_URI[md5sum] = "0d6d8f9f79132b3b47475d047b369b1c"
-SRC_URI[sha256sum] = "61d74eea74231b1ea4b53084a9d6fc9917ab0e1d71b69d92cbf60a4b4fb385d0"
+SRC_URI[md5sum] = "c7497aaf6730524a127597b768a73bd7"
+SRC_URI[sha256sum] = "1ee5dbd7a4cb81a91eaa1b7ae64ba5a3eab6a3c0a764155583ab96524590fc8e"
S = "${WORKDIR}/gtk+-${PV}"