[entangle] Fix build with sealed GTK

Daniel P. Berrange berrange at fedoraproject.org
Fri Feb 11 17:45:20 UTC 2011


commit bb58fff64471d84d38378d1b26894fff9db1703c
Author: Daniel P. Berrange <berrange at redhat.com>
Date:   Fri Feb 11 17:45:00 2011 +0000

    Fix build with sealed GTK

 entangle-0.2.0-sealed.patch |  110 +++++++++++++++++++++++++++++++++++++++++++
 entangle.spec               |    7 ++-
 2 files changed, 116 insertions(+), 1 deletions(-)
---
diff --git a/entangle-0.2.0-sealed.patch b/entangle-0.2.0-sealed.patch
new file mode 100644
index 0000000..4b9e0e4
--- /dev/null
+++ b/entangle-0.2.0-sealed.patch
@@ -0,0 +1,110 @@
+diff -rup entangle-0.2.0/src/frontend/entangle-camera-manager.c entangle-0.2.0.new/src/frontend/entangle-camera-manager.c
+--- entangle-0.2.0/src/frontend/entangle-camera-manager.c	2011-02-11 17:42:51.924641580 +0000
++++ entangle-0.2.0.new/src/frontend/entangle-camera-manager.c	2011-02-11 17:38:54.099453886 +0000
+@@ -1662,7 +1662,11 @@ gboolean entangle_camera_manager_visible
+     EntangleCameraManagerPrivate *priv = manager->priv;
+     GtkWidget *win = glade_xml_get_widget(priv->glade, "camera-manager");
+ 
++#if GTK_CHECK_VERSION(2,20,0)
++    return gtk_widget_get_visible(win);
++#else
+     return GTK_WIDGET_FLAGS(win) & GTK_VISIBLE;
++#endif
+ }
+ 
+ 
+diff -rup entangle-0.2.0/src/frontend/entangle-camera-picker.c entangle-0.2.0.new/src/frontend/entangle-camera-picker.c
+--- entangle-0.2.0/src/frontend/entangle-camera-picker.c	2010-09-17 19:41:15.000000000 +0100
++++ entangle-0.2.0.new/src/frontend/entangle-camera-picker.c	2011-02-11 17:38:57.092431115 +0000
+@@ -523,7 +523,11 @@ gboolean entangle_camera_picker_visible(
+     EntangleCameraPickerPrivate *priv = picker->priv;
+     GtkWidget *win = glade_xml_get_widget(priv->glade, "camera-picker");
+ 
++#if GTK_CHECK_VERSION(2,20,0)
++    return gtk_widget_get_visible(win);
++#else
+     return GTK_WIDGET_FLAGS(win) & GTK_VISIBLE;
++#endif
+ }
+ 
+ /*
+diff -rup entangle-0.2.0/src/frontend/entangle-image-display.c entangle-0.2.0.new/src/frontend/entangle-image-display.c
+--- entangle-0.2.0/src/frontend/entangle-image-display.c	2010-09-17 19:41:15.000000000 +0100
++++ entangle-0.2.0.new/src/frontend/entangle-image-display.c	2011-02-11 17:42:23.371859204 +0000
+@@ -29,6 +29,13 @@
+ #define ENTANGLE_IMAGE_DISPLAY_GET_PRIVATE(obj)                             \
+     (G_TYPE_INSTANCE_GET_PRIVATE((obj), ENTANGLE_TYPE_IMAGE_DISPLAY, EntangleImageDisplayPrivate))
+ 
++#if !GTK_CHECK_VERSION(2,20,0)
++#define gtk_widget_get_visible(win) \
++  GTK_WIDGET_VISIBLE(win)
++#define gtk_widget_get_realized(win) \
++  GTK_WIDGET_REALIZED(win)
++#endif
++
+ struct _EntangleImageDisplayPrivate {
+     EntangleImageLoader *imageLoader;
+     gulong imageLoaderNotifyID;
+@@ -59,7 +66,7 @@ static void do_entangle_pixmap_setup(Ent
+     EntangleImageDisplayPrivate *priv = display->priv;
+     int pw, ph;
+ 
+-    if (!GTK_WIDGET_REALIZED(display)) {
++    if (!gtk_widget_get_realized(GTK_WIDGET(display))) {
+         ENTANGLE_DEBUG("Skipping setup for non-realized widget");
+         return;
+     }
+@@ -75,7 +82,7 @@ static void do_entangle_pixmap_setup(Ent
+ 
+     pw = gdk_pixbuf_get_width(priv->pixbuf);
+     ph = gdk_pixbuf_get_height(priv->pixbuf);
+-    priv->pixmap = gdk_pixmap_new(GTK_WIDGET(display)->window,
++    priv->pixmap = gdk_pixmap_new(gtk_widget_get_window(GTK_WIDGET(display)),
+                                   pw, ph, -1);
+     gdk_draw_pixbuf(priv->pixmap, NULL, priv->pixbuf,
+                     0, 0, 0, 0, pw, ph,
+@@ -261,7 +268,7 @@ static gboolean entangle_image_display_e
+     double sx = 1, sy = 1;  /* Amount to scale by */
+     cairo_t *cr;
+ 
+-    gdk_drawable_get_size(widget->window, &ww, &wh);
++    gdk_drawable_get_size(gtk_widget_get_window(widget), &ww, &wh);
+ 
+     if (priv->pixmap)
+         gdk_drawable_get_size(GDK_DRAWABLE(priv->pixmap), &pw, &ph);
+@@ -310,7 +317,7 @@ static gboolean entangle_image_display_e
+     ENTANGLE_DEBUG("Drawing image %lf,%lf at %lf %lf sclaed %lfx%lf", iw, ih, mx, my, sx, sy);
+ 
+ 
+-    cr = gdk_cairo_create(widget->window);
++    cr = gdk_cairo_create(gtk_widget_get_window(widget));
+     cairo_rectangle(cr,
+                     expose->area.x,
+                     expose->area.y,
+@@ -568,7 +575,7 @@ void entangle_image_display_set_pixbuf(E
+ 
+     do_entangle_pixmap_setup(display);
+ 
+-    if (GTK_WIDGET_VISIBLE(display))
++    if (gtk_widget_get_visible((GtkWidget*)display))
+         gtk_widget_queue_resize(GTK_WIDGET(display));
+ 
+     entangle_image_display_update_hint(display);
+@@ -590,7 +597,7 @@ void entangle_image_display_set_autoscal
+ 
+     priv->autoscale = autoscale;
+ 
+-    if (GTK_WIDGET_VISIBLE(display))
++    if (gtk_widget_get_visible((GtkWidget*)display))
+         gtk_widget_queue_resize(GTK_WIDGET(display));
+ }
+ 
+@@ -610,7 +617,7 @@ void entangle_image_display_set_scale(En
+ 
+     priv->scale = scale;
+ 
+-    if (GTK_WIDGET_VISIBLE(display))
++    if (gtk_widget_get_visible((GtkWidget*)display))
+         gtk_widget_queue_resize(GTK_WIDGET(display));
+ }
+ 
diff --git a/entangle.spec b/entangle.spec
index a26f126..29b8486 100644
--- a/entangle.spec
+++ b/entangle.spec
@@ -11,11 +11,12 @@
 Summary: Tethered shooting & control of digital cameras
 Name: entangle
 Version: 0.2.0
-Release: 3%{?dist}
+Release: 4%{?dist}
 License: GPLv3+
 Group: Applications/Multimedia
 Source: http://entangle-photo.org/download/sources/%{name}-%{version}.tar.gz
 Patch1: %{name}-%{version}-controls-empty.patch
+Patch2: %{name}-%{version}-sealed.patch
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 URL: http://entangle-photo.org/
 
@@ -54,6 +55,7 @@ and 'hands off' shooting directly from the controlling computer.
 %prep
 %setup -q
 %patch1 -p1
+%patch2 -p1
 
 %build
 
@@ -118,6 +120,9 @@ update-desktop-database %{_datadir}/applications
 %endif
 
 %changelog
+* Fri Feb 11 2011 Daniel P. Berrange <berrange at redhat.com> - 0.2.0-4
+- Fix build with sealed GTK
+
 * Tue Feb 08 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.2.0-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
 


More information about the scm-commits mailing list