Hello community,

here is the log from the commit of package clutter-gtk for openSUSE:Factory 
checked in at 2016-03-29 14:27:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/clutter-gtk (Old)
 and      /work/SRC/openSUSE:Factory/.clutter-gtk.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "clutter-gtk"

Changes:
--------
--- /work/SRC/openSUSE:Factory/clutter-gtk/clutter-gtk.changes  2015-10-25 
19:10:37.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.clutter-gtk.new/clutter-gtk.changes     
2016-03-29 14:27:12.000000000 +0200
@@ -1,0 +2,8 @@
+Sun Feb 21 09:20:44 UTC 2016 - zai...@opensuse.org
+
+- Add upstream patches fixing various wayland and hidpi issues:
+  + cg-Actor-fix-incorrect-allocation-logic.patch (bgo#758937).
+  + cg-Actor-propagate-scale-factor.patch (bgo#758937).
+  + cg-Silence-deprecation-warnings.patch (bgo#759375).
+
+-------------------------------------------------------------------

New:
----
  cg-Actor-fix-incorrect-allocation-logic.patch
  cg-Actor-propagate-scale-factor.patch
  cg-Silence-deprecation-warnings.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ clutter-gtk.spec ++++++
--- /var/tmp/diff_new_pack.Z2Mvw6/_old  2016-03-29 14:27:13.000000000 +0200
+++ /var/tmp/diff_new_pack.Z2Mvw6/_new  2016-03-29 14:27:13.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package clutter-gtk
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -25,6 +25,12 @@
 Url:            http://clutter-project.org/
 Source0:        
http://download.gnome.org/sources/clutter-gtk/1.6/%{name}-%{version}.tar.xz
 Source99:       baselibs.conf
+# PATCH-FIX-UPSTREAM cg-Actor-fix-incorrect-allocation-logic.patch bgo#758937 
zai...@opensuse.org -- Using a pointer comparison to prevent resetting the size 
of the canvas/is actor incorrect on Wayland.
+Patch0:         cg-Actor-fix-incorrect-allocation-logic.patch
+# PATCH-FIX-UPSTREAM cg-Actor-propagate-scale-factor.patch bgo#758937 
zai...@opensuse.org -- We need to set the scale factor correctly to avoid 
blurry widgets on hidpi displays.
+Patch1:         cg-Actor-propagate-scale-factor.patch
+# PATCH-FIX-UPSTREAM cg-Silence-deprecation-warnings.patch bgo#759375 
zai...@opensuse.org -- Silence obvious Clutter deprecation warnings.
+Patch2:         cg-Silence-deprecation-warnings.patch
 BuildRequires:  gobject-introspection-devel
 BuildRequires:  gtk-doc
 BuildRequires:  libtool
@@ -83,6 +89,9 @@
 %lang_package
 %prep
 %setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
 
 %build
 %configure --disable-static \

++++++ cg-Actor-fix-incorrect-allocation-logic.patch ++++++
>From e63dbfc883ea8762013e3af79bf1a27219431b29 Mon Sep 17 00:00:00 2001
From: Lionel Landwerlin <llandwer...@gmail.com>
Date: Tue, 1 Dec 2015 22:31:32 +0000
Subject: actor: fix incorrect allocation logic

Using a pointer comparison to prevent resetting the size of the canvas/actor
is incorrect on Wayland. Let's make that logic X11 only.

https://bugzilla.gnome.org/show_bug.cgi?id=758937
---
 clutter-gtk/gtk-clutter-actor.c | 58 ++++++++++++++++++++++-------------------
 1 file changed, 31 insertions(+), 27 deletions(-)

diff --git a/clutter-gtk/gtk-clutter-actor.c b/clutter-gtk/gtk-clutter-actor.c
index 566d571..9582154 100644
--- a/clutter-gtk/gtk-clutter-actor.c
+++ b/clutter-gtk/gtk-clutter-actor.c
@@ -82,7 +82,9 @@ struct _GtkClutterActorPrivate
   GtkWidget *widget;
   GtkWidget *embed;
 
-  cairo_surface_t *surface;
+#ifdef CLUTTER_WINDOWING_X11
+  Drawable pixmap;
+#endif
 
   /* canvas instance used as a fallback; owned
    * by the texture actor below
@@ -126,6 +128,10 @@ gtk_clutter_actor_draw_canvas (ClutterCanvas   *canvas,
                                int              height,
                                GtkClutterActor *actor)
 {
+  GtkClutterActorPrivate *priv = actor->priv;
+  cairo_surface_t *surface =
+    _gtk_clutter_offscreen_get_surface (GTK_CLUTTER_OFFSCREEN (priv->widget));
+
   /* clear the surface */
   cairo_save (cr);
   cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 1.0);
@@ -134,7 +140,7 @@ gtk_clutter_actor_draw_canvas (ClutterCanvas   *canvas,
   cairo_restore (cr);
 
   cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
-  cairo_set_source_surface (cr, actor->priv->surface, 0.0, 0.0);
+  cairo_set_source_surface (cr, surface, 0.0, 0.0);
   cairo_paint (cr);
 
   return TRUE;
@@ -166,6 +172,7 @@ gtk_clutter_actor_realize (ClutterActor *actor)
   GtkClutterActor *clutter = GTK_CLUTTER_ACTOR (actor);
   GtkClutterActorPrivate *priv = clutter->priv;
   ClutterActor *stage;
+  cairo_surface_t *surface;
 
   stage = clutter_actor_get_stage (actor);
   priv->embed = g_object_get_data (G_OBJECT (stage), "gtk-clutter-embed");
@@ -173,21 +180,20 @@ gtk_clutter_actor_realize (ClutterActor *actor)
 
   gtk_widget_realize (priv->widget);
 
-  priv->surface = _gtk_clutter_offscreen_get_surface (GTK_CLUTTER_OFFSCREEN 
(priv->widget));
+  surface = _gtk_clutter_offscreen_get_surface (GTK_CLUTTER_OFFSCREEN 
(priv->widget));
 
 #if defined(CLUTTER_WINDOWING_X11) && defined(CAIRO_HAS_XLIB_SURFACE)
   if (!gtk_clutter_actor_use_image_surface () &&
       clutter_check_windowing_backend (CLUTTER_WINDOWING_X11) &&
-      cairo_surface_get_type (priv->surface) == CAIRO_SURFACE_TYPE_XLIB)
+      cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_XLIB)
     {
-      Drawable pixmap;
       gint pixmap_width, pixmap_height;
 
-      pixmap_width = cairo_xlib_surface_get_width (priv->surface);
-      pixmap_height = cairo_xlib_surface_get_height (priv->surface);
-      pixmap = cairo_xlib_surface_get_drawable (priv->surface);
+      pixmap_width = cairo_xlib_surface_get_width (surface);
+      pixmap_height = cairo_xlib_surface_get_height (surface);
+      priv->pixmap = cairo_xlib_surface_get_drawable (surface);
 
-      clutter_x11_texture_pixmap_set_pixmap (CLUTTER_X11_TEXTURE_PIXMAP 
(priv->texture), pixmap);
+      clutter_x11_texture_pixmap_set_pixmap (CLUTTER_X11_TEXTURE_PIXMAP 
(priv->texture), priv->pixmap);
       clutter_actor_set_size (priv->texture, pixmap_width, pixmap_height);
     }
   else
@@ -221,8 +227,6 @@ gtk_clutter_actor_unrealize (ClutterActor *actor)
   if (priv->widget == NULL)
     return;
 
-  priv->surface = NULL;
-
   g_object_ref (priv->widget);
   gtk_container_remove (GTK_CONTAINER (priv->embed), priv->widget);
   priv->embed = NULL;
@@ -329,28 +333,28 @@ gtk_clutter_actor_allocate (ClutterActor           *actor,
       gdk_window_process_updates (window, TRUE);
 
       surface = gdk_offscreen_window_get_surface (window);
-      if (surface != priv->surface)
+#if defined(CLUTTER_WINDOWING_X11) && defined(CAIRO_HAS_XLIB_SURFACE)
+      if (!gtk_clutter_actor_use_image_surface () &&
+          clutter_check_windowing_backend (CLUTTER_WINDOWING_X11) &&
+          cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_XLIB)
         {
-          priv->surface = surface;
+          Drawable pixmap = cairo_xlib_surface_get_drawable (surface);
 
-#if defined(CLUTTER_WINDOWING_X11) && defined(CAIRO_HAS_XLIB_SURFACE)
-          if (!gtk_clutter_actor_use_image_surface () &&
-              clutter_check_windowing_backend (CLUTTER_WINDOWING_X11) &&
-              cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_XLIB)
+          if (pixmap != priv->pixmap)
             {
-              Drawable pixmap = cairo_xlib_surface_get_drawable (surface);
-
-              clutter_x11_texture_pixmap_set_pixmap 
(CLUTTER_X11_TEXTURE_PIXMAP (priv->texture), pixmap);
+              priv->pixmap = pixmap;
+              clutter_x11_texture_pixmap_set_pixmap 
(CLUTTER_X11_TEXTURE_PIXMAP (priv->texture),
+                                                     priv->pixmap);
             }
-          else
+        }
+      else
 #endif
-            {
-              DEBUG (G_STRLOC ": Using image surface.\n");
+        {
+          DEBUG (G_STRLOC ": Using image surface.\n");
 
-              clutter_canvas_set_size (CLUTTER_CANVAS (priv->canvas),
-                                       gtk_widget_get_allocated_width 
(priv->widget),
-                                       gtk_widget_get_allocated_height 
(priv->widget));
-            }
+          clutter_canvas_set_size (CLUTTER_CANVAS (priv->canvas),
+                                   gtk_widget_get_allocated_width 
(priv->widget),
+                                   gtk_widget_get_allocated_height 
(priv->widget));
         }
     }
 
-- 
cgit v0.12

++++++ cg-Actor-propagate-scale-factor.patch ++++++
>From 3609c70c3518a83d362e81e37e21c335bff49c1b Mon Sep 17 00:00:00 2001
From: Lionel Landwerlin <llandwer...@gmail.com>
Date: Tue, 1 Dec 2015 22:38:01 +0000
Subject: actor: propagate scale factor from embedder to embedded

We need to set the scale factor correctly on the embedded Gtk+ widgets to
avoid blurry widgets on hidpi displays.

https://bugzilla.gnome.org/show_bug.cgi?id=758937
---
 clutter-gtk/gtk-clutter-actor.c     | 15 +++++++++++++++
 clutter-gtk/gtk-clutter-offscreen.c |  2 ++
 2 files changed, 17 insertions(+)

diff --git a/clutter-gtk/gtk-clutter-actor.c b/clutter-gtk/gtk-clutter-actor.c
index 9582154..6b78628 100644
--- a/clutter-gtk/gtk-clutter-actor.c
+++ b/clutter-gtk/gtk-clutter-actor.c
@@ -199,6 +199,7 @@ gtk_clutter_actor_realize (ClutterActor *actor)
   else
 #endif
     {
+      GdkWindow *window = gtk_widget_get_window (priv->widget);
       int width = gtk_widget_get_allocated_width (priv->widget);
       int height = gtk_widget_get_allocated_height (priv->widget);
 
@@ -206,6 +207,8 @@ gtk_clutter_actor_realize (ClutterActor *actor)
 
       clutter_actor_set_size (priv->texture, width, height);
 
+      clutter_canvas_set_scale_factor (CLUTTER_CANVAS (priv->canvas),
+                                       gdk_window_get_scale_factor (window));
       /* clutter_canvas_set_size() will invalidate its contents only
        * if the size differs, but we want to invalidate the contents
        * in any case; we cannot call clutter_content_invalidate()
@@ -310,6 +313,7 @@ gtk_clutter_actor_allocate (ClutterActor           *actor,
   GtkAllocation child_allocation;
   GdkWindow *window;
   ClutterActorBox child_box;
+  gint dummy;
 
   _gtk_clutter_offscreen_set_in_allocation (GTK_CLUTTER_OFFSCREEN 
(priv->widget), TRUE);
 
@@ -317,6 +321,15 @@ gtk_clutter_actor_allocate (ClutterActor           *actor,
   child_allocation.y = 0;
   child_allocation.width = clutter_actor_box_get_width (box);
   child_allocation.height = clutter_actor_box_get_height (box);
+
+  /* Silence the following GTK+ warning:
+   *
+   * Gtk-WARNING **: Allocating size to Offscreen Container
+   * without calling gtk_widget_get_preferred_width/height(). How does the
+   * code know the size to allocate?
+   */
+  gtk_widget_get_preferred_width (priv->widget, &dummy, NULL);
+
   gtk_widget_size_allocate (priv->widget, &child_allocation);
 
   if (CLUTTER_ACTOR_IS_REALIZED (actor))
@@ -352,6 +365,8 @@ gtk_clutter_actor_allocate (ClutterActor           *actor,
         {
           DEBUG (G_STRLOC ": Using image surface.\n");
 
+          clutter_canvas_set_scale_factor (CLUTTER_CANVAS (priv->canvas),
+                                           gdk_window_get_scale_factor 
(window));
           clutter_canvas_set_size (CLUTTER_CANVAS (priv->canvas),
                                    gtk_widget_get_allocated_width 
(priv->widget),
                                    gtk_widget_get_allocated_height 
(priv->widget));
diff --git a/clutter-gtk/gtk-clutter-offscreen.c 
b/clutter-gtk/gtk-clutter-offscreen.c
index c54010d..7243420 100644
--- a/clutter-gtk/gtk-clutter-offscreen.c
+++ b/clutter-gtk/gtk-clutter-offscreen.c
@@ -144,6 +144,8 @@ gtk_clutter_offscreen_realize (GtkWidget *widget)
   gtk_widget_set_window (widget, window);
   gdk_window_set_user_data (window, widget);
 
+  gdk_offscreen_window_set_embedder (gtk_widget_get_window (parent),
+                                     window);
   g_signal_connect (window, "to-embedder",
                    G_CALLBACK (offscreen_window_to_parent),
                     widget);
-- 
cgit v0.12

++++++ cg-Silence-deprecation-warnings.patch ++++++
>From d7f735e6956ad8db28642285ccf1bcd5e0d10ff6 Mon Sep 17 00:00:00 2001
From: Lionel Landwerlin <llandwer...@gmail.com>
Date: Fri, 11 Dec 2015 22:58:16 +0000
Subject: silence obvious Clutter deprecation warnings

https://bugzilla.gnome.org/show_bug.cgi?id=759375
---
 clutter-gtk/gtk-clutter-actor.c     | 2 +-
 clutter-gtk/gtk-clutter-offscreen.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/clutter-gtk/gtk-clutter-actor.c b/clutter-gtk/gtk-clutter-actor.c
index 6b78628..bb1c1f0 100644
--- a/clutter-gtk/gtk-clutter-actor.c
+++ b/clutter-gtk/gtk-clutter-actor.c
@@ -332,7 +332,7 @@ gtk_clutter_actor_allocate (ClutterActor           *actor,
 
   gtk_widget_size_allocate (priv->widget, &child_allocation);
 
-  if (CLUTTER_ACTOR_IS_REALIZED (actor))
+  if (clutter_actor_is_realized (actor))
     {
       cairo_surface_t *surface;
 
diff --git a/clutter-gtk/gtk-clutter-offscreen.c 
b/clutter-gtk/gtk-clutter-offscreen.c
index 7243420..c4ebc94 100644
--- a/clutter-gtk/gtk-clutter-offscreen.c
+++ b/clutter-gtk/gtk-clutter-offscreen.c
@@ -25,7 +25,7 @@ gtk_clutter_offscreen_add (GtkContainer *container,
   GTK_CONTAINER_CLASS (_gtk_clutter_offscreen_parent_class)->add (container, 
child);
 
   if (offscreen->actor != NULL &&
-      CLUTTER_ACTOR_IS_VISIBLE (offscreen->actor))
+      clutter_actor_is_visible (offscreen->actor))
     {
       /* force a relayout */
       clutter_actor_queue_relayout (offscreen->actor);
@@ -41,7 +41,7 @@ gtk_clutter_offscreen_remove (GtkContainer *container,
   GTK_CONTAINER_CLASS (_gtk_clutter_offscreen_parent_class)->remove 
(container, child);
 
   if (offscreen->actor != NULL &&
-      CLUTTER_ACTOR_IS_VISIBLE (offscreen->actor))
+      clutter_actor_is_visible (offscreen->actor))
     {
       /* force a relayout */
       clutter_actor_queue_relayout (offscreen->actor);
-- 
cgit v0.12


Reply via email to