pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/graphics/dia Fix dia crash on start reported by Jan Da...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/9d6e47770195
branches:  trunk
changeset: 621753:9d6e47770195
user:      prlw1 <prlw1%pkgsrc.org@localhost>
date:      Tue Jul 16 12:11:29 2013 +0000

description:
Fix dia crash on start reported by Jan Danielsson in
http://mail-index.netbsd.org/pkgsrc-users/2013/07/12/msg018329.html
using fix from https://bugzilla.gnome.org/show_bug.cgi?id=694025
commited to dia git-head.

diffstat:

 graphics/dia/Makefile                       |   4 +-
 graphics/dia/distinfo                       |   3 +-
 graphics/dia/patches/patch-app_render_gdk.c |  89 +++++++++++++++++++++++++++++
 3 files changed, 93 insertions(+), 3 deletions(-)

diffs (123 lines):

diff -r 8897d42227a7 -r 9d6e47770195 graphics/dia/Makefile
--- a/graphics/dia/Makefile     Tue Jul 16 10:13:16 2013 +0000
+++ b/graphics/dia/Makefile     Tue Jul 16 12:11:29 2013 +0000
@@ -1,9 +1,9 @@
-# $NetBSD: Makefile,v 1.81 2013/06/06 12:54:28 wiz Exp $
+# $NetBSD: Makefile,v 1.82 2013/07/16 12:11:29 prlw1 Exp $
 #
 
 .include "Makefile.common"
 
-PKGREVISION=   14
+PKGREVISION=   15
 
 .include "options.mk"
 
diff -r 8897d42227a7 -r 9d6e47770195 graphics/dia/distinfo
--- a/graphics/dia/distinfo     Tue Jul 16 10:13:16 2013 +0000
+++ b/graphics/dia/distinfo     Tue Jul 16 12:11:29 2013 +0000
@@ -1,9 +1,10 @@
-$NetBSD: distinfo,v 1.28 2012/05/07 00:46:25 dholland Exp $
+$NetBSD: distinfo,v 1.29 2013/07/16 12:11:29 prlw1 Exp $
 
 SHA1 (dia-0.97.2.tar.xz) = dc7ed6f8cd83acc8f421d28f30e4042fe370e9ba
 RMD160 (dia-0.97.2.tar.xz) = f9270f1f2cb6ad505219463827d02e3759693796
 Size (dia-0.97.2.tar.xz) = 5507004 bytes
 SHA1 (patch-aa) = ab5acd47ba4557aa8cc4a5abb3ce1f41ea5e2574
+SHA1 (patch-app_render_gdk.c) = 2bff345b8168ef731eb977f1850fd6a725224c78
 SHA1 (patch-be) = dab7626daefcd702b31f54d198311d9be921e1ff
 SHA1 (patch-ca) = 8737f3ff19244e2f87ffb571da21159bc2248648
 SHA1 (patch-cb) = 02210139cbf38e91a61ad1e090f63f5635bb26ef
diff -r 8897d42227a7 -r 9d6e47770195 graphics/dia/patches/patch-app_render_gdk.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/graphics/dia/patches/patch-app_render_gdk.c       Tue Jul 16 12:11:29 2013 +0000
@@ -0,0 +1,89 @@
+$NetBSD: patch-app_render_gdk.c,v 1.1 2013/07/16 12:11:29 prlw1 Exp $
+
+Fix crash on start-up with newish glib2.
+Bug 694025 - GLib drop support for adding interfaces after class_init
+commit 213bdfe956bf8fe57c86316f68a09408fef1647e
+
+--- app/render_gdk.c.orig      2009-11-07 17:13:53.000000000 +0000
++++ app/render_gdk.c
+@@ -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,35 +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);
+ }



Home | Main Index | Thread Index | Old Index