[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