commit clutter-gtk for openSUSE:Factory
![](https://seccdn.libravatar.org/avatar/e2145bc5cf53dda95c308a3c75e8fef3.jpg?s=120&d=mm&r=g)
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 - zaitor@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 zaitor@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 zaitor@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 zaitor@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
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
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
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
participants (1)
-
root@hilbert.suse.de