[packages/dia] - rel 5; glib fixes from fc (fixes segfault)

arekm arekm at pld-linux.org
Thu Oct 3 15:18:03 CEST 2013


commit 4c662dd49444fd5bc071a1cfd8b34fcbc28b5c0f
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Thu Oct 3 15:18:00 2013 +0200

    - rel 5; glib fixes from fc (fixes segfault)

 dia-glib.patch | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dia.spec       |  4 ++-
 2 files changed, 88 insertions(+), 1 deletion(-)
---
diff --git a/dia.spec b/dia.spec
index 48b9f66..12a2ebe 100644
--- a/dia.spec
+++ b/dia.spec
@@ -8,7 +8,7 @@ Summary(uk.UTF-8):	Програма для малювання діаграм
 Summary(zh_CN.UTF-8):	基于GTK+的流程图程序
 Name:		dia
 Version:	0.97.2
-Release:	4
+Release:	5
 Epoch:		1
 License:	GPL v2+
 Group:		X11/Applications/Graphics
@@ -39,6 +39,7 @@ Source11:	http://dia-installer.de/shapes/scenegraph/scenegraph.zip
 Patch0:		%{name}-python.patch
 Patch1:		%{name}-wmf-cast.patch
 Patch2:		%{name}-glib2.patch
+Patch3:		%{name}-glib.patch
 URL:		https://live.gnome.org/Dia
 BuildRequires:	autoconf >= 2.50
 BuildRequires:	automake
@@ -132,6 +133,7 @@ PostScript(TM).
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
+%patch3 -p1
 
 %{__sed} -i -e s#sr at Latn#sr at latin# po/LINGUAS
 mv -f po/sr@{Latn,latin}.po
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);
+ }
+ 
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/dia.git/commitdiff/4c662dd49444fd5bc071a1cfd8b34fcbc28b5c0f



More information about the pld-cvs-commit mailing list