[dia] GLib drop support for adding interfaces after class_init (Gnome #694025)

Jiří Popelka jpopelka at fedoraproject.org
Thu May 2 12:53:58 UTC 2013


commit d745e5e4272da2f152af01075299539460cbdbdd
Author: Jiri Popelka <jpopelka at redhat.com>
Date:   Thu May 2 14:40:19 2013 +0200

    GLib drop support for adding interfaces after class_init (Gnome #694025)

 dia-glib.patch |   85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dia.spec       |   11 +++++--
 2 files changed, 93 insertions(+), 3 deletions(-)
---
diff --git a/dia-glib.patch b/dia-glib.patch
new file mode 100644
index 0000000..17f6199
--- /dev/null
+++ b/dia-glib.patch
@@ -0,0 +1,85 @@
+diff -up dia-0.97.2/app/render_gdk.c.glib dia-0.97.2/app/render_gdk.c
+--- dia-0.97.2/app/render_gdk.c.glib	2013-05-02 14:23:22.294850484 +0200
++++ dia-0.97.2/app/render_gdk.c	2013-05-02 14:26:51.176963531 +0200
+@@ -50,7 +50,21 @@ static void copy_to_window (DiaRenderer
+                 gpointer window,
+                 int x, int y, int width, int height);
+ 
+-static void dia_gdk_renderer_iface_init (DiaInteractiveRendererInterface* iface)
++typedef struct _DiaGdkInteractiveRenderer DiaGdkInteractiveRenderer;
++struct _DiaGdkInteractiveRenderer
++{
++  DiaGdkRenderer parent_instance; /*!< inheritance in object oriented C */
++};
++typedef struct _DiaGdkInteractiveRendererClass DiaGdkInteractiveRendererClass;
++struct _DiaGdkInteractiveRendererClass
++{
++  DiaGdkRendererClass parent_class; /*!< the base class */
++};
++#define DIA_TYPE_GDK_INTERACTIVE_RENDERER           (dia_gdk_interactive_renderer_get_type ())
++#define DIA_GDK_INTERACTIVE_RENDERER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DIA_TYPE_GDK_INTERACTIVE_RENDERER, DiaGdkInteractiveRenderer))
++
++static void
++dia_gdk_renderer_iface_init (DiaInteractiveRendererInterface* iface)
+ {
+   iface->clip_region_clear = clip_region_clear;
+   iface->clip_region_add_rect = clip_region_add_rect;
+@@ -61,36 +75,35 @@ static void dia_gdk_renderer_iface_init
+   iface->set_size = set_size;
+ }
+ 
++G_DEFINE_TYPE_WITH_CODE (DiaGdkInteractiveRenderer, dia_gdk_interactive_renderer, DIA_TYPE_GDK_RENDERER,
++			 G_IMPLEMENT_INTERFACE (DIA_TYPE_INTERACTIVE_RENDERER_INTERFACE, dia_gdk_renderer_iface_init));
++
++static void
++dia_gdk_interactive_renderer_class_init(DiaGdkInteractiveRendererClass *klass)
++{
++}
++static void
++dia_gdk_interactive_renderer_init(DiaGdkInteractiveRenderer *object)
++{
++  DiaGdkInteractiveRenderer *ia_renderer = DIA_GDK_INTERACTIVE_RENDERER (object);
++  DiaGdkRenderer *renderer = DIA_GDK_RENDERER(object);
++  DiaRenderer *dia_renderer = DIA_RENDERER(object);
++  
++  dia_renderer->is_interactive = 1;
++
++  renderer->gc = NULL;
++  renderer->pixmap = NULL;
++  renderer->clip_region = NULL;
++}
++
+ DiaRenderer *
+ new_gdk_renderer(DDisplay *ddisp)
+ {
+   DiaGdkRenderer *renderer;
+   GType renderer_type = 0;
+ 
+-  renderer = g_object_new (DIA_TYPE_GDK_RENDERER, NULL);
++  renderer = g_object_new (DIA_TYPE_GDK_INTERACTIVE_RENDERER, NULL);
+   renderer->transform = dia_transform_new (&ddisp->visible, &ddisp->zoom_factor);
+-  if (!DIA_GET_INTERACTIVE_RENDERER_INTERFACE (renderer))
+-    {
+-      static const GInterfaceInfo irenderer_iface_info = 
+-      {
+-        (GInterfaceInitFunc) dia_gdk_renderer_iface_init,
+-        NULL,           /* iface_finalize */
+-        NULL            /* iface_data     */
+-      };
+-
+-      renderer_type = DIA_TYPE_GDK_RENDERER;
+-      /* register the interactive renderer interface */
+-      g_type_add_interface_static (renderer_type,
+-                                   DIA_TYPE_INTERACTIVE_RENDERER_INTERFACE,
+-                                   &irenderer_iface_info);
+-
+-    }
+-  renderer->parent_instance.is_interactive = 1;
+-  renderer->gc = NULL;
+-
+-  renderer->pixmap = NULL;
+-  renderer->clip_region = NULL;
+-
+   return DIA_RENDERER(renderer);
+ }
+ 
diff --git a/dia.spec b/dia.spec
index cf371d9..bd31621 100644
--- a/dia.spec
+++ b/dia.spec
@@ -1,6 +1,6 @@
 Name:           dia
 Version:        0.97.2
-Release:        4%{?dist}
+Release:        5%{?dist}
 Epoch:          1
 Summary:        Diagram drawing program
 Group:          Applications/Multimedia
@@ -9,6 +9,7 @@ URL:            http://www.gnome.org/projects/dia/
 Source0:        ftp://ftp.gnome.org/pub/GNOME/sources/dia/0.97/dia-%{version}.tar.xz
 Patch0:         dia-noglib.patch
 Patch1:         dia-unregister-import.patch
+Patch2:         dia-glib.patch
 
 BuildRequires:  libgnomeui-devel pygtk2-devel desktop-file-utils
 BuildRequires:  intltool docbook-utils docbook-style-dsssl docbook-style-xsl
@@ -30,6 +31,7 @@ and can export to PostScript(TM).
 %setup -q
 %patch0 -p0 -b .noglib
 %patch1 -p1 -b .unregister-import
+%patch2 -p1 -b .glib
 
 sed -i 's|libdia_la_LDFLAGS = -avoid-version|libdia_la_LDFLAGS = -avoid-version $(shell pkg-config gtk+-2.0 libxml-2.0 libart-2.0 libgnome-2.0 --libs)|' \
   lib/Makefile.*
@@ -100,6 +102,9 @@ fi
 %{_datadir}/icons/hicolor/*/apps/*
 
 %changelog
+* Thu May 02 2013 Jiri Popelka <jpopelka at redhat.com> - 1:0.97.2-5
+- GLib drop support for adding interfaces after class_init (Gnome #694025)
+
 * Mon Mar 25 2013 Jiri Popelka <jpopelka at redhat.com> - 1:0.97.2-4
 - Run autoreconf prior to running configure (#925250)
 
@@ -252,10 +257,10 @@ fi
 * Mon Oct 17 2005 Caolan McNamara <caolanm at redhat.com>
 - move to extras
 
-* Tue Apr 16 2005 Caolan McNamara <caolanm at redhat.com>
+* Sat Apr 16 2005 Caolan McNamara <caolanm at redhat.com>
 - rebuild for new cairo soname
 
-* Mon Apr  8 2005 Caolan McNamara <caolanm at redhat.com>
+* Fri Apr  8 2005 Caolan McNamara <caolanm at redhat.com>
 - rh#165337# crash on >= 1000% xoom
 
 * Thu Apr  7 2005 Caolan McNamara <caolanm at redhat.com>


More information about the scm-commits mailing list