patch to update Evolution to 2.32.3

Matthias Apitz guru at unixarea.de
Thu Jun 7 15:03:43 UTC 2012


Hello,

In May 2011 I fixed some bugs in Evolution based on the original
2.32.3 sources, among other problems this one: 
https://bugzilla.gnome.org/show_bug.cgi?id=649433

Now (in May 2012) I see in 10-CURRENT that in our ports tree Evolution is
still on version 2.32.1; attached is a set of patches to update both ports to
2.32.3:

ports/databases/evolution-data-server
    evolution-data-server.patch
    patch-eds (new file for evolution-data-server/files)

ports/mail/evolution
    evolution.patch
    patch-calendar_gui_e-cal-model.c (new file for evolution/files)

could some kind soul please commit them to the ports tree;
thanks

HIH
	matthias
-- 
Matthias Apitz
t +49-89-61308 351 - f +49-89-61308 399 - m +49-170-4527211
e <guru at unixarea.de> - w http://www.unixarea.de/
UNIX since V7 on PDP-11 | UNIX on mainframe since ESER 1055 (IBM /370)
UNIX on x86 since SVR4.2 UnixWare 2.1.2 | FreeBSD since 2.2.5
-------------- next part --------------
A non-text attachment was scrubbed...
Name: evolution-data-server.patch
Type: text/x-diff
Size: 972 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20120607/f203da2e/evolution-data-server.bin
-------------- next part --------------
*** addressbook/tests/ebook/test-stress-bookviews.c.orig	Thu Apr 21 21:35:36 2011
--- addressbook/tests/ebook/test-stress-bookviews.c	Thu Jun  7 08:21:27 2012
***************
*** 100,105 ****
--- 100,106 ----
  	g_object_unref (view);
  
  	e_book_query_unref (query);
+ 	g_object_unref (book);
  
  	return 0;
  }
*** calendar/libedata-cal/e-cal-backend.c.orig	Thu Apr 21 21:35:36 2011
--- calendar/libedata-cal/e-cal-backend.c	Thu Jun  7 08:21:27 2012
***************
*** 44,51 ****
  struct _ECalBackendPrivate {
  	/* The source for this backend */
  	ESource *source;
- 	/* signal handler ID for source's 'changed' signal */
- 	gulong source_changed_id;
  
  	/* URI, from source. This is cached, since we return const. */
  	gchar *uri;
--- 44,49 ----
***************
*** 161,177 ****
                          ESource *source)
  {
  	if (backend->priv->source != NULL) {
! 		if (backend->priv->source_changed_id > 0) {
! 			g_signal_handler_disconnect (
! 				backend->priv->source,
! 				backend->priv->source_changed_id);
! 			backend->priv->source_changed_id = 0;
! 		}
  		g_object_unref (backend->priv->source);
  	}
  
  	if (source != NULL)
! 		backend->priv->source_changed_id = g_signal_connect (
  			g_object_ref (source), "changed",
  			G_CALLBACK (source_changed_cb), backend);
  
--- 159,170 ----
                          ESource *source)
  {
  	if (backend->priv->source != NULL) {
! 		g_signal_handlers_disconnect_matched (backend->priv->source, G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, 0, 0, NULL, source_changed_cb, backend);
  		g_object_unref (backend->priv->source);
  	}
  
  	if (source != NULL)
! 		g_signal_connect (
  			g_object_ref (source), "changed",
  			G_CALLBACK (source_changed_cb), backend);
  
***************
*** 283,293 ****
  	g_free (priv->uri);
  	g_free (priv->cache_dir);
  
! 	if (priv->source_changed_id && priv->source) {
! 		g_signal_handler_disconnect (priv->source, priv->source_changed_id);
! 		priv->source_changed_id = 0;
  	}
- 	g_object_unref (priv->source);
  
  	/* Chain up to parent's finalize() method. */
  	G_OBJECT_CLASS (e_cal_backend_parent_class)->finalize (object);
--- 276,285 ----
  	g_free (priv->uri);
  	g_free (priv->cache_dir);
  
! 	if (priv->source) {
! 		g_signal_handlers_disconnect_matched (priv->source, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, object);
! 		g_object_unref (priv->source);
  	}
  
  	/* Chain up to parent's finalize() method. */
  	G_OBJECT_CLASS (e_cal_backend_parent_class)->finalize (object);
***************
*** 376,383 ****
  	backend->priv->clients_mutex = g_mutex_new ();
  
  	backend->priv->queries = e_list_new (
! 		(EListCopyFunc) g_object_ref,
! 		(EListFreeFunc) g_object_unref, NULL);
  	backend->priv->queries_mutex = g_mutex_new ();
  }
  
--- 368,375 ----
  	backend->priv->clients_mutex = g_mutex_new ();
  
  	backend->priv->queries = e_list_new (
! 		(EListCopyFunc) NULL,
! 		(EListFreeFunc) NULL, NULL);
  	backend->priv->queries_mutex = g_mutex_new ();
  }
  
*** calendar/libedata-cal/e-data-cal-factory.c.orig	Thu Apr 21 21:36:35 2011
--- calendar/libedata-cal/e-data-cal-factory.c	Thu Jun  7 08:21:27 2012
***************
*** 557,562 ****
--- 557,571 ----
  }
  
  static void
+ unref_backend_cb (gpointer key, gpointer value, gpointer user_data)
+ {
+ 	ECalBackend *backend = value;
+ 
+ 	if (backend)
+ 		g_object_unref (backend);
+ }
+ 
+ static void
  e_data_cal_factory_finalize (GObject *object)
  {
  	EDataCalFactory *factory = E_DATA_CAL_FACTORY (object);
***************
*** 565,570 ****
--- 574,581 ----
  
  	g_object_unref (factory->priv->gdbus_object);
  
+ 	g_hash_table_foreach (factory->priv->backends, unref_backend_cb, NULL);
+ 
  	g_hash_table_destroy (factory->priv->methods);
  	g_hash_table_destroy (factory->priv->backends);
  	g_hash_table_destroy (factory->priv->calendars);
*** calendar/libedata-cal/e-data-cal-view.c.orig	Thu Apr 21 21:35:36 2011
--- calendar/libedata-cal/e-data-cal-view.c	Thu Jun  7 08:21:27 2012
***************
*** 328,333 ****
--- 328,343 ----
  	return TRUE;
  }
  
+ static gboolean
+ impl_DataCalView_dispose (EGdbusCalView *object, GDBusMethodInvocation *invocation, EDataCalView *query)
+ {
+ 	e_gdbus_cal_view_complete_dispose (object, invocation);
+ 
+ 	g_object_unref (query);
+ 
+ 	return TRUE;
+ }
+ 
  static void
  e_data_cal_view_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)
  {
***************
*** 383,388 ****
--- 393,399 ----
  	priv->gdbus_object = e_gdbus_cal_view_stub_new ();
  	g_signal_connect (priv->gdbus_object, "handle-start", G_CALLBACK (impl_DataCalView_start), query);
  	g_signal_connect (priv->gdbus_object, "handle-stop", G_CALLBACK (impl_DataCalView_stop), query);
+ 	g_signal_connect (priv->gdbus_object, "handle-dispose", G_CALLBACK (impl_DataCalView_dispose), query);
  
  	priv->backend = NULL;
  	priv->started = FALSE;
***************
*** 413,418 ****
--- 424,430 ----
  	priv = query->priv;
  
  	if (priv->backend) {
+ 		e_cal_backend_remove_query (priv->backend, query);
  		g_object_unref (priv->backend);
  		priv->backend = NULL;
  	}
*** calendar/libedata-cal/e-data-cal-view.xml.orig	Thu Apr 21 21:35:36 2011
--- calendar/libedata-cal/e-data-cal-view.xml	Thu Jun  7 08:21:27 2012
***************
*** 11,16 ****
--- 11,20 ----
      <method name="stop">
        <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_EDataCalView_stop"/>
      </method>
+ 
+     <method name="dispose">
+       <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_EDataCalView_dispose"/>
+     </method>
      
      <signal name="ObjectsAdded">
        <arg name="objects" type="as"/>
*** calendar/libegdbus/e-gdbus-egdbuscalview.c.orig	Thu Apr 21 21:35:36 2011
--- calendar/libegdbus/e-gdbus-egdbuscalview.c	Thu Jun  7 08:21:27 2012
***************
*** 71,76 ****
--- 71,77 ----
    __DONE_SIGNAL,
    __START_METHOD,
    __STOP_METHOD,
+   __DISPOSE_METHOD,
    __LAST_SIGNAL
  };
  
***************
*** 345,350 ****
--- 346,352 ----
    _property_name_to_gname = g_hash_table_new (g_str_hash, g_str_equal);
    g_hash_table_insert (_method_name_to_id, (gpointer) "start", GUINT_TO_POINTER (__START_METHOD));
    g_hash_table_insert (_method_name_to_id, (gpointer) "stop", GUINT_TO_POINTER (__STOP_METHOD));
+   g_hash_table_insert (_method_name_to_id, (gpointer) "dispose", GUINT_TO_POINTER (__DISPOSE_METHOD));
    g_hash_table_insert (_signal_name_to_id, (gpointer) "ObjectsAdded", GUINT_TO_POINTER (__OBJECTS_ADDED_SIGNAL));
    g_hash_table_insert (_signal_name_to_id, (gpointer) "ObjectsModified", GUINT_TO_POINTER (__OBJECTS_MODIFIED_SIGNAL));
    g_hash_table_insert (_signal_name_to_id, (gpointer) "ObjectsRemoved", GUINT_TO_POINTER (__OBJECTS_REMOVED_SIGNAL));
***************
*** 556,561 ****
--- 558,588 ----
                    1,
                    G_TYPE_DBUS_METHOD_INVOCATION);
  
+   /**
+    * EGdbusCalView::handle-dispose:
+    * @object: The exported object emitting the signal.
+    * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+    *
+    * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>dispose</literal> D-Bus method on @object. Use e_gdbus_cal_view_complete_dispose() to return a value or g_dbus_method_invocation_return_error() to return an error.
+    *
+    * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_view_register_object() was called from.
+    *
+    * On proxies, this signal is never emitted.
+    *
+    * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+    */
+   signals[__DISPOSE_METHOD] =
+     g_signal_new ("handle-dispose",
+                   G_TYPE_FROM_INTERFACE (iface),
+                   G_SIGNAL_RUN_LAST,
+                   G_STRUCT_OFFSET (EGdbusCalViewIface, handle_dispose),
+                   g_signal_accumulator_true_handled,
+                   NULL,
+                   _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+                   G_TYPE_BOOLEAN,
+                   1,
+                   G_TYPE_DBUS_METHOD_INVOCATION);
+ 
    /* GObject property definitions for D-Bus properties: */
  }
  
***************
*** 762,767 ****
--- 789,894 ----
  }
  
  /**
+  * e_gdbus_cal_view_call_dispose:
+  * @proxy: A #EGdbusCalView.
+  * @cancellable: A #GCancellable or %NULL.
+  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+  * @user_data: Data to pass to @callback.
+  *
+  * Invokes the <literal>org.gnome.evolution.dataserver.calendar.CalView.dispose</literal>
+  * D-Bus method on the remote object represented by @proxy.
+  *
+  * This is an asynchronous method. When the operation is finished,
+  * callback will be invoked in the thread-default main loop of the
+  * thread you are calling this method from. You can then call
+  * e_gdbus_cal_view_call_dispose_finish() to get the result of the operation.
+  *
+  * See e_gdbus_cal_view_call_dispose_sync() for the synchronous version of this method.
+  */
+ void e_gdbus_cal_view_call_dispose (
+         EGdbusCalView *proxy,
+         GCancellable *cancellable,
+         GAsyncReadyCallback callback,
+         gpointer user_data)
+ {
+   GVariant *_params;
+   _params = NULL;
+   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+                      "dispose",
+                      _params,
+                      G_DBUS_CALL_FLAGS_NONE,
+                      -1,
+                      cancellable,
+                      callback,
+                      user_data);
+ }
+ 
+ /**
+  * e_gdbus_cal_view_call_dispose_finish:
+  * @proxy: A #EGdbusCalView.
+  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_view_call_dispose().
+  * @error: Return location for error or %NULL.
+  *
+  * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.CalView.dispose</literal>
+  * D-Bus method on the remote object represented by @proxy.
+  *
+  * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+  */
+ gboolean e_gdbus_cal_view_call_dispose_finish (
+         EGdbusCalView *proxy,
+         GAsyncResult *res,
+         GError **error)
+ {
+   gboolean _ret = FALSE;
+   GVariant *_result;
+   _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+   if (_result == NULL)
+     goto _out;
+   g_variant_unref (_result);
+   _ret = TRUE;
+ _out:
+   return _ret;
+ }
+ 
+ /**
+  * e_gdbus_cal_view_call_dispose_sync:
+  * @proxy: A #EGdbusCalView.
+  * @cancellable: A #GCancellable or %NULL.
+  * @error: Return location for error or %NULL.
+  *
+  * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.CalView.dispose</literal>
+  * D-Bus method on the remote object represented by @proxy.
+  *
+  * The calling thread is blocked until a reply is received. See
+  * e_gdbus_cal_view_call_dispose() for the asynchronous version of this method.
+  *
+  * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+  */
+ gboolean e_gdbus_cal_view_call_dispose_sync (
+         EGdbusCalView *proxy,
+         GCancellable *cancellable,
+         GError **error)
+ {
+   gboolean _ret = FALSE;
+   GVariant *_params;
+   GVariant *_result;
+   _params = NULL;
+   _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+                                    "dispose",
+                                    _params,
+                                    G_DBUS_CALL_FLAGS_NONE,
+                                    -1,
+                                    cancellable,
+                                    error);
+   if (_result == NULL)
+     goto _out;
+   g_variant_unref (_result);
+   _ret = TRUE;
+ _out:
+   return _ret;
+ }
+ 
+ /**
   * e_gdbus_cal_view_complete_start:
   * @object: A #EGdbusCalView.
   * @invocation: A #GDBusMethodInvocation.
***************
*** 801,806 ****
--- 928,953 ----
    g_dbus_method_invocation_return_value (invocation, NULL);
  }
  
+  /**
+  * e_gdbus_cal_view_complete_dispose:
+  * @object: A #EGdbusCalView.
+  * @invocation: A #GDBusMethodInvocation.
+  *
+  * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.CalView.dispose</literal>
+  * D-Bus method invocation by returning a value.
+  *
+  * If you want to return an error, use g_dbus_method_invocation_return_error()
+  * or similar instead.
+  *
+  * This method will free @invocation, you cannot use it afterwards.
+  */
+ void e_gdbus_cal_view_complete_dispose (
+         EGdbusCalView *object,
+         GDBusMethodInvocation *invocation) 
+ {
+   g_dbus_method_invocation_return_value (invocation, NULL);
+ }
+ 
  /**
   * e_gdbus_cal_view_emit_objects_added:
   * @object: A #EGdbusCalView.
***************
*** 1029,1038 ****
--- 1176,1195 ----
    (GDBusAnnotationInfo **) NULL,
  };
  
+ static const GDBusMethodInfo e_gdbus_cal_view_method_dispose =
+ {
+   -1,
+   (gchar *) "dispose",
+   (GDBusArgInfo **) NULL,
+   (GDBusArgInfo **) NULL,
+   (GDBusAnnotationInfo **) NULL,
+ };
+ 
  static const GDBusMethodInfo * const e_gdbus_cal_view_method_info_pointers[] =
  {
    &e_gdbus_cal_view_method_start,
    &e_gdbus_cal_view_method_stop,
+   &e_gdbus_cal_view_method_dispose,
    NULL
  };
  
***************
*** 1083,1088 ****
--- 1240,1257 ----
        }
        break;
  
+     case __DISPOSE_METHOD:
+       {
+         EGdbusCalView *object = E_GDBUS_CAL_VIEW (user_data);
+         gboolean handled;
+         g_signal_emit (object,
+                        signals[method_id],
+                        0, invocation, &handled);
+         if (!handled)
+           goto not_implemented;
+       }
+       break;
+ 
      default:
  not_implemented:
        g_dbus_method_invocation_return_error (invocation,
*** calendar/libegdbus/e-gdbus-egdbuscalview.h.orig	Thu Apr 21 21:35:36 2011
--- calendar/libegdbus/e-gdbus-egdbuscalview.h	Thu Jun  7 08:21:27 2012
***************
*** 35,40 ****
--- 35,41 ----
   * @done: Handler for the #EGdbusCalView::done signal.
   * @handle_start: Handler for the #EGdbusCalView::handle-start signal.
   * @handle_stop: Handler for the #EGdbusCalView::handle-stop signal.
+  * @handle_dispose: Handler for the #EGdbusCalView::handle-dispose signal.
   *
   * Virtual table.
   */
***************
*** 189,194 ****
--- 190,198 ----
    gboolean (*handle_stop) (
          EGdbusCalView *object,
          GDBusMethodInvocation *invocation);
+   gboolean (*handle_dispose) (
+         EGdbusCalView *object,
+         GDBusMethodInvocation *invocation);
  };
  
  /* C Bindings for properties */
***************
*** 226,231 ****
--- 230,251 ----
          GCancellable *cancellable,
          GError **error);
  
+ void e_gdbus_cal_view_call_dispose (
+         EGdbusCalView *proxy,
+         GCancellable *cancellable,
+         GAsyncReadyCallback callback,
+         gpointer user_data);
+ 
+ gboolean e_gdbus_cal_view_call_dispose_finish (
+         EGdbusCalView *proxy,
+         GAsyncResult *res,
+         GError **error);
+ 
+ gboolean e_gdbus_cal_view_call_dispose_sync (
+         EGdbusCalView *proxy,
+         GCancellable *cancellable,
+         GError **error);
+ 
  /* D-Bus Methods Completion Helpers */
  void e_gdbus_cal_view_complete_start (
          EGdbusCalView *object,
***************
*** 235,240 ****
--- 255,264 ----
          EGdbusCalView *object,
          GDBusMethodInvocation *invocation);
  
+ void e_gdbus_cal_view_complete_dispose (
+         EGdbusCalView *object,
+         GDBusMethodInvocation *invocation);
+ 
  /* D-Bus Signal Emission Helpers */
  void e_gdbus_cal_view_emit_objects_added (
          EGdbusCalView *object,
*** calendar/libecal/e-cal-view.c.orig	Thu Apr 21 21:35:36 2011
--- calendar/libecal/e-cal-view.c	Thu Jun  7 08:21:27 2012
***************
*** 193,200 ****
  
  	switch (property_id) {
  	case PROP_VIEW:
! 		if (priv->gdbus_calview != NULL)
! 			g_object_unref (priv->gdbus_calview);
  
  		priv->gdbus_calview = g_object_ref (g_value_get_pointer (value));
  		g_signal_connect (priv->gdbus_calview, "objects-added", G_CALLBACK (objects_added_cb), view);
--- 193,200 ----
  
  	switch (property_id) {
  	case PROP_VIEW:
! 		/* gdbus_calview can be set only once */
! 		g_return_if_fail (priv->gdbus_calview == NULL);
  
  		priv->gdbus_calview = g_object_ref (g_value_get_pointer (value));
  		g_signal_connect (priv->gdbus_calview, "objects-added", G_CALLBACK (objects_added_cb), view);
***************
*** 247,254 ****
  	view = E_CAL_VIEW (object);
  	priv = view->priv;
  
! 	if (priv->gdbus_calview != NULL)
  		g_object_unref (priv->gdbus_calview);
  
  	g_object_unref (priv->client);
  
--- 247,265 ----
  	view = E_CAL_VIEW (object);
  	priv = view->priv;
  
! 	if (priv->gdbus_calview != NULL) {
! 		GError *error = NULL;
! 
! 		g_signal_handlers_disconnect_matched (priv->gdbus_calview, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, view);
! 		e_gdbus_cal_view_call_dispose_sync (priv->gdbus_calview, NULL, &error);
  		g_object_unref (priv->gdbus_calview);
+ 		priv->gdbus_calview = NULL;
+ 
+ 		if (error) {
+ 			g_warning ("Failed to dispose cal view: %s", error->message);
+ 		g_error_free (error);
+ 		}
+ 	}
  
  	g_object_unref (priv->client);
  
-------------- next part --------------
A non-text attachment was scrubbed...
Name: evolution.patch
Type: text/x-diff
Size: 888 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20120607/f203da2e/evolution.bin


More information about the freebsd-ports mailing list