diff options
author | prlw1 <prlw1@pkgsrc.org> | 2013-07-16 12:11:29 +0000 |
---|---|---|
committer | prlw1 <prlw1@pkgsrc.org> | 2013-07-16 12:11:29 +0000 |
commit | b85e29e0b7b1fc9e05bcb64054ec0e983ed3ea75 (patch) | |
tree | a241b402def8ac8a06bab68b9f5f3f2fe3aea51a /graphics/dia | |
parent | 805e0fcc2d2236318968f47fd8cbffc7fbecac39 (diff) | |
download | pkgsrc-b85e29e0b7b1fc9e05bcb64054ec0e983ed3ea75.tar.gz |
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 (limited to 'graphics/dia')
-rw-r--r-- | graphics/dia/Makefile | 4 | ||||
-rw-r--r-- | graphics/dia/distinfo | 3 | ||||
-rw-r--r-- | graphics/dia/patches/patch-app_render_gdk.c | 89 |
3 files changed, 93 insertions, 3 deletions
diff --git a/graphics/dia/Makefile b/graphics/dia/Makefile index 3d6954604d5..9304483f9ff 100644 --- a/graphics/dia/Makefile +++ b/graphics/dia/Makefile @@ -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 --git a/graphics/dia/distinfo b/graphics/dia/distinfo index e1320bf98aa..fc31fa185c7 100644 --- a/graphics/dia/distinfo +++ b/graphics/dia/distinfo @@ -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 --git a/graphics/dia/patches/patch-app_render_gdk.c b/graphics/dia/patches/patch-app_render_gdk.c new file mode 100644 index 00000000000..1f9787ae71d --- /dev/null +++ b/graphics/dia/patches/patch-app_render_gdk.c @@ -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); + } |